1602键盘显示.docx

上传人:b****8 文档编号:10044109 上传时间:2023-05-23 格式:DOCX 页数:38 大小:726.12KB
下载 相关 举报
1602键盘显示.docx_第1页
第1页 / 共38页
1602键盘显示.docx_第2页
第2页 / 共38页
1602键盘显示.docx_第3页
第3页 / 共38页
1602键盘显示.docx_第4页
第4页 / 共38页
1602键盘显示.docx_第5页
第5页 / 共38页
1602键盘显示.docx_第6页
第6页 / 共38页
1602键盘显示.docx_第7页
第7页 / 共38页
1602键盘显示.docx_第8页
第8页 / 共38页
1602键盘显示.docx_第9页
第9页 / 共38页
1602键盘显示.docx_第10页
第10页 / 共38页
1602键盘显示.docx_第11页
第11页 / 共38页
1602键盘显示.docx_第12页
第12页 / 共38页
1602键盘显示.docx_第13页
第13页 / 共38页
1602键盘显示.docx_第14页
第14页 / 共38页
1602键盘显示.docx_第15页
第15页 / 共38页
1602键盘显示.docx_第16页
第16页 / 共38页
1602键盘显示.docx_第17页
第17页 / 共38页
1602键盘显示.docx_第18页
第18页 / 共38页
1602键盘显示.docx_第19页
第19页 / 共38页
1602键盘显示.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

1602键盘显示.docx

《1602键盘显示.docx》由会员分享,可在线阅读,更多相关《1602键盘显示.docx(38页珍藏版)》请在冰点文库上搜索。

1602键盘显示.docx

1602键盘显示

摘要

在日常生活中,我们经常要通过按键来实现对电子装置的控制,小到手表手机,中到电视电脑,大到各种复杂仪器,都需要通过按键来实现各种操作。

本次课程设计作为实践教学的一个重要环节,将以按键控制显示为主题,以1602液晶、MM74C922解码芯片、AT89C52单片机及其接口芯片为核心构造一个键盘控制显示系统,并使用Proteus软件对所设计的电路进行仿真,仿真结果是在1602液晶上显示所按下的键值。

关键词:

Proteus仿真AT89C521602液晶MM74C922解码芯片

 

第一章总体设计

1.1电路结构分析

本次设计的目标为单片机控制的键盘识别显示系统,主要采用AT89C52单片机作为核心,由矩阵键盘电路、译码芯片、液晶显示等模块构成,分别对按键信息和显示电路以及软、硬件各个部分进行控制;本设计采用C言编程来实现对单片机的控制。

实际运作时,单片机会将检测到的按键信号转换成数字,显示于1602液晶上。

系统主要结构可以拆分如下:

①矩阵键盘:

按键传送输入信息;此键盘采用的是4X4矩阵键盘,能输入0~9,+,—,=,空格,返回,清零。

②键盘识别:

矩阵键盘连接的是MM74C922解码芯片,通过解码芯片来识别输入的按键位置。

③AT89C52:

采用软件编程来实现按键信息的提取和转换;

④1602液晶:

用于显示最终被单片机转换过的按键信息。

由以上构思可以设计此按键显示电路。

1.2总体方案设计

总体电路原理框图:

如图1.2所示

图1.2总体电路原理方框图

本次设计分两步来完成,第一步,解码芯片调试系统,将解码芯片接口连接到矩阵键盘作为AT89C52单片机的输入装置,然后以P2口作为输出端并连接一个数码管观察输出结果。

第二步,1602的液晶调试系统,此过程就是将数码管换成1602液晶在进行结果显示。

1.3蜂鸣器模块设计

蜂鸣器模块设计如图1.3所示

图1.3蜂鸣器模块电路图

蜂鸣器的驱动电流比较大一般要500MA~1000MA,所以不能直接接在AT82C52单片机的接口上,需要加一个三极管来进行驱动。

发声源程序如下:

#defineBEEP()P1^=0x80//蜂鸣器定义

voidSounder()//发生函数

{

INT8Ui;

for(i=0;i<100;i++)

{

delay(3);BEEP();

}

}

 

1.4电路图设计

