在網上淘了一個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)
2021-5-23 21:27 上傳
點擊文件名下載附件
|