ImageVerifierCode 换一换
格式:DOCX , 页数:38 ,大小:726.12KB ,
资源ID:10044109      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-10044109.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(1602键盘显示.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

1602键盘显示.docx

1、1602键盘显示摘要在日常生活中,我们经常要通过按键来实现对电子装置的控制,小到手表手机,中到电视电脑,大到各种复杂仪器,都需要通过按键来实现各种操作。本次课程设计作为实践教学的一个重要环节,将以按键控制显示为主题,以1602液晶、MM74C922解码芯片、AT89C52单片机及其接口芯片为核心构造一个键盘控制显示系统,并使用Proteus软件对所设计的电路进行仿真,仿真结果是在1602液晶上显示所按下的键值。关键词:Proteus仿真 AT89C52 1602液晶 MM74C922解码芯片第一章 总体设计1.1电路结构分析本次设计的目标为单片机控制的键盘识别显示系统,主要采用AT89C52单

2、片机作为核心,由矩阵键盘电路、译码芯片、液晶显示等模块构成,分别对按键信息和显示电路以及软、硬件各个部分进行控制;本设计采用C言编程来实现对单片机的控制。实际运作时,单片机会将检测到的按键信号转换成数字,显示于1602液晶上。系统主要结构可以拆分如下: 矩阵键盘:按键传送输入信息;此键盘采用的是4X4矩阵键盘,能输入09,+,=,空格,返回,清零。 键盘识别:矩阵键盘连接的是MM74C922解码芯片,通过解码芯片来识别输入的按键位置。 AT89C52:采用软件编程来实现按键信息的提取和转换; 1602液晶:用于显示最终被单片机转换过的按键信息。 由以上构思可以设计此按键显示电路。1.2总体方案

3、设计总体电路原理框图:如图 1.2所示图1.2总体电路原理方框图 本次设计分两步来完成,第一步,解码芯片调试系统,将解码芯片接口连接到矩阵键盘作为AT89C52单片机的输入装置,然后以P2口作为输出端并连接一个数码管观察输出结果。第二步,1602的液晶调试系统,此过程就是将数码管换成1602液晶在进行结果显示。1.3蜂鸣器模块设计蜂鸣器模块设计 如图 1.3所示图 1.3 蜂鸣器模块电路图蜂鸣器的驱动电流比较大一般要500MA1000MA,所以不能直接接在AT82C52单片机的接口上,需要加一个三极管来进行驱动。发声源程序如下:#define BEEP() P1=0x80 /蜂鸣器定义void

4、 Sounder() /发生函数INT8U i;for(i=0;i100;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示

5、第九个键按下,OA允许输出端为高电平有效,此时蜂鸣器发声提示,数码管则显示F。仿真结果能完成上述功能,则证明调试成功。1.4.2 总体电路图 如图1.3.2所示 图 1.4.2 总体电路图 此电路为总体电路图设计,当有键按下时,解码芯片会对按键进行识别,并发送相应的代码到P3口,此时蜂鸣器发声提示,经过单片机的处理,按键的值会在1602液晶上进行显示。如果仿真结果能完成上述功能,则证明调试成功。第二章 硬件电路2.1 MM74C922解码芯片2.1.1MM74C922特点及引脚功能MM74C922具有下列特点:1.功耗低,电压35V;2.三态门输出,与LPTTL兼容;3.输出锁存按下的最后的键

6、;4.用一个电容器就可以消除键盘抖动;5.两键轮回;6.行具有上拉功能;7.具有芯片内或芯片外时钟;8.最大开关电阻为50K。MM74C922采用18脚双列直插封装,其引脚排列如图2.1.1所示。各引脚功能如下: Y1Y4为行键输入端;X1X4为列键输入端;OSC为振荡器的外接引线端,可用外部的输入脉冲或电容器;DADD为数据输出端,可与微机直接接口;KBM为键颤屏蔽端; _OE为数据输出允许端,低电平有效;DAV为数据输出有效,高电平有效;VCC为电源端, 接35V;GND为接地端。 Y1 VCC Y2 DA Y3 DB Y4 DC OSC DD KBM OE X3 DAV X4 X1 GN

7、D X2 图2.1.1 MM74C922引脚排列图2.1.2MM74C92真值表如表2.1.2所示 表2.1.2 MM74C922真值表开关位置数据输出开关位置 数据输出D C B AD C B A0(Y1X1)0 0 0 08(Y3X1)1 0 0 01(Y1X2)0 0 0 19(Y3X2)1 0 0 12(Y1X3)0 0 1 010(Y3X3)1 0 1 03(Y1X4)0 0 1 111(Y3X4)1 0 1 14(Y2X1)0 1 0 012(Y4X1)1 1 0 05(Y2X2)0 1 0 113(Y4X2)1 1 0 16(Y2X3)0 1 1 014(Y4X3)1 1 1 0

8、7(Y2X4)0 1 1 1 15(Y4X4)1 1 1 1 键盘扫描可采用外部时钟或外接电容来执行。译码器具有芯片的上拉电阻,使开关电阻可以高达50k。开关矩阵中不需要二极管就可以消除多重开关,内部消颤电路仅需要一个单一电容就可以实现。当有键按下时,数据输出有效为高电平;当键释放后,数据输出有效返回到低电平。即使有另外一个键按下,在正常消颤期间后,数据输出有效返回至高电平表明接受新的键输入。在任何两个开关之间备有两键轮回功能。即使某一键释放,内部锁存器仍然锁存住按下的最后的键值。三态门输出便于总线的扩展和运行。2.21602液晶 2.2.1 1602液晶功能引脚 如图2.2.1所示 图 2.

9、2.1 1602液晶功能引脚2.2.2液晶命令集及双行液晶DDRAM地址 如表2.2.2所示 表 2.2.2 液晶命令集及双行液晶DDRAM地址命令 命令位功能RSR/W DB7DB0复位显示器0000000001清屏,光标归位光标归位000000001*设地址计数器清零,DDRAM数据不变,光标移动到左上角字符进入模式00000001I/DS设置字符进入时的屏幕移位方式显示开关0000001DCB设置显示开关,光标开关,闪烁开关显示光移位000001S/CR/L*设置字符与光标移动功能设置00001DLNF*设置DL,显示行数,字体设置CGRAM地址0001CGRAM地址设置6位的CGRAM

10、地址值以读/写数据设置 DDRAM地址001DDRAM地址设置7位的CGRAM地址值以读/写数据命令命令位功能RSR/WDB7DB0忙标志/地址计数器01BF由最后写入的DDRAM或CGRAM地址设置指令设置的DDRAM/CGRAM地址读忙标志及地址计数器CGRAM/DDRAM 写数据1 0写入字节数据(先设置RAM地址)向CGRAM/DDRAM写入字节数据CGRAM/DDRAM 读数据11读取字节数据(先设置RAM地址)从CGRAM/DDRAM读取字节数据RS为寄存器选择位RS=0时选择命令寄存/状态寄存器,RS=1时选择数据寄存器I/D=1递增,I/D=0递减S=0时显示屏不移动,S=1时

11、,如果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时为使用D7D4共4位,分两次发送一个字节N=0为单行显示,N=1时为双行显示F=1时为5x10点阵字体,F=0时为5x7点阵字体BF=1时LCD忙,BF=0时LCD就绪 双行液晶的DDRAM地址 2x20 LCD DDRAM(8093/C0E3)2x16 LCD DDRAM(808F/C0CF)

12、2x8 LCD DDRAM(8087/C0C7)808182838485868788898A8B8C8D8E8F90919293C0C1C2C3C4C5C6C7C8C9CACBCCCDCEDFD0D1D2D3 2.2.3基本操作时序1).读状态: 输入: RS=L,W=H,E=H 输出:DB0DB7=状态2)写指令: 输入: RS=L,RW=L,DB0DB7=指令码,E=高脉冲 输出:无3) 读数据: 输入: RS=H,RW=H,E=H 输出:DB0DB7数据4) 写数据: 输入: RS=H,RW=L,DB0DB7数据,E=高脉冲 输出:无2.2.3初始化过程1)延时 15ms2)写指令 38