1.4.1解码芯片调试系统电路图如图1.3.1所示:

 

图1.4.1解码芯片调试系统电路图

此电路图为解码芯片调试系统电路图,按键位置是由解码芯片进行识别。

当按下K0键时,解码芯片进行采集DCBA端输出0000,表示第一个键按下,OA允许输出端为高电平有效,此时蜂鸣器发声提示,数码管则显示0。

K9键按下时,解码芯片DCBA端输出0008,表示第九个键按下,OA允许输出端为高电平有效,此时蜂鸣器发声提示,数码管则显示9。

KF键按下时,解码芯片DCBA端输出0015示第九个键按下,OA允许输出端为高电平有效,此时蜂鸣器发声提示,数码管则显示F。

仿真结果能完成上述功能,则证明调试成功。

 

1.4.2总体电路图如图1.3.2所示

图1.4.2总体电路图

此电路为总体电路图设计,当有键按下时,解码芯片会对按键进行识别,并发送相应的代码到P3口,此时蜂鸣器发声提示,经过单片机的处理,按键的值会在1602液晶上进行显示。

如果仿真结果能完成上述功能,则证明调试成功。

 

第二章硬件电路

2.1MM74C922解码芯片

2.1.1MM74C922特点及引脚功能

MM74C922具有下列特点:

1.功耗低,电压3—5V;2.三态门输出,与LPTTL兼容;3.输出锁存按下的最后的键;4.用一个电容器就可以消除键盘抖动;5.两键轮回;6.行具有上拉功能;7.具有芯片内或芯片外时钟;8.最大开关电阻为50KΩ。

MM74C922采用18脚双列直插封装,其引脚排列如图2.1.1所示。

各引脚功能如下:

Y1—Y4为行键输入端;X1—X4为列键输入端;OSC为振荡器的外接引线端,可用外部的输入脉冲或电容器;DA—DD为数据输出端,可与微机直接接口;KBM为键颤屏蔽端;_____OE为数据输出允许端,低电平有效;DAV为数据输出有效,高电平有效;VCC为电源端,接3—5V;GND为接地端。

Y1VCC

Y2DA

Y3DB

Y4DC

OSCDD

KBM—OE

X3DAV

X4X1

GNDX2

图2.1.1MM74C922引脚排列图

 

2.1.2MM74C92真值表如表2.1.2所示

表2.1.2MM74C922真值表

开关位置

数据输出

开关位置

数据输出

DCBA

DCBA

0(Y1X1)

0000

8(Y3X1)

1000

1(Y1X2)

0001

9(Y3X2)

1001

2(Y1X3)

0010

10(Y3X3)

1010

3(Y1X4)

0011

11(Y3X4)

1011

4(Y2X1)

0100

12(Y4X1)

1100

5(Y2X2)

0101

13(Y4X2)

1101

6(Y2X3)

0110

14(Y4X3)

1110

7(Y2X4)

0111

15(Y4X4)

1111

键盘扫描可采用外部时钟或外接电容来执行。

译码器具有芯片的上拉电阻,使开关电阻可以高达50kΩ。

开关矩阵中不需要二极管就可以消除多重开关,内部消颤电路仅需要一个单一电容就可以实现。

当有键按下时,数据输出有效为高电平;当键释放后,数据输出有效返回到低电平。

即使有另外一个键按下,在正常消颤期间后,数据输出有效返回至高电平表明接受新的键输入。

在任何两个开关之间备有两键轮回功能。

即使某一键释放,内部锁存器仍然锁存住按下的最后的键值。

三态门输出便于总线的扩展和运行。

2.21602液晶

2.2.11602液晶功能引脚如图2.2.1所示

图2.2.11602液晶功能引脚

 

2.2.2液晶命令集及双行液晶DDRAM地址如表2.2.2所示

表2.2.2液晶命令集及双行液晶DDRAM地址

命令

命令位

功能

RS

R/W

DB7~DB0

复位显示器

0

0

0

0

0

0

0

0

0

1

清屏,光标归位

光标归位

0

0

0

0

0

0

0

0

1

*

设地址计数器清零,DDRAM数据不变,光标移动到左上角

