请选择 进入手机版 | 继续访问电脑版

EDABOSS电子论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 642|回复: 2

[资料共享] 51单片机定时器的应用proteus仿真

[复制链接]

12

主题

0

回帖

91

E币

技术员

Rank: 2

积分
24
发表于 2017-5-11 11:01:14 | 显示全部楼层 |阅读模式
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, 下载次数: 4)

积分规则
回复

使用道具 举报

30

主题

33

回帖

39

E币

技术员

Rank: 2

积分
93
发表于 2018-10-18 23:12:14 | 显示全部楼层
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|EDABOSS电子论坛

GMT+8, 2024-3-29 18:53 , Processed in 0.042808 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表