春節(jié)過后,很多內(nèi)容都忘記了,好在以前整理了一些子函數(shù),子模塊。今天就用子函數(shù)模塊化編寫,液晶LCD1602實時顯示時鐘。
用到這樣幾個文件:
delay.c采用定時器延時函數(shù),里面有延時毫秒和微秒的函數(shù)。
lcd1602.c液晶顯示函數(shù)
rtc.c實時時鐘函數(shù)
采用模塊化編程好處就是簡單方便,便于移植,主函數(shù)內(nèi)容不會過于龐大,也方便閱讀。
main.c的內(nèi)容為:
#include "lcd1602.h"
#include "delay.h"
#include "rtc.h"
#include "led.h"
int main(void)
{
LED_INIT();//LED初始化
initLCD();//初始化LCD1602
putsLCD("Current time is:");//液晶第一行顯示
set_time(0X11,0X02,0X22,0X02,0X13,0X57,0X30);
//設置當前時間:11-02-2213點57分30秒星期二
while(1)
{
LED1_ON();
tm.l=RtccGetTime();
setLCDC( 0x40);//液晶第二行顯示
putLCD(tm.hour/16+0x30);
putLCD(tm.hour%16+0x30);
putLCD('-');
putLCD(tm.min/16+0x30);
putLCD(tm.min%16+0x30);
putLCD('-');
putLCD(tm.sec/16+0x30);
putLCD(tm.sec%16+0x30);
delay_ms(1000);
LED1_OFF();
}
}
不知道是不是編譯器的問題,這段代碼寫到子函數(shù)就不行
putLCD(tm.hour/16+0x30);
putLCD(tm.hour%16+0x30);
putLCD('-');
putLCD(tm.min/16+0x30);
putLCD(tm.min%16+0x30);
putLCD('-');
putLCD(tm.sec/16+0x30);
putLCD(tm.sec%16+0x30);
以后慢慢再研究。整體效果如圖: