久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4890|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)多檔倒計時proteus仿真與源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
//30秒,300秒,600秒三檔倒計時,key1按鍵切換時間,key2鍵LED點(diǎn)亮,松手后啟動倒計時,數(shù)碼管顯示數(shù)值每秒減1,
//倒計時結(jié)束,LED熄滅,數(shù)碼管顯示設(shè)定值;如果倒計時沒結(jié)束時,再按下key2鍵,倒計時時間置設(shè)定值重新計時
//仿真通過;附件有源程序,仿真文件,hex文件

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序:
  1. //30秒,300秒,600秒三檔倒計時,key1按鍵切換時間,key2鍵LED點(diǎn)亮,松手后啟動倒計時,數(shù)碼管顯示數(shù)值每秒減1,
  2. //倒計時結(jié)束,LED熄滅,數(shù)碼管顯示設(shè)定值;如果倒計時沒結(jié)束時,再按下key2鍵,倒計時時間置設(shè)定值重新計時
  3. //仿真通過
  4. #include <reg52.h>
  5. #define uchar unsigned char
  6. #define uint  unsigned int

  7. sbit led = P1^7;
  8. sbit key1 = P1^0; //時間切換鍵
  9. sbit key2 = P1^1; //啟動按鍵
  10. sbit we1 = P2^0;  //數(shù)碼管位端口
  11. sbit we2 = P2^1;
  12. sbit we3 = P2^2;
  13. uchar knum;                  //key1按鍵按下次數(shù)計數(shù)變量
  14. uchar cont;                  //中斷次數(shù)變量
  15. uint cont1=30,cont2=300,cont3=600;        //定義時間變量并賦值30秒,300秒,600秒

  16. uchar code LedTab[]=  //定義共陰極數(shù)碼管段碼
  17.    {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};

  18. void delay(uint z)
  19. {
  20.         uint x,y;
  21.         for(x=z; x>0; x--)
  22.                 for(y=114; y>0; y--);
  23. }


  24. void display1(uint shu)
  25. {
  26.         we1 = 0;
  27.         P0 = LedTab[shu/100];
  28.         delay(5);
  29.         we1 = 1;
  30.         
  31.         we2 = 0;
  32.         P0 = LedTab[shu%100/10];
  33.         delay(5);
  34.         we2 = 1;
  35.         
  36.         we3 = 0;
  37.         P0 = LedTab[shu%10];
  38.         delay(5);
  39.         we3 = 1;        
  40. }

  41. void keyscan()
  42. {
  43.         if(key1==0)
  44.         {
  45.                 delay(5);
  46.                 if(key1==0)
  47.                 {
  48.                         while(!key1);
  49.                         knum++;
  50.                         if(knum==3)
  51.                                 knum=0;
  52.                 }
  53.         }

  54.         if(key2 == 0)
  55.         {
  56.                 delay(5);
  57.                 if(key2 == 0)         //key2按下
  58.                 {
  59.                         led = 0;         //點(diǎn)亮LED,松手后啟動倒計時
  60.                         while(!key2)        //這句后面不加分號,下一句調(diào)用顯示函數(shù),按鍵時數(shù)碼管才不會滅
  61.                         {
  62. //                                if(knum==0)
  63. //                                display1(cont1);
  64. //                                if(knum==1)
  65. //                                display1(cont2);
  66. //                                if(knum==2)
  67. //                                display1(cont3);

  68.                                 switch(knum)
  69.                                 {
  70.                                          case 0: display1(cont1);  break;
  71.                                          case 1: display1(cont2);  break;
  72.                                          case 2: display1(cont3);  break;
  73.                                 }

  74.         
  75.                                 TR0 = 1;         //啟動定時器
  76.         //                        led = 0;         //點(diǎn)亮LED
  77.                                 cont1=30;
  78.                                 cont2=300;
  79.                                 cont3=600;
  80.                         }
  81.                 }
  82.         }
  83. }


  84. void main()
  85. {
  86.         TMOD = 0X01;                          //T0定時器,模式1, 16位計數(shù)
  87.         TH0 = (65536-46082)/256;  //50ms初值
  88.         TL0 = (65536-46082)%256;
  89.         EA = 1;                         //開總中斷
  90.         ET0 = 1;                 //開定時器中斷

  91.         while(1)
  92.         {
  93.                 keyscan();
  94.                 switch(knum)
  95.                 {
  96.                          case 0: display1(cont1); cont2=300; cont3=600; break;
  97.                          case 1: display1(cont2); cont1=30; cont3=600; break;
  98.                          case 2: display1(cont3); cont1=30; cont2=300; break;
  99.                 }
  100.         }
  101. }


  102. void timer0() interrupt 1
  103. {
  104.         TH0 = (65536-46082)/256; //重裝初值
  105.         TL0 = (65536-46082)%256;
  106.         cont++;
  107.         if(cont == 20)
  108.         {
  109.                 cont = 0;
  110.                 switch(knum)
  111.                 {
  112.                         case 0: cont1--;
  113.                                         if(cont1==0)
  114.                                         {
  115.                                                 cont1=30;  //倒計時時間到
  116.                                                 led=1;           //熄滅LED
  117.                                                 TR0=0;           //關(guān)閉定時器
  118.                                         } break;

  119.                         case 1: cont2--;
  120.                                         if(cont2==0)
  121.                                         {
  122.                                                 cont2=300;
  123.                                                 led=1;
  124.                                                 TR0=0;
  125.                                         } break;

  126.                         case 2: cont3--;
  127.                                         if(cont3==0)
  128.                                         {
  129.                                                 cont3=600;
  130.                                                 led=1;
  131.                                                 TR0=0;
  132.                                         } break;
  133.                 }
  134.         }
  135. }
復(fù)制代碼

全部資料51hei下載地址:
多檔倒計時.rar (22.25 KB, 下載次數(shù): 82)




評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:89835 發(fā)表于 2018-11-7 23:35 | 只看該作者
試了下,還不錯,很經(jīng)典的小例子,感謝樓主分享
回復(fù)

使用道具 舉報

板凳
ID:1045601 發(fā)表于 2023-6-2 14:03 來自手機(jī) | 只看該作者
可以         
回復(fù)

使用道具 舉報

地板
ID:53813 發(fā)表于 2023-11-23 09:38 | 只看該作者
正好是我類似項(xiàng)目需要的,參考下,謝謝樓主
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久青视频 | 亚洲成人免费观看 | 国产在线一区二区三区 | 成人黄页在线观看 | 久久国内精品 | 国产最新精品视频 | 91久久久久久久久久久久久 | 伊伊综合网 | 中文字幕av色 | 精品成人免费一区二区在线播放 | 亚洲激情视频在线 | 爱爱小视频 | 免费在线观看成人av | 欧美色综合一区二区三区 | 日韩欧美一区二区三区四区 | 免费在线观看一级毛片 | 久久一区| 日韩在线观看一区 | 国产日韩欧美精品一区二区三区 | 亚洲精品视频在线 | 免费成人午夜 | 欧美视频成人 | 久久精品一区二区视频 | 日皮视频免费 | 欧美九九 | 久久亚洲春色中文字幕久久久 | 国产亚洲成av人在线观看导航 | 99精品在线观看 | 久久久www成人免费无遮挡大片 | 久久一级 | 天天射夜夜操 | 九九久久精品 | 日本又色又爽又黄又高潮 | 日本中文字幕在线视频 | 久在草 | 国产精品免费一区二区三区 | 国产精品视频专区 | 免费观看一级特黄欧美大片 | 成人国产免费视频 | 亚洲成人一区二区 | 欧美日韩久久 |