实现实时时钟,电源拔插时间不重置(内置电池供电维持时间变化)。
功能有查看日期,查看星期,查看闹钟和分别的调整时间,调整日期,调整闹钟,调整星期。
且默认情况下不可以调整,当按下可调控键之后才可以调整、再次按可调控键关闭变为不可调整状态。
还有整点报时功能(有个小瑕疵就是闹钟正好是整点的时候和这个整点报时同时间的时候不会报时和闹钟,这个很容易改好,因为下午3点要答辩了,懒得改了机子老是写不进去,学校穷便宜机子没办法)。
然后这个闹钟可以设置星期几几点闹也可以设置为普通的每天的这个时间点闹铃,这些都是可以调控的。
时钟所有的功能都有,只差一个秒表,,这个很简单,,,外部中断来一个或者定时器T1中断来一个都可以,我没弄,因为我这个已经代码很长了,头疼、加中断还得加显示函数和秒表变化函数if分大于60时++啥的,但因为这个采用的显示是低四位高四位控制的,我强行加一个也比较麻烦所有就没加了。
欢迎下载干货,难看懂的都有备注,写了断断续续一周+时间左右(恕在下才疏学浅,因为书上上课的时候没学过I2C总线和pcf8563所以写的比较久。
)部分代码如下:#defineMAIN_Fosc22118400L//定义主时钟频率也是计数计时周期一秒的计数值#include"STC15Fxxxx.H"/***********************************************************/#defineDIS_DOT0x20#defineDIS_BLACK0x10#defineDIS_0x11/******************************用户定义宏***********************************/#defineTimer0_Reload(65536UL-(MAIN_Fosc/1000))//Timer0中断频率,1000次/秒频率倍数计数即周期周期为1秒除以一千就是1000次每秒/*****************************************************************************//*************本地常量声明**************/u8codet_display[]={//标准字库//0123456789ABCDEF//共阴0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,//black-HJKLNoPUtGQrMy0x00,0x40,0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E,0x78,0x3d,0x67,0x50,0x37,0x6e,0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x46};//0.1.2.3.4.5.6.7.8.9.-1u8codeT_COM[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//位码取反就是书上213面0从低位到高位/*************IO口定义**************/sbitP_HC595_SER=P4^0;//pin14SERdatainputsbitP_HC595_RCLK=P5^4;//pin12RCLkstore(latch)clocksbitP_HC595_SRCLK=P4^3;//pin11SRCLKShiftdatac