13、H(不检测忙信号)3)延时5ms4)写指令 38H(不检测忙信号)5)延时 5ms6)写指令 38H(不检测忙信号)7)(以后每次写指令、读/写数据操作之前均需检测忙信号)8)写指令 38H:显示模式设置9)写指令 08H:显示关闭10)写指令 01H:显示清屏11)写指令06H: 显示光标移动设置12)写指令0CH: 显示开及光标设置2.2.3读操作时序读操作时序 如图2.2.4所示 图 2.2.4读操作时序 读操作程序如下:void Read_LCD_Command(INT8U cmd) /读命令 LCD_BUSY_WAIT(); RS_0(); RW_0(); P2=cmd; delay

14、(5); EN_1(); EN_0();void Read_LCD_Data(INT8U dat) /读数据LCD_BUSY_WAIT();RS_1();RW_0();P2=dat;delay(5);EN_1();EN_0();2.2.5写操作时序 写操作时序图 如图2.2.5图 2.2.5 写操作时序图 写操作程序如下:void Write_LCD_Command(INT8U cmd) /写命令 LCD_BUSY_WAIT(); RS_0(); RW_0(); P2=cmd; delay(3); EN_1(); EN_0();void Write_LCD_Data(INT8U dat) /写

15、数据LCD_BUSY_WAIT();RS_1();RW_0();P2=dat;delay(3);EN_1();EN_0();2.3 AT89C52单片机AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。 AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个

