(PLD可编程逻辑器件)CPLD矩阵键盘

上传人:管****问 文档编号:127643774 上传时间:2020-04-04 格式:DOC 页数:10 大小:116.15KB
返回 下载 相关 举报
(PLD可编程逻辑器件)CPLD矩阵键盘_第1页
第1页 / 共10页
(PLD可编程逻辑器件)CPLD矩阵键盘_第2页
第2页 / 共10页
(PLD可编程逻辑器件)CPLD矩阵键盘_第3页
第3页 / 共10页
(PLD可编程逻辑器件)CPLD矩阵键盘_第4页
第4页 / 共10页
(PLD可编程逻辑器件)CPLD矩阵键盘_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《(PLD可编程逻辑器件)CPLD矩阵键盘》由会员分享,可在线阅读,更多相关《(PLD可编程逻辑器件)CPLD矩阵键盘(10页珍藏版)》请在金锄头文库上搜索。

1、矩阵键盘实验一 实验目的:1 了解4*4矩阵键盘的工作原理。2 掌握利用行列扫描法读取按键信息及软件消抖的方法。3 熟悉掌握VHDL语言和QUARTUS 2 软件的使用。4 理解状态机的工作原理和设计方法。5 掌握利用EDA工具进行自顶向下的电子系统设计方法。二 实验任务设计制作一个检测4*4矩阵键盘的按键编码的实验,把实际按键的键值的八位编码先转换成从00001111的编码,再译成数码管能识别的八位编码,在数码管动态显示时,4*4矩阵键盘的第一行对应0003,第二行对应0407,第三行0811,第四行对应1215。三实验原理: 1键盘的工作原理: 按键设置在行、列线交点上,行、列线分别连接到

2、按键开关的两端。行线通过上拉电阻接到+5V电源上。无按键按下时,行线处于高电平的状态,而当有按键按下时,行线电平与此行线相连的列线电平决定。 2行列扫描法原理: 第一步,使行线为编程的输入线,列线是输出线,拉低所有的列线,判断行线的变化,如果有按键按下,按键按下的对应行线被拉低,否则所有的行线都为高电平。第二步,在第一步判断有键按下后,延时10ms消除机械抖动,再次读取行值,如果此行线还处于低电平状态则进入下一步,否则返回第一步重新判断。第三步,开始扫描按键位置,采用逐行扫描,每间隔1ms的时间,分别拉低第一列,第二列,第三列,第四列,无论拉低哪一列其他三列都为高电平,读取行值找到按键的位置,

3、分别把行值和列值储存在寄存器里。第四步,从寄存器中找到行值和列值并把其合并,得到按键值,对次按键值进行编码,按照从第一行第一个一直到第四行第四个逐行进行编码,编码值从“0000” 至“1111”,再进行译码,最后显示按键号码。 3数码管动态扫描原理: 数码管的7个段及小数点都是由LED块组成的,显示方式分为静态显示和动态显示两种。数码管在静态显示方式时,其共阳管的位选信号均为低电平,四个数码管的共用段选线a、b、c、d、e、f、g、dp分别与CPLD的8根I/O口线相连,显示数字时只要给相应的段选线送低电平。数码管在动态显示方式时,在某一时刻只能有一个数码管被点亮显示数字,其余的处于非选通状态

4、,位选码端口的信号改变时,段选码端口的信号也要做相应的改变 ,每位显示字符停留显示的时间一般为1-5ms,利用人眼睛的视觉惯性,在数码管上就能看到相当稳定的数字显示。 四、实验模块电路图及引脚分配 1矩阵键盘电路图: (矩阵键盘电路图)2.数码管电路图:(数码管电路图)3.引脚分配:(1)矩阵键盘:器件引脚标号CPLD与引脚此连接引脚号L161L260L358L457H167H265H364H463(2)数码管:器件引脚标号CPLD与此引脚连接引脚号 A12B15C16D17E18F20G21DP22M124M225M327M428M529M630五、实验步骤:1启动Quartus 2, 新建

5、一个*.vhd文件, 通过硬件描述语言VHDL来编写矩阵键盘扫描实验程序。2.保存文件,编译并检查语法错误。3.利用Quartus 2进行波形仿真,验证所编写的程序是否正确,如果错误,进行相应的修改。 4.把输入、输出量分配给相应的引脚,重新编译。 5.由并口线将计算机与实验板连接在一起 ,由软件的下载部分将*.pof下载芯片中。 6.把三挡开关打到7128挡,进行实验验证并观察实验现象。 7.整理实验内容,加深对实验的理解,并写下自己的心得,整理实验器材。六、实验程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY KEY4_4 ISPORT(

6、CLR,CLK: IN STD_LOGIC;-CLK 40M H: IN STD_LOGIC_VECTOR(1 TO 4); L: OUT STD_LOGIC_VECTOr(1 TO 4); SEL: OUT STD_LOGIC_VECTOR(5 DOWNTO 0 ); LED8D: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY KEY4_4;ARCHITECTURE ART OF KEY4_4 ISTYPE ST IS(S0,S1,S2,S3,S4,S5,S6,S7);SIGNAL S: ST;SIGNAL CLK1K,CLK10K: STD_LOG

7、IC;SIGNAL EN: STD_LOGIC;SIGNAL CNT: INTEGER RANGE 0 TO 9;SIGNAL D1,D0: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL D: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN CLKDIV_1K:PROCESS(CLR,CLK) VARIABLE CNT: INTEGER RANGE 0 TO 39999; VARIABLE NCLK: STD_LOGIC; BEGIN IF CLR=1 THEN CNT:=0; NCLK:=0; ELSIF CLKEVENT AND CLK=1

8、THEN IF CNT=39999 THEN CNT:=0; NCLK:=1; ELSE CNT:=CNT+1; NCLK:=0; END IF; END IF; CLK1K=NCLK; END PROCESS CLKDIV_1K; CLKDIV_10K:PROCESS(CLR,CLK) VARIABLE CNT: INTEGER RANGE 0 TO 3999; VARIABLE NCLK: STD_LOGIC; BEGIN IF CLR=1 THEN CNT:=0; NCLK:=0; ELSIF CLKEVENT AND CLK=1 THEN IF CNT=3999 THEN CNT:=0

9、; NCLK:=1; ELSE CNT:=CNT+1; NCLK:=0; END IF; END IF; CLK10K=NCLK; END PROCESS CLKDIV_10K; SM_YS_JSQ:PROCESS(EN,CLK1K) VARIABLE COUNT: INTEGER RANGE 0 TO 9; BEGIN IF EN=1 THEN COUNT:=0; ELSIF CLK1KEVENT AND CLK1K=1 THEN IF COUNT=9 THEN COUNT:=0; ELSE COUNT:=COUNT+1; END IF; END IF; CNT=COUNT; END PRO

10、CESS SM_YS_JSQ; SM_KEY:PROCESS(CLR,CLK10K,H) VARIABLE EN0: STD_LOGIC; VARIABLE L0,KH0,KL0: STD_LOGIC_VECTOR(1 TO 4); VARIABLE JZ0: STD_LOGIC_VECTOR(7 DOWNTO 0); VARIABLE KHL0: STD_LOGIC_VECTOR(1 TO 8); BEGIN IF CLR=1 THEN EN0:=1; SL0:=0000;EN0:=1; IF H/=1111 THEN S=S1; ELSE SEN0:=0; IF CNT=9 THEN S=S2; ELSE SEN0:=1; IF H/=1111 THEN S=S3; ELSE SEN0:=0; CASE CNT IS WHEN 1=L0:=0111; WHEN 2= IF H/=1111 THEN KH0:=H; KL0:=0111; S=S4; ELSE SL0:=1011; WHEN 4= IF H/=1111 THEN KH0:=H; KL0:=1011; S=S4; ELSE S

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 经营企划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号