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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8061|回復(fù): 6
收起左側(cè)

單片機(jī)電子時鐘 鬧鐘程序lcd1602 ds1302 ds18b20溫度傳感器

  [復(fù)制鏈接]
ID:432572 發(fā)表于 2019-3-25 11:04 | 顯示全部樓層 |閱讀模式
單片機(jī) 電子時鐘。這是一個完整的51單片機(jī)工程,里面包括 lcd1602 ds1302 ds18b20的綜合應(yīng)用。
有基本的時鐘功能,還能通過按鍵設(shè)置時間及鬧鐘,另外,有溫度傳感器ds18b20測量溫度,用1602顯示

1.時鐘有鬧鐘功能,當(dāng)鬧鐘鍵按下時,鬧鐘啟動。
2.只當(dāng)設(shè)置鍵按下時,對當(dāng)前時間進(jìn)行設(shè)置,而設(shè)置與鬧鐘兩個鍵同時按下時,對鬧鐘時間進(jìn)行設(shè)置,不會影響到當(dāng)前時間,不過當(dāng)前時間會停,這里還不知道怎么解決。

單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. #include"lcd1602.h"
  3. #include"ds1302.h"
  4. #include"ds18b20.h"

  5. #define uint unsigned int
  6. #define uchar unsigned char

  7. uint b[6];
  8. //年月日時分秒

  9. uchar code row1[]={"2009-01-01"};
  10. uchar code row2[]={"00:00:00"};
  11. uchar year1[12]={31,28,31,30,31,30,31,31,30,31,30,31};//平年
  12. uchar year2[12]={31,29,31,30,31,30,31,31,30,31,30,31};//潤年
  13. uchar j[6]={0x85,0x88,0x8b,0x84+0x40,0x87+0x40,0x8a+0x40};//LCD地址

  14. uchar i,k,jj=0,w,clock=0,bigclock=0,c=0,num;
  15. //i循環(huán)數(shù)  k溫度緩存 jj地址位
  16. uint temp;

  17. sbit b1=P3^0;//設(shè)置
  18. sbit b2=P3^1;//上調(diào)
  19. sbit b3=P3^2;//下調(diào)
  20. sbit b4=P3^3;//轉(zhuǎn)換
  21. sbit b5=P3^4;//鬧鐘
  22. sbit speaker=P3^5;

  23. lcdscan()
  24. {
  25.         for(i=0;i<6;i++)
  26.         {
  27.                 lcdwrite(j[i]);
  28.                 lcdshuju(a[11-i*2]+0x30);
  29.                 lcdwrite(j[i]+0x01);
  30.                 lcdshuju(a[10-i*2]+0x30);
  31.         }
  32. }

  33. void key()
  34. {
  35.         if(b1==0)
  36.         {
  37.                 dsaddshuju(0x80,(a[1]<<4)+a[0]+0x80);
  38.                 while(b1==0)
  39.                 {
  40.                         for(i=0;i<6;i++)
  41.                         {
  42.                                 b[i]=a[11-i*2+clock]*10+a[10-i*2+clock];
  43.                         }

  44.                         if(b4==0)
  45.                         {
  46.                                 delay(3);
  47.                                 jj++;
  48.                                 if(jj==6)
  49.                                 {
  50.                                         jj=0;
  51.                                 }
  52.                         }
  53.                         if(b2==0)
  54.                         {
  55.                                 delay(3);
  56.                                 b[jj]++;
  57.                                 if(b[5]==60)b[5]=0;
  58.                                 if(b[4]==60)b[4]=0;
  59.                                 if(b[3]==24)b[3]=0;
  60.                                 if((b[0]%4==0 && b[0]%100!=0) || b[0]%400==0){if(b[2]>year2[b[1]-1])b[2]=1;}
  61.                                 else {if(b[2]>year1[b[1]-1])b[2]=1;}
  62.                                 if(b[1]==13)b[1]=1;
  63.                                 if(b[0]==100)b[0]=0;
  64.                                
  65.                         }
  66.                         if(b3==0)
  67.                         {
  68.                                 delay(3);
  69.                                 b[jj]--;
  70.                                 if(b[5]==-1)b[5]=59;
  71.                                 if(b[4]==-1)b[4]=59;
  72.                                 if(b[3]==-1)b[3]=23;
  73.                                 if((b[0]%4==0 && b[0]%100!=0) || b[0]%400==0){if(b[2]<=0)b[2]=year2[b[1]-1];}
  74.                                 else {if(b[2]<=0)b[2]=year1[b[1]-1];}
  75.                                 if(b[1]==0)b[1]=12;
  76.                                 if(b[0]==-1)b[0]=99;
  77.                         }

  78.                         for(i=0;i<6;i++)
  79.                         {
  80.                                 a[11-i*2+clock]=b[i]/10;
  81.                                 a[10-i*2+clock]=b[i]%10;
  82.                         }

  83.                         lcdwrite(j[jj]);
  84.                         lcdshuju(0);
  85.                         lcdwrite(j[jj]+1);
  86.                         lcdshuju(0);
  87.                         delay(200);
  88.                         lcdwrite(j[jj]);
  89.                         lcdshuju(a[11-2*jj+clock]+0x30);
  90.                         lcdwrite(j[jj]+1);
  91.                         lcdshuju(a[10-2*jj+clock]+0x30);
  92.                         delay(200);
  93.                        
  94.                         if(b1==1)
  95.                         {
  96.                                 dsaddshuju(0x80,(a[1]<<4)+a[0]);
  97.                                 dson();
  98.                         }
  99.                         if(b5==0)clock=12;
  100.                 }
  101.         }
  102. }

  103. void main()
  104. {       
  105.         speaker=0;
  106.         lcdrw=0;
  107.         dson();
  108.         lcdon();
  109.         lcdwrite(0x83);
  110.         for(i=0;i<10;i++)
  111.         {
  112.                 lcdshuju(row1[i]);
  113.                 delay(1);
  114.         }
  115.         lcdwrite(0x84+0x40);
  116.         for(i=0;i<8;i++)
  117.         {
  118.                 lcdshuju(row2[i]);
  119.                 delay(1);
  120.         }
  121.         dsrst=0;
  122.         dssclk=0;
  123.         while(1)
  124.         {
  125.                 for(i=0;i<5;i++)
  126.                 {
  127.                         dsrst=1;
  128.                         dswrite(0x81+i*2);
  129.                         k=dsread();
  130.                         dsrst=0;
  131.                         a[i*2]=k&0x0f;
  132.                         a[i*2+1]=(k>>4)&0x0f;                       
  133.                 }
  134.                 dsrst=1;
  135.                 dswrite(0x8d);
  136.                 k=dsread();
  137.                 dsrst=0;
  138.                 a[10]=k&0x0f;
  139.                 a[11]=(k>>4)&0x0f;
  140.                
  141.                 delay(100);

  142.                 lcdscan();
  143.                 key();
  144.                 if(b5==0)
  145.                 {
  146.                         for(i=0;i<12;i++)
  147.                         {
  148.                                 if(a[i+12]==a[i])num++;
  149.                         }
  150.                         if(num==12)bigclock=1;
  151.                         else num=0;
  152.                         lcdwrite(0x8e);
  153.                         lcdshuju('&');
  154.                 }
  155.                 else
  156.                 {
  157.                         lcdwrite(0x8e);
  158.                         lcdshuju(0x00);
  159.                 }       
  160.                 if(bigclock==1)
  161.                 {
  162.                         speaker=1;
  163.                         c++;
  164.                         if(c==100){bigclock=0;speaker=0;}
  165.                 }
  166.                 temp=readtemperature();//temp是uint型的。不然會出現(xiàn)溫度到25后回00的現(xiàn)象?赡苁怯捎谑M(jìn)制與十進(jìn)制的差異。
  167.                 lcdwrite(0x8d+0x40);
  168.                 lcdshuju(temp/100+0x30);
  169.                 lcdwrite(0x8e+0x40);
  170.                 lcdshuju(temp/10%10+0x30);
  171.         }
  172. }
