按键阵列扫描及点阵显示器控制电路设计改版Word文档格式.docx
- 文档编号:16285342
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:8
- 大小:30.78KB
按键阵列扫描及点阵显示器控制电路设计改版Word文档格式.docx
《按键阵列扫描及点阵显示器控制电路设计改版Word文档格式.docx》由会员分享,可在线阅读,更多相关《按键阵列扫描及点阵显示器控制电路设计改版Word文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
5.1对设计题目的结论性意见及进一步改进的意向说明…………..…………17
5.2总结设计的收获与体会………………………………………….…………18
附图(电路总图)……………………………………………………………………18
参考文献……………………………………………………………………………20
第一章、设计指标
1.1设计指标
设计一个按键阵列判断电路,采用发光二极管点阵显示器以12个显示符标识12个按键。
当有健按下时,显示其标识符,并保持显示符直到新的按键作用。
如果多个按键同时闭合,只响应最先作用的按键。
1.2硬件环境
设计对象的实现环境与采用的FPGA开发装置有关,本节以LP—2900为例,说明采用按键阵列扫描和点阵显示器控制电路的设计原理和实现方法。
LP—2900开发装置上有“0~9”、“*”、“#”共12个键构成的3行4列按键阵列以及8行8列64个点的点阵显示器。
FPGA通过端口RK1~RK3读取键阵列的行线状态X0~X2;
通过3—8线译码器控制键阵列的列线Y0~Y3。
74138的译码输入由FPGA端口DE3~DE1控制。
点阵显示器各行由FPGA的端口ROW1~ROW8控制,点阵显示器各列由FPGA端口C1~C8通过反相器控制,以满足电流驱动能力。
第二章、系统概述
2.1设计思想
1.按键扫描原理
数字电路中,按键的闭合和断开状态可以通过其控制的逻辑电平判断。
(1)按键状态判断
按键的闭合断开可以转换成代表0或1的二值逻辑的低电平和高电平,判断电路输出的电平即可了解按键的通、断状态。
按键一般为机械开关,其触点的合、断有弹性抖动。
为了保证按键动作一次,电路只判断到一次电平状态的改变,需要采用消抖动措施。
采用基本RS触发器可以对电平信号整形,实现消抖。
(2)按键阵列判断
若需要判断的按键较多,为节省信号端口资源,一般将按键分成行、列两组连接成阵列形式。
每个按键跨接在一条行线和一条列线间。
当按键闭合时,行线与列线接通。
每条行线都通过一个电阻上拉到+5V电位,当行线上的所有按键都未闭合时,行线一定为高电平。
当某条列线为低电平是,根据各行线的电平可判断该列线上各键的状态。
(3)按键扫描判断
若以负脉冲扫描序列信号控制键阵列的列线,使各列线分时为低电平,同时顺序判断各行线电平,就能逐个确定各键状态。
显然,每个按键的扫描时间是列线的低电平时间,而阵列的扫描周期是按键扫描时间乘以键数。
所以,按键的闭合时间必须大于阵列扫描周期,否则闭合状态可能会被遗漏。
比如,当阵列为16个键时,如果每个键的扫描时间是10ms,则键的闭合时间必须大于0.16s。
按键的闭合时间因人的动作快慢而异,通常为零点几秒至一点几秒。
2.发光二极管点阵显示原理
点阵显示电路是由发光二极管组成的阵列。
每一行发光二极管的阳极接在一起,由行信号ROWi控制;
每一列发光二极管的阴阳极接在一起,由列信号Cj驱动。
如果把发光二极管阵列的每一行看做一个8段共阳显示器,ROWi为阳极公共端,每一列Cj就是显示器的一个段,低电平有效。
这样,8*8点阵显示电路与8位动态扫描共阳显示电路的结构完全相同,当行扫描信号为高电平时,列信号的低电平可以控制该行各列的发光管亮。
比如,当ROW1为高电平时,若列信号C1~C8为“01111110”,则ROW1行第一和最末的发光管灭,其他6个亮。
同理,若把发光二极管阵列的每一列看做一个8段共阴显示器,Cj为阴极公共端,8*8点阵显示电路就与8位动态扫描共阴显示电路的结构相同。
由于LP—2900开发装置上点阵显示器的列信号通过反相器驱动,所以其FPGA的列控制逻辑为高电平有效,即当ROWi、Cj都为“1”时,第i行、第j列的发光二极管亮。
根据动态扫描显示控制的原理,如果采用一个计数器顺序产生8路行扫描信号RW1~RW8,同时根据各行发光二极管的显示要求同步控制列信号,当扫描计数频率足够高时,点阵显示的效果为一个稳定的字符。
2.2可行性论证
该设计方案在理论上是可行的。
按键扫描部分由状态机A提供各个扫描信号,用ROM实现代码转换功能,发光二极管点阵显示电路由3位二进制数控制行扫描信号,同时控制列显示码同步循环输出,即可显示预设的字符。
2.3各功能的组成
根据按键阵列的判断原理,可采用一个计数器产生按键编码信号。
计数器的脉冲周期等于按键的扫描时间,计数器的模M大于等于被扫描的按键数N。
本设计要求判断12个按键的阵列,所以可采用4位二进制计数器产生按键扫描码。
计数器输出控制译码器产生列扫描信号Y0~Y3,并控制数据选择器选择行线电平Xi。
当被扫描的按键闭合时,选择器的输出信号控制寄存器保存计数器当前的键码状态,同时封锁计数器停止键扫描,以避免其他按键闭合时产生的影响。
发光二极管点阵电路采用3位二进制计数器译码后扫描控制其行(列)信号ROWi(Cj),同时控制列(行)显示码同步循环输出。
所以,必须设计一个译码逻辑元件,根据寄存器保存的按键编码输出键符显示列(行)控制码。
键符显示译码器可采用AHDL真值表方式、组合逻辑器件或只读存储器ROM来实现。
2.4总体工作过程
1.按键编码
计数器A输出4位二进制码Q3~Q0,每组码通过译码器A产生一列低电平有效的列信号,同时通过数据选择器选中一个行线信号判断连接该列、该行的按键状态。
当数据选择器输出低电平时,表示被扫描键闭合。
所以,计数器输出的二进制码与阵列中的按键一一对应。
显然,按键的编码位序与计数器的输出控制有关。
若计数器的高两位输出Q3、Q2控制选择信号B1和B0,低两位输出Q1、Q0控制译码信号A1和A0,则计数器输出为“0001”时,Y0为低电平,选择输出X1的状态,扫描按键S2。
因此,“0001”为S2的键码。
2.键符显示码存储
由于ROM的数据输出控制点阵的列信号C1~C8,因此ROM中每个存储单元的数据就是一行列控制码,每位数据控制一列。
一个显示符的8行控制需要8个单元的列码数据,12个不同的键符显示需要96个存储单元,这样显示译码存储器至少需要7位地址。
如果ROM的高4位地址A6~A3由键码Q3~Q0控制,低3位地址A2~A0由行扫描计数器B控制,每个显示符的8行列控制码被存放在以键码划分块的连续8个存储单元中。
建立存储数据文件时要注意数据位序与点阵序列的关系以及存储单元低3位地址与点阵行序的关系。
比如,若存储器的数据输出D7~D0依序控制C1~C8,则数据码从高至低位分别对应点阵显示器的从左至右列。
如果状态机B的输出与译码器B的输入及存储器低3位地址的位序对应相同,当译码器B的输出Y0~Y7依序控制ROW1~ROW8时,每个字符码的8个存储单元从低地址到高地址分别对应点阵显示器从上至下各行。
第三章单元电路设计与分析
3.1各单元电路的选择
1.分频器
分频器提供固定的频率输出,用以控制整个电子系统的时钟。
分频器由7片二五—十进制计数器7490组合完成,每级为十分频,共输出10MHZ~1HZ共8档频率信号,输入为FPGA的石英晶振提供的10MHZ的频率。
2.状态机
整个系统共包含2个状态机,即计数器,由1片16进制计数器74161构成。
状态机A用于按键阵列选择,状态机B提供行扫描的频率。
3.寄存器
寄存器用来保存由按键阵列选择的存储器地址的高4位,由8位锁存器74377构成。
4.显示码存储器
存储器由自行设计的128*8ROM构成,每个单元存8位,共8根输出数据线。
5.数据选择器
数据选择选用双片集成4选1数据选择器73153,用于选择按键阵列的行信号。
6.译码器
译码器采用3—8线译码器74138,配合状态机实现逐行扫描功能。
7.反相选择器
反相选择器用来选择输出点阵的颜色是否取反相,由组合逻辑门实现。
外接电平控制输入信号,用于控制正相或反相。
8.颜色选择器
颜色选择器是用来选择FPGA的点阵显示器亮红灯或绿灯的器件,由8片74138构成,外接电平控制输入信号,用于选择颜色。
3.2设计及工作原理分析
一片10进制计数器可以完成一个时钟信号的10分频,如果使用7片完成级联,即可做到10^7分频。
7490为二五—十进制计数器,其中输入CLK1,输出QA为二进制计数器;
输入CLK2,输出QCQBQA为5进制计数器。
CLRA,CLRB为异步复位端,SET9A,SET9A为异步置9端,均为高电平有效。
要实现10分频有两种接法,第一种是外部输入时钟信号进CLKA,然后输出QA接输入CLKB,另一种是外部输入时钟信号进CLKB,然后输出QD接输入CLKA。
两种接法的区别在于:
第一种接法使用QD作为每一级分频的输出端,这种输出时钟的占空比为20%,而第二种接法使用QA作为输出时钟信号,这种时钟信号的占空比为50%,所以我选择第二种接法。
本系统总共使用了两个状态机,状态机A位于分频器之后,寄存器之前,在分频器的输出时钟信号的控制下,不断改变状态,当某一状态与按键阵列某一按键所对应的行列控制信号相同时,便将该状态保持并送入寄存器。
状态机A用单片74161构成,复位端CLRN和置数端LDN都接高电平,使之无效,ENP与ENT均由数据选择器的输出Y控制,当Y为低电平时,便保持当前状态停止计数。
CLK接分频器的输出端,由于无需置数,所以ABCD四端口断开。
状态机B也是单片74161,由分频器选择某一频率输入,使能ENP与ENT均接高电平有效,复位端CLRN和置数端LDN都接高电平,使之无效。
输出只取QCQBQA组成的8种状态控制8个行扫描信号。
寄存器用于暂时存放状态机A的输出信号,然后将它传入存储器。
我用74377作为寄存器,该芯片共可存8位,我只用其中4位,其锁存端LD为下跳变有效,所以输入端G(CLK)需接一反相器再连接到数据选择器的输出端Y上。
显示码存储器由自定义ROM完成。
由于一共有12个按键,每一个按键共包含8*8,64位二进制数表示的信息。
我们将8位二进制数作为一个内存单元,则共需要96个单元,所以采用128*8的ROM。
其输入为7位地址信号,输出为8位数据信号。
下为ROM中存储的数据:
数据采选择器用双片集成4选1数据选择器74153,但只使用其中一片。
选择信号A和B分别接状态机A的QA,QB,数据选择信号D0,D1,D2分别接1C0,1C1,1C2,由于当无按键按下时D0,D1,D2为高电平,所以剩余的引脚1C3需接高电平。
译码器的连接时就按正常的连接方式使用,输入为状态机B的三个输出信号,输出为点阵显示器的行选择信号。
反相选择器通过外接电平按钮的高或低来选择正相或反相。
在设计时先列出真值表:
原信号
输入信号
输出信号
1
由此得出原信号与电平控制信号时同或关系,所以用组合逻辑元件设计了一个9进8出的同或门器件。
输入信号为1个电平按键信号与8个从ROM中输入的原信号。
为了能够通过电平按键选择输出显示红色或绿色,所以设计这个器件。
该器件用8片译码器74138构成,每一片用1个输入信号从2个输出信号中选择一个输出,电平按键信号进入A引脚,用来选择灯。
而所有的使能信号均由每一片74138对应的一位从ROM中输入的二进制数控制。
第四章电路的组构与调试
4.1遇到的主要问题
在刚刚连接完电路并传输至单片机上进行测试时,发现显示码错乱,与原先设计的显示字符不符。
4.2现象记录及原因分析
遇到这种问题,一般会首先怀疑ROM中的问题。
按照自己的设计,按数字“1”应该显示“1”,按数字“2”应该显示“2”,其他依次类推。
查看ROM后,发现是我没把软件的编排方式弄明白,以致显示码不符合设计要求。
4.3解决措施及效果
我把ROM做了些修改,在理解软件的编排规则后,把ROM的一些顺序调换了位置。
结果实验达到了要求,理想的实现键盘作用。
4.4功能的测试方法、步骤、设备、记录的数据
开始测试时,在未按按键时显示的是绿色字符“1”,当我按下一个按键时,便显示与之对应的字符,按其他按键对应其他字符,且都为绿色。
例如:
按数字键“2”后,点阵显示器上出现的图案:
第五章结束语
5.1对设计题目的结论性意见及进一步改进的意向说明
本实验的难点在于对实验仪器以及软件的理解。
从整体上看按键点阵扫描及点阵显示器控制电路,只要把输入频率、PIN脚、存储器ROM等编排好,实验就容易做出来。
本实验采用的是128位的ROM,试想把ROM进行拓展,变为256位。
结果address由7脚变为8脚,多出一个控制位。
此时可以对增加的ROM进行编写。
因为只有12个按键,所以ROM不用全都编写,编写方法同原实验相似。
增加的一个address脚可用来控制点阵显示器的变化。
用它可以实现点阵显示器自动变化和人工变化,其中,自动变化时该脚输入的频率不能太快,较理想的频率为1Hz。
例如人工变化时,可以增加一个控制键,当控制键打开时,按按键显示数字;
当控制键关闭时,按按键显示另一字符。
ROM表如下:
显示效果如下图:
同理,只要对ROM进行增加,同时有足够空间的ROM,我还可以实现点阵显示器的多态变化。
应注意的一点是,在编写ROM表时,考虑哪些表格是对变化没影响的,做实验应把时间用在有意义的地方。
5.2总结设计的收获与体会
通过本次设计,提高了我对数字信号的理解,发现简单的数字可以传递信息,最简单的例子就是我们日常生活中最常见的交通信号等。
由于该设计对于第一次做的我存在一定的难度,起初对于软件的使用不理解便饶了不少弯子,但是经过同学和老师的帮助,我最终克服了困难,用quartersII实现了自己的设计。
我觉得该设计还提高了我的交流能力,一举两得。
附图(电路总图)
参考文献
《数字电子技术基础》(第二版)……………西安电子科技大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 按键 阵列 扫描 点阵 显示器 控制电路 设计 改版
![提示](https://static.bdocx.com/images/bang_tan.gif)