出租车计费系统之电路的设计与实现(4)

2019-03-29 14:05

长春师范学院毕业论文 第一章 1引言

图 3.1 主程序流程图

3.2液晶驱动程序

LCD显示部分采用 SPLC501 液晶模组附带的驱动程序。该驱动程序的架构如图 3.2所示。

13

长春师范学院毕业论文 第一章 1引言

图 3.2 LCD驱动程序架构

驱动程序由 5 个文件组成,分别为:底层驱动程序文件 SPLC501Driver_IO.inc、SPLC501Driver_IO.asm;用户 API 功能接口函数文件 SPLC501User.h、SPLC501User.c、DataOSforLCD.asm。

SPLC501Driver_IO.inc:该文件为底层驱动程序的头文件,主要对使用到的寄存器(如端口控制寄存器等)进行定义,还对 SPCE061A 与 SPLC501 液晶显示模组的接口进行配置;用户可以根据自已的需求来配置此文件,但要使端口的分配符合实际硬件的接线。

SPLC501Driver_IO.asm:该文件为底层驱动程序,负责与 SPLC501 液晶显示模组进行数据传输的任务,主要包括端口初始化、写控制指令、写数据、读数据等函数;这些函数仅供 SPLC501User.c 调用,不建议用户在应用程序中调用这些函数。

SPLC501User.h:该文件为用户 API 功能函数文件的头文件,主要对一些记

14

长春师范学院毕业论文 第一章 1引言

住符进行定义,以及配置LCD 的一些设置,另外该文件里还对 SPLC501User.c 中的函数作了外部声明,用户需要使用 LCD 的 API功能函数时,需要把该文件包含在用户的 C 文件中。

SPLC501User.c:文件中定义了针对 LCD显示的各种 API 功能函数。 DataOSforLCD.asm:该文件中提供了一些供 API 功能函数调用的数据处理子程序,主要完成显示效果的叠加、画圆偏差量的计算等。

3.3按键扫描程序

系统使用 1024Hz 时基中断对 IOA口低八位进行扫描,并进行去抖、长短按键判断等工作按键扫描程序提供如下三个 API 函数以供用户使用按键功能: 语法格式:void KeyScan_Init(void); 入口参数:无 出口参数:无 返回值:无

功 能:按键扫描初始化。调用该函数将同时初始化按键扫描使用的 I/O口。 void KeyScan_Init(void) { }

ui_KeyScanState = C_KeyStateFirst; ui_KeyState = C_NullKey; ui_KeyCount = 0; ui_KeyCountBK = 0; ui_KeyID = C_Null; ui_RepeatEvent = 0; ui_RepeatCount = 0; DrvKeyInit();

15

长春师范学院毕业论文 第一章 1引言

语法格式:void KeyScan_ServiceLoop(); 入口参数:无 出口参数:无 返回值:无

功 能:按键扫描后台服务程序。该函数一般被安置在 1KHz 时基中断中。 void KeyScan_ServiceLoop(void) {

switch(ui_KeyScanState) {

case C_KeyStateFirst:

if(C_Null != DrvGetKeyID()) { } break;

if(ui_KeyCount > C_DebounceLimit) {

if(C_Null != DrvGetKeyID()) {

if(DrvGetKeyID() == ui_KeyID) {

ui_KeyState = C_SKeyState;

ui_KeyScanState = C_KeyStateRepeat;

ui_KeyID = DrvGetKeyID();

ui_KeyScanState = C_KeyStateDebounce; ui_KeyCount = 0; ui_RepeatEvent = 0; ui_RepeatCount = 0;

case C_KeyStateDebounce:

16

长春师范学院毕业论文 第一章 1引言

}

}

} else { }

ui_KeyScanState = C_KeyStateFirst;

else { }

ui_KeyScanState = C_KeyStateFirst; ui_KeyCount = 0;

//

else { } break;

if(C_Null != DrvGetKeyID()) {

if(DrvGetKeyID() == ui_KeyID) {

if(ui_KeyCount > C_FirstRepeatTim - C_RepeatTim) {

if(++ui_RepeatCount >= C_RepeatTim) { }

ui_RepeatCount = 0; ui_RepeatEvent = 1;

ui_KeyCount++;

case C_KeyStateRepeat:

// // // // // // //

17


出租车计费系统之电路的设计与实现(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:陈情表教案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: