实验八 矩阵键盘输入实验.docx

上传人:b****5 文档编号:6543220 上传时间:2023-01-07 格式:DOCX 页数:12 大小:74.96KB
下载 相关 举报
实验八 矩阵键盘输入实验.docx_第1页
第1页 / 共12页
实验八 矩阵键盘输入实验.docx_第2页
第2页 / 共12页
实验八 矩阵键盘输入实验.docx_第3页
第3页 / 共12页
实验八 矩阵键盘输入实验.docx_第4页
第4页 / 共12页
实验八 矩阵键盘输入实验.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

实验八 矩阵键盘输入实验.docx

《实验八 矩阵键盘输入实验.docx》由会员分享,可在线阅读,更多相关《实验八 矩阵键盘输入实验.docx(12页珍藏版)》请在冰豆网上搜索。

实验八 矩阵键盘输入实验.docx

实验八矩阵键盘输入实验

实验八矩阵键盘输入实验

一、实验目的及内容

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第二行的起始位置

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1