51单片机编程秒表问题

作者&投稿:司索 (若有异议请与网页底部的电邮联系)
关于51单片机实现数字秒表程序算法出错的问题~

你自己都明明知道sec/10=0了,再过1秒,sec加一,sec=1,可问题是,右边图中for循环运算,是在每一秒以后,确保sec加一以后才循环的吗?估计你是在主程中不断执行for循环的,还没等到sec加1,sec还是0就执行for循环的,那sec就无法加1。闪一下,说明在1秒到的时刻,sec确实加1了,可刚显示出1,马上又for循环了,又为0了。还没等看清楚呢就变回0了。
你要想办法,保证在一秒以后,保证sec加一后再for循环。
其实,这么做本就是错误的。你既然知道按左图的算法是对的,何苦还用for计算呢?为自己出难题啊?

你多看看c语言书……现在很多书都讲基础……关于设计方面的很少……需要你自己去想……到底可以编什么软件……我们学这个就是为了用它……所以…… 给你一个问题?怎么实现改c的输出背景和安体颜色……你可以试试去实现他……

循环过程大致如下
void main()
{
//假设AB按钮为导通低电平
int num=0;
int flag=1;
while(1)//主循环 等待A按下
{
while(flag)//等待A按下
{
if(A连接的IO口为低电平) //A按下
{
flag=0;
}
}
if(B连接的IO口为低电平) //B按下
{
flag=1;
}
if(num<100)
{
显示num值;
}
else
{
num=0;
显示num值;
}
num++;
}
}


设计一个计时为1分钟的电子秒表单片机实验如何实现LED的动态扫描?_百...
将LED连接到单片机的数字引脚上。每个LED都通过一个适当的电阻连接到单片机,以防止电流过大损坏LED。将7段显示器连接到单片机的模拟引脚上。将按键连接到单片机的数字引脚上,用于启动、暂停和重置秒表。编程:使用Arduino IDE或其他单片机编程工具编写程序。程序应该包括一个计时器中断服务程序(ISR),每秒更...

单片机编程制作电子秒表能显示分(0-99),秒(0-59)
上周单片机实验课的内容是编一个秒表,在4位数码管中分别显示分和秒还有分秒,即最多可显示“9:59.9”。这里我用两个键实现了秒表的启动\/暂停和清零功能,

急需要用单片机程序编写一个秒表的程序
PUSH ACC MOV A,C100us+1 JNZ GOON ;计数值是否为0 DEC C100us GOON: DEC C100us+1 MOV A,C100us ORL A,C100us+1 JNZ EXIT MOV C100us,#HIGH(TICK) ;重置计数值 MOV C100us+1,#LOW(TICK)INC SECOND ;秒值加一 MOV A,SECOND CJNE A,#60,EXIT ;判断秒值...

单片机编程制作电子秒表能显示分(0-99),秒(0-59)
上周单片机实验课的内容是编一个秒表,在4位数码管中分别显示分和秒还有分秒,即最多可显示“9:59.9”。这里我用两个键实现了秒表的启动\/暂停和清零功能,

关于单片机做的秒表的问题 时间不准是怎么回事 我用PROTEUS模拟的 不准...
中断函数太长,建议用时钟芯片,如DS13820

