数电实验实验报告Word格式文档下载.docx
- 文档编号:19671081
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:15
- 大小:101.96KB
数电实验实验报告Word格式文档下载.docx
《数电实验实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数电实验实验报告Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
INPUT;
%模为24的1Hz的计数器%
out1[3..0]:
OUTPUT;
%十位%
out2[3..0]:
%个位%
digselect:
%确定是否在数码管上显示%
)
begin
table
incount[4..0]=>
out1[3..0],out2[3..0],digselect;
h"
0"
=>
h"
h"
7"
1;
1"
6"
2"
5"
3"
4"
8"
%greentringle%
9"
A"
B"
0;
%yellowflash&
&
nodispaly%
C"
D"
%redflash&
downdisplay%
E"
F"
10"
=>
11"
12"
13"
14"
15"
16"
17"
endtable;
end;
4、主红绿灯点阵显示控制部分
由于需要实现扩展1,所以需要用到点阵,点阵的控制原理与数码管大致相同,即每一个状态(每一秒)对应一个亮灯信息(是否亮灯及亮什么颜色的灯)。
所以,该模块输入为计数线和时间控制线(主要实现扩展3,功能将在下面介绍),点阵形状控制线(确定点阵上的形状),输出为对应点阵的红色及绿色借口。
当时间控制线为1,即白天,则每一秒对应亮灯信息,即绿灯先亮8秒,绿灯闪烁3秒,黄灯(即红绿一起点亮)亮2秒,红灯亮11秒。
SUBDESIGNdisplay_main
time_control:
%1=normal,0=night%
INPUT;
%1Hz的计数器%
color[8..1]:
%确定点阵显示形状%
dataout_red1[8..1]:
OUTPUT;
%红色启动点阵1%
dataout_green1[8..1]:
%绿色启动点阵1%
iftime_control==1
then
caseincount[]is
whenh"
dataout_red1[]=h"
ff"
;
dataout_green1[]=color[8..1];
%greenflash%
dataout_green1[]=h"
%greentringle%
dataout_red1[]=color[8..1];
%yellowflash%
%redflash%
endcase;
endif;
iftime_control==0
then
ifincount[0]thendataout_red1[]=color[8..1];
elsedataout_red1[]=h"
5、白天黑夜控制部分
为了实现扩展3,需要增加这个模块。
该模块的目的主要是产生时间信息,当时间在7点到21点时,确保红绿灯正常工作;
当时间在22点到6点时,控制点阵显示为闪烁黄灯(对于数码管,由于在夜间其没有作用,故忽略对其在夜间的控制)。
所以,该模块输入为时间线(该时间线不同于上面的由1Hz的信号产生,而是可以由微动开关控制,以实现题目的要求。
当点击一次微动开关时,则触发模为24的计数器计数一次),输出为时间控制线(正常输出1,黑夜输出0),以及提供显示在数码管上的信息(包括显示时间的十位和个位数字)。
SUBDESIGNnormal_or_night
time_count[4..0]:
INPUT;
%模为24的可自己控制的计数器%
%控制正常或者夜晚模式1=normal0=night%
out5[3..0]:
out6[3..0]:
time_count[4..0]=>
out5[3..0],out6[3..0],time_control;
6、数码管选择部分
该部分内容为基本功能,由于显示的时间包括主灯的秒数、副灯的秒数、小时数共6个,所以不能直接用一个方波信号确定显示哪一位,需要将4MHz晶振加在模为6的计数器,产生6个不同的状态,每种状态对应1个数码管的显示,由于频率极高,所以依次显示在人眼看来就是正常的一次显示6个数字。
另外,由于黄灯时数码管不显示,所以也需要考虑这个输入。
所以,输入有主副两个灯的亮灯信息、模为6的计数器,主副亮灯的个十位显示数字,以及小时数的个十位显示数字。
SUBDESIGNdigselector
digselect1:
%确认第1个数字是否显示在数码管%
digselect2:
%确认第2个数字是否显示在数码管%
count_6[2..0]:
%模为6的4MHz计数器%
digin1[3..0]:
%第1个数十位%
digin2[3..0]:
%第1个数个位%
digin3[3..0]:
%第2个数十位%
digin4[3..0]:
%第2个数各位%
digin5[3..0]:
%时间数字十位%
digin6[3..0]:
%时间数字个位%
enable_out[5..0]:
%确认哪一位接入%
digout[3..0]:
OUTPUT;
%接入数字值%
defaults
enable_out[5..0]=GND;
enddefaults;
ifcount_6[]==h"
then
ifdigselect1thenenable_out[0]=vcc;
digout[3..0]=digin1[3..0];
endif;
ifdigselect1thenenable_out[1]=vcc;
digout[3..0]=digin2[3..0];
ifdigselect2thenenable_out[2]=vcc;
digout[3..0]=digin3[3..0];
ifdigselect2thenenable_out[3]=vcc;
digout[3..0]=digin4[3..0];
enable_out[4]=vcc;
digout[3..0]=digin5[3..0];
enable_out[5]=vcc;
digout[3..0]=digin6[3..0];
7、点阵显示部分
点阵与数码管一样,一次只能显示一排内容,所以需要该模块,原理与数码管基本相同。
另外,点阵显示还要考虑显示的形状,这次为了简化,故设计成4*8的显示区域,方便观察。
所以,输入为模为8的计数线,输出为行显示控制和形状控制。
该模块源文件:
SUBDESIGNdisplay
inputclk[2..0]:
%4Mhz方波%
row[8..1]:
%行阵列%
OUTPUT;
%确定点阵输出形状%
inputclk[2..0]=>
row[8..1],color[8..1];
c3"
h"
20"
40"
80"
8、副红绿灯的控制部分
与主灯原理完全一致,输入模为24的数据的计数线,输出数码管显示的个十位和显示控制。
SUBDESIGNsecondary
out3[3..0]:
out4[3..0]:
out3[3..0],out4[3..0],digselect;
%redflash%
%yellowtringle%
9、副红绿灯点阵显示控制部分
与主灯原理完全一致。
首先红灯亮13秒,绿灯亮6秒,然后绿灯闪烁3秒,黄灯亮2秒。
SUBDESIGNdisplay_secondary
%确定点阵显示形状%
dataout_red2[8..1]:
%红色启动点阵2%
dataout_green2[8..1]:
%绿色启动点阵2%
dataout_red2[]=color[8..1];
dataout_green2[]=h"
dataout_red2[]=h"
dataout_green2[]=color[8..1];
ifincount[0]thendataout_red2[]=color[8..1];
elsedataout_red2[]=h"
10、7段译码器
数码管显示的最后一步,将2进制数转换成相应数码管上每段的信息。
SUBDESIGN7segment
a,b,c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 报告