復(fù)制代碼

所有資料51hei提供下載:
電子時鐘 lcd1602 ds1302 ds18b20 鬧鐘.zip (52.01 KB, 下載次數(shù): 212)


評分

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

查看全部評分

回復(fù)

使用道具 舉報

ID:504761 發(fā)表于 2019-4-5 14:06 | 顯示全部樓層
為啥有重復(fù)定義的IO口,而且還有三個警告沒有返回值,程序的下載沒有問題鏈接電路也檢查沒有問題,為啥1602只顯示一個半的框框
回復(fù)

使用道具 舉報

ID:426567 發(fā)表于 2019-4-17 12:24 | 顯示全部樓層
感謝樓主
回復(fù)

使用道具 舉報

ID:469510 發(fā)表于 2019-5-13 16:02 | 顯示全部樓層
很給力!
回復(fù)

使用道具 舉報

ID:568900 發(fā)表于 2019-6-21 15:35 | 顯示全部樓層
這么nb
回復(fù)

使用道具 舉報

ID:846185 發(fā)表于 2020-11-23 14:00 | 顯示全部樓層
根本不顯示我都懷疑這寫的嗎
回復(fù)

使用道具 舉報

ID:847794 發(fā)表于 2020-11-23 14:23 | 顯示全部樓層
這個程序?qū)懙暮芎,再加點(diǎn)霍爾細(xì)節(jié)就完美了
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 在线日韩 | 精品熟人一区二区三区四区 | 91色视频在线 | 国产高清一区二区三区 | 亚洲黄色av | 午夜精品福利视频 | 久久精品一区二区三区四区 | 国产在线一区二区三区 | 精品在线一区 | 国产日韩精品一区二区三区 | 九九免费视频 | 成人激情视频 | 玖玖视频免费 | 国产黄色一级片 | 国产精品极品美女在线观看免费 | 久久伊人影院 | 日本精品裸体写真集在线观看 | 国产精品高潮呻吟久久aⅴ码 | 国产精品99久久久久久人 | 国产在线观看一区二区 | 亚洲一区 中文字幕 | 亚洲精品一区中文字幕乱码 | 久久精品国产精品青草 | 国产日产精品一区二区三区四区 | 欧美三级电影在线播放 | 亚洲aⅴ | 视频在线一区二区 | 国产成人精品久久二区二区91 | 日本在线免费视频 | 高清视频一区二区三区 | 黄色av网站在线免费观看 | 91视视频在线观看入口直接观看 | 国产精品久久久久久久久久三级 | 欧美日韩一区精品 | 天天操天天射天天舔 | 国产激情视频网 | 特级毛片爽www免费版 | 久久久精品黄色 | 精品无码久久久久久国产 | 无毛av| 成人h视频在线 |