LPC2134學(xué)習(xí)日志(二)-- LCD12864時(shí)鐘
嗯,好了,不費(fèi)話(huà),這幾天抽空在上篇日志的基礎(chǔ)上寫(xiě),又添加了點(diǎn)東東,做了個(gè)實(shí)時(shí)時(shí)鐘,當(dāng)然功能還不全,還沒(méi)有調(diào)時(shí)間的功能,還沒(méi)有定時(shí)的功能,LCD12864上也沒(méi)有添加菜單的功能……反正這個(gè)是最簡(jiǎn)單的實(shí)時(shí)時(shí)鐘,主要就是學(xué)習(xí)一下LPC2134內(nèi)部的RTC,程序雖然能運(yùn)行,但是在仿真時(shí)出了點(diǎn)小BUG,就是秒值3秒鐘才更新一次,這一點(diǎn)讓?xiě)胸埡苡魫?,找了良久也沒(méi)有找出原因,不過(guò)懶貓并未放棄,還是一直找下去,直到把它消滅到,如果你寫(xiě)過(guò)這方面的程序,也可以指導(dǎo)一下懶貓,懶貓不勝感激,在此深表感謝。
本文引用地址:http://m.butianyuan.cn/article/201611/319453.htm好了,下面給出這次仿真用的接口示意圖,再?gòu)?qiáng)調(diào)一下,這個(gè)只是在proteus中仿真用的,不能用于實(shí)際焊接:
圖1-1
由于這個(gè)實(shí)時(shí)時(shí)鐘是在上一篇日志《LPC2134學(xué)習(xí)日志
//文件名稱(chēng):Clock.h
//功
//作
//備
//
//
//
#ifndef __CLOCK_H__
#define __CLOCK_H__
#include "config.h"
#define RTC_NUM 13
#define T0_NUM 4
struct {
#define Cur_Sec
#define Cur_Min
#define Cur_Hour
#define Cur_Year
#define Cur_Month current_time.month
#define Cur_Day
#define Cur_Week
#define Pre_Sec
#define Pre_Min
#define Pre_Hour
#define Pre_Year
#define Pre_Month pre_time.month
#define Pre_Day
#define Pre_Week
struct {
#define Timet
#define Datet
BOOL t0flag;
BOOL secflag;
BOOL dotflag;
extern void RTC_Init(void);
extern void Timer0_Init(void); //
extern void T0_Process(void);
extern void Updata_Time(void); //
#endif
這個(gè)文件里面主要是聲明了一些全局變量與一些寫(xiě)RTC和定時(shí)器有關(guān)的函數(shù),其中BOOL
這個(gè)數(shù)據(jù)類(lèi)型是我自定義的,在config.h中有聲明如下:
//用共用體定義二值變量
typedef enum
{
} BOOL;
下面這幾個(gè)函數(shù)是在main函數(shù)中調(diào)用的,所以要加上關(guān)鍵字extern,關(guān)于Clock.c文件的內(nèi)容,在這里就不在貼出來(lái)了,有點(diǎn)多,有興趣的可以參看附件,附件里面有源代碼與工程文件,編譯環(huán)境是MDK4.12。這里還要說(shuō)一下Show_Time(uint8 svalue,uint vposi)這個(gè)函數(shù),這個(gè)函數(shù)是用于更新完數(shù)據(jù)后在LCD相應(yīng)位置顯示,要說(shuō)的一點(diǎn)是在重新顯示之前一定要把那個(gè)位置清0,不然會(huì)出現(xiàn)亂碼。如下面程序所示:
void Show_Time(uint8 svalue,uint8 vposi)
{
}
好了,先總結(jié)這么多吧,該繼續(xù)工作了,不然boss看到了又以為我再玩,晚上回去再查一下bug~~
評(píng)論