找回密码
 注册
关于网站域名变更的通知
查看: 691|回复: 1
打印 上一主题 下一主题

 51单片机定时器的应用proteus仿真

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-10-22 10:27 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
51单片机定时器的应用proteus仿真

3 ?  O& W5 h( d7 x: ^, w8 [* J
实例原理:用定时器设计一个秒表,其中设有一个按键,定时器 T0工作在方式1。当第一 次按下按键时,定时器开始计时。第二次按下按键时,停止计时并计算第一次按下键盘与第二次按下键盘的时间,送人P0口和P2口并将时间显示出来,P0口显示十位,P2口显示各位。第三次按下键盘时使定时器清零,等待下一次按键。
源程序:
#include<reg51.h>
#define uchar unsigned char
sbit key=P3^0;
sbit ge=P2^7;
sbit shi=P2^6;
uchar time=0,count=0;
uchar code dis[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
uchar code dis_dot[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void delay(uchar N)
{
        uchar i,j;
        for(i=0;i<N;i++)
          for(j=0;j<125;j++);
}
void display(void)
{
        P0=dis[time%10];
        ge=0;
        delay(3);
        ge=1;
        P0=dis_dot[time/10];
        shi=0;
        delay(3);
        shi=1;
}
void main()
{
        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();
        }
}
void T0_time()interrupt 1
{
        count++;
        if(count==2)
        {
                time++;
                count=0;
                if(time==99)
                  time=0;
        }
        TH0=0x3c;TL0=0xb0;
}
仿真结果图:

! U9 M1 @3 l, L8 |/ {$ ?

该用户从未签到

2#
发表于 2018-10-22 18:27 | 只看该作者
  谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-13 13:25 , Processed in 0.078125 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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