文章导航
大三上嵌入式实验报告2
LCD四行分别显示:姓名、学号、班级、年-月-日(通过键盘设定年月日)
(一)头文件
1 |
|
说明:在LCD例程的基础上,增加了key&LED例程当中包括的库函数,在工程文件夹中加入"r_cg_KeyScan.h"文件和r_cg_KeyScan.c文件,以达到实现键盘输入的目的。
(二)全局变量
1 | /* Start user code for global. Do not edit comment generated here */ |
类似于实验一中的全局变量num_keyboard为键盘输入的值。
Date数组为第四行显示年月日的部分。
X为对年月日输入位置的计数变量
Flag为延时使用的变量,可以通过display()函数中对其值的变化范围进行限制,可以实现键盘输入的响应时间。
经过实验发现,若flag循环数小于20,则过于灵敏,在按一次按键时可能会输入多个数字;若循环数过大,则键盘的延时会增大,不利于输入。故在此将循环数取为25。
Pre初始化为一个空格字符,在运行时做中间变量存储显示的值。
i为源例程程序当中的变量,为主程序中原有的一个计数变量,在这里不做使用,特此说明。
(三)端口定义
将key&LED例程当中的端口定义粘贴过来即可。
(四)子函数
1 | void R_MAIN_UserInit(void); |
void R_MAIN_UserInit(void);函数是原始定义的初始化函数 void display();是进行输入、显示的主要函数 void getnext();和void getpre();分别是获取下一个该输入的位置和获取上一个输入的位置(要避开已有的“年 月 日”)
(五)主程序
1 | void main(void) |
程序说明:
在LCD例程的基础上,增加了key&LED例程中的键盘模块。
在while循环中,首先播放固定的内容,即姓名学号;再播放键盘输入模块(年月日)。
增加键盘输入,改变(年月日)模块的参数,实现键盘输入。
(六)Display()函数
1 | void display() |
这是键盘输入显示的主要部分,首先通过flag实现延时,避免过于灵敏。通过键盘输入的参数进行选择,定义键盘的顺序110分别对应字符09。在输入后下一位显示“_”指示当前的输入位。另外定义了删除键和选择位置键,它们对应的按键分别是11、13。
(七)Getnext()和getpre()函数
1 | void getnext() |
获取下一个该输入的位置和获取上一个输入的位置 (避开已有的“年 月 日”)
(八)实验照片:
输入日期: