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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

使用at89s52和lcd1602的數字時鐘,顯示屏可換。

[復制鏈接]
跳轉到指定樓層
樓主
ID:646543 發表于 2019-12-5 10:24 來自手機 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
使用AT89S52單片機,使用矩陣按鍵,有DHT11溫濕度傳感器,蜂鳴器,及變壓5V電源模塊。原理圖使用模塊化設計。
現在初步調試后,各模塊均可正常工作。已有獨立的模塊程序,暫時無法組合出一個合理可用的數字時鐘帶溫度測量,求大神指教。

2019-12-05_10.14.13.jpg (1.22 MB, 下載次數: 29)

2019-12-05_10.14.13.jpg

2019-12-05_10.17.42.jpg (1.18 MB, 下載次數: 26)

2019-12-05_10.17.42.jpg

2019-12-05_10.19.40.jpg (1.12 MB, 下載次數: 27)

2019-12-05_10.19.40.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:646543 發表于 2019-12-5 10:29 | 只看該作者

基礎程序

  1. include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. uint count,t;
  5. int shi=1,fen=11,miao=22,nian=12,yue=7,ri=1;
  6. uchar shijian[16]={"time  00-00-00 t"},shijian1[16]={"date  00-00-00  "};

  7. //這三個引腳參考資料
  8. sbit E=P3^3;        //1602使能引腳
  9. sbit RW=P3^4;       //1602讀寫引腳  
  10. sbit RS=P3^5;       //1602數據/命令選擇引腳
  11. sbit LE   = P3^7;
  12. sbit key1 = P1^4;      //小時修改建
  13. sbit key2 = P1^5;   //分鐘修改鍵
  14. sbit key3 = P1^6;    //顯示選擇鍵

  15. /********************************************************************
  16. * 名稱 : delay()
  17. * 功能 : 延時,延時時間大概為5US。
  18. * 輸入 : 無
  19. * 輸出 : 無
  20. ***********************************************************************/

  21. void delay()
  22. {
  23.    uint n=250;

  24.    while(n--);
  25. }
  26. /********************************************************************
  27. * 名稱 : bit Busy(void)
  28. * 功能 : 這個是一個讀狀態函數,讀出函數是否處在忙狀態
  29. * 輸入 : 輸入的命令值
  30. * 輸出 : 無
  31. ***********************************************************************/
  32. bit Busy(void)
  33. {
  34.     bit busy_flag = 0;
  35.     RS = 0;
  36.     RW = 1;
  37.     E = 1;
  38.     delay();
  39.     busy_flag = (bit)(P0 & 0x80);
  40.     E = 0;
  41.     return busy_flag;
  42. }
  43. /********************************************************************
  44. * 名稱 : wcmd(uchar del)
  45. * 功能 : 1602命令函數
  46. * 輸入 : 輸入的命令值
  47. * 輸出 : 無
  48. ***********************************************************************/
  49. void wcmd(uchar del)
  50. {
  51.     while(Busy());
  52.     RS = 0;
  53.     RW = 0;
  54.     E = 0;
  55.     delay();
  56.     P0 = del;
  57.     delay();
  58.     E = 1;
  59.     delay();
  60.     E = 0;
  61. }

  62. /********************************************************************
  63. * 名稱 : wdata(uchar del)
  64. * 功能 : 1602寫數據函數
  65. * 輸入 : 需要寫入1602的數據
  66. * 輸出 : 無
  67. ***********************************************************************/

  68. void wdata(uchar del)
  69. {
  70.     while(Busy());
  71.     RS = 1;
  72.     RW = 0;
  73.     E = 0;
  74.     delay();
  75.     P0 = del;
  76.     delay();
  77.     E = 1;
  78.     delay();
  79.     E = 0;
  80. }

  81. /********************************************************************
  82. * 名稱 : L1602_init()
  83. * 功能 : 1602初始化,請參考1602的資料
  84. * 輸入 : 無
  85. * 輸出 : 無
  86. ***********************************************************************/
  87. void L1602_init(void)
  88. {
  89.     wcmd(0x38);
  90.     wcmd(0x0c);
  91.     wcmd(0x06);
  92.     wcmd(0x01);
  93. }


  94. void timeInit()
  95. {
  96.     TMOD = 0X01;       //定義定時器1工作方式    16位定時   c/t選為定時器   GATE選TR1控制
  97.     TL0  = (65536-10000)%256;
  98.     TH0  = (65536-10000)/256;
  99.     TR0=1;
  100.     EA=1;
  101.     ET0=1;
  102. }
  103. void timeint() interrupt 1
  104. {
  105.     TL0  = (65536-10000)%256;
  106.     TH0  = (65536-10000)/256;
  107.     count++;
  108. }

  109. /*************************
  110. ***時間日期設定
  111. *************************/
  112. void shijianxian()
  113. {
  114.     if(count>=100)
  115.     {
  116.         miao++;
  117.         count=0;
  118.     }
  119.     if(miao>=60)
  120.     {
  121.         fen++;
  122.         miao=0;
  123.     }
  124.     if(fen>=60)
  125.     {
  126.         shi++;
  127.         fen=0;
  128.     }
  129.     if(shi>=24)      
  130.     {
  131.         ri++;
  132.         shi=0;
  133.     }
  134.     if(ri>30)
  135.     {
  136.         yue++;
  137.         ri=1;
  138.     }
  139.     if(yue>12)
  140.     {
  141.         nian++;;
  142.         yue=1;
  143.     }
  144.     if(nian==99)
  145.     {
  146.         nian=0;
  147.     }

  148.    if((key1==0)&((t%6)==0))
  149.     {
  150.         delay();
  151.         if((key1==0)&((t%6)==0))     
  152.             {
  153.             shi++;
  154.             if(shi>23)  shi=0;
  155.             }
  156.         delay();
  157.     }
  158.     if((key3==0)&((t%6)==0))
  159.     {
  160.         delay();
  161.         if((key3==0)&((t%6)==0))     
  162.             {
  163.             shi--;
  164.             if(shi<0)  shi=23;
  165.             }
  166.     }
  167.     if((key1==0)&((t%6)==1))
  168.     {
  169.         delay();
  170.         if((key1==0)&((t%6)==1))     
  171.             {
  172.             fen++;
  173.             if(fen>59)  fen=0;
  174.             }
  175.         delay();
  176.     }
  177.     if((key3==0)&((t%6)==1))
  178.     {
  179.         delay();
  180.         if((key3==0)&((t%6)==1))     
  181.             {
  182.             fen--;
  183.             if(fen<0)   fen=59;
  184.             }
  185.         delay();
  186.     }
  187.     if((key1==0)&((t%6)==2))
  188.     {
  189.         delay();
  190.         if((key1==0)&((t%6)==2))     yue++;
  191.         delay();
  192.     }
  193.     if((key1==0)&((t%6)==3))
  194.     {
  195.         delay();
  196.         if((key1==0)&((t%6)==3))     ri++;
  197.         delay();
  198.     }

  199. }
  200. /******************************
  201. ****時間顯示
  202. *******************************/
  203. void shijianxian1()
  204. {
  205.         shijian[6]=shi/10+48;
  206.         shijian[7]=shi%10+48;
  207.         shijian[9]=fen/10+48;
  208.         shijian[10]=fen%10+48;
  209.         shijian[12]=miao/10+48;
  210.         shijian[13]=miao%10+48;
  211.         shijian[8]=45;
  212.         shijian[11]=45;
  213.         shijian[15]=t+48;
  214. }

  215. /******************************
  216. ****日期顯示
  217. *******************************/
  218. void riqi()
  219. {
  220.         shijian1[6]=nian/10+48;
  221.         shijian1[7]=nian%10+48;
  222.         shijian1[9]=yue/10+48;
  223.         shijian1[10]=yue%10+48;
  224.         shijian1[12]=ri/10+48;
  225.         shijian1[13]=ri%10+48;
  226.         shijian1[8]=45;
  227.         shijian1[11]=45;   
  228. }


  229. /********************************************************************
  230. * 名稱 : Main()
  231. * 功能 : 主函數
  232. * 輸入 : 無
  233. * 輸出 : 無
  234. ***********************************************************************/
  235. void Main()
  236. {
  237.     uint i;
  238.     L1602_init();
  239.      timeInit();
  240.     while(1)
  241.     {
  242.         shijianxian();
  243.         shijianxian1();
  244.         if(key2==0)
  245.             {
  246.             delay();
  247.             if( (key2==0))
  248.                 t++;
  249.             if(t>=6)  t=0;
  250.             delay();
  251.             }
  252.         riqi();
  253.         for(i=0;i<16;i++)
  254.             {
  255.             wcmd(0xc0+i);
  256.             wdata(shijian[i]);
  257.             wcmd(0x80+i);
  258.             wdata(shijian1[i]);
  259.             }
  260.     }        
  261. }
