在网上淘了一个PIC18F85K90自带RTCC功能的单片机,写了一段测试一下RTCC的精度,运作了5天,还好_精度达到了误差毫秒级.
随手加了一个AHT15温湿度,上传赚点黑币
注:32.768(5ppm)晶振需要加两个30pF电容稳定震荡频率, 每30分钟与60分钟进位时秒显示。
制作出来的实物图如下:
单片机源程序如下:
- #include <htc.h>
- #include "Delay.h"
- #include "Driver.h"
- #include "TA6932.H"
- #include "RTCC.H"
- #include "Selection.h"
- #include "AHT15.H"
-
- void main()
- {
- initialization(); //单片机寄存器初始化
- Delay_mS(500);
- AHT15_iic_Init(); //AHT15_初始化
- RTCC_WD_Init();
- while (1)
- {
- READ_RTCC(); //读时间寄存器操作
- check_Data(); //时间校准【此函数一定要放在READ_RTCC()后面_因为判断每分钟调整一次的判断值是十进制】
- Function_Selection(); //功能选择
- SMG_DisPlay_TIME(0x44, 0x06, LED);//数码管显示
- }
- }
- void interrupt TIMER0() //TIMER0中断函数【定时 50mS】
- {
- TMR0IF = 0 ; //中断标志位清零
- TMR0H = 0x3C; // TMR0H只是缓冲寄存器,在写 TMR0L寄存器同时,使用TMR0H的内容更新Timer0的高字节内容
- TMR0L = 0xB7 ; //初值 15536_分频器倍数少于16,所有不用需要校正值【15536+(14/(2_分频值))】
- if( Key_Flag == 400) Key_Flag = 0;
- if( Sec_Flag == 20) Sec_Flag = 0;
- Key_Flag ++;
- Sec_Flag++ ;
- }
复制代码
所有代码51hei提供下载:
PIC18F85K90.rar
(623.24 KB, 下载次数: 21)
|