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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5261|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)語音播報(bào)萬年歷程序SYN6288+DS1302+1602+18B20 Proteus仿真

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
時(shí)間可以設(shè)置更改  ,一鍵報(bào)時(shí)萬年歷設(shè)置

采用1602顯示   1302時(shí)鐘芯片 +SYN6288語音播報(bào)芯片+DS18B20
仿真實(shí)物齊全,可以直接使用。直接焊接實(shí)物方可使用。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include <REG52.H>
  2. #include "lcd1602.h"
  3. #include <string.h>
  4. #include <intrins.h>
  5. #include "KEY.H"
  6. #include <ds18b20.h>
  7. #include "1302.h"

  8. #include "config.h"
  9. /*********定義變量*********/

  10. uchar buff[16];
  11. uint Y=0,M=0,D=0,H=0,F=0,S=0,W=0;
  12. uchar T18B20=0;

  13. uchar ADDR=0;
  14. bit SetState=0;
  15. sbit led = P2^7;

  16. /*=====1602顯示======*/
  17. void LCD_DISPLAY()
  18. {
  19.         T18B20=(retemp());       //18B20溫度采集數(shù)值
  20.         
  21.         Y = (TIME[6]/16*10)+(TIME[6]&0X0F);
  22.         M = (TIME[4]/16*10)+(TIME[4]&0X0F);
  23.         D = (TIME[3]/16*10)+(TIME[3]&0X0F);
  24.         
  25.         W = ((TIME[5]/16*10)+(TIME[5]&0X0F)%7);
  26.         
  27.         H = (TIME[2]/16*10)+(TIME[2]&0X0F);
  28.         F = (TIME[1]/16*10)+(TIME[1]&0X0F);
  29.         S = (TIME[0]/16*10)+(TIME[0]&0X0F);
  30.         
  31.         
  32.         sprintf(buff,"20%02d-%02d-%02d",(int)Y,(int)M,(int)D);
  33.         print(1,1,buff);
  34.         
  35.         sprintf(buff,"%02d:%02d:%02d",(int)H,(int)F,(int)S);
  36.         print(2,1,buff);
  37.         
  38.         sprintf(buff,"T:%02dC",(int)T18B20);
  39.         print(2,12,buff);
  40.         
  41.         switch(W)
  42.         {
  43.                 case 0:print(1,12,"SUM");break;
  44.                 case 1:print(1,12,"MON");break;
  45.                 case 2:print(1,12,"TUE");break;
  46.                 case 3:print(1,12,"WED");break;
  47.                 case 4:print(1,12,"THU");break;
  48.                 case 5:print(1,12,"RFI");break;
  49.                 case 6:print(1,12,"STA");break;
  50.                
  51.                 default :break;
  52.         }
  53.         
  54. }


  55. void Int0Configuration()
  56. {
  57.         //設(shè)置INT0
  58.         IT0=1;//跳變沿出發(fā)方式(下降沿)
  59.         EX0=1;//打開INT0的中斷允許。
  60. }
  61. /*******************************************************************************
  62. * 函數(shù)名         : Int0()
  63. * 函數(shù)功能                   : 外部中斷0 中斷函數(shù)
  64. * 輸入           : 無
  65. * 輸出                  : 無
  66. *******************************************************************************/

  67. void Int0() interrupt 0                 
  68. {
  69.         if(K6_F==1)
  70.         {
  71.                 K6_F=0;
  72.                 SetState=~SetState;
  73.                 Ds1302Init();        
  74.         }
  75. }


  76. /*========時(shí)間更改==========*/
  77. void TIMER_CHANGE()
  78. {
  79.         
  80.          if(K4_F==1)                //檢測按鍵K4是否按下
  81.                 {        
  82.                         K4_F = 0;
  83.                         ADDR++;
  84.                         if(ADDR>=7)
  85.                         ADDR=0;                                       
  86.                 }
  87.                 else if(K3_F==1)                //檢測按鍵K3是否按下
  88.                 {        
  89.                         K3_F = 0;
  90.                         ADDR--;
  91.                         if(ADDR<0)
  92.                         ADDR=7;                                       
  93.                 }
  94.                
  95.                 if((K2_F==1)||(K1_F==1))                //檢測按鍵K2或者k1是否按下
  96.                 {
  97.                         if(K2_F==1)
  98.                         {
  99.                                 K2_F=0;
  100.                                 TIME[ADDR]++;
  101.                                 if((TIME[ADDR]&0X0F)>9)
  102.                                 {
  103.                                         TIME[ADDR] = TIME[ADDR]+6;
  104.                                 }
  105.                         }
  106.                         else if(K1_F==1)
  107.                         {
  108.                                 K1_F=0;
  109.                                 TIME[ADDR]--;
  110.                                 if((TIME[ADDR]&0X0F)>9)
  111.                                 {
  112.                                         TIME[ADDR] = TIME[ADDR]-6;
  113.                                 }
  114.                                 
  115.                         }
  116.                 }
  117.                
  118.                 if((ADDR<2)&&(TIME[ADDR]>=0x60))  //分不能超60
  119.                 {
  120.                         TIME[ADDR] = 0;
  121.                 }
  122.                 else if(ADDR==2&&TIME[ADDR]>=0x24)   //小時(shí)不能超24
  123.                 {
  124.                         TIME[ADDR] = 0;
  125.                 }
  126.                 else if(ADDR==3&&TIME[ADDR]>=0x32)   //day不能超31
  127.                 {
  128.                         TIME[ADDR] = 1;
  129.                 }
  130.                 else if(ADDR==4&&TIME[ADDR]>=0x13)   //月分<=12
  131.                 {
  132.                         TIME[ADDR] = 1;
  133.                 }
  134.                 else if(ADDR==0&&TIME[ADDR]>=0x07)   //星期<=7
  135.                 {
  136.                         TIME[ADDR] = 1;
  137.                 }
  138.                         
  139.                 Ds1302Write(ADDR,TIME[ADDR]);        
  140.                
  141.                
  142.                 switch(ADDR)
  143.                 {
  144.                         case 0:print(2,10,"S ");break;   //second
  145.                         case 1:print(2,10,"F ");break;   //Minute
  146.                         case 2:print(2,10,"H ");break;   //Hour
  147.                         case 3:print(2,10,"D ");break;   //DAY
  148.                         case 4:print(2,10,"M ");break;   //MONTH
  149.                         case 5:print(2,10,"W ");break;   //WEEK
  150.                         case 6:print(2,10,"Y ");break;   //YEAR
  151.                         default :break;
  152.                 }        
  153. }



  154. /*******主函數(shù)*******/
  155. void main() //int a   
  156. {
  157.         uchar kkk = 55;
  158.         Int0Configuration();
  159.         lcd_init();
  160.         lcd_clear();
  161.         EA=1;   //總中斷
  162.         
  163.         while(1)
  164.         {
  165. ……………………

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

所有資料51hei提供下載:
可調(diào)萬年歷實(shí)物.zip (106 KB, 下載次數(shù): 116)
實(shí)物仿真.zip (153.66 KB, 下載次數(shù): 151)

評分

參與人數(shù) 3黑幣 +122 收起 理由
xiaoyuxinke + 30 很給力!
Nieh + 12 共享資料的黑幣獎勵!
admin + 80 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏15 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:882048 發(fā)表于 2022-6-20 13:54 | 只看該作者
第52行代碼:  case 5:print(1,12,"RFI");break;  其中"RFI"應(yīng)為,"FRI"之誤
回復(fù)

使用道具 舉報(bào)

板凳
ID:987228 發(fā)表于 2022-6-30 17:00 | 只看該作者
樓主這個(gè)有鬧鐘功能嗎,添加功能是不是更棒。
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品一区二区三区老鸭窝 | 亚洲欧洲在线观看视频 | 久久久久亚洲国产| 精品久久久久久久久久久久久久久久久 | 国产日韩欧美中文字幕 | 欧美理论 | 老司机67194精品线观看 | 国产九一精品 | 欧美男人的天堂 | 视频一区二区在线观看 | 婷婷丁香在线视频 | 成人国产精品视频 | 亚洲女优在线播放 | 欧产日产国产精品99 | 久久久精品一区二区三区 | 天堂视频中文在线 | 超碰在线人人干 | 99久久精品免费看国产四区 | 久草视频在线播放 | 午夜亚洲| 91久久精品国产 | 国产精品永久免费视频 | 野狼在线社区2017入口 | 成人免费网站www网站高清 | 国产专区在线 | 在线成人福利 | av网站观看| 久久亚洲视频 | 日韩一区欧美一区 | 日韩免费视频 | 国产综合精品一区二区三区 | 三区四区在线观看 | 亚洲精品久久久一区二区三区 | 欧美性生交大片免费 | 三a毛片 | 成人精品鲁一区一区二区 | 国产精品一区网站 | 欧美一区二区三区精品 | 日韩国产欧美视频 | 成人免费网站视频 | 刘亦菲国产毛片bd |