找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机999秒倒计时继电器控制源程序

[复制链接]
跳转到指定楼层
楼主
ID:318620 发表于 2018-5-6 15:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
实验板 K1按键 按一下 开始倒计时
       K2按键 按一下 停止倒计时

单片机程序如下

  1. #include<reg51.h>
  2. sbit Key_UP=P3^2;
  3. sbit Key_DOWN=P3^3;
  4. unsigned char KeyV,TempKeyV;                                                            
  5. sbit P25=P2^5;//数码管第5位
  6. sbit P26=P2^6;//数码管第6位
  7. sbit P27=P2^7;//数码管第7位
  8. sbit JDQ=P3^7;//继电器

  9. unsigned int js;
  10. unsigned int ds;//倒计时初始时间
  11. unsigned char jsflag;
  12. static unsigned int i;
  13. unsigned char code LEDDis[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xBF};

  14. void Delay(unsigned int ii)        //1MS
  15. {
  16. unsigned int jj;
  17. for(;ii>0;ii--)
  18. for(jj=0;jj<125;jj++)
  19. {;}

  20. }
  21. void main()
  22. {
  23.            EA = 1;                                        //允许CPU中断
  24.         ET0 = 1;                                 //定时器0中断打开
  25.         ET1=1;                                        //定时器1中断打开
  26.         TMOD = 0x11;                        //设定时器0 1为模式1,16位模式
  27.         TH0=0xB8;
  28.         TL0=0x00;                                //设定时值为(20ms)
  29.         TH1=0xdc;                                        //设定时值为(10ms)
  30.         TL1=0x00;
  31.         TR0 = 1;
  32.         TR1=1;
  33.         ds=999;
  34.         KeyV = 0;
  35.         TempKeyV = 0;
  36.         jsflag=0;
  37. while(1);
  38. }

  39. //定时器0中断外理中键扫描和显示
  40. void Key_Time0(void) interrupt 1 using 2
  41. {
  42.   TH0=0xB8;
  43.         TL0=0x00;                                //设定时值为20000us(20ms)
  44.   if (!Key_UP)
  45.     KeyV = 1;
  46.   if (!Key_DOWN)
  47.     KeyV = 2;
  48.    if (KeyV!= 0)      //有键按下
  49.     {
  50.       Delay(10);   //延时防抖  按下10ms再测
  51.       if (!Key_UP)
  52.         TempKeyV = 1;
  53.       if (!Key_DOWN)
  54.         TempKeyV = 2;
  55.                  if (KeyV == TempKeyV)   //两次值相等为确定接下了键
  56.            {
  57.                       if (KeyV == 1){
  58.                                    jsflag=0;
  59.                                                       if(ds==0){
  60.                                                    ds=600;
  61.                                                    }
  62.                                                          js=js+1;
  63.                                                         JDQ=0;   //继电器吸合
  64.                                                 
  65.         if(js==50){
  66.         js=0;
  67.          ds=ds-1;
  68.          
  69.         }
  70. }
  71. if(KeyV==2){
  72.           jsflag=1;
  73.         }
  74. }
  75. }
  76.    if(jsflag==1){
  77.    JDQ=1;
  78.    }
  79.    if(ds==0){
  80.    JDQ=1;
  81.    jsflag=1;
  82.    KeyV=0;
  83.    }
  84. }
  85. void disp_Time1(void) interrupt 3 using 3
  86. {        TH1=0xdc;
  87.         TL1=0x00;
  88.            P0=LEDDis[ds/100];
  89. P25=0;
  90.   Delay(2);
  91.           P25=1;
  92.   P0=LEDDis[(ds%100)/10];
  93. P26=0;
  94.   Delay(2);
  95. P26=1;
  96. P0=LEDDis[ds%10];
  97. P27=0;
  98. Delay(2);
  99.   P27=1;
  100.          
  101. }
复制代码


999秒倒计时继电器控制程序.rar

23.2 KB, 下载次数: 23, 下载积分: 黑币 -5

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

使用道具 举报

沙发
ID:1 发表于 2018-5-6 18:19 | 只看该作者
楼主能分享个原理图吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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