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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

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

  [復(fù)制鏈接]
ID:642727 發(fā)表于 2021-6-18 10:17 | 顯示全部樓層 |閱讀模式
時(shí)間可以設(shè)置更改  ,一鍵報(bào)時(shí)萬(wàn)年歷設(shè)置

采用1602顯示   1302時(shí)鐘芯片 +SYN6288語(yǔ)音播報(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;//打開(kāi)INT0的中斷允許。
  60. }
  61. /*******************************************************************************
  62. * 函數(shù)名         : Int0()
  63. * 函數(shù)功能                   : 外部中斷0 中斷函數(shù)
  64. * 輸入           : 無(wú)
  65. * 輸出                  : 無(wú)
  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)                //檢測(cè)按鍵K4是否按下
  81.                 {        
  82.                         K4_F = 0;
  83.                         ADDR++;
  84.                         if(ADDR>=7)
  85.                         ADDR=0;                                       
  86.                 }
  87.                 else if(K3_F==1)                //檢測(cè)按鍵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))                //檢測(cè)按鍵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. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

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

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

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ù) 返回頂部 返回列表
主站蜘蛛池模板: 免费成人高清在线视频 | 日韩精品视频一区二区三区 | 国产剧情一区 | 欧美freesex黑人又粗又大 | 在线āv视频 | 亚洲一二三区不卡 | 欧一区二区 | 日本不卡视频在线播放 | 国产精品呻吟久久av凹凸 | 国产精品高潮呻吟久久久久 | 日韩成人在线网站 | 亚洲一二三区av | 欧美一页| 欧美中文字幕在线观看 | 国产一区高清 | 91久久| 中文字幕国产第一页 | 一级片在线播放 | 精品一区二区三区中文字幕 | 色视频在线播放 | 久久天天 | 美国av毛片| 成人免费在线视频 | 国产精品99免费视频 | 日本一区二区三区免费观看 | 国产精品色 | 中文在线一区二区 | 中文字幕第九页 | 国产视频中文字幕 | 国产一区三区在线 | 色综合久久88色综合天天 | 久久一区二区av | 久久精品亚洲 | 日韩精品成人免费观看视频 | 天天操网| 国产欧美精品区一区二区三区 | 91视视频在线观看入口直接观看 | 久久久久国产精品一区三寸 | 中文字幕1区 | 成人国产精品久久久 | 狠狠爱网址 |