赞
踩
全部硬件电路分为四大部分:
实际设计硬件电路时应考虑到51单片机的电源、复位电路以及外接晶振,时钟芯片DS1302的备用电源等。
- #include<reg51.h>
- #include<intrins.h>
-
- //时钟芯片1302寄存器读写命令字
- #define SEC_write 0x80
- #define SEC_read 0x81
- #define MIN_write 0x82
- #define MIN_read 0x83
- #define HR_write 0x84
- #define HR_read 0x85
- #define DAY_write 0x86
- #define DAY_read 0x87
- #define MONTH_write 0x88
- #define MONTH_read 0x89
- #define YEAR_write 0x8c
- #define YEAR_read 0x8d
-
- //时钟芯片1302数据传输接口
- sbit SCLK=P2^0;
- sbit DATA=P2^1;
- sbit RST=P2^2;
-
- //向1302写一个字节数据
- void Write1302(unsigned char dat)
- {
- unsigned char i;
- SCLK=0;
- _nop_();
- for(i=0;i<8;i++)
- {
- DATA=dat&0x01;
- _nop_();
- SCLK=1;
- _nop_();
- SCLK=0;
- dat>>=1;
- }
- }
-
- //根据命令字,向1302写一个字节数据
- void WriteSet1302(unsigned char Cmd,unsigned char dat)
- {
- RST=0;
- SCLK=0;
- RST=1;
- _nop_();
- Write1302(Cmd);
- Write1302(dat);
- SCLK=1;
- RST=0;
- }
-
- //从1302读一个字节数据
- unsigned char Read1302(void)
- {
- unsigned char i,dat;
- _nop_();
- for(i=0;i<8;i++)
- {
- dat>>=1;
- if(DATA==1)
- dat|=0x80;
- SCLK=1;
- _nop_();
- SCLK=0;
- _nop_();
- }
- return dat;
- }
-
- //根据命令字,从1302读一个字节数据
- unsigned char ReadSet1302(unsigned char Cmd)
- {
- unsigned char dat;
- RST=0;
- SCLK=0;
- RST=1;
- Write1302(Cmd);
- dat=Read1302();
- SCLK=1;
- RST=0;
- return dat;
- }
-
- //1302进行初始化设置
- void Init_DS1302(void)
- {
- WriteSet1302(0x8E,0x00);
- WriteSet1302(SEC_write,((0/10)&
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。