键盘显示电路
作者:(自控6组)
指导老师:陈其雄 黄传明
1. 摘要
本设计采用阵列式的键盘输入,用4*4的键盘形式,这样可以有效的减少对单片机I/O口的占用。显示电路用动态扫描,这样可以减少电路的电能损耗。软件设计上键盘行送数,列进行读方式,并用查表格方式来获取键值,0~9键定义为数值键、A~F定义为功能键。显示电路的软件设计用动态显示,当输入为数值时分别从左到右显示各自的键值;当输入为功能键的时候,分别显示左移、右移、闪烁、停止、清零、熄灭的各种不同状态。
关键词:键盘及其显示 动态扫描 查表法 功能键
2. 方案论证
? 2.1 CPU的选择
此系统所需要的工作量较小,采用8位机足以满足本系统的要求,故选用AT89C51单片机作为本系统的CPU。 ? 2.2键盘电路
方案一:采用串行输入,每个键位占用一个I/O口,16个按键一共要占用16个I/O口,当有键按下的时候,直接对单片机的I/O进行操作。
方案二:采用阵列式输入,排成4行4列,总共16个按键。16个按键的输入口为P1,当有键按下的时候,通过分别对各行各列进行扫描并查表得出键值。
比较两个方案,采用方案二的方法。这样可以有效的减少对单片机I/O口的占用,使单片机有更多的I/O口来实现其他的功能。使单片机的设计更加灵活有效。
? 2.3显示电路
方案一:通过单片机的I/O接上拉电阻直接输出驱动数码管,可以通过I/O的输出值来改变数码管的显示字形,由74138来分别选通8个数码管,一共需要11个I/O口。
方案二:通过74164串并转换IC并接8个数码管,并提供一个串行通信所需的通信时间脉冲。
方案三:通过4511译码IC来驱动8个数码管,由74138来分别选通8个数码管,同样可以实现8位数码管的显示功能。4511和74138一共需要7个I/O口。
比较以上三个方案,方案一所要花费的I/O口较多,对于单片机系统是一
23个很大的浪费。方案二可以很好的解决显示的抖动现象,实现静态显示,但是8个74164所要消耗的功率太大,对于系统的能源要求太高。方案三的所需要的I/O最少,有效地节约单片机系统的I/O,通过74138的动态显示,所耗电能效少。故选用方案三。 3. 系统设计 ? 3.1键盘电路设计 如图3.1所示,16个按键排列成4行4列,4个行的引线分别同P1口的P1.4~P1.7相联接,4个列的引线通过一个上拉电阻分别联接到P1.0~P1.3口。 +5R110KR210KR310KR310KS1SW-PBP1.7S5SW-PBP1.6S9SW-PBP1.5S13SW-PBP1.4P1.3S2SW-PBS3SW-PBS4SW-PBS6SW-PBS7SW-PBS8SW-PBS10SW-PBS11SW-PBS12SW-PBS14SW-PBS15SW-PBS16SW-PBP1.2P1.1P1.0图3.1 键盘电路 其中上拉电阻的值:R=4.7V/1.6mA=3KΩ。 在键盘操作过程中若四个按键同时按下时,则需要的上拉电阻值为12KΩ,故此上拉电阻取值为10KΩ。 工作原理:从0列开始,顺序行扫描,即该行输出为0。每扫描一行,读入列线数据,从0开始,列检查,找该行输出为0的列,若无,则顺序扫描下一行,并检查其各列;若找到某列线为0,则该列与检查行交叉的按键为被按下的键。从0行0列开始,顺序将按键编号,就可以按扫描的值得到按键的值。本电路中从P1.3~P1.0顺序输出0,再检查P1.7~P1.4。此键盘的实现要用软件的方法识键和译键。 ? 3.2显示电路设计 如图3.2所示,采用P2口输出到CD4511和74LS138两块芯片上。其中CD4511 连到P2口的0~3口;74LS138连到P2口的4~6口上。 74LS138为3-8译码器,用于控制8个共阴数码管的发光与熄灭。它的作用是将P2.4~P2.6三个口的输出轮流点亮共阴数码管,频率大于24帧,因此人眼看出来的是八个共阴管同时亮。 CD4511将P2.0~P2.3口的数据译成共阴管的显示数据。 其中4511侧的限流电阻阻值:R=(3.6-2-1)V/4mA=150Ω;考虑软件可能削弱其电流,故采用100Ω。 U301P2.0P2.1P2.2P2.37126345VCCABCDLTBILE4511ABCDEFG1312111091514150150150150150150150R301R302R303R304R305R306R307abcdef g dpD3017642f19e10385LEDQ301PNPQ302PNPabcdef g dpD3027642f19e10385LEDQ303PNPabcdef g dpD3037642f19e10385LEDQ304PNPabcdef g dpD3047642f19e10385LEDagdbcdpagdbcdpagdbcdpagdbcdpU302P2.4P2.5P2.6123ABCY0Y1Y2Y3Y4Y5Y6Y715141312111097456VCCE1E2E374LS138图3.2 LED显示电路 LED示器工作原理 (1)LED静态显示方式 LED显示器工作于静态显示方式时,各位的共阴极连接在一起并接地;每位的段码分别与8位的锁存器输出相连。各个LED的显示字符一经确定,相应锁存的段码输出将维持不变,直到送入另一个字符为止,故静态显示器的亮度较高。 (2)LED动态显示方式 在多位LED显示时,为简化硬件电路,通常将所有的段码线相应段并联在一起,由1个8位I/0口控制,形成段码线的多路复用,而各位的共阴极分别由相应的I/O线控制,形成各位的分时选通。设计中采用八个共阴LED管,其中段码线采用CD4511译码占用4位I/O口,而位选信号使用74LS138占用3个I/O1口,则只要7个I/O口。由于各位的段码线并联,4位I/O口输出的段码对各个234显示位来说都是相同的。因此,在同一时刻,如果各位选线都处于选通状态的话,8位LED将显示相同的字符。若要各位LED能够同时显示出与本位相应的显示字
符,就必须采用动态显示方式,即在某一时刻,只让某一位的位选线处于选通状态,而其它各位的位选线处于关闭状态,同时,段码线上输出相应位要显示的字符的段码。这样,在同一时刻,8位LED中只有选通的那1位显示出字符,而其他7位则是熄灭的。同样,在下一时刻,只让下一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,在段码线上输出将要显示字符的段码,则同一时刻,只有选通位显示出将要显示的字符,而其他各位则是熄灭的。如此循环下去,就可以使各位显示出将要显示的字符。虽然这些字符是在不同时刻出现的,而在同一时刻,只有一位显示,其他各位熄灭,但由于LED显示器的余辉和人眼的视觉暂留作用,只要每位显示间隔足够短,则可以造成多位同时亮的假象,达到同时显示的效果。
发光二极管从导通到发光有一定的延时,导通时间太短,则发光太弱,人眼无法看清;但也不能太长,因为要受限于临界闪烁频率,而且此时间越长,占用CPU时间也越多。另外,显示位数增多,也将占用大量的CPU时间,因此动态显示的实质是以牺牲CPU时间来换取器件的减少。 ? 3.3 硬件总体设计
21、系统的总体框架 34567 4*4阵列式键盘 单片机控制系统(MCS—51) 8个数字显示 2、具体设计 如图2.1所示,单片机输出的显示值通过P2.0-P2.3,并经CD4511译码后直接驱动共阴数码管,而选通信号由P2.4-2.7驱动74LS138来控制数码管的共地而实现。总体设计硬件电路图如3.3所示 +5R110KR210KR310KR310KS1SW-PBC302VCCC304S5ELECTRO1CAPSW-PBSW-PBSW-PBSW-PBS6S7S8S2SW-PBS3SW-PBS4SW-PBS9SW-PBU201C20722u393837363534333213121514C20531CAPY20112MC206191891716P00P01P02P03P04P05P06P07INT1INT0T1T0EA/VPX1X2RESETRDWR8051RXDTXDALE/PPSEN10113029P10P11P12P13P14P15P16P17P20P21P22P23P24P25P26P27123456782122232425262728S13SW-PBS10SW-PBS11SW-PBS12SW-PBS14SW-PBS15SW-PBS16SW-PBR2011KC302VCCC304ELECTRO1CAPU3017126345ABCDLTBILE4511ABCDEFG1312111091514CAPR301R302150R303150R304150R305150R306150R307150150D301abcdef gdp7642f19e10385LEDQ301PNPQ302PNPabcdef gdpD3027642f19e10385LEDQ303PNPabcdef gdpD3037642f19e10385LEDQ304PNPabcdef gdpD3047642f19e10385LEDagdbcdpagdbcdpagdbcdpagdbcdpU302123ABCY0Y1Y2Y3Y4Y5Y6Y715141312111097456VCCE1E2E374LS138图3.3 总体电路图
4. 软件设计
? 4.1系统软件设计的特点
软件设计有两大特点如下:
(1)键盘扫描采用阵列式扫描,而后由查表法查得实际输入值。 (2)大量采用子程序,优化了程序设计。 ? 4.2软件设计总体流程图
开始 初始化程序 调用扫描子程序 是否有键按下? Y 调用查表子程序 调用显示子程序 Y 数字键吗? N A? Y 左移 右移 N B? Y 闪烁 N C? Y 停止 N D? Y N N E? Y 清零 N F? Y 消隐 说明:左移子程序、右移子程序、闪烁子程序内部都都有调用扫描子程序和查表子程序,通过调用扫描子程序和查表子程序的次数来达得软件延时的目的,充分利用CPU的效率。 ? 4.3软件程序
本程序包括如下几个子程序:扫描子程序、查表子程序、左移子程序、右移子程序、闪烁子程序、停止子程序、清零子程序、消隐子程序,显示子程序,软件延时子程序,一共有10个,各个子程序都可以独立成为一个功能模块,便于
程序的调试和优化。
功能:
1、数字键:十个数字键0~9,从最后一位显示,原有的数字均左移一位。 2、功能键:
A:显示左移,在左移过程中按下数字键仍然有效;按下功能键,左移停止后,实现其按下的功能。
B:显示右移,在右移过程中按下数字键仍然有效;按下功能键,右移停止后,实现其按下的功能。
C:显示闪烁,在闪烁过程中按下数字键仍然有效;按下功能键,闪烁停止后,实现其按下的功能。
D:停止状态,无论系统处于何种状态,按下该键系统便停止。停止后,全部按键均有效。
E:无论在什么状态下,按下此键,显示全为零,此后全部按键均有效。 F:无论在什么状态下,按下此键,显示全部为熄灭状态,此后全部按键均有效。
5. 总结
? 本次设计,硬件部分采用万能板焊接,器件排列合理整齐,经硬件调试后, 各个按键反映灵敏,数码管显示字型清晰,亮度合适;软件上采用模块化设计,通用性强,且易于调试;系统设计上,根据软硬件的特点,采用并行输入、动态显示等技巧,节省了I/O及部分硬件,并降低电能损耗。
? 经过软硬件的调试,本系统的设计完全可以满足设计的大体要求。