找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)DS1302中文手冊及仿真程序?qū)嵗?/span>

[復(fù)制鏈接]
ID:1112584 發(fā)表于 2024-3-10 10:31 | 顯示全部樓層 |閱讀模式
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif

DS1302中文手冊:

51hei.png 51hei.png

單片機(jī)源程序如下:
  1. //-----------------------main.c------------------------
  2. //DS1302實(shí)時時鐘顯示程序
  3. //-----------------------------------------------------
  4. #include<reg51.h>
  5. #include<intrins.h>
  6. #include<string.h>
  7. #define UCHAR unsigned char
  8. #define UINT unsigned int
  9. #include <lcd1602.h>
  10. #include <ds1302.h>

  11. UCHAR *WEEK[] = {"SUN","MON","TUS","WEN","THU","FRI","SAT"};
  12. //1-7對應(yīng)SUN TO SAT
  13. UCHAR code inittime[] ={0x00,0x00,0x12,0x01,0x01,0x07,0x22};
  14. //以上七個初始值對應(yīng)于0秒,0分,12點(diǎn),1號,1月,周六,22年)
  15. //即2022年1月1日12點(diǎn)00分00秒周日
  16. UCHAR Dis_Buf1[] = "Date 00-00-00   ";
  17. UCHAR Dis_Buf2[] = "Time 00:00:00   ";

  18. //-----------------------------------------------------------
  19. //初始化日期和時間
  20. //------------------------------------------------------------
  21. void InitDateTime()
  22. {
  23.         UCHAR i, addr = 0x80;
  24.         Write_1302(0x8E,0x00); //取消寫保護(hù)


  25.         for(i = 0; i < 7; i++ ,addr += 2)
  26.         {
  27.                 Write_1302(addr,inittime[i]);
  28.         }
  29.     Write_1302(0x8E,0x80); //取消寫保護(hù)
  30. }
  31. //-----------------------------------------------------------
  32. //日期與時間轉(zhuǎn)換為數(shù)字字符
  33. //-----------------------------------------------------------
  34. void Format_DateTime(UCHAR d,UCHAR *a)
  35. {
  36.         *a = (d>>4)+'0';
  37.         *(a+1) = (d & 0x0F) + '0';
  38. }
  39. void main()
  40. {
  41.         Initialize_LCD1602();
  42.         InitDateTime();
  43.         while(1)
  44.         {
  45.             ReadDateTime(); //從1302讀取日期和時間
  46.                 Format_DateTime(DateTime[6],Dis_Buf1+5);
  47.                 Format_DateTime(DateTime[4],Dis_Buf1+8);
  48.                 Format_DateTime(DateTime[3],Dis_Buf1+11);
  49.                 //格式化年月日
  50.                 strcpy(Dis_Buf1+13,WEEK[DateTime[5] - 1]);
  51.                 //格式化時星期
  52.                 Format_DateTime(DateTime[2],Dis_Buf2+5);
  53.                 Format_DateTime(DateTime[1],Dis_Buf2+8);
  54.                 Format_DateTime(DateTime[0],Dis_Buf2+11);
  55.                 //格式化時分秒
  56.                 LCD1602_Display(0,0,Dis_Buf1);
  57.                 LCD1602_Display(0,1,Dis_Buf2);                               
  58.         }
  59. }
復(fù)制代碼

仿真程序資料51hei附件下載:
DS1302.zip (1.57 MB, 下載次數(shù): 23)

DS1302中文手冊及實(shí)例
DS1302中文手冊.pdf
DS1302時鐘電路.pdsprj

評分

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

查看全部評分

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表