新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > LPC2134學習日志(二)-- LCD12864時鐘

        LPC2134學習日志(二)-- LCD12864時鐘

        作者: 時間:2016-11-21 來源:網絡 收藏
        這兩個星期貌似有點忙,弄的懶貓身心疲憊,甚至有時忍不住竟對別人發了火,這一點懶貓很抱歉,在此說一對不起,希望你們能諒解。好了,再忙,懶貓也得抽空學點東東,還是那句老話,學如行舟,不進則退,懶貓雖愛飛,但還沒有學會飛,所以為了懶貓能周游世界的夢想,懶貓一定要好好奮斗再好好奮斗!

        嗯,好了,不費話,這幾天抽空在上篇日志的基礎上寫,又添加了點東東,做了個實時時鐘,當然功能還不全,還沒有調時間的功能,還沒有定時的功能,LCD12864上也沒有添加菜單的功能……反正這個是最簡單的實時時鐘,主要就是學習一下LPC2134內部的RTC,程序雖然能運行,但是在仿真時出了點小BUG,就是秒值3秒鐘才更新一次,這一點讓懶貓很郁悶,找了良久也沒有找出原因,不過懶貓并未放棄,還是一直找下去,直到把它消滅到,如果你寫過這方面的程序,也可以指導一下懶貓,懶貓不勝感激,在此深表感謝。

        本文引用地址:http://www.104case.com/article/201611/319453.htm

        好了,下面給出這次仿真用的接口示意圖,再強調一下,這個只是在proteus中仿真用的,不能用于實際焊接:

        圖1-1仿真電路圖

        由于這個實時時鐘是在上一篇日志《LPC2134學習日志學習使用LCD12864》有基礎上更改的,所以只添加了Clock.h與Clock.c這兩個文件,這樣添加的好處是模塊化編程,但時用不到,可以直接刪除,模板可以不用來回更改,下面給是CLOCK.H里面的內容:

        //文件名稱:Clock.h

        //功能:關于定時器的一些函數

        //作者:懶貓愛飛

        //備注:MCU-- LPC2134

        //Crystal-- 12MHz

        //RTC-- 32.768KHz

        //開發環境-- RealView MDK-ARM Verxion 4.12

        #ifndef __CLOCK_H__

        #define __CLOCK_H__

        #include "config.h"

        #define RTC_NUM 13

        #define T0_NUM 4

        struct {

        uint8 second;//記錄

        uint8 minute;//記錄

        uint8 hour;//記錄

        uint8 year;//記錄

        uint8 month;//記錄

        uint8 day;//記錄

        uint8 week;//記錄星期

        } current_time,pre_time;

        #define Cur_Seccurrent_time.second

        #define Cur_Mincurrent_time.minute

        #define Cur_Hourcurrent_time.hour

        #define Cur_Yearcurrent_time.year

        #define Cur_Month current_time.month

        #define Cur_Daycurrent_time.day

        #define Cur_Weekcurrent_time.week

        #define Pre_Secpre_time.second

        #define Pre_Minpre_time.minute

        #define Pre_Hourpre_time.hour

        #define Pre_Yearpre_time.year

        #define Pre_Month pre_time.month

        #define Pre_Daypre_time.day

        #define Pre_Weekpre_time.week

        struct {

        uint32 timet;//從寄存器中讀取當前時間

        uint32 datet;//從當前寄存器中讀取日期

        } rtc_time;

        #define Timetrtc_time.timet

        #define Datetrtc_time.datet

        BOOL t0flag;//定時器標志

        BOOL secflag;//秒標志

        BOOL dotflag;//分與秒之間的冒號顯示標志

        extern void RTC_Init(void);// RTC初始化

        extern void Timer0_Init(void); //定時器0初始化

        extern void T0_Process(void);//定時器0處理程序

        extern void Updata_Time(void); //更新時間

        #endif

        這個文件里面主要是聲明了一些全局變量與一些寫RTC和定時器有關的函數,其中BOOL

        這個數據類型是我自定義的,在config.h中有聲明如下:

        //用共用體定義二值變量

        typedef enum

        {

        FALSE = 0,

        TRUE= 1,

        } BOOL;

        下面這幾個函數是在main函數中調用的,所以要加上關鍵字extern,關于Clock.c文件的內容,在這里就不在貼出來了,有點多,有興趣的可以參看附件,附件里面有源代碼與工程文件,編譯環境是MDK4.12。這里還要說一下Show_Time(uint8 svalue,uint vposi)這個函數,這個函數是用于更新完數據后在LCD相應位置顯示,要說的一點是在重新顯示之前一定要把那個位置清0,不然會出現亂碼。如下面程序所示:

        void Show_Time(uint8 svalue,uint8 vposi)

        {

        uint8 i = 0;

        uint8 hb = 0; //存儲時間十位

        uint8 lb = 0; //存儲時間個位

        hb = svalue;

        for(i=0;i<2;i++)

        {

        lb = hb;

        hb /= 10;

        Show_Num(6,timeposi[i+vposi],10);//在更新數據的位置先清零,不然容易出現亂碼

        Show_Num(6,timeposi[i+vposi],lb);

        }

        }

        好了,先總結這么多吧,該繼續工作了,不然boss看到了又以為我再玩,晚上回去再查一下bug~~



        關鍵詞: LPC2134LCD12864時

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 武宣县| 盐城市| 大港区| 普陀区| 乌兰浩特市| 隆安县| 红安县| 克东县| 富民县| 克拉玛依市| 平潭县| 东兴市| 独山县| 班戈县| 尼玛县| 岳西县| 磐安县| 星座| 东港市| 汾西县| 伽师县| 奎屯市| 丰都县| 常熟市| 桐城市| 台中县| 黄冈市| 股票| 泰州市| 桦川县| 丹凤县| 鄂托克旗| 若羌县| 荣昌县| 衢州市| 上栗县| 沾化县| 天全县| 石屏县| 玛沁县| 临汾市|