字符进入模式

0

0

0

0

0

0

0

1

I/D

S

设置字符进入时的屏幕移位方式

显示开关

0

0

0

0

0

0

1

D

C

B

设置显示开关,光标开关,闪烁开关

显示光移位

0

0

0

0

0

1

S/C

R/L

*

*

设置字符与光标移动

功能设置

0

0

0

0

1

DL

N

F

*

*

设置DL,显示行数,字体

设置CGRAM地址

0

0

0

1

CGRAM地址

设置6位的CGRAM地址值以读/写数据

设置DDRAM

地址

0

0

1

DDRAM地址

设置7位的CGRAM地址值以读/写数据

命令

命令位

功能

RS

R/W

DB7~DB0

忙标志/地址计数器

0

1

BF

由最后写入的DDRAM或CGRAM地址设置指令设置的DDRAM/CGRAM地址

读忙标志及地址计数器

CGRAM/DDRAM写数据

1

0

写入——字节数据(先设置RAM地址)

向CGRAM/DDRAM写入——字节数据

CGRAM/DDRAM读数据

1

1

读取——字节数据(先设置RAM地址)

从CGRAM/DDRAM读取——字节数据

RS为寄存器选择位RS=0时选择命令寄存/状态寄存器,RS=1时选择数据寄存器

I/D=1递增,I/D=0递减

S=0时显示屏不移动,S=1时,如果I/D=1且有字符写入时显示屏左移,否则右移

D=1显示屏开开,D=0显示屏关

C=1时光标处现在地址计数器所指的位置,C=0时光标不出现

B=1时光标出现闪烁,B=0光标不闪烁

S/C=0时,RL=0则光标左移,否则右移

S/C=1时,RL=0则字符和光标左移,否则右移

DL=1时数据长度为8位,DL=0时为使用D7~D4共4位,分两次发送一个字节

N=0为单行显示,N=1时为双行显示

F=1时为5x10点阵字体,F=0时为5x7点阵字体

BF=1时LCD忙,BF=0时LCD就绪

双行液晶的DDRAM地址

2x20LCDDDRAM(80~93/C0~E3)

2x16LCDDDRAM(80~8F/C0~CF)

2x8LCDDDRAM(80~87/C0~C7)

80

81

82

83

84

85

86

87

88

89

8A

8B

8C

8D

8E

8F

90

91

92

93

C0

C1

C2

C3

C4

C5

C6

C7

C8

C9

CA

CB

CC

CD

CE

DF

D0

D1

D2

D3

2.2.3基本操作时序

1).读状态:

输入:

RS=L,W=H,E=H输出:

DB0~DB7=状态

2)写指令:

输入:

RS=L,RW=L,DB0~DB7=指令码,E=高脉冲

输出:

3)读数据:

输入:

RS=H,RW=H,E=H输出:

DB0~DB7数据

4)写数据:

输入:

RS=H,RW=L,DB0~DB7数据,E=高脉冲

输出:

2.2.3初始化过程

1)延时15ms

2)写指令38H(不检测忙信号)

3)延时5ms

4)写指令38H(不检测忙信号)

5)延时5ms

6)写指令38H(不检测忙信号)

7)(以后每次写指令、读/写数据操作之前均需检测忙信号)

8)写指令38H:

显示模式设置

9)写指令08H:

显示关闭

10)写指令01H:

显示清屏

11)写指令06H:

显示光标移动设置

12)写指令0CH:

显示开及光标设置

2.2.3读操作时序

读操作时序如图2.2.4所示

图2.2.4读操作时序

读操作程序如下:

voidRead_LCD_Command(INT8Ucmd)//读命令

{

LCD_BUSY_WAIT();

RS_0();

RW_0();

P2=cmd;

delay(5);

EN_1();

EN_0();

}

voidRead_LCD_Data(INT8Udat)//读数据

{

LCD_BUSY_WAIT();

RS_1();

RW_0();

P2=dat;

delay(5);

EN_1();

EN_0();

}

2.2.5写操作时序

写操作时序图如图2.2.5

图2.2.5写操作时序图

写操作程序如下:

