[導(dǎo)讀]作者| strongerHuang微信公眾號|嵌入式專欄這是一款基于AVR128DA48的超低功耗LCD時鐘,能夠使用CR2032紐扣電池或太陽能電池運(yùn)行三年以上:它使用AVR128DA48的片上溫度傳感器,用ADC讀取其自身的電源電壓。還有一個I2C接口,你可以連接一...
它使用 AVR128DA48 的片上溫度傳感器,用 ADC 讀取其自身的電源電壓。還有一個 I2C 接口,你可以連接一個外部傳感器,如濕度傳感器。
介紹
1.硬件電路LCD 時鐘的電路:
LCD顯示LCD顯示器為四位七段靜態(tài)LCD,40引腳,可顯示溫濕度,LCD 顯示器安裝在電路板的正面,元件在背面。
MCU處理器該處理器是采用 TQFP-48 封裝的 AVR128DA48,但該 PCB 可與一系列其他 48 引腳處理器配合使用,比如選擇內(nèi)存容量更低、價格更低的一些MCU代替。
電池(電源)
這里采用CR2032 或類似電池為其供電,或者使用太陽能電池,附加超級電容來供電:
I2C接口為方便擴(kuò)展,這里添加了I2C接口,這里可以添加溫濕度傳感器,或者其他I2C從設(shè)備。
源碼
1.IO配置
2.時鐘這里節(jié)省成本,并非使用時鐘芯片或模塊,用單片機(jī)定時器計(jì)數(shù)實(shí)現(xiàn)時鐘的功能。
利用定時器中斷實(shí)現(xiàn)時鐘計(jì)數(shù)、更新:
cycles ; if (cycles < 32) return; cycles = 0;
// Update time halfsecs = (halfsecs 1) % 172800; // 24 hours uint8_t ticks = halfsecs % 120; // Half-second ticks if (MinsButton()) halfsecs = ((halfsecs/7200)*60 (halfsecs/120 1)%60)*120; if (HoursButton()) halfsecs = halfsecs 7200;
if (MinsButton() || HoursButton() || ticks < 108) DisplayTime(halfsecs); else if (ticks == 108) DisplayVoltage(); else if (ticks == 114) DisplayTemp();}
3.顯示時間LCD顯示部分就LCD有關(guān):





