找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2428|回復: 0
打印 上一主題 下一主題
收起左側

復雜流水燈單片機程序源碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:238067 發(fā)表于 2017-10-9 17:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
自己編寫的60s倒計時程序歡迎指正
全部資料下載地址:
123.doc (31.5 KB, 下載次數(shù): 4)

  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. uchar code table[]={0xc0,0xf9,0xa4, 0xb0,0x99,
  5. 0x92,0x82,0xf8,0x80,0x90};
  6. sbit gew=P2^1;
  7. sbit shiw=P2^0;
  8. sbit k2=P1^0;
  9. uchar num,num1=60,num2,shi,ge;
  10. void Init()
  11. {
  12.         TMOD=0X01;   TH0=(65536-50000)%256; TL0=(65536-50000)%256;
  13. EA=1;ET0=1;  TR0=1;                                                        
  14. }
  15. void delay(uint xms)                                //延時子函數(shù)
  16. {
  17.         uint i,j;
  18.         for(i=xms;i>0;i--)
  19.         for(j=110;j>0;j--);
  20. }

  21. void scankey()                                          //鍵盤檢測子函數(shù)
  22. {
  23.         if(k2==0)                                        //檢測鍵是否被按下
  24.         {
  25.                 delay(5);                                 //延時消除抖動
  26.                 if(k2==0)                                   //重新讀取k2的值
  27.                 {                                                        
  28.                         num2++;                          //num2為按次數(shù)標志位
  29.                         while(!k2);                          //等待按鍵釋放
  30.                         if(num2==1)                        //按鍵一次計時停止
  31.                            TR0=0;
  32.                         if(num2==2)                          //按鍵兩次計時開始
  33.                         {               
  34.                                   TR0=1;
  35.                         }
  36.                 }
  37.         }
  38. }

  39. void main()                                                 //主函數(shù)
  40. {
  41.         Init();                                             //初始化子函數(shù)調用
  42.         while(1)
  43.         {
  44.                 scankey();                               //不斷鍵盤掃描
  45.                 gew=0;                                    //打開數(shù)碼管個位位選                                         
  46.                 P0=table[ge];                               //數(shù)碼管個位賦值
  47.                 delay(1);                              //延時 送入數(shù)據的反應時間
  48.                 gew=1;                                 //關閉數(shù)碼管個位位選
  49.                 delay(1);

  50.                 shiw=0;                                //打開數(shù)碼管十位位選        
  51.                 P0=table[shi];                             //送入數(shù)據
  52.                 delay(1);                                          
  53.                 shiw=1;                                 //關閉數(shù)碼管十位位選
  54.                 delay(1);
  55.         }
  56. }
  57. void Timer0()  interrupt 1                           
  58. {
  59.         TH0=(65536-50000)/256;                          //定時器重裝初值
  60.         TL0=(65536-50000)%256;
  61.         num++;
  62.         if(num==20)          //定時器每進行一個周期num加1,運行20個周期即為1s
  63.         {
  64.                 num=0;                           //到1秒,num清0重新開始
  65.                 num1--;                                //倒計時1秒
  66.                 if(num1==0)
  67.                 num1=60;
  68.                 shi=num1%10;                     //兩位數(shù)分離賦給數(shù)碼管十位顯示
  69.                 ge=num1%10;                    //兩位數(shù)分離賦給數(shù)碼管個位顯示
  70.         }
  71. }
復制代碼


評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表