设计一个单片机秒表,该秒表可显示0.0到59.9秒的时间
EA=1; IT1=1; ET0=1;TMOD=0x01; \/\/T0方式1计时0.01秒 TH0=65536-5000\/256;TL0=65536-5000%256;TR0=1; \/\/开中断,启动定时器 while(1){ Process(TIME,Data);Display(Data);if(TIME>599){ TIME=0;} } } \/* 定时计数器0的中断服务子程序 *\/ void intserv1(void) interr...

利用单片机内部定时器设计一个秒表,显示最大值为 59.99 秒。_百度知...
if(k2==1)temp|=K2;if(k3==1)temp|=K3;if(temp==temp0){\/\/ 按键消抖if(++ms>=5){\/\/连续5次扫描的值一样,则认为是稳定状态key=temp;ms=0;}}else {temp0=temp;ms=0;}key_down=key_sc&(~key);\/\/下降沿扫描key_up=(~key_sc)&key;\/\/下降沿扫描key_sc=key;}u8 readPIN(...

用51单片机做秒表,按键按下停止计时,再按一次接着计时
while(1){ if(scan_key()){ delayms(10);if(scan_key()){ key_v = key_s;proc_key();} } } } void clr_time(){ sec_bcd[0] = 0x0;sec_bcd[1] = 0x0;sec_bcd[2] = 0x0;sec_bcd[3] = 0x0;sec_bcd[4] = 0x0;sec_bcd[5] = 0x0;sec_bcd[6] = 0x0;sec_bcd...

使用8051单片机设计实现一个秒表
这个单片机秒表应用是比较简单的,主要是计时器的控制。

设计一个单片机秒表,该秒表可显示0.0~59.9秒的时间
void exter0() interrupt 3 \/\/ 定时器1中断 { TH1=(65536-10000)\/256;TL1=(65536-10000)%256;tt++;if(tt==1000)tt=0;bai=tt\/100;shi=tt%100\/10;ge=tt%10;} void display(uchar one,uchar two,uchar three){ dula=1;P0=table[one]; \/\/送段数据 dula=0;P0=0xff; \/\/送...

普洱哈尼族彝族自治县13068364551: 51单片机编程秒表问题 -
浑雅鼻炎: 循环过程大致如下 void main() { //假设AB按钮为导通低电平 int num=0; int flag=1; while(1)//主循环 等待A按下 { while(flag)//等待A按下 { if(A连接的IO口为低电平) //A按下 { flag=0; } } if(B连接的IO口为低电平) //B按下 { flag=1; } if(num<100) { 显示num值; } else { num=0; 显示num值; } num++; } }

普洱哈尼族彝族自治县13068364551: 单片机的秒表设计的程序 -
浑雅鼻炎: 这个程序本身思路都已经非常清晰了呀,主要就是再把流程优化下即可了.定时器T0只负责产生秒信号,用两个计数单元来计数需要显示的内容,在低位秒信号满100后清零同时把高位单元加一,还有就是对按键的处理和显示的处理问题上,比如两个键同时按下如何处理,显示是用锁位来实现,还是不停的动态扫描实现等等

普洱哈尼族彝族自治县13068364551: 求51单片机秒表汇编程序,有三个键的,分别作用为开始,停止,清零 -
浑雅鼻炎: #include<reg51.h> #include "intrins.h" #include "absacc.h" #define uchar unsigned char uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0xff};//0-9 unsigned char sec=0,min=0,scanled; unsigned char key=0,mode...

普洱哈尼族彝族自治县13068364551: 51单片机:写一个10s的秒表程序,用一个按键分别控制秒表启动、停止、清零.(要求:使用定时器1定时,定时20中断一次)问题就在开关上,谁能给我说怎么处理 最好有代码 10 -
浑雅鼻炎: 设立一个标志变量,初始化时,变量=0.定时器中断函数写成若标志变量为1则time++启动过程:扫描按键,若扫到,去抖延时,若扫到,标志变量取反.停止过程:同上.清零:扫描按键,若扫到,去抖延时,若扫到,且标志变量为0(停止状态),再循环扫描按键几个来回,具体时间可以用for来控制,目的就是实现一个长按清零.直接求代码很无聊,要自己写出来,做出来,才能体会到成功的酸爽.难点在长按与短按的区分,加油.

普洱哈尼族彝族自治县13068364551: 用51单片机设计一个秒表,计时范围从00:00 - 59:59. -
浑雅鼻炎: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 ...

普洱哈尼族彝族自治县13068364551: 51单片机中用数码管做秒表时怎么用一个独立按键控制开始和暂停,即第一次按下计时,在按下时暂停? -
浑雅鼻炎: 其实,控制秒表的启动和停止,很简单.要做秒表,一定要用定时器吧,假如用T0,那开始初始化时,不写TR0=1,先不启动.当按一下键,再启动,TR0=1,就开始计时了.再 按一下键,就停止,TR0=0,就不计时了.程序好写,先 定义一个按键 sbit key=P1^1; //具体是哪个 键,你自己改 主程序中,判断按键和启动/停止 if(key==0) { delay(); //具体延时时间自己定 if(key==0) { TR0=!TR0; //每按一次,取反 一次 while(key==0); } }

普洱哈尼族彝族自治县13068364551: 用51单片机做秒表,按键按下停止计时,再按一次接着计时 -
浑雅鼻炎: 让定时器停止计时,只要TRx = 0这句就行,要让它继续,再TRx = 1; 例如,我的按键是P0.0,按一下停止,按一下继续,用定时器0,可以这样写:if(P0_0 == 0) {TR0 = ~TR0;while(P0_0 == 0); } 我只是提供个例子,实际运用中按键要记得加滤波

普洱哈尼族彝族自治县13068364551: 用51单片机设置数字钟,用中断定时25ms,晶振23Mhz, 进入40次.但仿真效果秒表显示很快,这是为什么? -
浑雅鼻炎: 在C语言中23/12的结果为1.所以 TH0=(65536-25000*(23/12))/256; TL0=(65536-25000*(23/12))%256;最终的结果还是 TH0=(65536-25000)/256; TL0=(65536-25000)%256;.因为定时器的初始值不变,而晶振频率提高了将近1倍.所以需要接近一倍的中断次数才能得到同样的定时时间.在12M下,40次中断就是1S,在23M下,同样的初始值,需要接近80次中断才是1S

普洱哈尼族彝族自治县13068364551: AT89C51单片机设计一个简易秒表? -
浑雅鼻炎: 定时器10ms中断 检测按键且10ms位加一 若10ms=10,100ms位加一 若10ms=10,1000ms位加一 以此内推 显示最好用LCD的 用数码管的也行 有疑问mail:290765583@163.com

普洱哈尼族彝族自治县13068364551: 51单片机多位led显示秒表.00 - 59. -
浑雅鼻炎: #include<reg52.h>/*定时器方式:晶振为11.0592M*/ int t=0,s=0; //s 为1秒 void main() { TMOD=0x01; //设置定时器0为工作方式1 TH0=(65536-46080)/256; TL0=(65536-46080)%256; EA=1; //开总中断. ET0=1; //开定时器0中断. TR0=1; //...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网