復制代碼

內部資料.zip

162.72 KB, 下載次數: 14, 下載積分: 黑幣 -5

部分組合用程序

回復

使用道具 舉報

板凳
ID:646543 發表于 2019-12-5 10:34 | 只看該作者
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define LCD1 P0
#define LCD2 P1
#define KEY P2
uint count,t;
int hour=23;min=59;sec=49
uchar shijian[16]={"time 00-00-00 t"},shijian1[16]=["date 00-00-00"];

sbit E=P1^2;
sbit RW=P1^1;
sbit RS=P1^0;
sbit BEEP=P3^1;
sbit LED=P3^0;
sbit TP=P3^2;

void delay()
{
uint n=250;
while(n--);
}
bit Busy(void)
{
   bit busy_flag=0;
   RS=0;
   RW=1;
   E=1;
   delay();
   busy flag=(bit)(P0&0x80);
   E=0;
   return busy_flag;
}
回復

使用道具 舉報

地板
ID:475402 發表于 2019-12-13 17:20 | 只看該作者
我是小白支持并學習。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久久久软件 | 国产婷婷精品 | 国产三级电影网站 | 国产精品久久久久久久久久久免费看 | 高清av一区 | 亚洲九九精品 | 91大神xh98xh系列全部 | 亚洲精品在线视频 | 人人玩人人干 | 国产精品久久久久久妇女6080 | 日本国产精品视频 | 天堂视频一区 | 九九热精品在线 | 欧美激情网站 | 在线免费观看黄a | 国产精品片aa在线观看 | 亚洲区中文字幕 | 亚洲a级 | 久久精品免费一区二区 | 久久av网| 国产欧美性成人精品午夜 | 久久成人一区 | 羞羞视频在线观看 | 四虎影院一区二区 | 欧美另类视频在线 | 尤物在线精品视频 | 国产成人精品一区二区三区四区 | 中文字幕亚洲视频 | 亚洲欧洲成人 | 亚洲国产精品精华素 | 99re热精品视频国产免费 | 91免费小视频 | 一呦二呦三呦国产精品 | 亚洲精品一区二区三区蜜桃久 | 高清久久 | 国产在线一区二 | 欧美国产精品一区二区三区 | 亚洲色图综合 | 天天澡天天狠天天天做 | 一级看片免费视频囗交动图 | 国产一区二区视频在线观看 |