|
- /**************main.c**************/
- 这是主函数数码管显示部分代码
- /* shijian[]={50, 59,23, 1, 1, 1,2018}
- 0 1 2 3 4 5 6
- 秒 分 时 日 月 周 年
- 应显示:
- 2018 01 01 23 59 50
- 6 4 3 2 1 0
- */
- if(xianshi==1) //年月日
- {
- yi=shijian[6]/1000;er=shijian[6]%1000/100;san=shijian[6]/10;si=shijian[6]%10;
- wu=shijian[4]/10;liu=shijian[4]%10;qi=shijian[3]/10;ba=shijian[3]%10;
- }
- /*************ds1302.c*******************/
- ds1302代码我把所有的数据全改成了uint
- #include<stc15f2k60s2.h>
- #include <ds1302.h>
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- uint shijian[]={50,59,23,1, 1, 1, 2018};
- /* 秒 分 时 日 月 周 年 */
- sbit SCK=P1^7;
- sbit SDA=P2^3; // I/O口
- sbit RST = P1^3; // DS1302复位
- void Write_Ds1302_Byte(uint temp) //写入
- {
- uint i;
- for (i=0;i<8;i++) //开始传送八位地址命令
- {
- SCK=0;
- SDA=temp&0x01; //数据从低位开始传送
- temp>>=1;
- SCK=1; //数据在上升沿时,DS1302读取数据
- }
- }
- void Write_Ds1302( uint address,uint dat )
- {
- RST=0; //将RST(CE)置低电平。
- _nop_();
- SCK=0;
- _nop_();
- RST=1;
- _nop_();
- Write_Ds1302_Byte(address); //调用上面
- Write_Ds1302_Byte(dat/10<<4|(dat%10));
- RST=0;
- }
- unsigned int Read_Ds1302 ( uint address )
- {
- uint i,temp=0x00,dat1,dat2;
- RST=0;
- _nop_();
- SCK=0;
- _nop_();
- RST=1;
- _nop_();
- Write_Ds1302_Byte(address);
- for (i=0;i<8;i++)
- {
- SCK=0;
- temp>>=1;
- if(SDA)
- temp|=0x80;
- SCK=1;
- }
- RST=0; //读取稳定
- _nop_();
- RST=0;
- SCK=0;
- _nop_();
- SCK=1;
- _nop_();
- SDA=0;
- _nop_();
- SDA=1;
- _nop_();
-
- dat1=temp/16;
- dat2=temp%16;
- temp=dat1*10+dat2;
- return (temp);
- }
- void ds1302_init()
- {
- uint add,i;
- add=0x80;
- Write_Ds1302(0x8e,0x00); //禁止写保护,关闭写保护 wp=1000 111 0
- for(i=0;i<7;i++) //写 0x80 0x82 0x84 0x86 0x88 0x8a 0x8c
- {
- Write_Ds1302(add,shijian[i]);
- add+=2;
- }
- Write_Ds1302(0x8e,0x80); //打开写保护,使其不受外界影响
- }
- void ds1302_get()
- {
- uint add,i;
- add=0x81;
- Write_Ds1302(0x8e,0x00);//禁止写保护,关闭写保护 wp=1000 111 0
- for(i=0;i<7;i++) //读 0x81 0x83 0x85 0x87 0x89 0x8b 0x8d
- {
- shijian[i]=Read_Ds1302(add);
- add+=2;
- }
- Write_Ds1302(0x8e,0x80);//打开写保护,使其不受外界影响
- }
复制代码
|
|