标题: 51单片机定时器的应用proteus仿真 [打印本页]
作者: 林94 时间: 2017-5-10 10:33
标题: 51单片机定时器的应用proteus仿真
这是对于单片机的简单应用
仿真结果图:
51单片机定时器的应用proteus仿真
本人喜好单片机设计,精通单片机编程和硬件电路设计,在空余之际编一些小程序与大家分享,有哪位路过,请多多指教,希望大家在一起能互相学习,互相进步。这里的程序已经测试通过。发表出来,一来可以帮助同样爱好单片机的朋友们,二来,希望能结交一些同道中人,共同学习。
实例原理:用定时器设计一个秒表,其中设有一个按键,定时器 T0工作在方式1。当第一 次按下按键时,定时器开始计时。第二次按下按键时,停止计时并计算第一次按下键盘与第二次按下键盘的时间,送人P0口和P2口并将时间显示出来,P0口显示十位,P2口显示各位。第三次按下键盘时使定时器清零,等待下一次按键。
源程序:
#include<reg51.h>
#defineuchar unsigned char
sbitkey=P3^0;
sbitge=P2^7;
sbitshi=P2^6;
uchartime=0,count=0;
ucharcode dis[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
ucharcode dis_dot[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
voiddelay(uchar N)
{
uchar i,j;
for(i=0;i<N;i++)
for(j=0;j<125;j++);
}
voiddisplay(void)
{
P0=dis[time%10];
ge=0;
delay(3);
ge=1;
P0=dis_dot[time/10];
shi=0;
delay(3);
shi=1;
}
voidmain()
{
TMOD=0x01;TH0=0x3c;TL0=0xb0;IE=0x82;//定时器T0工作在方式1
while(1)
{
while(key==1)
display();
TR0=1;
EA=1;
while(key==0)
display();
while(key==1)
display();
EA=0;
while(key==0);
display();
while(key==1)
display();
time=0;
while(key==0)
display();
}
}
voidT0_time()interrupt 1
{
count++;
if(count==2)
{
time++;
count=0;
if(time==99)
time=0;
}
TH0=0x3c;TL0=0xb0;
}
如果您想做项目开发,或者是做课题,或者您只是有一个想法,亲联系我们,我们会尽最大努力帮您完成,您的需要就是我们奋斗的方向!
-
-
51单片机定时器的应用proteus仿真 源程序.doc
67.5 KB, 下载次数: 80, 下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |