找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2630|回复: 1
打印 上一主题 下一主题
收起左侧

基于C51单片机中断系统做两位电子秒表70秒倒计时例子

[复制链接]
跳转到指定楼层
楼主
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include<reg51.h>


  2. char led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};      //共阴极LED字模


  3. sbit P3_0=P3^0;                                                          //定义位变量
  4. sbit P3_1=P3^1;

  5. unsigned char  x,y,num=70,n=0;          //宏定义 num为秒表时间设置函数


  6. void delay(unsigned int time)
  7. {                                          //延时1ms函数
  8.      unsigned int j=0;
  9.         for(;time>0;time--)
  10.       for(j=0;j<125;j++);
  11. }
  12. void key() interrupt 1
  13. {                                                                                                 //中断函数               
  14.      TL0 = 0xB0;                                                        //初值重装
  15.      TH0 = 0x3C;
  16.      n++;                                                               //计时
  17.      if(n==20)                                                          //1s到了
  18.         {
  19.                 n=0;                                                    //每秒重置一次
  20.                 if(num==0)  num=70;                                    //每70s循环
  21.                 x=num/10;                                               //LED显示十位
  22.                 y=num%10;                                               //LED显示个位
  23.                 num--;                                                  //每定时1s,倒计时减一秒
  24.         }
  25. }
  26. void main()
  27. {
  28.     TMOD = 0x01;                                                        //T0工作在方式1
  29.     TL0 = 0xB0;                                                         //50ms
  30.     TH0 = 0x3C;
  31.     ET0 = 1;                                                            //开定时器0中断允许位
  32.     EA = 1;                                                             //开总中断
  33.     TR0 = 1;                                                            //开定时器0
  34.     while(1)
  35.         {                                                                           //数码管的动态显示
  36.         P3_1 = 1;                                                       //数码管的个位显示
  37.         P2 = led_mod[x];
  38.         P3_0 = 0;
  39.         delay(5);

  40.         P3_0 = 1;                                                       //数码管的十位显示
  41.         P2 = led_mod[y];
  42.         P3_1 = 0;  
  43.         delay(5);
  44.                 }
  45. }
复制代码

所有资料51hei提供下载:
基于C51中断系统做两位电子秒表例子.rar (32.25 KB, 下载次数: 33)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:535215 发表于 2020-11-28 18:23 | 只看该作者
good
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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