|
Altium Designer畫的DS1302時鐘模塊原理圖和PCB圖如下:(51hei附件中可下載工程文件)
芯片簡介: 介紹美國DALLAS 公司推出的具有涓細電流充電能力的低功耗實時時鐘電路DS1302 的結構、工作原理及其在實時顯示時間中的應用。它可以對年、月、日、周、日、時、分、秒進行計時,且具有閏年補償等多種功能。
單片機源程序如下:
- /********************************************************
- 實現功能:DS1302測試程序
- 使用芯片:AT89S52
- 晶振:11.0592MHZ
- 編譯環境:Keil
- 作者:zhangxinchunleo
- 【聲明】此程序僅用于學習與參考,引用請注明版權和作者信息!
- ********************************************************/
- /*********************************包含頭文件********************************/
- #include "reg52.h"
- #include <intrins.h>
- /*********************************端口定義**********************************/
- sbit DS1302_CLK = P1^0;
- sbit DS1302_IO = P1^1;
- sbit DS1302_RST = P1^2;
- /*******************************共陽LED段碼表*******************************/
- unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- unsigned char wei[4]={0XEf,0XDf,0XBf,0X7f}; //位的控制端
- /******************************定義全局變量*********************************/
- unsigned char second,minute,hour,week,day,month,year; //秒、分、時、星期、日、月、年
- unsigned char time[]={0x06,0x03,0x14,0x03,0x12,0x30,0x00}; //初始時間數組
- /****************************************************************************
- 函數功能:數碼管掃描延時子程序
- 入口參數:
- 出口參數:
- ****************************************************************************/
- void delay1(void)
- {
- int k;
- for(k=0;k<400;k++);
- }
- /****************************************************************************
- 函數功能:數碼管顯示子程序
- 入口參數:k
- 出口參數:
- ****************************************************************************/
- void display(void)
- {
- P2=0XFF;
- P0=tab[minute/16];
- P2=wei[0];
- delay1();
- P2=0XFF;
- P0=tab[minute%16];
- P2=wei[1];
- delay1();
- P2=0XFF;
- P0=tab[second/16];
- P2=wei[2];
- delay1();
- P2=0XFF;
- P0=tab[second%16];
- P2=wei[3];
- delay1();
- P2=0XFF;
- }
- /*****************************************************************************
- 函數功能:向DS1302送一字節數據子程序
- 入口參數:
- 出口參數:
- *****************************************************************************/
- void InputByte(unsigned char byte1)
- {
- char i;
- for(i=8;i>0;i--)
- {
- DS1302_IO=(bit)(byte1&0x01);
- DS1302_CLK=1;
- _nop_();
- DS1302_CLK=0;
- byte1>>=1;
- }
- return;
- }
- /*****************************************************************************
- 函數功能:讀DS1302一個字節子程序
- 入口參數:
- 出口參數:
- *****************************************************************************/
- unsigned char outputbyte(void)
- {
- unsigned char i;
- unsigned ucdat=0;
- for(i=8;i>0;i--)
- {
- DS1302_IO=1;
- ucdat>>=1;
- if(DS1302_IO)ucdat|=0x80;
- DS1302_CLK=1;
- _nop_();
- DS1302_CLK=0;
- }
- return(ucdat);
- }
- /*****************************************************************************
- 函數功能:向DS1302某地址寫一字節數據子程序
- 入口參數:addr,TDat
- 出口參數:
- *****************************************************************************/
- void write_ds1302(unsigned char addr,unsigned char TDat)
- {
- DS1302_RST=0;
- _nop_();
- DS1302_CLK=0;
- _nop_();
- DS1302_RST=1;
- InputByte(addr);
- _nop_();
- InputByte(TDat);
- DS1302_CLK=1;
- _nop_();
- DS1302_RST=0;
- }
- /*****************************************************************************
- 函數功能:讀DS1302地址子程序
- 入口參數:add
- 出口參數:timedata
- *****************************************************************************/
- unsigned char read_ds1302(unsigned char addr)
- {
- unsigned char timedata;
- DS1302_RST=0;
- _nop_();
- DS1302_CLK=0;
- _nop_();
- DS1302_RST=1;
- InputByte(addr);
- timedata=OutputByte();
- DS1302_CLK=1;
- _nop_();
- DS1302_RST=0;
- return(timedata);
- }
- /*****************************************************************************
- 函數功能:初始化DS1302子程序
- 入口參數:time[](全局變量)
- 出口參數:
- *****************************************************************************/
- void initial_ds1302()
- {
- write_ds1302(0x8e,0x00); //寫保護寄存器,在對時鐘或RAM寫前WP一定要為0
- write_ds1302(0x8c,time[0]); //年
- write_ds1302(0x88,time[1]); //月
- write_ds1302(0x86,time[2]); //日
- write_ds1302(0x8A,time[3]); //星期
- write_ds1302(0x84,time[4]); //時
- write_ds1302(0x82,time[5]); //分
- write_ds1302(0x80,time[6]); //秒
- write_ds1302(0x8e,0x80); //寫保護寄存器
- }
- /*****************************************************************************
- 函數功能:讀DS1302時間子程序
- 入口參數:
- 出口參數:全局變量(second,minute,hour,week,day,month,year)
- *****************************************************************************/
- void read_time()
- {
- second=read_ds1302(0x81); //秒寄存器
- minute=read_ds1302(0x83); //分
- hour=read_ds1302(0x85); //時
- week=read_ds1302(0x8B); //星期
- day=read_ds1302(0x87); //日
- month=read_ds1302(0x89); //月
- year=read_ds1302(0x8d); //年
- }
- /*****************************************************************************
- 函數功能:主程序
- 入口參數:
- 出口參數:
- *****************************************************************************/
- void main(void)
- {
- initial_ds1302(); //初始化DS1302
- while(1)
- {
- read_time(); //讀取時間
- display(); //顯示時間
- }
- }
復制代碼
簡要說明: 一、尺寸:全長26mm寬23mm高10mm 二、主芯片:DS1302 三、工作電壓:直流5V 四、特點:電路簡單實用,接線簡單,地面有3V電池座,使用32.768khz晶振。
適用場合:單片機學習、電子競賽、產品開發、畢業設計。。。
所有資料51hei提供下載:
|
-
-
DS1302時鐘模塊DXP資料.rar
2018-2-24 00:56 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
80.82 KB, 下載次數: 112, 下載積分: 黑幣 -5
-
-
DS1302測試程序.rar
2018-2-24 00:56 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
209.4 KB, 下載次數: 71, 下載積分: 黑幣 -5
-
-
DS1302時鐘模塊產品使用手冊.rar
2018-2-24 00:56 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
3.23 MB, 下載次數: 37, 下載積分: 黑幣 -5
-
-
DS1302時鐘模塊相關資料.rar
2018-2-24 00:56 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
1.69 MB, 下載次數: 49, 下載積分: 黑幣 -5
-
-
DS1302時鐘模塊原理圖.doc
2018-2-24 00:56 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
26 KB, 下載次數: 52, 下載積分: 黑幣 -5
|