矩阵键盘扫描显示键值

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程报告

课程新型单片机实践

题目4*4矩阵键盘扫描显示键值二级学院

班级

姓名

学号

指导教师

设计时间2011.11.15~2011.12.14

常州工学院《新型单片机》设计任务书学院:专业:自动化班级:

绪论 (4)

第一章总体方案设计 (5)

第二章系统硬件电路的设计 (6)

第三章系统软件电路的设计 (8)

3.1软件设计思想 (8)

3.2主程序设计 (9)

3.3子程序设计 (9)

3.3.1 动态显示程序设计 (10)

3.3.2 按键程序设计 (11)

第四章调试及性能分析 (14)

4.1软件调试 (14)

4.2性能分析 (15)

总结 (16)

参考文献 (16)

附录 (17)

A元件清单 (17)

8、瓷片电容 (17)

B总原理图 (18)

C程序清单 (19)

C实物图 (22)

绪论

制作一个检测4*4 矩阵键盘的按键编码的实验,把实际按键的键值的八位编码先转换成从0000—1111 的编码,再译成数码管能识别的八位编码,在数码管动态显示时,矩阵键盘的第一行对应00—03,4*4 第二行对应04—07,第三行08—11,第四行对应12—15。

原理:

1.键盘的工作原理:.键盘的工作原理:按键设置在行、列线交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接到+5V 电源上。无按键按下时,行线处于高电平的状态,而当有按键按下时,行线电平与此行线相连的列线电平决定。2.行列扫描法原理:原理:.行列扫描法原理第一步,使行线为编程的输入线,列线是输出线,拉低所有的列线,判断行线的变化,如果有按键按下,按键按下的对应行线被拉低,否则所有的行线都为高电平。第二步,在第一步判断有键按下后,延时10ms 消除机械抖动,再次读取行值,如果此行线还处于低电平状态则进入下一步,否则返回第一步重新判断。第三步,开始扫描按键位置,采用逐行扫描,每间隔1ms 的时间,分别拉低第一列,第二列,第三列,第四列,无论拉低哪一列其他三列都为高电平,读取行值找到按键的位置,分别把行值和列值储存在寄存器里。第四步,从寄存器中找到行值和列值并把其合并,得到按键值,对此按键值进行编码,按照从第一行第一个一直到第四行第四个逐行进行编码,编码值从“0000” 至“1111” ,再进行译码,最后显示按键号码。3.数码管动态扫描原理:.数码管动态扫描原理:数码管的7 个段及小数点都是由LED 块组成的,显示方式分为静态显示和动态显示两种。数码管在静态显示方式时,其共阳管的位选信号均为低电平,四个数码管的共用段选线a、b、c、d、e、f、g、dp 分别与单片机的8 根I/O 口线相连,显示数字时只要给相应的段选线送低电平。数码管在动态显示方式时,在某一时刻只能有一个数码管被点亮显示数字,其余的处于非选通状态,位选码端口的信号改变时,段选码端口的信号也要做相应的改变,每位显示字符停留显示的时间一般为1-5ms,利用人眼睛的视觉惯性,在数码管上就能看到相当稳定的数字显示。

第一章总体方案设计

(1)总体设计要求

本系统采用单片机STC89C52为数码管的控制核心,制造一种简单的4×4键盘扫描显示,能够在目测条件下两位数码管各段亮度均匀、充足,本系统具有硬件少,结构简单,容易实现,性能稳定可靠,成本低等特点。

根据设计要求,初步确定设计方案如下:

1. 选择STC89C52单片机(晶振频率为f=12MHZ)作为整个系统的核心器件,对整个系统进行总体控制,发送并时时处理系统信息。

2.通过编程显示数字: 00~15。

3.当有按键按下时显示数字。

4. 扫描信号连接到单片机的P2口,显示信号连接到单片机的P0口。

5.数码管点亮过程有程序控制,通过P1.0,P1.1分别扫描点亮两位数码管完成,数码管采用直接驱动方式,共阳极接法。

(2)系统框图

本文设计行、列驱动电路,显示屏电路,运用单片机的智能化,系统的将每个功能电路模块连接在一起,总体结构设计如下图1所示:

图1-1系统框图

第二章系统硬件电路的设计

本系统的硬件电路是由单片机最小系统、按键电路、动态显示驱动电路三部分组成。其中,单片机最小系统包括电源电路、复位电路和晶振电路构成;按键电路采用独立编码方式;显示部分使用共阳型高台扫描、高态显示信号驱动电路,完成数字效果。总原理图见附录B。

2.1晶振电路

晶振是为电路提供频率基准的元器件,通常分成有源晶振和无源晶振两个大类,无源晶振需要芯片内部有振荡器,并且晶振的信号电压根据起振电路而定,允许不同的电压,但无源晶振通常信号质量和精度较差,需要精确匹配外围电路(电感、电容、电阻等),如需更换晶振时要同时更换外围的电路。有源晶振不需要芯片的内部振荡器,可以提供高精度的频率基准,信号质量也较无源晶振要好。如图2-1为晶振电路。

图 2-1 晶振电路图

2.2复位电路

为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般微机电路正常工作需要供电电源为5V±5%,即4.75~5.25V。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。如图2-2为复位电路图。

图2-2 复位电路图

第三章系统软件电路的设计

3.1 软件设计思想

主程序先进行设置数码管闲时显示‘- -’,并启动,再进行键盘扫描载入00~15字型,然后判断一组字型是否扫描完,按不同情况进行循环调用子程序。进入子程序后,首先设置相应的程序,反复调用显示子程序,并在显示过程中反复调用键盘扫描子程序进行延时,判断是否退出相应的方式显示子程序。设计过程中,能很好得提高按键响应速度。如图2所示为软件系统框图。

图3-1软件设计框图

字符编码:因为该数码管为共阳型显示,可以把I/O口输出位对应每段数码管显示段,因此若要使数码管一段点亮,则该位为“0”;该段不亮,则该位为“1”。所以对“00~15”的编码,并将编码写入数组中便于查表操作,数组定义编码程序如下:

unsigned char code TAB[18]= // 共阳7节显示器(g~a)编码

{ 0xbf,0xc0, 0xf9, 0xa4, 0xb0, 0x99, // 数字0-4

0x92, 0x82, 0xf8, 0x80, 0x98, // 数字5-9

0xa0, 0x83, 0xa7, 0xa1, 0x84, // 字母a-e(10-14)

0x8e, 0xbf}; // 字母F(15),负号(-)

相关文档
最新文档