欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 51單片機(jī)lcd1602d電子時(shí)鐘設(shè)計(jì) [打印本頁(yè)]

作者: 13538677177    時(shí)間: 2017-7-8 21:51
標(biāo)題: 51單片機(jī)lcd1602d電子時(shí)鐘設(shè)計(jì)
由于課程設(shè)計(jì)需要,本人做了一個(gè)基于51單片機(jī)控制的lcd1602d顯示的電子時(shí)鐘電子設(shè)計(jì)產(chǎn)品。可以顯示萬(wàn)年歷,星期。
本來(lái)還想加上溫濕度的檢測(cè),發(fā)現(xiàn)屏幕空間不夠用了。。有需要可以再另外共享那個(gè)設(shè)計(jì)。第一次


單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit rs=P1^0;                                               
  5. sbit rw=P1^1;                                               
  6. sbit en=P1^2;                                       
  7. sbit key_set=P3^4;
  8. sbit key_up=P3^5;
  9. sbit key_down=P3^6;
  10. uchar code table1[]="2017/04/18 Aiice:";
  11. uchar code table2[]="00:00:00   ";
  12. uchar num,aa,sec,min,hou,week,day,mon,year,key_num;
  13. void write_week(uchar week);

  14. void delay(uint z)
  15. {
  16.   uint x,y;
  17.   for (x=z;x>0;x--)
  18.   {
  19.    for(y=250;y>0;y--);
  20.   }
  21. }
  22. void write_dat(uchar);   //
  23. void write_com(uchar);  //
  24. void init();
  25. void display_1(uchar add,uchar acc);
  26. void display_2(uchar add,uchar acc);  //
  27. void write_week(uchar week)     
  28. {  
  29.           write_com(0x80+0x40+12);
  30.           switch(week)  
  31.         {   
  32.                 case 1: write_dat('M');delay(5); write_dat('O');delay(5);write_dat('N');break;   
  33.                 case 2: write_dat('T');delay(5);write_dat('U');delay(5);write_dat('E');break;   
  34.                 case 3: write_dat('W');delay(5);write_dat('E');delay(5);write_dat('D');break;   
  35.                 case 4: write_dat('T');delay(5);write_dat('H');delay(5);write_dat('U');break;   
  36.                 case 5: write_dat('F');delay(5);write_dat('R');delay(5);write_dat('I');break;   
  37.                 case 6: write_dat('S');delay(5);write_dat('A');delay(5);write_dat('T');break;   
  38.                 case 7: write_dat('S');delay(5);write_dat('U');delay(5);write_dat('N');break;  
  39.         }
  40. }
  41. void keyscan()       //
  42. {
  43. if(key_set==0)
  44. {
  45.   delay(5);       
  46.   if(key_set==0)
  47.   {
  48.    while(!key_set);
  49.    key_num++;
  50.    if(key_num==1)  //定位到秒
  51.    {  
  52.                                                 TR0=0;
  53.                                                 write_com(0x80+0x40+7);
  54.                                                 write_com(0x0f);
  55.                                         if(key_up==0)
  56.                          {
  57.                                         delay(5);
  58.                                         if(key_up==0)
  59.                                         {
  60.                                                 while(!key_up);
  61.                                                 //up_num++;
  62.                                                
  63.                                                
  64.                                                  sec++;
  65.                                                  if(sec==60)
  66.                                                  { sec=0;min=min+1;}
  67.                                                         display_2(7,sec);
  68.                                                         write_com(0x80+0x40+7);
  69.                                                
  70.                                         }
  71.                          }
  72.          }
  73.                 //////////////////////////////////////       
  74.    
  75.     if(key_num==2) //定位到分
  76.     {
  77.                         TR0=0;
  78.      write_com(0x80+0x40+4);
  79.                        
  80.     }
  81.     if(key_num==3) //定位到時(shí)
  82.     {
  83.                         TR0=0;
  84.      write_com(0x80+0x40+1);
  85.     }
  86.                 if(key_num==4) //定位到日
  87.     {
  88.                         TR0=0;
  89.      write_com(0x80+9);
  90.     }
  91.                 if(key_num==5) //定位到月
  92.     {
  93.                         TR0=0;
  94.      write_com(0x80+6);
  95.     }
  96.                
  97.                 if(key_num==6) //定位到年
  98.     {
  99.                         TR0=0;
  100.      write_com(0x80+3);
  101.     }
  102.     if(key_num==7) //保存設(shè)置
  103.     {
  104.                         //TR0=0;
  105.      key_num=0;
  106.      write_com(0x0c);//取消閃爍
  107.      TR0=1;
  108.     }
  109.                        
  110.   }
  111. }
  112. if(key_num!=0)
  113.   {
  114.     if(key_up==0)
  115.    {
  116.     delay(5);
  117.     if(key_up==0)
  118.     {
  119.       while(!key_up);
  120.       if(key_num==1)
  121.       {
  122.        sec++;
  123.        if(sec==60)
  124.        { sec=0;min=min+1;
  125.                                  display_2(3,min);
  126.        write_com(0x80+0x40+4);
  127.                          }
  128.         display_2(6,sec);                        //6表示十位數(shù)字的位置,則各位數(shù)字在7.(大發(fā)現(xiàn)!!!)
  129.         write_com(0x80+0x40+7);//光標(biāo)閃爍的位置(在個(gè)位)
  130.       }
  131.       if(key_num==2)
  132.       {
  133.        min++;
  134.        if(min==60)
  135.        {
  136.                                  min=0;hou=hou+1;
  137.                                   display_2(0,hou);
  138.        write_com(0x80+0x40+1);
  139.                          }
  140.        display_2(3,min);
  141.        write_com(0x80+0x40+4);      
  142.       }
  143.       if(key_num==3)
  144.       {
  145.        hou++;
  146.        if(hou==24)
  147.        {
  148.                                  hou=0;day=day+1;week++;
  149.                                   display_1(8,day);
  150.                                  write_com(0x80+9);
  151.                          }
  152.        display_2(0,hou);        //時(shí)針的十位數(shù)字在屏幕的左邊第一個(gè)位置
  153.        write_com(0x80+0x40+1);      
  154.       }
  155.                         if(key_num==4)
  156.       {
  157.        day++;
  158.                                 //week++;
  159.        if(day==30)
  160.        {
  161.                                  day=0;mon=mon+1;
  162.                                   display_2(5,mon);
  163.        write_com(0x80+6);
  164.                          }
  165.        display_1(8,day);
  166.        write_com(0x80+9);      
  167.       }      
  168.     }
  169.       
  170.    }
  171.    if(key_down==0)
  172.    {
  173.     delay(5);
  174.     if(key_down==0)
  175.     {
  176.       while(!key_down);
  177.       if(key_num==1)
  178.       {
  179.        sec--;
  180.        if(sec==-1)
  181.        { sec=59;min=min-1;
  182.                                  display_2(3,min);
  183.        write_com(0x80+0x40+4);
  184.                          }
  185.         display_2(6,sec);
  186.         write_com(0x80+0x40+7);
  187.       }
  188.       if(key_num==2)
  189.       {
  190.        min--;
  191.        if(min==-1)
  192.        {
  193.                                  min=59;hou=hou-1;
  194.                                  display_2(0,hou);
  195.        write_com(0x80+0x40+1);
  196.                          }
  197.        display_2(3,min);
  198.        write_com(0x80+0x40+4);      
  199.       }
  200.       if(key_num==3)
  201.       {
  202.        hou--;
  203.        if(hou==-1)
  204.                          {hou=23;week--;}//星期還沒(méi)加入
  205.        display_2(0,hou);
  206.        write_com(0x80+0x40+1);      
  207.       }   
  208.     }
  209.    }   
  210.   }
  211.        
  212. }
  213. void main()
  214. {
  215. init();
  216. write_week(week); //送到液晶屏顯示
  217. while(1)  
  218. {  
  219.    keyscan();
  220.    if(aa==20)
  221.     {
  222.      aa=0;
  223.     sec++;
  224.     if(sec==60)
  225.     {
  226.      sec=0;
  227.      min++;
  228.      if(min==60)
  229.      {
  230.       min=0;
  231.       hou++;
  232.       if(hou==24)
  233.       {
  234.        hou=0;
  235.       }
  236.       display_2(1,hou);
  237.      }
  238.      display_2(3,min);
  239.     }
  240.     display_2(6,sec);//在秒鐘那個(gè)位置開(kāi)始加一
  241.     }   
  242.   }
  243. }            
  244. void write_com(uchar com)
  245. {
  246. rs=0;
  247. en=1;
  248. P0=com;
  249. delay(5);
  250. en=1;
  251. delay(5);
  252. en=0;
  253. }
  254. void write_dat(uchar dat)  
  255. {
  256. rs=1;
  257. en=1;
  258. P0=dat;
  259. delay(5);
  260. en=1;
  261. delay(5);
  262. en=0;
  263. }
  264. void init()
  265. {
  266. key_set=key_up=key_down=1;
  267. week=3;
  268. rw=0;
  269. en=0;
  270. delay(50);
  271. write_com(0x38);      //
  272.          delay(1);
  273. write_com(0x0c);      //  s
  274.         delay(1);
  275. write_com(0x06);      //  
  276.         delay(1);
  277. write_com(0x80);      //
  278. delay(1);       
  279. write_com(0x01);      //
  280.         delay(1);
  281. for(num=0;num<16;num++)
  282. {
  283.   write_dat(table1[num]);
  284.   delay(1);
  285.   }
  286.   write_com(0x80+0x40);  //左邊第二行第一個(gè)位置開(kāi)始寫,往右(16個(gè)數(shù)據(jù))        
  287.   for(num=0;num<14;num++)   
  288. {
  289.   write_dat(table2[num]);
  290.   delay(1);
  291.          
  292. }   

  293. ……………………

  294. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
1602test03.7z (436.38 KB, 下載次數(shù): 225)





作者: 無(wú)心梧桐    時(shí)間: 2018-1-10 18:25
你好,另外一個(gè)溫度的可以分享嗎
作者: ALPHATTT    時(shí)間: 2018-3-7 19:24
棒棒噠
作者: gty    時(shí)間: 2018-4-19 11:00
樓主 溫濕度可以共享嗎

作者: Oerror    時(shí)間: 2018-5-29 17:32
為什么運(yùn)行出來(lái) 顯示W(wǎng)ed   不能改哇
作者: SHLMango    時(shí)間: 2019-3-14 19:40
厲害,厲害
作者: liujielei1998    時(shí)間: 2019-4-17 22:58
這個(gè)設(shè)計(jì)太好了
作者: 屠魔幻影    時(shí)間: 2019-6-6 00:51
能不能發(fā)個(gè)電路原理圖
作者: Elliott    時(shí)間: 2019-6-21 09:20
很好的帖子,謝謝樓主,但是能不能發(fā)一下原理圖呢
作者: 寂滅無(wú)為    時(shí)間: 2019-6-26 15:44
感謝樓主
作者: hao18    時(shí)間: 2020-9-14 09:01
謝謝樓主的分享。下載來(lái)學(xué)習(xí)一下
作者: ZZJ87    時(shí)間: 2020-9-15 14:44
圖紙真多,時(shí)鐘專家!




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1