您的位置 首页 观点

LPC2134学习日志(二)– LCD12864时钟

这两个星期貌似有点忙,弄的懒猫身心疲惫,甚至有时忍不住竟对别人发了火,这一点懒猫很抱歉,在此说一对不起,希望你们能谅解。好了,再忙

这两个星期形似有点忙,弄的懒猫身心疲乏,乃至有时不由得竟对他人发了火,这一点懒猫很抱愧,在此说一对不住,期望你们能体谅。好了,再忙,懒猫也得抽暇学点东东,仍是那句老话,学如行舟,不进则退,懒猫虽爱飞,但还没有学会飞,所认为了懒猫能周游世界的愿望,懒猫必定要好好斗争再好好斗争!

嗯,好了,不费话,这几天抽暇在上篇日志的基础上写,又增加了点东东,做了个实时时钟,当然功用还不全,还没有调时刻的功用,还没有守时的功用,LCD12864上也没有增加菜单的功用……横竖这个是最简略的实时时钟,首要便是学习一下LPC2134内部的RTC,程序虽然能运转,但是在仿真时出了点小BUG,便是秒值3秒钟才更新一次,这一点让懒猫很抑郁,找了好久也没有找出原因,不过懒猫并未抛弃,仍是一向找下去,直到把它消除到,假如你写过这方面的程序,也能够辅导一下懒猫,懒猫不胜感激,在此深表感谢。

好了,下面给出这次仿真用的接口示意图,再着重一下,这个只是在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~~

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/guandian/263333.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部