首页 理论教育 物联网实验教程-键盘与显示屏实验

物联网实验教程-键盘与显示屏实验

时间:2023-10-21 理论教育 版权反馈
【摘要】:为了防止此不稳定状态,在进入列检测时加入了延时程序用来防抖动。

物联网实验教程-键盘与显示屏实验

1.实验目的

本实验介绍了通过ATmega128的I/O口控制4×4矩阵键盘以及SMG12864G2-ZK液晶显示模块的方法。通过本实验,使读者掌握4×4矩阵键盘的驱动方法和SMG12864G2-ZK液晶显示模块的显示原理,以及AVR单片机I/O口的基本控制。

2.实验设备

(1)硬件

● 单片机实验母板(IOT-SCMMB)1套。

传感器及外围模块(IOT-MODULES)1套。

● SMG12864G2-ZK液晶显示模块1块。

● JTAG编程器1个。

● PC(含串口)1台。

(2)软件

● WinAVR20050214。

● AVRStudio4.18。

3.实验原理

本实验实现了将4×4矩阵键盘的按键值通过液晶显示模块进行显示,即通过按键模块获得按键值,并把按键值作为液晶显示模块显示函数的参数值进行显示。

(1)按键模块

键盘原理图如图3-14所示,KB0~KB7分别接ATmega128单片机的PC0~PC7,其中PC0~PC3配置为输出,PC4~PC7配置为输入。检测哪个按键被按下的方法为:从键盘KB4这一行开始每行依次输出0,检查列线是否非全高,如果列线非全高,则说明该行有按键按下,然后根据第几列线读入为0,即可判断在当前行的哪一列位置有按键按下。即先第4行输出0(即PC4设置为0),检查列线是否非全高(即PC0~PC3是否全是1);全高则继续检查第3行、第2行、第1行直到某一行对应的列线非全高。另外,当按下按键时,无论速度有多快,都会出现接触—断开—接触—断开……这种不稳定的过程叫“抖动”。松开按键也是如此。为了防止此不稳定状态,在进入列检测时加入了延时程序用来防抖动。

978-7-111-34147-5-Chapter03-84.jpg

图3-14 4×4矩阵键盘原理图

以上过程对应的程序代码为:

978-7-111-34147-5-Chapter03-85.jpg

978-7-111-34147-5-Chapter03-86.jpg

其中key_val为保存按下按键的按键值所对应的字符指针地址

(2)液晶显示模块

SMG12864G3-ZK液晶显示模块与ATmega128单片机采用并行接口的方式进行硬件连接。其中SMG12864G3-ZK液晶显示模块与ATmega128单片机之间加入了SN74LVCC3245ADW双向缓冲器,单片机用PF3端口控制该缓冲器的输入输出方向。

该模块的功能主要包括3个部分:初始化部分、写指令/读写数据部分,以及数字和字符的显示部分。初始化部分是液晶显示模块进行显示之前要进行的必要工作,主要包括设置接口模式,指令集选择,清屏等工作,相关代码如下:

978-7-111-34147-5-Chapter03-87.jpg(www.xing528.com)

978-7-111-34147-5-Chapter03-88.jpg

写指令、读写数据部分是液晶显示模块驱动程序的关键部分,所有对液晶显示模块的操作都是通过调用这部分程序实现的。这部分的时序需要严格按照时序图设置(时序图见SMG12864G3-ZK数据手册第3页)。其中在向液晶显示控制器写数据和指令以及从液晶显示控制器读数据前必须先调用lcdwaitidle()函数来确认液晶显示控制器内部处于非忙状态。上述3个函数的代码如下:

978-7-111-34147-5-Chapter03-89.jpg

978-7-111-34147-5-Chapter03-90.jpg

978-7-111-34147-5-Chapter03-91.jpg

通过调用前面所述的初始化和读写函数就可以实现数字和字符的显示,在实验中首先使用了putchar()函数对上述3个基本读写函数进行了封装,然后使用putstr()提供基于字符串的读写,最后使用了putstrxy()提供指定位置读写的接口。该函数的参数cx、cy为显示内容要写到LCD显示屏上的坐标,s为要显示的字符串首地址。putstrxy()的实现如下:

978-7-111-34147-5-Chapter03-92.jpg

(3)按键模块和液晶显示模块的结合

把按键检测值所对应的存放地址作为液晶显示函数的参数进行按键检测值的显示。如主函数中putstrxy(6,1,key_val)函数,其中参数6和1为显示内容首地址坐标值,key_val为得到的按键检测值所对应的存放地址。

978-7-111-34147-5-Chapter03-93.jpg

978-7-111-34147-5-Chapter03-94.jpg

4.实验内容

阅读ATmega128数据手册的I/O口的控制原理,能够根据4×4矩阵键盘的原理图编写4×4矩阵键盘的按键检测与防抖动程序。

阅读SMG12864G3-ZK数据手册,能够使用通用LCD显示模块进行数字、字符的显示,并能够结合按键程序进行按键值的显示。

5.实验步骤

1)启动WinAVR,建立一个新的工程,编写代码,建立Makefile文件,并编译得到.hex文件。

2)使用AVRStudio将.hex文件下载到节点上。

3)按下矩阵键盘上的某个键,LCD液晶显示屏上会显示该按键的值。

6.思考题

1)如果键盘的第1行第2列和第3行第4列两个键值改为@和&,应如何修改程序?

2)如何利用SMG12864G2-ZK液晶显示模块显示图形?

7.补充阅读

[1]ATmega128/L Datasheet.http://www.atmel.com/.Atmel,2010.

[2]SMG12864G3-ZK Datasheet.http://download.sunman.cn/.2010.

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