一个51单片机交通灯C程序,这个程序里面按键消抖和数码管都是用软件延时,用定时器0来怎么做C程序

定时器1用来做精确的时间计算了,或者说怎样用一个定时器来做多有的时间计算

第1个回答  2015-03-30
void Timer0Init(void) //1毫秒@22.1184MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x9A; //设置定时初值
TH0 = 0xA9; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
}

一般延时10毫秒就好了
第2个回答  2015-03-29
需要给你写一份吗追问

用定时器为按键消抖的C程序,欢迎写一份

追答

需要定做可以丘上说
我id

51单片机C语言程序4个独立按键实现对数码管数字显示的加减清零等_百度...
#define uchar unsigned char#define ulint unsigned long#define Frequency 10\/\/定时器中断时间 = f*T#define Time 1\/\/一个周期1ms#define TubeNumber 6\/\/数码管个数#define KeyLine 4\/\/矩阵按键行数 #define KeyColumn 4\/\/矩阵按键列数 \/\/数码管真值表uchar code LED_Number[]={0x0C,0xF9...

51单片机按键时,数码管会闪烁一下.原因是什么
原因很简单,这是代码和数码管驱动的问题 按键会影响数码管显示,这是单片机直接驱动数码管会出现的问题,而数码管则是工作在动态扫描方式的,若是采用带有锁存器件的数码管驱动,则不会出现此类现象,因为单片机是周期性的扫描工作方式,单片机直接驱动数码管的电路,当单片机扫描到按键的时候,数码管部分...

在51单片机上用C语言实现电子琴功能,但同时数码管可以显示简谱,怎么...
3,按键读取程序,中断或者查询方式,自己选择吧,别忘了延迟5ms左右再次读取按键,这个是消抖的。4,建议模块化编程,先搞定按键的,然后搞定数码管的,然后搞定定时器的,然后再考虑如何把它们组合起来。好了不说了,说得有点多了,再说会我都回到大学时代了,哈哈。总之自己一点一点的做,应该不难,...

单片机菜鸟求教,关于延迟和按键去抖的问题
1出现,1消失,2出现,2消失,3出现,3消失,4出现,4消失。。。每个数字出现和消失的时间都很短,循环起来,周而复始,视觉上就是1234了 结果你按键程序里来个,延时1s。这个1s远远超过了数字出现的时间,结果变成了:1出现,1消失,2出现,2消失,3出现,3消失,4出现,4消失,1s。。。同样周而复...

请教高手,用51单片机独立按键控制数码管数字加减,为什么在按下独立按...
因为你按键的时候影响了数码管刷新;数码管一般都是动态扫描的,利用人眼的视觉暂留做的,你按下按键的时候,肯定有延时消抖,延时的时候就影响了数码管显示,所以数码管刷新的慢了,人眼就能分辨出来亮和灭的状态...解决办法 1、改进按键扫描 2、改进数码管显示 3、用嵌入式系统 以上三选一即可解决 ...

51单片机怎样用键盘控制数码管显示
51单片机怎样用键盘控制数码管显示的方法。如下参考:1.首先,编写代码并点亮数码管。2.在编写源代码之后,确保原始代码是正确的。3.确认代码正确后,进入下一步,就是在这一行代码(箭头所指)中,删除这四个单词。4.然后如图所示,四个单词已被删除,只要修改相应的代码编号即可。5.表示数字0的代码在...

单片机键盘消抖,用延时消抖,汇编语言
DELAY(延时程序) ;延时消抖 JB START,RESTART;再次检测(检测位置在稳定阶段)……第一次检测有可能会检测到抖动的波峰“尖点”处,信号为1,此时第一条语句会原地踏步,不往下执行,直到检测到波谷“地点”处,信号为0,才开始执行第二条语句,调用延时子程序,延时子程序会持续一段时间(当然这...

单片机怎么能延时执行不耽误正常运转
第二种方法就是你要求的,即能延时,又不耽误主程序的运行,用定时器T0或T1定时,设置定时时间后,定时器开始计时,主程序继续执行,不用管定时器,当定时时间到,定时器就会申请中断,单片机就响应中断,处理定时子程序需要完成的工作,完成后返回到主程序继续主程序的执行,这是最合理的方法,充分利用...

51单片机中如何按下按键时数码管正常显示而不闪烁,并且实现长按连续...
k=1;\/\/按键1短按 } } i=0;while(!KEY2)\/\/如果按键2按下 { xianshi(neirong);\/\/执行显示 delay_ms(1);\/\/延时 i++;\/\/每次i自加1 if(i>=1000){ k=21;\/\/按键2长按 } else { k=2;\/\/按键2短按 } } i=0;\/\/在下一个按键按下之前清空i的值 while(!KEY3)\/\/如果按键3按...

51单片机实验(关于定时器计数器)
MAIN1: ACALL DISPLY ; 调用显示 JB FKEY,JUDGE ; 按键扫描 ACALL KEYDLY ; 延时消抖动 JB FKEY,JUDGE ; 无键按下转向判断是否到点 CLR ET0 ; 功能键被按下,则 CLR TR0 ; 暂停计时 ACALL MENU ; 调用菜单设置程序BEGIN: SETB WORKIN ; 置工作标志位,开始工作 SETB ET0 ; 开中断 SETB TR0 ; ...

相似回答