voidWrite_LCD_Command(INT8Ucmd)//写命令

{

LCD_BUSY_WAIT();

RS_0();

RW_0();

P2=cmd;

delay(3);

EN_1();

EN_0();

}

voidWrite_LCD_Data(INT8Udat)//写数据

{

LCD_BUSY_WAIT();

RS_1();

RW_0();

P2=dat;

delay(3);

EN_1();

EN_0();

}

2.3AT89C52单片机

AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

实际引脚连线的部分如图2.3

图2.3AT89C52单片机

 

2.4数码管

译码电路中常用的显示器有LED(数码管)和LCD(液晶显示器)。

这两种显示器都具有线路简单、耗电少、成本低、寿命长等优点。

本系统输出结果选用1个七段数码管显示。

数码管有共阴共阳之分,本系统采用共阴型。

LED的外形结构如图2.4,外部有10个引脚,其中GND脚为公共端也称位选端,其余8个引脚称为段选端,当要使某一位数码管显示某一数字((0-9中的一个)必须在这个数码管的段选端加上与数字显示数字对应的8位段选码(也称字形码),在位选端加上低电平即可。

图2.4LED数码管结构

如下表2.4即两种数码管中数字显示对应的段码:

表2.4LED显示段码

字型

共阳极段

共阴极段

字型

共阳极段

共阴极段

0

C0H

3FH

9

90H

6FH

1

F9H

06H

A

88H

77H

2

A4H

5BH

B

83H

7CH

3

B0H

4FH

C

C6H

39H

4

99H

66H

D

A1H

5EH

5

92H

6DH

E

86H

79H

6

82H

7DH

F

84H

71H

7

F8H

07H

空白

FFH

00H

8

80H

7FH

P

8CH

73H

 

第三章解码芯片调试系统

3.1解码芯片调试系统的4X4矩阵键盘设计,接线图如3.1所示

图3.1解码芯片调试系统的4X4矩阵键盘设计电路图

3.2解码芯片的接口设计,如图3.2所示

解码芯片的A、B、C、D口接P1.0~P1.4,OE口接地始终保持拉低,OA口接P1.7发送允许信号,X1~X4,Y1~Y4,分别与矩阵键盘的X,Y端口相接。

图3.2解码芯片接口设计电路图

3.3数码管的接口设计,如图3.3所示

数码管的a~g端接在P2.0~P2.7端作为输出显示

图3.3数码管的接口设计电路图

3.4解码芯片软件流程图

解码芯片软件流程图如图3.4所示

图3.4解码芯片调试系统软件流程图

3.5解码芯片调试系统源程序代码

#include

#defineINT8Uunsignedchar

#defineINT16Uunsignedint

#defineBEEP()P3^=0x80//蜂鸣器定义

#defineKey_Pressed((P1&0X80)==0X80)//判断是否有键按下

#defineKey_NO(P1&0X0F)//判断键值

INT8UcodeSEG_CODE[]=

{

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71

};

voiddelay(INT16Ums)//延时程序

{

INT8Ui,j;

for(i=0;i

{

for(j=0;j<110;j++);

}

}

voidSounder()//蜂鸣器

{

INT8Ui;

for(i=0;i<100;i++)

{

delay(5);BEEP();

}

}

voidmain()

{

P1=0XFF;

P0=0x00;

P2=0X00;

P3=0XFF;

while

(1)

{

if(Key_Pressed)

{

P2=SEG_CODE[Key_NO];//显示键值

Sounder();

}

}

}

此程序可以完成4X4矩阵键盘上任意键的显示即0~F的先显示,当有按键按下时,蜂鸣器会进行按键提示。

3.6解码芯片调试系统仿真分析

图3.6.10显示图

当按下K0键时,数码管显示结果

图3.6.29显示图

当按下K9按键时,数码管显示的结果

图3.6.3F显示图

当按下KF按键时,数码管显示的结果

第四章1602液晶显示系统

4.11602液晶显示的4x4矩阵键盘设计,如图4.1

图4.11602液晶显示系统的4x4矩阵键盘设计

因为1602液晶远远比数码管的功能强大,可以显示更多符号,所此键盘设计不仅保留了0~9个数字而且还加入了“+-=空格撤销清屏”等操作。

解码芯片的连线设计和图3.2一样在此不再重复。

4.21602液晶显示系统接口电路图设计如图4.2所示

图4.21602液晶显示系统接口电路图

1602液晶的D0~D7引脚接在P2.0~P2.7口,RS、RW、E、引脚则分别接在P1.0、P1.1、P1.2口。

4.31602液晶显示系统软件流程图

1602液晶显示软件流程图如图4.3

图4.31602液晶显示系统软件流程图

4.41602液晶显示系统的源程序代码

#include

#include

#defineINT8Uunsignedchar

#defineINT16Uunsignedint

#defineBEEP()P1^=0x80//蜂鸣器定义

#defineKey_Pressed()((P3&0X10)!

=0x00)//判断是否有键按下

#defineKey_NO(P3&0X0F)//获取键值

#defineRS_1()RS=1

#defineRS_0()RS=0

#defineRW_1()RW=1

#defineRW_0()RW=0

#defineEN_1()EN=1

#defineEN_0()EN=0

sbitRS=P1^0;//寄存器选择

sbitRW=P1^1;//读/写

sbitEN=P1^2;//使能

externvoidInitialize_LCD();//液晶初始化

externvoidLCD_ShowString(INT8Ux,INT8Uy,char*str);//字符串显示

charcodeCHAR_Table[]="0123456789+-=";//定义键值

charDisp_String[17];

 

voiddelay(INT16Ums)//延时函数

{

INT8Ui,j;

for(i=0;i

{

for(j=0;j<110;j++);

}

}

voidSounder()//发生函数

{

INT8Ui;

for(i=0;i<100;i++)

{

delay(3);BEEP();

}

}

 

voidLCD_BUSY_WAIT()//忙等待

{

INT16Ui;

RS_0();

RW_1();

P2=0X00;

EN_1();

delay(3);

for(i=0;i<20;i++)

{

if((P2&0x80)==0)//D7=0表示LCD控制器空闲,则退出检测

break;

}

EN_0();

P2=0XFF;

}

voidWrite_LCD_Command(INT8Ucmd)//写命令寄存器

{

LCD_BUSY_WAIT();

RS_0();

RW_0();

P2=cmd;

//delay(5);

EN_1();

EN_0();

}

voidWrite_LCD_Data(INT8Udat)//写数据寄存器

{

LCD_BUSY_WAIT();

RS_1();

RW_0();

P2=dat;

//delay(5);

EN_1();

EN_0();

}

voidInitialize_LCD()//初始化

{

Write_LCD_Command(0X38);//置功能;8位,双行,5x7

Write_LCD_Command(0X01);//清屏

Write_LCD_Command(0X06);//自负进入模式:

屏幕不动,字符后移

Write_LCD_Command(0X0C);//显示开,关光标

}

voidLCD_ShowString(INT8Ux,INT8Uy,char*str)//显示函数

{

INT8Ui=0;

if(y==0)Write_LCD_Command(0x80|x);else

if(y==1)Write_LCD_Command(0xC0|x);

for(i=0;i<16&&str[i]!

='\0';i++)

Write_LCD_Data(str[i]);

}

voidmain()

{

charc;

INT8UsLen;

P1=0x00;

//P3=0x00;

P3=0xFF;

Initialize_LCD();

LCD_ShowString(0,0,"--08101.lb.20--");

while

(1)

{

if(Key_Pressed())

{

sLen=strlen(Disp_String);

if(Key_NO<=0x0D)//处理0x00~0x0D

{Sounder();

c=CHAR_Table[Key_NO];

if(sLen<16)

{

Disp_String[sLen]=c;

Disp_String[sLen+1]='\0';

}

}

else//处理按键0x0E,0x0F(退格和清除)

{

switch(Key_NO)

{

case0x0E:

if(sLen>0)Disp_String[sLen-1]='\0';

Sounder();

break;

case0x0F:

Disp_String[0]='\0';

Sounder();

break;

}

}

LCD_ShowString(0,1,"");

LCD_ShowString(0

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2