EDA课程设计键盘扫描及显示完整程序_键盘扫描课程设计
EDA课程设计键盘扫描及显示完整程序由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“键盘扫描课程设计”。
LIBRARY
IEEE;USE
IEEE.STD_LOGIC_1164.ALL;USE
STD_LOGIC_ARITH.ALL;USE
STD_LOGIC_UNSIGNED.ALL;
ENTITY
KEYBOARD IS PORT(CLK_1K : IN STD_LOGIC;
CLK_40K : IN STD_LOGIC;
KEY_LIE : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
START :OUT STD_LOGIC;
KEY_HANG :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
DATA_P : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
DISP_DATA : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
DISP_SEL : OUT STD_LOGIC_VECTOR(1 downto 0);END;ARCHITECTURE RTL OF KEYBOARD IS SIGNAL INT : STD_LOGIC;SIGNAL CLK_SEL : STD_LOGIC;SIGNAL START_REG:STD_LOGIC;SIGNAL SIGNAL SIGNAL SIGNAL
DISP_SEL_REG:STD_LOGIC_VECTOR(1 DOWNTO 0);DATA_L,DATA_H:STD_LOGIC_VECTOR(3 DOWNTO 0);DATA_TMP:STD_LOGIC_VECTOR(3 DOWNTO 0);KEY_HANG__TMP:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL DISP_DATA_REG:STD_LOGIC_VECROR(3 DOWNTO 0);SIGNAL KEY_CODE:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL DATA_P_REG:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN KEY_CODE
PROCESS(CLK_SEL,CLK_40,INT)VARIABLE STATE : INTEGER RANG 0 TO 3;BEGIN IF RISING_EDGE(CLK_40K)THEN INT
WHEN 0=>
KEY_HANG_TMP
STATE :=1;
WHEN 1 =>
KEY_HANG_TMP
STATE :=2;
WHEN 3 =>
KEY_HANG_TMP
STATE :=3;
WHEN 4=>
KEY_HANG_TMP
STATE :=0;
END CASE;END IF;END PROCESS;
PROCESS(CLK_40K , INT)VARIABLE STATE :INTEGER RANGE 0 TO 3;VARIABLE COUNTER : INTEGER RANGE 0 TO 31;BEGIN IF INT='0' THEN
STATE:=0;
COUNTER:=0;ELSIF RISING_EDGE(CLK_40K)THEN CASE STATE IS
WHEN 0 => DATA_TMP
STATE:=1;
WHEN 1 =>
CASE KEY_CODE IS
WHEN “01110111” =>
DATA_L
DATA_H
STATE:=2;
WHEN “01111011” =>
DATA_L
DATA_H
STATE:=2;
WHEN “01111101” =>
DATA_L
DATA_H
STATE:=2;
WHEN “01111110” =>
DATA_L
DATA_H
STATE:=2;
WHEN “10110111” =>
DATA_L
DATA_H
STATE:=2;
WHEN “10111011” =>
DATA_L
DATA_H
STATE:=2;
WHEN “10111101” =>
DATA_L
DATA_H
STATE:=2;
WHEN “10111110” =>
DATA_L
DATA_H
STATE:=2;
WHEN “11010111” =>
DATA_L
DATA_H
STATE:=2;
WHEN “11011011” =>
DATA_L
DATA_H
STATE:=2;
WHEN “11011101” =>
IF DATA_H =“1001” THEN
IF DATA_L=“1001” THEN
DATA_H
DATA_L
ELSE DATA_L
END IF;
ELSIF DATA_L=“1001” THEN
DATA_L
DATA_H
ELSE
DATA_L
DATA_H
END IF;
STATE:=2;
WHEN “11011110” =>
IF DATA_H=“1001” THEN
DATA_H
DATA_L
DATA_H
STATE:=2;
WHEN “11100111” =>
IF DATA_L=“0000” AND DATA_H=“0000” THEN
DATA_L
DATA_H
DATA_L
DATA_H
DATA_L
DATA_H
STATE:=2;
WHEN “11101011”=>
IF DATA_H=“0000” THEN
DATA_H
DATA_L
DATA_
STATE:2;
WHEN “11101110” =>
DATA_L
DATA_H
DATA_P_REG
START_REG
STATE:=2;
WHEN“11101101” =>
DATA_L
DATA_H
STATE:=2;
WHEN OTHERS =>
STATE:=2;
END CASE;
WHEN 2 =>
IF COUNTER=31 THEN
COUNTER:=0;
STATE:=3;ELSE
COUNTER:=COUNTER+1;
STSTE:=2;END IF;
WHEN 3 =>
START_REG
STATE:=3;END CASE;END IF;END PROCESS;
PROCESS(CLK_1K,DATA_L,DATA_H)VARIABLE STATE: INTEGER RANGE 0 TO 1;BEGIN
IF RISING_EDGE(CLK_1K)THEN
CASE STATE IS
WHEN 0 =>
DISP_SEL_REG
DISP_DATA_REG
STATE:=1;
WHEN 1 =>
DISP_SEL_REG
DISP_DATA_REG
STATA:=0;END CASE;END IF;END PROCESS;
PROCESS(CLK_1K,DISP_DATA_REG)BEGIN IF RISING_EDGE(CLK_1K)THEN
CASE DISP_DATA_REG IS
WHEN “0000”=>
DISP_DATA
DISP_DATA
DISP_DATA
DISP_DATA
DISP_DATA
DISP_DATA
DISP_DATA
DISP_DATA
DISP_DATA
DISP_DATA
DISP_DATA
数字钟一、设计要求设计一个数字钟,具体要求如下:1、具有时、分、秒计数显示功能,以24小时循环计时。2、具有清零、校时、校分功能。3、具有整点蜂鸣器报时以及LED花样显示功能......
《电子系统设计自动化》课程设计报告学 院: 机电工程学院 题 目: 数字时钟电路设计 课 程: 《电子系统设计自动化》课程设计 专业班级: 电信10级2 班 学生姓名: 刘星 秦玉杰 王艳......
《EDA课程设计》课程设计题目:基于单片机的温湿度采集系统姓名:xxx学班时地 号:xxxx级:xxxx间:2014.4.21~ 2013.5.5 点:xxxxx指 导老师:xxxxx目录一、电路原理图 .......................
考试序号:28自动打铃系统设计说明书 学 生 姓 名:周文江学号:14112502521专 业 班 级:1102报告提交日期:2013.11.26湖 南 理 工 学 院 物 电 学 院目录一、题目及要求简介………......
设计四 拔河游戏机1、设计一个能进行拔河游戏的电路。2、电路使用15个(或9个)发光二极管,开机后只有中间一个发亮,此即拔河的中心点。3、游戏双方各持一个按钮,迅速地、不断地......
