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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機stc89c52 1602液晶顯示 倒計時分秒 按鍵可以設置

  [復制鏈接]
跳轉到指定樓層
樓主
       做這個倒計時,主要家里的電磁爐經常燒熱水,最近一次就燒干鍋了,就壞掉了,拆開之后線盤燒斷了,換了一個就好了,后來我就發現有定時功能,每次燒水就定時就好了,用起來挺方便,所以就想著做一個,先在論壇里找一些相關大家分享的,同時正好也是看了郭師傅的視頻后,自己照著寫了一個倒計時,分享給大家,如果有問題歡迎指正。
功能:按下key1鍵進行時間設定,同時時分秒設置完后,最后一次也是開始鍵
          按下key2鍵進行時分秒的加
          按下key3鍵進行時分秒的減
          按下key4鍵會暫停,第二次按會繼續開始,第三次按下就復位

單片機源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include <lcd.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int        
  6. sbit key1=P2^0;  //設置鍵
  7. sbit key2=P2^1;  //加鍵
  8. sbit key3=P2^2;  //減鍵
  9. sbit key4=P2^3;  //第一次暫停,第二次啟動,第三次初始化
  10. sbit RS=P2^5;
  11. sbit RW=P2^6;
  12. sbit EN=P2^7;
  13. uchar djshi,djfen,djmiao;
  14. uchar r,knum,s;
  15. uchar code table1[]={"daojishi:       "};
  16. uchar code table2[]={"    00:00:00    "};
  17. void LcdInit()                                                  //LCD初始化子程序
  18. {
  19.           uchar i;
  20.           lcd_writecom(0x38);  //開顯示
  21.           lcd_writecom(0x0c);  //開顯示不顯示光標
  22.           lcd_writecom(0x06);  //寫一個指針加1
  23.           lcd_writecom(0x01);  //清屏
  24.           lcd_writecom(0x80);  //設置數據指針起點
  25.           for(i=0;i<16;i++)
  26.            {
  27.                      lcd_writedate(table1[i]);
  28.            }
  29.           lcd_writecom(0xc0);
  30.           for(i=0;i<16;i++)
  31.           {
  32.                    lcd_writedate(table2[i]);
  33.           }
  34. }        
  35. void Timer1Init(void)                //10毫秒@22.1184MHz
  36. {
  37.         
  38.         TMOD = 0x10;                //設置定時器模式
  39.         TL1 = 0x00;                //設置定時初值
  40.         TH1 = 0xB8;                //設置定時初值
  41.         TR1 = 0;                //定時器1開始計時
  42.          ET1=1;                 //定時器1中斷
  43.          EA=1;                   //打開總中斷
  44. }

  45. /*******************************************************************************
  46. * 函 數 名         : Delay1ms
  47. * 函數功能                   : 延時函數,延時1ms
  48. * 輸    入         : c
  49. * 輸    出         : 無
  50. * 說    名         : 該函數是在22.1184MHZ晶振下,12分頻單片機的延時。
  51. *******************************************************************************/
  52. void Delay1ms(uint ms)
  53. {
  54.         uint i,j,k;
  55.     for(i=0;i<ms;i++)//219.18
  56.     {
  57.         for(j=0;j<200;j++);//224.61
  58.         for(k=0;k<29;k++);//1094.29
  59.     } //1221.79
  60. }
  61. void write_sfm(uchar add,uchar date)
  62. {
  63.                 lcd_writecom(0xc0+add);
  64.                 lcd_writedate(date/10+0x30);
  65.                 lcd_writedate(date%10+0x30);
  66.                 lcd_writecom(0xc0+add+1);
  67. }
  68. void keyscan()
  69. {
  70.                 if(key1==0)
  71.                 {
  72.                                 Delay1ms(5);
  73.                                 if(key1==1)
  74.                                 {        
  75.                                                 knum++;        
  76.                                                 TR1=0;
  77.                                                 while(!key1);
  78.                                                 if(knum==1)
  79.                                                 {
  80.                                                                 lcd_writecom(0x0f);
  81.                                                                 lcd_writecom(0xcb);
  82.                                                 }
  83.                                                 if(knum==2)
  84.                                                 {
  85.                                                                 lcd_writecom(0xc8);
  86.                                                 }
  87.                                                 if(knum==3)
  88.                                                 {
  89.                                                         
  90.                                                                 lcd_writecom(0xc5);
  91.                                                 }
  92.                                                 if(knum==4)
  93.                                                 {
  94.                                                                 lcd_writecom(0x0c);
  95.                                                                 knum=0;
  96.                                                                 TR1=1;   //啟動定時器
  97.                                                 }
  98.                         }
  99.                 }
  100.                 if(knum==1)
  101.                 {
  102.                                 if(key2==0)
  103.                                 {
  104.                                                 Delay1ms(5);
  105.                                                 if(key2==0)
  106.                                                 {
  107.                                                                 djmiao++;
  108.                                                                
  109.                                                                 while(!key2);        
  110.                                                                 if(djmiao==60)
  111.                                                                         djmiao=0;
  112.                                                                 lcd_writecom(0xca);
  113.                                                                 lcd_writedate(djmiao/10+0x30);
  114.                                                                 lcd_writedate(djmiao%10+0x30);
  115.                                                                 lcd_writecom(0xcb);
  116.                                                 }
  117.                                                 
  118.                                 }
  119.                                 if(key3==0)
  120.                                 {
  121.                                                 Delay1ms(5);
  122.                                                 if(key3==0)
  123.                                                 {
  124.                                                                 djmiao--;
  125.                                                                 while(!key3);
  126.                                                                 if(djmiao==255)
  127.                                                                         djmiao=59;
  128.                                                                 lcd_writecom(0xca);
  129.                                                                 lcd_writedate(djmiao/10+0x30);
  130.                                                                 lcd_writedate(djmiao%10+0x30);        
  131.                                                                 lcd_writecom(0xcb);
  132.                                                 }
  133.                                        
  134.                                 }
  135.                 }
  136.                 if(knum==2)
  137.                 {
  138.                                 if(key2==0)
  139.                                 {
  140.                                                 Delay1ms(5);
  141.                                                 if(key2==0)
  142.                                                 {
  143.                                                                 djfen++;
  144.                                                                 while(!key2);
  145.                                                                 if(djfen==60)
  146.                                                                         djfen=0;
  147.                                                                 lcd_writecom(0xc7);
  148.                                                                 lcd_writedate(djfen/10+0x30);
  149.                                                                 lcd_writedate(djfen%10+0x30);        
  150.                                                                 lcd_writecom(0xc8);
  151.                                                 }
  152.                                        
  153.                                 }
  154.                                 if(key3==0)
  155.                                 {
  156.                                                 Delay1ms(5);
  157.                                                 if(key3==0)
  158.                                                 {
  159.                                                                 djfen--;
  160.                                                         while(!key3);
  161.                                                                 if(djfen==255)
  162.                                                                         djfen=59;
  163.                                                                 lcd_writecom(0xc7);
  164.                                                                 lcd_writedate(djfen/10+0x30);
  165.                                                                 lcd_writedate(djfen%10+0x30);        
  166.                                                                 lcd_writecom(0xc8);
  167.                                                 }
  168.                                                 
  169.                                 }
  170.                 }
  171.                 if(knum==3)
  172.                 {
  173.                                 if(key2==0)
  174.                                 {
  175.                                                 Delay1ms(5);
  176.                                                 if(key2==0)
  177.                                                 {
  178.                                                                 djshi++;
  179.                                                                 while(!key2);
  180.                                                                 if(djshi==24)
  181.                                                                         djshi=0;
  182.                                                                 lcd_writecom(0xc4);
  183.                                                                 lcd_writedate(djshi/10+0x30);
  184.                                                                 lcd_writedate(djshi%10+0x30);        
  185.                                                                 lcd_writecom(0xc5);
  186.                                                 }
  187.                                                 
  188.                                 }
  189.                                 if(key3==0)
  190.                                 {
  191.                                                 Delay1ms(5);
  192.                                                 if(key3==0)
  193.                                                 {
  194.                                                                 djshi--;
  195.                                                                 while(!key3);
  196.                                                                 if(djshi==255)
  197.                                                                         djshi=23;
  198.                                                                 lcd_writecom(0xc4);
  199.                                                                 lcd_writedate(djshi/10+0x30);
  200.                                                                 lcd_writedate(djshi%10+0x30);        
  201.                                                                 lcd_writecom(0xc5);
  202.                                                 }
  203.                                        
  204.                                                 
  205.                                 }
  206.                 }
  207.                 if(key4==0)
  208.                 {
  209.                                 Delay1ms(5);
  210.                                 if(key4==0)
  211.                                 {
  212.                                                 s++;
  213.                                                 while(!key4);
  214.                                                 if(s==1)
  215.                                                 {
  216.                                                                 TR1=0;
  217.                                                 }
  218.                                                 if(s==2)
  219.                                                 {
  220.                                                                 TR1=1;
  221.                                                 }
  222.                                                 if(s==3)
  223.                                                 {
  224.                                                                  s=0;
  225.                                                                 TR1=0;
復制代碼
Keil代碼下載: 單片機stc89c52 1602液晶顯示 倒計時分秒 按鍵可以設置.zip (53.69 KB, 下載次數: 133)

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:388477 發表于 2020-3-14 17:58 | 只看該作者
admin 發表于 2020-3-13 21:05
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)

最后一次按下key4鍵,我想程序初始化會清除數據,結果發現后沒有清除,已經修改重新上傳了,現在可以了
回復

使用道具 舉報

板凳
ID:921765 發表于 2021-5-15 15:43 | 只看該作者
有詳細說明嗎
回復

使用道具 舉報

地板
ID:942134 發表于 2021-6-22 10:00 來自手機 | 只看該作者
有詳細說明嗎
回復

使用道具 舉報

5#
ID:384318 發表于 2021-12-9 10:32 | 只看該作者
文件打不開
回復

使用道具 舉報

6#
ID:262 發表于 2021-12-9 19:32 | 只看該作者

工程要用Keil5打開
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩视频中文字幕 | 请别相信他免费喜剧电影在线观看 | 日韩中文字幕一区 | 日韩欧美大片在线观看 | 日韩超碰| 国产一区免费 | 日韩免费av | 国产探花在线精品一区二区 | 亚洲视频一区二区三区 | 色婷婷一区二区三区四区 | 欧美日韩精品一区 | av大片在线| 91精品国产高清久久久久久久久 | 欧美一级片在线观看 | 成人精品一区 | 欧美理论在线观看 | 日本综合在线观看 | 国产毛片毛片 | 亚洲人在线观看视频 | 人人擦人人干 | 亚洲欧洲中文 | 草草草草视频 | 日本公妇乱淫xxxⅹ 国产在线不卡 | 国产高清视频 | 毛片视频免费观看 | 成人不卡视频 | 国产一区二区电影 | 欧美日韩亚洲国产 | 成人欧美一区二区三区黑人孕妇 | 中文字幕日韩欧美一区二区三区 | 成人网在线观看 | 午夜影院视频 | 二区在线观看 | 在线成人免费视频 | 久久久久亚洲精品 | 欧美精品日韩精品国产精品 | av中文字幕在线 | 精品国产不卡一区二区三区 | 日本成人午夜影院 | 日韩中文视频 | 亚洲欧洲成人 |