找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机9999S定时继电器程序

[复制链接]
跳转到指定楼层
楼主
ID:102668 发表于 2016-1-16 05:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include<reg51.h>
  2. sbit Key_UP=P1^0;
  3. sbit Key_DOWN=P1^1;
  4. unsigned char KeyV,TempKeyV;                                                           
  5. sbit P25=P2^0;//数码管第1位
  6. sbit P26=P2^1;//数码管第2位
  7. sbit P27=P2^2;//数码管第3位
  8. sbit P28=P2^3;
  9. sbit qian=P1^4;
  10. sbit bai=P1^5;
  11. sbit JDQ=P3^7;//继电器

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

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

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

  42. //定时器0中断外理中键扫描和显示
  43. void Key_Time0(void) interrupt 1 using 2
  44. {
  45.   TH0=0xB8;
  46.         TL0=0x00;                                //设定时值为20000us(20ms)
  47.   if (!Key_UP)
  48.     KeyV = 1;
  49.   if (!Key_DOWN)
  50.     KeyV = 2;
  51.    if (KeyV!= 0)      //有键按下
  52.     {
  53.       Delay(10);   //延时防抖  按下10ms再测
  54.       if (!Key_UP)
  55.         TempKeyV = 1;
  56.       if (!Key_DOWN)
  57.         TempKeyV = 2;
  58.                 if (KeyV == TempKeyV)   //两次值相等为确定接下了键
  59.           {
  60.                     if (KeyV == 1)
  61.                   {
  62.                                   jsflag=0;
  63.                                                     if(ds==0)
  64.                                                   {
  65.                                                   ds=600;
  66.                                                   }
  67.                                                         js=js+1;
  68.                                                         JDQ=0;   //继电器吸合
  69.                                                
  70.                               if(js==50)
  71.                                    {
  72.                                 js=0;
  73.                                 ds=ds-1;
  74.          
  75.                              }
  76.            }
  77. if(KeyV==2)
  78. {
  79.          jsflag=1;
  80.         }
  81. }
  82. }
  83.    if(jsflag==1){
  84.    JDQ=1;
  85.    }
  86.    if(ds==0){
  87.    JDQ=1;
  88.    jsflag=1;
  89.    KeyV=0;
  90.    }

  91. }

  92. void disp_Time1(void) interrupt 3 using 3
  93. {
  94.         TH1=0xdc;
  95.         TL1=0x00;
  96.         x=ds/1000;
  97.           P0=LEDDis[x];
  98. P25=0;
  99.   Delay(2);
  100.          P25=1;
  101.          y=(ds%1000)/100;
  102.   P0=LEDDis[y];
  103. P26=0;
  104.   Delay(2);
  105. P26=1;
  106. P0=LEDDis[((ds%1000)%100)/10];
  107. P27=0;
  108. Delay(2);
  109.   P27=1;
  110.   P0=LEDDis[((ds%1000)%100)%10];
  111. P28=0;
  112. Delay(2);
  113.   P28=1;
  114. }
复制代码


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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