武林教你学PIC32(十五)液晶显示实时时钟
扫描二维码
随时随地手机看文章
春节过后,很多内容都忘记了,好在以前整理了一些子函数,子模块。今天就用子函数模块化编写,液晶LCD1602实时显示时钟。
用到这样几个文件:
delay.c采用定时器延时函数,里面有延时毫秒和微秒的函数。
lcd1602.c液晶显示函数
rtc.c实时时钟函数
采用模块化编程好处就是简单方便,便于移植,主函数内容不会过于庞大,也方便阅读。
main.c的内容为:
#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();
}
}
不知道是不是编译器的问题,这段代码写到子函数就不行
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);
以后慢慢再研究。整体效果如图: