1、基于矩阵键盘和LED数码显示器的简易人机界面设计摘要:本课题的任务是利用单片机以及4X4键盘实现LED显示的简易人机界面。该系统以4个端口连接控制4*4,并显示在数码管上。用AT89S52的并行接口P1接4X4矩阵键盘,以P1.0-P1.3做输入线,以P1.4-P1.7做输出线;为矩阵键盘编写功能,用LED显示。系统以AT89S52为核心,并带有LED显示器,配合按键提供友好的用户界面,操作简单。该系统可以对不同的键盘进行实时显示,其核心是单片机和键盘矩阵的电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。系统软件设计包括单片机计算机两部分的编程。单片机
2、软件编程主要实现键盘、LED显示等各模块的功能,采用汇编语言编程。关键字:AT89S52;LED显示器;矩阵键盘;人机界面AbstractThis task is the use of microcomputer and 4X4 keyboard to achieve LED displays a simple man-machine interface. In this system, the 4 port is connected to control 4 * 4, and display in the digital tube. Using AT89S52 parallel interf
3、ace of P1 4X4 to P1.0-P1.3 matrix keyboard, input line, with P1.4-P1.7 output line; as the matrix keyboard writing function, with LED display. The system used AT89S52 as the core, with LED display, with keys to provide a friendly user interface, simple operation. The system can be of different keybo
4、ard display in real time, the core of the microcontroller and the keyboard matrix circuit part, mainly on the key and display circuit, the relation of matrix technology and equipment system hardware, software to achieve the various parts. Software design of the system comprises a single chip compute
5、r two part programming. SCM software programming main keyboard, LED display the function of each module, the use of assembly language programming.Keyword: AT89S52; LED; matrix keyboard; man-machine interface目 录第1章 概述3第2章 总体设计方案32.1 本设计任务和最主要内容32.2 设计原理32.3 功能设计描述42.4 主要知识点42.5 程序框图42.6 电路原理图4第3章 硬件设
6、计方案53.1 ST89S52单片机开发板介绍53.2 矩阵键盘介绍83.3 LED数码管介绍9第4章 软件设计104.1 程序设计内容104.2 程序框图及源程序10第5章 系统调试165.1 调试过程165.2 结果分析165.3 实物照片17结论与体会17参考文献18第1章 概述矩阵式键盘模式以N个端口连接控制N*N个键,实时在LED数码管上显示按键信息,降低了成本又提高了精确度,省下了很多I/O为他用,所以矩阵键盘是很实用的。随着人们生活水平的不断提高单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技
7、术入手,一切向着数字化控制,智能化控制方向发展。LED显示作为人机交互的主流方式,正广泛用于家电、手机、个人电脑等显示终端。随着电子技术的发展,单片机技术的产品日益增多,研究以单片机作为主控制器的 LED显示器控制系统意义重大。展望未来,急速的响应速度将会成为个性化 LED 的发展趋势,越来越多的单片机正如雨后春笋般涌现。第2章 总体设计方案2.1本设计任务和主要内容本论文主要研究单片机控制的键盘识别显示系统,分别对按键信息和显示电路以及软、硬件各个部分进行研究。主要内容如下:2.1.1 根据矩阵式键盘的特点,进行键盘控制系统的整体研究与设计;2.1.2 LED实时显示按键信息;2.1.3 采
8、用软件编程的方法实现按键信息的提取和显示。2.2设计原理:每个按键有它的行值和列值 ,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘处理程序的任务:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。矩阵式键盘使用于按键数量较多的场合,它由行线与列线组成,按键位于行、列的交叉点上,行、列线分别列接到按键开关的两端。行线通过上拉电阻接到+5V上。无键按下时,行线处于低电
9、平状态,而当有按键按下时,行线电平状态将由与此行线相连的列线电平一样为高电平。这是识别矩阵键盘按键是否被按下的关键所在。一个4x4的行列可以构成一个16按键的键盘。本次以扫描法来识别按键。在扫描法中分两步处理按键,首先是判断有无键按下,让所有的列线置高电平,检查各行线电平是否有变化,如行线有一个为高,则有键按下。当判断有键按下时,使列线依次变低,其余各列为高电平,读行线,进而判断出具体哪个键被按下。 2.3 功能设计描述由4x4组成16个按钮矩阵式键盘 按键成功会在7段LED显示该按键的键号2.4 主要知识点Keil uVision3的使用及调试proteus 7的使用及调试键盘接口、LED
10、显示接口、模拟电路的相关知识2.5程序框图开始有键按下吗?延时50ms确定有键按下吗?确定按键位置返回键释放了吗?键值p2NNNYYY2.6电路原理图第3章 系统硬件设计方案3.1 st89S52单片机开发板绍AT89S52为 ATMEL 所生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flsah存储器。3.1.1、AT89S52主要功能列举:(1)拥有灵巧的8位CPU和在系统可编程Flash(2)晶片内部具时钟振荡器(传统最高工作频率可至 12MHz)(3)内部程序存储器(ROM)为 8KB(4)内部数据存储器(RAM)为 256字节(5)32 个可编程I/O 口线(6)
11、8 个中断向量源(7)三个 16 位定时器/计数器(8)三级加密程序存储器(9)全双工UART串行通道3.1.2、 AT89S52各引脚功能介绍:VCC:AT89S52电源正端输入,接+5V。VSS:电源地端。XTAL1:单芯片系统时钟的反相放大器输入端。XTAL2:系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。RESET:AT89S52的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,
12、AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。EA/Vpp:EA为英文External Access的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用 8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。ALE/PROG:ALE是英文Addre
13、ss Latch Enable的缩写,表示地址锁存器启用信号。AT89S52可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0A7)锁进锁存器中,因为AT89S52是以多工的方式送出地址及数据。平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。PSEN:此为Program Store Enable的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的O
14、E脚。AT89S52可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。PORT0(P0.0P0.7):端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0A7)及数据总线(D0D7)。设计者必须外加一锁存器将端口0送出的地址
15、栓锁住成为A0A7,再配合端口2所送出的A8A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。PORT2(P2.0P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在AT89S52扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8A15,这个时候P2便不能当做I/O来使用了。PORT1(P1.0P1.7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是
16、由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。PORT3(P3.0P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。其引脚分配如下:P3.0:RXD,串行通信输入。P3.1:TXD,串行通信输出。P3.2:INT0,外部中断0输入。P3.3:INT1,外部中断1输入。P3.4:T0,计时计数器0输入。P3.5:T1,计时计数器1输
17、入。P3.6:WR:外部数据存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该
18、引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3.2、矩阵
19、键盘简介矩阵键盘又称行列键盘,它是四条I/O线作为行线,四条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上的个数就为*4个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。独立键盘具有编程简单但占有I/O口资源的特点,不适合在按键较多的场合应用。在实际应用中经常要用到输入数字、字母等功能,如电子密码锁、电话机键盘等一般都至少有12到16个按键,在这种情况下如果用独立按键的话显然太浪费I/O口资源,为此我们就有必要使用矩阵键盘了。最常见的键盘布局如图1-1所示。一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最
20、常用的形式,本设计就采用这个键盘模式。矩阵键盘原理图3.3、LED数码管简介LED数码管的结构简单,分为七段和八段两种形式,也有共阳和共阴之分。以八段共阴管为例,它有8个发光二极管(比七段多一个发光二极管,用来显示sP,即点),每个发光二极管的阴极连在一起,如图I所示。这样,一个LED数码管就有I根位选线和8根段选线,要想显示一个数值,就要分别对它们的高低电平来加以控制。一般的显示电路由多个数码管构成,J7v个数码管可以构成J7v位LED显示器,共有J7v根位选线和8N根段选线。依据位选线和段选线的连接方式的不同,MCS一52系列单片机对LED显示管的显示主要有静态显示和动态显示两种方式,下面
21、分别给予介绍。为方便起见,本文主要讨论3位共阴八段LED数码显示管,其他类形的显示管与其类似。下表为7段共阳极段码表:显示字符共阳极段码显示字符共阳极段码“0”C0H“8”80H“1”F9H“9”90H“2”A4H“A”88H“3”B0H“b”83H“4”99H“C”C6H“5”92H“d”A1H“6”82H“E”86H“7”F8H“F”8EH“灭“FFH第4章 软件设计4.1程序设计内容 (1 44矩阵键盘识别处理 (2 每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。每个按键的状态同样需变成数字量“0”和“1”,开关的一端(
22、列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。 4.2程序框图及源程序 图4.14.3 C语言源程序#include#define uchar unsigned char#define uint unsigned intchar num;uchar shi,ge;sbit key=P21;sbit key1=P22;sbit
23、 LED1=P27;sbit LED2=P26;sbit LED3=P25;sbit LED4=P24;uchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf;void delay(uint ms) uchar k; while(ms-) for(k=0;k0;i-)for(j=248;j0;j-);void display() if(num=10) shi=num/10; ge=num%10; P0=tableshi; LED1=1; LED2=
24、0; LED3=1; LED4=0; delay(5); P0=tablege; LED1=0; LED2=1; LED3=0; LED4=1; delay(5); /* 键盘函数*/ uchar Getch ( )/取键值函数 unsigned char X,Y,Z;P1=0x0f; /先对P3 置数 行扫描if(P1!=0x0f) /判断是否有键按下delay10ms(); /延时,软件去干扰if(P1!=0x0f) /确认按键按下X=P1; /保存行扫描时有键按下时状态P1=0xf0; /列扫描Y=P1; /保存列扫描时有键按下时状态Z=X|Y; /取出键值/*/switch ( Z )
25、 /判断键值(那一个键按下)case 0xee: num=0; break; /对键值赋值case 0xed: num=1; break;case 0xeb: num=2; break;case 0xe7: num=3; break;case 0xde: num=4; break;case 0xdd: num=5; break;case 0xdb: num=6; break;case 0xd7: num=7; break;case 0xbe: num=8; break;case 0xbd: num=9; break;case 0xbb: num=10;break;case 0xb7: num=
26、11;break;case 0x7e: num=12;break;case 0x7d: num=13;break;case 0x7b: num=14;break;case 0x77: num=15;break; return num; void alonekey() if(key=0) delay(10); if(key=0) num+;if(num=99) num=0; while(!key); if(key1=0) delay(10); if(key1=0) num-;if(num=-1) num=99; while(!key1); void main() while(1) Getch(
27、); alonekey(); display(); 第5章 系统调试5.1调试过程给 44 键盘的每个键定义一个功能,其中把定义为 09 的键盘称为数字键,A F键也定义为数字键。将四个数码管分成两组十位数来显示,即每组数由个位和十位组成。当按下09 的键盘,两组数的各位分别显示键盘上的数字09;当按下A F,两组数显示1015.单片机主板上有两个键key0、key1分别定义为自+1键和自-1键,当每次按下key0数码管上数字+1,直到99,再+1变为0,如此循环;同理每次按下key1,数码管数字自-1。5.2结果分析此设计验证了键盘输入在LED数码管上的显示的功能。可能会出现的问题就是在按键
28、时候需要注意,当保留键按下时,不做任何操作。当按确认键时,按任何键将不起作用。5.3实物照片 结论与体会设计结论:本次设计的功能基本实现。设计中我遇到了按键分辨的问题。采用的解决方法是分模块编程,按步实现键盘功能。此次设计的优点是程序简单,不过缺点是操作繁琐。很难理清按键顺序。心得体会:通过本次课程设计,又了解了一些单片机的知识,懂得了4x4矩阵式键盘接口的工作原理及其的按键识别方法(扫描法);通过自己动手操作,对于消除抖动和计算显示键值有了更深的理解;也对Keil uVision3的使用及调试和proteus 7的使用及调试有了进一步的了解,至少最基本的懂一些;了解了LED显示接口的原理等的
29、相关知识。觉得自己本次的课程设计过于简单,实现也不难。另外,单片机是一门非常重视实践的技术,不能总是看书,但要学习它首先应看书,对单片机引脚、内部结构、寄存器和原理有一定地了解和感官认识,它的是怎样工作的,能干些什么?刚开始时,也许你看不明白,但这并不要紧,因为你还缺乏实践经验。现在单片机应用广泛,因此各个厂家分别推出了自己的单片机,按内部结构体系派系分:51系列、PIC系列、AVR系列、摩托罗拉等等!因为他们的编程方法和调试过程以及内部指令结构有一定的相似,只要学精通一款就OK了!尤其是用C语言编程,就几乎不用分什么派系,但是我们要选择一款有代表性的知识范围广,并且入门容易,书籍多。对于矩阵键盘主要是通过编程给其定义功能,通过单片机在LED上显示出功能即可。参考文献1何立民.单片机高级教程第1版M.北京:北京航空航天大学出版社,2001.62赵晓安.MCS-51单片机原理及应用M.天津:天津大学出版社,2001.33李广第.单片机基础第1版M.北京:北京航空航天大学出版社,1999.54徐惠民.单片微型计算机原理与应用M.北京:北京邮电大学出版社,1996.2 5 袁勤勇.嵌入式系统构件M.北京:北京机械工业出版社,2002.6肖洪兵.跟我学用单片机J.北京:北京航空航天大学出版社,2002.8 . 18
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922