16、外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。实际引脚连线的部分如图2.3图 2.3 AT89C52单片机2.4 数码管译码电路中常用的显示器有LED(数码管)和LCD(液晶显示器)。这两种显示器都具有线路简单、耗电少、成本低、寿命长等优点。本系统输出结果选用1个七段数码管显示。数码管有共阴共阳之分,本系统采用共阴型。LED的外形结构如图2.4,外部有10个引脚,其中GND脚为公共端也称位选端,其余8个引脚称

17、为段选端,当要使某一位数码管显示某一数字(0-9中的一个)必须在这个数码管的段选端加上与数字显示数字对应的8位段选码(也称字形码),在位选端加上低电平即可。图2.4 LED数码管结构 如下表2.4即两种数码管中数字显示对应的段码:表2.4 LED显示段码 字型共阳极段共阴极段字型共阳极段共阴极段0C0H3FH990H6FH1F9H06HA88H77H2A4H5BHB83H7CH3B0H4FHCC6H39H499H66HDA1H5EH592H6DHE86H79H682H7DHF84H71H7F8H07H空白FFH00H880H7FHP8CH73H 第三章 解码芯片调试系统3.1 解码芯片调试系统

18、的4X4矩阵键盘设计,接线图如3.1所示 图 3.1 解码芯片调试系统的4X4矩阵键盘设计电路图3.2 解码芯片的接口设计,如图3. 2所示解码芯片的A、B、C、D口接P1.0P1.4, OE口接地始终保持拉低,OA口接P1.7发送允许信号,X1X4,Y1Y4,分别与矩阵键盘的X,Y端口相接。图 3.2 解码芯片接口设计电路图3.3 数码管的接口设计,如图3.3所示 数码管的ag端接在P2.0P2.7端作为输出显示 图 3.3 数码管的接口设计电路图3.4解码芯片软件流程图解码芯片软件流程图 如图3.4所示 图 3.4 解码芯片调试系统软件流程图3.5解码芯片调试系统源程序代码#include

19、 #define INT8U unsigned char#define INT16U unsigned int#define BEEP() P3=0x80 /蜂鸣器定义#define Key_Pressed (P1 & 0X80)=0X80) /判断是否有键按下#define Key_NO (P1 & 0X0F) /判断键值INT8U code SEG_CODE=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; void delay(INT16U ms) /延时程序 INT8U i

20、,j; for(i=0;ims;i+) for(j=0;j110;j+); void Sounder() /蜂鸣器INT8U i;for(i=0;i100;i+) delay(5);BEEP();void main()P1=0XFF;P0=0x00;P2=0X00;P3=0XFF;while(1)if(Key_Pressed)P2=SEG_CODEKey_NO; /显示键值Sounder();此程序可以完成4X4矩阵键盘上任意键的显示即0F的先显示,当有按键按下时,蜂鸣器会进行按键提示。3.6解码芯片调试系统仿真分析 图 3.6.1 0显示图 当按下K0键时,数码管显示结果 图 3.6.2 9

