展示设计课程设计实验报告
展示设计课程设计实验报告
北 华 航 天 工 业 学 院
《展示设计课程设计》
课程设计报告
报告题目:
作者所在系部: 材料工程系 作者所在专业: 工业设计 作者所在班级: 作 者 姓 名 : 指导教师姓名: 宓胜杰、宋红毅 完 成 时 间 : 20xx- 06
目 录
一、设计任务和技术要求 ……………………… 二、进度计划表………………………………… 三、课程设计总结报告正文……………… ……
1.……………………………………………… 2.……………………………………….… 3.………………………………………… 4.………………………………………… 5.………………………………………… 6.………………………………………… 7.…………………………………………
四、主要参考文献……………………………… 五、作品提交…………………………………… 六、指导教师成绩评定表………………………
课程设计任务书
三、课程设计总结报告总结正文
四、主要参考文献
五、指导教师成绩评定表
第二篇:综合课程设计实验报告
姓名 xxx
学号 xxx
指导老师 xxx
完成日期 xxx
实验名称:
矩阵键盘控制数码管显示
实验要求:
1. 掌握数码管显示原理
2. 掌握矩阵键盘开关工作原理
3. 通过FPGA用矩阵键盘控制数码管显示
实验设计软件
实验设计内容
分析矩阵开关电路图与数码管显示电路图,构建矩阵键盘控制思想,计算数码管显示数字代码。通过在软件中编写相应的控制程序,在FPGA的控制下,使4*4的矩阵键盘依次按下之后,数码管依次显示0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,初始状态显示0。并将程序下载进实物FPGA当中,实现真实功能。
实验原理分析
1.数码管显示模块
电路原理图:
如图所示,数码管中a,b,c,d,e,f,g,dp分别由一个引脚引出,给对应的引脚高电平,则对应引脚的LED点亮,故我们在程序中可以设定一个8位的二进制数reg【7:0】 h,每一位
对应一个相应的引脚输出,那么我们就可以通过对x的赋值,控制对应 的8个LED亮灭的状态进行数字显示。例如,如果我们显示数字2,则在数码管中,a、b、d、e、g亮,c、f、dp不亮,则显示的是数字2,即h=’b11011010代表显示数字2.
数字显示代码如下:
0:h='b11111100;
1:h='b01100000;
2: h='b11011010;
3:h='b11110010;
4:h='b01100110;
5:h='b10110110;
6:h='b10111110;
7:h='b11100000;
8:h='b11111110;
9:h='b11110110;
A:h='b11101110;
B:h='b11111111;
C:h='b10011100;
D:h='b11111101;
E:h='b10011110;
F:h='b10001110
另外我们只需要选中图中第一个数码管,故图中LED/SEG12此引脚我们只需给它一个高电平选中即可,其他片选端给低电平不选中。即我们在程序中定义一个片选控制字 wire[3:0] c=’b1000;
2.矩阵键盘开关模块
电路原理图:
分析:
矩阵键盘如图所示,从图中可以得知,矩阵键盘共8个引脚,4个输入,4个输出。因为我们要将矩阵键盘连接到FPGA当中,由FPGA主控芯片控制键盘的输入,故矩阵键盘的输入便是FPGA的输出,而矩阵键盘的输出便是FPGA的输入。
在此设计当中,我采用快速扫描的方法对矩阵键盘进行控制。
如图,当我们按下第一排第一列开关时,由图可知,如果我们通过FPGA给BT_IN1一个低电平,则电路导通,那么BT_OUT1输出一个低电平给FPGA。那么我们就可以通过对IN,OUT这两组输入输出对4*4的矩阵开关进行选择。比如:矩阵输入我定义一个reg 【3:0】 b,矩阵输出定义一个wire【3:0】f,那么b=‘b0111,f=’b0111则选中的是第一行第一列的开关,依次类推,当b=‘b1110,f=’b1110时,我们选中的开关就是第4排第4列的键盘开关。
据此原理,我们可以通过FPGA主控程序,每来一个时钟,给键盘的输入BT_IN(FPGA的输出)某一个引脚为低电平,其他为高电平选中某行,然后当我们按下开关电路导通,矩阵键盘便会有一个输出BT_OUT的某一个变为低电平,而其他仍然为高电平传送给FPGA,那么此时我通过FPGA的查询,查询到这个矩阵键盘的输出状态,我们便选中了某列,以此来控制矩阵键盘的某行某列。
3.矩阵键盘与数码管联调
通过FPGA主控芯片,将数码管对应引脚与键盘开关对应引脚连接起来,当按下第一排第一列时,数码管显示0,第一排第二列时,数码管显示1,依次类推,当按下第四排第四列时数码管显示F。
实验结果展示:
此图为按下第1行第3列开关时显示数字3.
附录
程序:
module kmc(clk,f,c,b,h); input clk,f;
output c,b,h; wire[3:0] c; wire[3:0] f;
reg[7:0] h='b11111100; reg[3:0] b='b0111; assign c='b1000; always @(posedge clk) begin
b=~b;
b=b>>1;
b=~b;
if(b=='b1111) b='b0111;
if(b=='b0111&&f=='b0111) h='b11111100;
if(b=='b0111&&f=='b1011) h='b01100000;
if(b=='b0111&&f=='b1101) h='b11011010;
if(b=='b0111&&f=='b1110) h='b11110010;
if(b=='b1011&&f=='b0111) h='b01100110;
if(b=='b1011&&f=='b1011) h='b10110110;
if(b=='b1011&&f=='b1101) h='b10111110;
if(b=='b1011&&f=='b1110) h='b11100000;
if(b=='b1101&&f=='b0111) h='b11111110;
if(b=='b1101&&f=='b1011) h='b11110110;
if(b=='b1101&&f=='b1101) h='b11101110;
if(b=='b1101&&f=='b1110) h='b11111111;
if(b=='b1110&&f=='b0111) h='b10011100;
if(b=='b1110&&f=='b1011) h='b11111101;
if(b=='b1110&&f=='b1101) h='b10011110;
if(b=='b1110&&f=='b1110) h='b10001110;
end
endmodule
管脚分配:
h【7】—119
h【1】—123
b【3】—182
c【3】—174
f【3】—183 h【6】—122 h【0】—124 b【2】—180 c【2】—169 f【2】—181 h【5】—121 h【4】—125 b【1】—178 b【0】—176 c【1】—168 c【0】—127 f【1】—179 f【0】—177 h【3】—126 h【2】—120
相关文章
- 2023-11-27乡村公路养护工作汇报
- 2023-11-09为什么简谱,为什么(林若宁词 EricKwok曲)歌谱
- 2023-11-27文艺部年度总结
- 2023-11-02倩女幽魂2论坛主讨论区,倩女幽魂2论坛贴吧
- 2023-11-27北国超市消防知识