实验八 矩阵键盘输入实验.docx
- 文档编号:6543220
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:12
- 大小:74.96KB
实验八 矩阵键盘输入实验.docx
《实验八 矩阵键盘输入实验.docx》由会员分享,可在线阅读,更多相关《实验八 矩阵键盘输入实验.docx(12页珍藏版)》请在冰豆网上搜索。
实验八矩阵键盘输入实验
实验八矩阵键盘输入实验
一、实验目的及内容
1、通过液晶显示器接口电路的设计与编程,掌握液晶显示器的原理
2、学会使用液晶显示器,并把它嵌入到电子信息产品中。
二、实验仪器与设备
1、单片机实训与开发系统主机模块1台、PC一台
2、键盘扫描/LCD显示实验模块1台
3、相关控制软件
三、实验基本原理与内容
一、点阵式液晶屏显示模块介绍
1、基本结构
字符型液晶板上排列着若干个5×7或5×10点阵的字符显示位,每个显示位可显示一个字符,从规格上分为每行8,16,24,40,80位,有一行二行和四行三类。
内存中192种字符包括英文大小写字母,数字和书写符号等。
用户还可以自定义4个5×10或8个5×7点阵的字符。
PCB上有14个引线端,其中有8条数据线,三条控制线,三条电源线,见表5-20。
可与8051相接,通过送入数据和指令可对显示方式和显示内容作出选择。
见表13-1
引线号
符号
名称
功能
1
2
3
4
5
6
7
┇
14
VSS
VDD
VLCD
RS
R/
E
DB0
┇
DB7
地
电源
液晶驱动电压
寄存器选择
读/写
使能
8位数据线
OV
5V±5%
H数据寄存器
L指令寄存器
H读,L写
下降沿触发
数据传输
2、指令功能
格式:
RSR/
∣DB7DB6DB5DB4DB3DB2DB1DB0
其中RS和R/
共同决定选择哪一个寄存器,如表5-21所示,而DB7~DB0则决定指令功能,指令共11种,它们是:
清除,返回,输入方式放置,显示开关控制,移位控制,功能设置,CGRAM地址设置,DDRAM地址设置,读忙标志和地址,写数据倒CG/DDRAM,读数据由CG/DDRAM。
RS
R/
操作
0
0
指令寄存器写入
0
1
忙标志和地址计数器读出
1
0
数据寄存器写入
1
1
数据寄存器读出
3、特点
重量轻:
<100g
体积小:
约100mm厚
功耗低:
10~15mW
显示内容丰富:
内存192种字符(包括ASCⅡ码)。
可自定义8或4种字符
指令功能强:
可组合成各种输入、显示、移位方式以满足不同要求
接口方便简单:
可与4或8位微处理器相连
RAM功能:
80位的屏幕存储
工作温度:
0~50℃和-20~70℃两种
可靠性高:
寿命是50000小时(25℃)
4、工作时序见图13-1。
二、指令说明
清屏
命令格式:
RSR/
DB7DB6DB5DB4DB3DB2DB1DB0
00
0
0
0
0
0
0
0
1
清除屏幕显示,并置地址计数器AC为0。
返回
命令格式
RSR/
DB7DB6DB5DB4DB3DB2DB1DB0
00
0
0
0
0
0
0
1
x
置DDRAM即显示RAM的地址为0。
显示返回到原始位置。
输出方式设置
命令格式:
RSR/
DB7DB6DB5DB4DB3DB2DB1DB0
00
000001I/DS
设置光标的移动方向,并指定整体显示是否移动。
其中I/D如为1,则是增量方式,如为0,则是减量方式;S如为1,则位移,如为0,则不位移。
显示开关控制
命令格式:
RSR/
DB7DB6DB5DB4DB3DB2DB1DB0
00
00001DCB
其中:
•D控制的整体显示的开与关,D=1,则开显示,D=0,则关显示。
•C控制光标的开与关,C=1,光标开,否则光标关。
•B控制光标处字符的闪烁,B=1,字符闪烁,B=0,字符不闪烁。
光标移位
命令格式:
RSR/
DB7DB6DB5DB4DB3DB2DB1DB0
00
0001S/CR/L××
移动光标或整体显示,SSRAM中内容不变。
其中:
•S/C为1时,显示位移,为0时光标移动。
•R/L为1时,向右移位,为0时向左移位。
功能设置
命令格式:
RSR/
DB7DB6DB5DB4DB3DB2DB1DB0
00
001DLNF××
其中:
•DL设置接口数据位数,DL=1为8位数据接口,DL=0为4位数据接口。
•N设置显示行数,N=0,单行显示,N=1双行显示。
•F设置字形大小,F=1,为5×10点阵,F=O时为5×7点阵。
CGRAM(字符生成RAM)地址位置
命令格式:
RSR/
DB7DB6DB5DB4DB3DB2DB1DB0
00
01AAAAAA
本命令设置CGRAM的地址,地址范围为0~63。
DDRAM(显示数据RAM)地址设置
命令格式:
RSR/
DB7DB6DB5DB4DB3DB2DB1DB0
00
1AAAAAAA
本命令设置DDRAM的地址,地址范围为0~127。
读忙标志BF及地址计数器
命令格式:
RSR/
DB7DB6DB5DB4DB3DB2DB1DB0
01
BF
AC
其中:
•BF为忙标志位,如为1,则表示忙,此时LCM不能接收命令和数据,如为0,则表示不忙。
•AC地址计数器的值,范围是0~127。
10、向CF/DDRAM写数据
命令格式:
RSR/
DB7DB6DB5DB4DB3DB2DB1DB0
10
BF
DATA
本命令将数据写入CGRAM或DDRAM中,应与CGRAM或DDRAM地址设置命令相接合。
11、从CG/DDRAM中读数据
命令格式:
RSR/
DB7DB6DB5DB4DB3DB2DB1DB0
11
DATA
本指令从CGRAM或DDRAM中读出数据,应与CGRAM或DDRAM地址设置命令相接合。
三、原理图实验内容
液晶显示模块电路可直接与单片机的I/O口或扩展I/O口连接,也可挂在单片机的总线上。
实验线路如图13-2所示。
对照液晶显示模块与单片机的硬件接口电路图,可编写LCD模块的驱动程序。
4*4矩阵键盘如图所示。
编写键盘扫描程序,当有键被按下时,在液晶屏上显示对应的键号。
四、实验步骤
(1)用40芯排线把主机模块和键盘扫描/LCD显示实验模块连接起来,接通电源,运行参考程序。
(2)把40芯排线拔掉,用导线将主机和键盘扫描/LCD显示实验模块连接起来,连接方式自己定义,编写一个程序运行。
#include
#include"lcd.h"
#include"key.h"
voidmain(void)
{
LcdInit();
while
(1)
{
KeyDown();
}
}
//key.h
#defineGPIO_KEYP1
u8KeyValue;//用来存放读取到的键值
u8Disp[]="0123456789abcdef";
/*******************************************************************************
*函数名:
delay
*函数功能:
延时函数,i=1时,大约延时10us
*******************************************************************************/
voiddelay(u16i)
{
while(i--);
}
/*******************************************************************************
*函数名:
KeyDown
*函数功能:
检测有按键按下并读取键值
*输入:
无
*输出:
无
*******************************************************************************/
voidKeyDown(void)
{
chara=0;
staticintnum=0;
GPIO_KEY=0x0f;
if(GPIO_KEY!
=0x0f)//读取按键是否按下
{
delay(1000);//延时10ms进行消抖
if(GPIO_KEY!
=0x0f)//再次检测键盘是否按下
{
//测试列
GPIO_KEY=0X0F;
switch(GPIO_KEY)
{
case(0X07):
KeyValue=0;break;
case(0X0b):
KeyValue=1;break;
case(0X0d):
KeyValue=2;break;
case(0X0e):
KeyValue=3;break;
}
//测试行
GPIO_KEY=0XF0;
switch(GPIO_KEY)
{
case(0X70):
KeyValue=KeyValue;break;
case(0Xb0):
KeyValue=KeyValue+4;break;
case(0Xd0):
KeyValue=KeyValue+8;break;
case(0Xe0):
KeyValue=KeyValue+12;break;
}
while((a<50)&&(GPIO_KEY!
=0xf0))//检测按键松手检测
{
delay(1000);
a++;
}
num++;
if(num%17==0)LcdWriteCom(0xc0);//设置数据指针起点
if(num%33==0){LcdWriteCom(0x01);num=0;}//设置数据指针起点
LcdWriteData(Disp[KeyValue]);
}
}
}
//lcd.h
/*******************************************************************************
*函数名:
Lcd1602_Delay1ms
*函数功能:
延时函数,延时1ms
*输入:
c
*输出:
无
*说名:
该函数是在12MHZ晶振下,12分频单片机的延时。
*******************************************************************************/
voidLcd1602_Delay1ms(uintc)//误差0us
{
uchara,b;
for(;c>0;c--)
{
for(b=199;b>0;b--)
{
for(a=1;a>0;a--);
}
}
}
voidLcdWriteCom(ucharcom)//写入命令
{
LCD1602_E=0;//使能
LCD1602_RS=0;//选择发送命令
LCD1602_RW=0;//选择写入
LCD1602_DATAPINS=com;//放入命令
Lcd1602_Delay1ms
(1);//等待数据稳定
LCD1602_E=1;//写入时序
Lcd1602_Delay1ms(5);//保持时间
LCD1602_E=0;
}
voidLcdWriteData(uchardat)//写入数据
{
LCD1602_E=0;//使能清零
LCD1602_RS=1;//选择输入数据
LCD1602_RW=0;//选择写入
LCD1602_DATAPINS=dat;//写入数据
Lcd1602_Delay1ms
(1);
LCD1602_E=1;//写入时序
Lcd1602_Delay1ms(5);//保持时间
LCD1602_E=0;
}
voidLcdInit()//LCD初始化子程序
{
LcdWriteCom(0x38);//开显示
LcdWriteCom(0x0c);//开显示不显示光标
LcdWriteCom(0x06);//写一个指针加1
LcdWriteCom(0x01);//清屏
LcdWriteCom(0x80);//设置数据指针起点
}
五、实验思考
1、连接图示器件线路
2、在LCD上显示各自学号,如:
“Mynumberis:
20144024xxxx”,编写实验程序。
3、设计定义4x4矩阵键盘以及按键所对应的字符,在LCD第一行上显示“Helloword!
”,并在第二行,依次显示矩阵键盘按下的键值0~F。
写出实验程序。
编写出实验程序。
六、思考提示
关注程序中红色部分
总共有26个字符,一行显示16个字符0x80第一行起始的位置,0xco第二行的起始位置
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验八 矩阵键盘输入实验 实验 矩阵 键盘输入
![提示](https://static.bdocx.com/images/bang_tan.gif)