21、显示图当按下K9按键时,数码管显示的结果 图 3.6.3 F显示图当按下KF按键时,数码管显示的结果第四章 1602液晶显示系统4.11602液晶显示的4x4矩阵键盘设计, 如图 4.1 图 4.1 1602液晶显示系统的4x4矩阵键盘设计 因为1602液晶远远比数码管的功能强大,可以显示更多符号,所此键盘设计不仅保留了09个数字而且还加入了“+ - = 空格 撤销 清屏”等操作。解码芯片的连线设计和图3.2一样在此不再重复。4.21602液晶显示系统接口电路图设计 如图4.2所示 图 4.2 1602液晶显示系统接口电路图 1602液晶的D0D7引脚接在P2.0P2.7口,RS、RW、E、引

22、脚则分别接在P1.0、P1.1、P1.2口。4.31602液晶显示系统软件流程图 1602液晶显示软件流程图 如图4.3 图 4.3 1602液晶显示系统软件流程图4.4 1602液晶显示系统的源程序代码#include #include #define INT8U unsigned char#define INT16U unsigned int#define BEEP() P1=0x80 /蜂鸣器定义#define Key_Pressed()(P3 & 0X10)!=0x00) /判断是否有键按下#define Key_NO (P3 & 0X0F) /获取键值#define RS_1() R

23、S=1#define RS_0() RS=0#define RW_1() RW=1#define RW_0() RW=0#define EN_1() EN=1#define EN_0() EN=0sbit RS=P10; /寄存器选择sbit RW=P11; /读/写sbit EN=P12; /使能extern void Initialize_LCD(); /液晶初始化extern void LCD_ShowString(INT8U x,INT8U y,char *str); /字符串显示char code CHAR_Table=0123456789+-= ; /定义键值char Disp_S

24、tring17;void delay(INT16U ms) /延时函数 INT8U i,j;for(i=0;ims;i+) for (j=0;j110;j+); void Sounder() /发生函数INT8U i;for(i=0;i100;i+) delay(3);BEEP(); void LCD_BUSY_WAIT() /忙等待INT16U i; RS_0();RW_1();P2=0X00;EN_1();delay(3);for(i=0;i20;i+) if(P2 & 0x80) = 0)/D7=0 表示LCD控制器空闲,则退出检测 break; EN_0();P2=0XFF;void

25、Write_LCD_Command(INT8U cmd) /写命令寄存器 LCD_BUSY_WAIT(); RS_0(); RW_0(); P2=cmd; /delay(5); EN_1(); EN_0();void Write_LCD_Data(INT8U dat) /写数据寄存器LCD_BUSY_WAIT();RS_1();RW_0();P2=dat;/delay(5);EN_1();EN_0();void Initialize_LCD() /初始化Write_LCD_Command(0X38); /置功能;8位,双行,5x7Write_LCD_Command(0X01); /清屏Writ

26、e_LCD_Command(0X06); /自负进入模式:屏幕不动,字符后移Write_LCD_Command(0X0C); /显示开,关光标void LCD_ShowString(INT8U x,INT8U y,char *str) /显示函数INT8U i=0;if(y=0)Write_LCD_Command(0x80|x);elseif(y=1)Write_LCD_Command(0xC0|x);for(i=0;i16 & stri!=0;i+) Write_LCD_Data(stri);void main() char c; INT8U sLen; P1=0x00; /P3=0x00;

27、 P3=0xFF; Initialize_LCD(); LCD_ShowString(0,0,-08101.lb.20-);while(1) if(Key_Pressed() sLen=strlen(Disp_String); if (Key_NO=0x0D) /处理0x000x0D Sounder(); c=CHAR_TableKey_NO; if(sLen0)Disp_StringsLen-1=0; Sounder(); break; case 0x0F: Disp_String0=0; Sounder(); break; LCD_ShowString(0,1, ); LCD_ShowString(0

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

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