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

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

QQ登錄

只需一步,快速開始

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

DS1302實(shí)時(shí)時(shí)鐘 串口和LCD顯示程序及DS1302中文數(shù)據(jù)手冊(cè)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
DS1302資料包:


DS1302中文數(shù)據(jù)手冊(cè)內(nèi)容截圖如下:


DS1302實(shí)時(shí)時(shí)鐘串口顯示的單片機(jī)源程序如下:
  1. /*******************說明:**************************
  2. 將實(shí)時(shí)時(shí)鐘數(shù)據(jù)通過串口發(fā)送
  3. **************************************************/
  4. #include <reg52.h>
  5. #define uchar unsigned char
  6. #define uint  unsigned int
  7. //DS1302引腳定義,可根據(jù)實(shí)際情況自行修改端口定義
  8. sbit RST=P3^7;
  9. sbit IO=P3^5;
  10. sbit SCK=P3^6;
  11. //DS1302地址定義
  12. #define ds1302_sec_add                        0x80                //秒數(shù)據(jù)地址
  13. #define ds1302_min_add                        0x82                //分?jǐn)?shù)據(jù)地址
  14. #define ds1302_hr_add                        0x84                //時(shí)數(shù)據(jù)地址
  15. #define ds1302_date_add                        0x86                //日數(shù)據(jù)地址
  16. #define ds1302_month_add                0x88                //月數(shù)據(jù)地址
  17. #define ds1302_day_add                        0x8a                //星期數(shù)據(jù)地址
  18. #define ds1302_year_add                        0x8c                //年數(shù)據(jù)地址
  19. #define ds1302_control_add                0x8e                //控制數(shù)據(jù)地址
  20. #define ds1302_charger_add                0x90                                          
  21. #define ds1302_clkburst_add                0xbe
  22. //初始時(shí)間定義
  23. uchar time_buf[8] = {0x20,0x12,0x02,0x29,0x12,0x03,0x00,0x02};//初始時(shí)間
  24. uchar readtime[14];//當(dāng)前時(shí)間
  25. uchar sec_buf=0;  //秒緩存
  26. uchar sec_flag=0; //秒標(biāo)志位
  27. uchar writetime_flag=0;
  28. //功能:延時(shí)1毫秒
  29. //入口參數(shù):x
  30. //出口參數(shù):無
  31. //說明:晶振為12M
  32. void Delay_xms(uint x)
  33. {
  34.   uint i,j;
  35.   for(i=0;i<x;i++)
  36.     for(j=0;j<112;j++);
  37. }
  38. //DS1302初始化函數(shù)
  39. void ds1302_init(void)
  40. {
  41.         RST=0;                        //RST腳置低
  42.         SCK=0;                        //SCK腳置低
  43. }
  44. //向DS1302寫入一字節(jié)數(shù)據(jù)
  45. void ds1302_write_byte(uchar addr, uchar d)
  46. {
  47.         uchar i;
  48.         RST=1;                                        //啟動(dòng)DS1302總線       
  49.         //寫入目標(biāo)地址:addr
  50.         addr = addr & 0xFE;   //最低位置零,寄存器0位為0時(shí)寫,為1時(shí)讀
  51.         for (i = 0; i < 8; i ++) {
  52.                 if (addr & 0x01) {
  53.                         IO=1;
  54.                         }
  55.                 else {
  56.                         IO=0;
  57.                         }
  58.                 SCK=1;      //產(chǎn)生時(shí)鐘
  59.                 SCK=0;
  60.                 addr = addr >> 1;
  61.                 }       
  62.         //寫入數(shù)據(jù):d
  63.         for (i = 0; i < 8; i ++) {
  64.                 if (d & 0x01) {
  65.                         IO=1;
  66.                         }
  67.                 else {
  68.                         IO=0;
  69.                         }
  70.                 SCK=1;    //產(chǎn)生時(shí)鐘
  71.                 SCK=0;
  72.                 d = d >> 1;
  73.                 }
  74.         RST=0;                //停止DS1302總線
  75. }

  76. //從DS1302讀出一字節(jié)數(shù)據(jù)
  77. uchar ds1302_read_byte(uchar addr) {

  78.         uchar i,temp;       
  79.         RST=1;                                        //啟動(dòng)DS1302總線
  80.         //寫入目標(biāo)地址:addr
  81.         addr = addr | 0x01;    //最低位置高,寄存器0位為0時(shí)寫,為1時(shí)讀
  82.         for (i = 0; i < 8; i ++) {
  83.                 if (addr & 0x01) {
  84.                         IO=1;
  85.                         }
  86.                 else {
  87.                         IO=0;
  88.                         }
  89.                 SCK=1;
  90.                 SCK=0;
  91.                 addr = addr >> 1;
  92.                 }       
  93.         //輸出數(shù)據(jù):temp
  94.         for (i = 0; i < 8; i ++) {
  95.                 temp = temp >> 1;
  96.                 if (IO) {
  97.                         temp |= 0x80;
  98.                         }
  99.                 else {
  100.                         temp &= 0x7F;
  101.                         }
  102.                 SCK=1;
  103.                 SCK=0;
  104.                 }       
  105.         RST=0;                                        //停止DS1302總線
  106.         return temp;
  107. }
  108. //向DS302寫入時(shí)鐘數(shù)據(jù)
  109. void ds1302_write_time(void)
  110. {
  111.     writetime_flag=ds1302_read_byte(0x80);
  112.         if(writetime_flag&0x80)
  113.         {
  114.         ds1302_write_byte(ds1302_control_add,0x00);                        //關(guān)閉寫保護(hù)
  115.         ds1302_write_byte(ds1302_sec_add,0x80);                                //暫停時(shí)鐘
  116.         //ds1302_write_byte(ds1302_charger_add,0xa9);            //涓流充電
  117.         ds1302_write_byte(ds1302_year_add,time_buf[1]);                //年
  118.         ds1302_write_byte(ds1302_month_add,time_buf[2]);        //月
  119.         ds1302_write_byte(ds1302_date_add,time_buf[3]);                //日
  120.         ds1302_write_byte(ds1302_hr_add,time_buf[4]);                //時(shí)
  121.         ds1302_write_byte(ds1302_min_add,time_buf[5]);                //分
  122.         ds1302_write_byte(ds1302_sec_add,time_buf[6]);                //秒
  123.         ds1302_write_byte(ds1302_day_add,time_buf[7]);                //周
  124.         ds1302_write_byte(ds1302_control_add,0x80);                        //打開寫保護(hù)     
  125.     }
  126. }
  127. //從DS302讀出時(shí)鐘數(shù)據(jù)
  128. void ds1302_read_time(void)  
  129. {
  130.         time_buf[1]=ds1302_read_byte(ds1302_year_add);                //年
  131.         time_buf[2]=ds1302_read_byte(ds1302_month_add);                //月
  132.         time_buf[3]=ds1302_read_byte(ds1302_date_add);                //日
  133.         time_buf[4]=ds1302_read_byte(ds1302_hr_add);                //時(shí)
  134.         time_buf[5]=ds1302_read_byte(ds1302_min_add);                //分
  135.         time_buf[6]=(ds1302_read_byte(ds1302_sec_add))&0x7f;//秒,屏蔽秒的第7位,避免超出59
  136.         time_buf[7]=ds1302_read_byte(ds1302_day_add);                //周        
  137. }
  138. //串口初始化(系統(tǒng)晶振為12MHz)
  139. void Uart_init(uchar Baud_flag)
  140. {
  141.    TMOD = 0x20;       //T1 2
  142.    PCON = 0x00;       //SMOD = 0
  143.    SCON = 0x50;              //串口1 8
  144.    switch(Baud_flag)
  145.    {          
  146.     case 0x00:        //2400 11.0592M:0xf4
  147.           TH1=0xf3;
  148.           TL1=0xf3;
  149.         break;
  150.         case 0x01:        //4800 11.0592M:0xfa
  151.           TH1=0xf9;
  152.           TL1=0xf9;
  153.         break;
  154.     case 0x02:        //9600 11.0592M:0xfd
  155.           TH1=0xfd;
  156.           TL1=0xfd;
  157.         break;
  158.     case 0x03:        //19200 11.0592M:0xfe
  159.       TH1=0xfd;
  160.           TL1=0xfd;
  161.     break;
  162.         default:          //默認(rèn)為2400
  163.           TH1=0xf3;
  164.           TL1=0xf3;
  165.         break;
  166.    }
  167.    TR1 = 1;                  //啟動(dòng)定時(shí)器1                                                               
  168.    ES=1;              //開串口中斷
  169.    EA=1;              //開總中斷      
  170. }
  171. //串口發(fā)送
  172. void Send_char(uchar ch)
  173. {
  174. SBUF=ch;
  175. while(!TI);      //等待發(fā)送完畢
  176. TI=0;           //清中斷
  177. }
  178. //主函數(shù)
  179. void main(void)
  180. {
  181. Delay_xms(50);//等待系統(tǒng)穩(wěn)定
  182. ds1302_init(); //DS1302初始化
  183. Uart_init(0); //波特率初始化為2400
  184. Delay_xms(10);
  185. ds1302_write_time(); //寫入初始值
  186. while(1)
  187.   {
  188.   ds1302_read_time();  //讀取時(shí)間
  189.   readtime[0]=(time_buf[0]>>4);   //分離出年千位
  190.   readtime[1]=(time_buf[0]&0x0F); //分離出年百位
  191.   readtime[2]=(time_buf[1]>>4);   //分離出年十位
  192.   readtime[3]=(time_buf[1]&0x0F); //分離出年個(gè)位

  193.   readtime[4]=(time_buf[2]>>4);   //分離出月十位
  194.   readtime[5]=(time_buf[2]&0x0F); //分離出月個(gè)位

  195.   readtime[6]=(time_buf[3]>>4);   //分離出日十位
  196.   readtime[7]=(time_buf[3]&0x0F); //分離出日個(gè)位

  197.   readtime[8]=(time_buf[4]>>4);   //分離出小時(shí)十位
  198.   readtime[9]=(time_buf[4]&0x0F); //分離出小時(shí)個(gè)位
  199.   readtime[10]=(time_buf[5]>>4);   //分離出分鐘十位
  200.   readtime[11]=(time_buf[5]&0x0F); //分離出分鐘個(gè)位
  201.   readtime[12]=(time_buf[6]>>4);   //分離出秒鐘十位
  202.   readtime[13]=(time_buf[6]&0x0F); //分離出秒鐘個(gè)位   
  203.   if(readtime[13]!=sec_buf)      
  204.    {
  205.     EA=0;
  206.     sec_flag=0;   
  207.         sec_buf=readtime[13];          
  208.     Send_char(readtime[0]+'0');//年
  209.         Send_char(readtime[1]+'0');     
  210.     Send_char(readtime[2]+'0');
  211.         Send_char(readtime[3]+'0');   

  212.         Send_char('-');

  213.     Send_char(readtime[4]+'0');//月
  214.         Send_char(readtime[5]+'0');

  215.         Send_char('-');
  216. ……………………

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

所有資料51hei提供下載:
_DS1302實(shí)時(shí)時(shí)鐘模塊.rar (477.46 KB, 下載次數(shù): 69)


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

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2017-5-31 03:53 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

板凳
ID:206228 發(fā)表于 2017-5-31 08:37 | 只看該作者
very good
回復(fù)

使用道具 舉報(bào)

地板
ID:206532 發(fā)表于 2017-5-31 22:47 | 只看該作者
很棒???!!!!
回復(fù)

使用道具 舉報(bào)

5#
ID:726581 發(fā)表于 2020-4-12 14:30 | 只看該作者
正在學(xué)習(xí)1302的使用,好東西
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产有码 | 无吗视频 | 欧美一级免费看 | 超碰精品在线观看 | 久久综合九色综合欧美狠狠 | 成人免费在线电影 | 日日天天 | 天天爽网站 | 天天看天天爽 | 亚洲欧美精品在线 | a级在线免费视频 | 美国黄色一级片 | 国产精品成人一区二区三区 | 亚洲一区| 欧美三级三级三级爽爽爽 | 亚洲美女av网站 | 久久乐国产精品 | 亚洲福利在线观看 | 欧美日韩福利视频 | 天天干,夜夜操 | 国产毛片久久久 | 超碰国产在线 | 成人在线看片 | 九九精品网 | 欧美日韩精品久久久免费观看 | 九九热九九 | 综合网伊人 | 看毛片网站 | 日本精品一区二区三区视频 | 欧美综合在线观看 | 亚洲网站在线观看 | 午夜a级理论片915影院 | 日日骚视频| 国产精品久久福利 | 日韩精品免费播放 | 国产黄色av网站 | 欧美一区二区 | 国产高潮av | 午夜影院中文字幕 | 亚洲国产精品人人爽夜夜爽 | 99精品国产一区二区青青牛奶 |