北邮数电综合实验报告Word文档下载推荐.docx

上传人:b****3 文档编号:17235072 上传时间:2022-11-29 格式:DOCX 页数:19 大小:531.40KB
下载 相关 举报
北邮数电综合实验报告Word文档下载推荐.docx_第1页
第1页 / 共19页
北邮数电综合实验报告Word文档下载推荐.docx_第2页
第2页 / 共19页
北邮数电综合实验报告Word文档下载推荐.docx_第3页
第3页 / 共19页
北邮数电综合实验报告Word文档下载推荐.docx_第4页
第4页 / 共19页
北邮数电综合实验报告Word文档下载推荐.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

北邮数电综合实验报告Word文档下载推荐.docx

《北邮数电综合实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《北邮数电综合实验报告Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。

北邮数电综合实验报告Word文档下载推荐.docx

当STATE=1时,处于用按键控制赛车运动的状态,此期间分别用BTN1,BTN2,BTN3来控制赛车的右,前,左的运动方向,运动期间还要不断判断赛车是否撞到墙或者障碍物,以及判断赛车是否到达终点,一次来确定游戏是否进入STATE=2或STATE=3状态。

当STATE=2时,要在点阵上显示“V”,即给点阵矩阵初始化显示此图形的数据。

当STATE=3时,要在点阵上显示“X”,即给点阵矩阵初始化显示此图形的数据。

(3)显示模块

因为所有状态不能同时显示,故循环显示电路分别扫描。

当时钟频率足够大时,根据视觉暂留则可看到较为稳定的画面。

点阵显示是在时钟频率1kHz下一行一行扫描,这样在不同时候就可以显示不同的图形,比如倒计时的5,4,3,2,1和赛道,赛车的位置;

其次是数码管的显示,数码管首先有个控制计数的代码,此计数是在时钟频率1Hz下工作的,然后在时钟频率1kHz的控制下分别让两个数码管显示,此即为计时器的显示。

三、仿真波形及波形分析

倒计时波形

数码管显示及波形

点阵显示波形

四、源程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCARIS

PORT(

CLK:

INSTD_LOGIC;

--时钟信号

RESET:

--复位输入

CONTROL:

INSTD_LOGIC_VECTOR(2DOWNTO0);

--赛车控制

ROW:

OUTSTD_LOGIC_VECTOR(7DOWNTO0);

--行控制输出

COLR,COLG:

--列控制输出

CAT:

OUTSTD_LOGIC_VECTOR(5DOWNTO0);

--数码管选通

DISPLAY:

OUTSTD_LOGIC_VECTOR(6DOWNTO0)—数码管显示

);

ENDCAR;

ARCHITECTUREbehaveOFCARIS

SIGNALTEMP1:

INTEGERRANGE0TO49999;

--分频信号

SIGNALTEMP2:

INTEGERRANGE0TO49999999;

SIGNALCLK1K:

STD_LOGIC;

--频率1kHz时钟

SIGNALCLK1HZ:

--频率1Hz时钟

SIGNALTIMEH:

INTEGERRANGE0TO5;

--十位计数

SIGNALTIMEL:

INTEGERRANGE0TO9;

--个位计数

SIGNALLIGHTH:

STD_LOGIC_VECTOR(6DOWNTO0);

--十位数码管控制信号

SIGNALLIGHTL:

--个位数码管控制信号

TYPEPRESENT_STATEIS(H,L);

--自定义变量

SIGNALP_STATE:

PRESENT_STATE;

SIGNALSTATE:

INTEGERRANGE0TO3;

--四个状态控制信号

SIGNALCOUNT:

INTEGERRANGE0TO6;

--倒计时控制信号

SIGNALCX,CY:

INTEGERRANGE0TO7;

--赛车坐标控制信号

SIGNALROWS:

STD_LOGIC_VECTOR(7DOWNTO0);

--行控制信号

SIGNALCOLR7,COLR6,COLR5,COLR4,COLR3,COLR2,COLR1,COLR0,--列控制信号

COLG7,COLG6,COLG5,COLG4,COLG3,COLG2,COLG1,COLG0:

BEGIN

DIV1K:

PROCESS(CLK)--分频1kHz

IFCLK'

EVENTANDCLK='

1'

THEN

IFTEMP1=49999THEN

TEMP1<

=0;

ELSE

=TEMP1+1;

ENDIF;

IFTEMP1<

25000THEN

CLK1K<

='

0'

;

ELSE

ENDIF;

ENDPROCESS;

DIV1HZ:

PROCESS(CLK)--分频1Hz

IFTEMP2=49999999THEN

TEMP2<

=TEMP2+1;

IFTEMP2<

25000000THEN

CLK1HZ<

GAMERUN:

PROCESS(CLK1HZ,RESET)--游戏运行进程

IFRESET='

THEN--复位和初始化

STATE<

COUNT<

=6;

CX<

=2;

CY<

TIMEH<

TIMEL<

COLG7<

="

00000000"

COLG6<

COLG5<

COLG4<

COLG3<

COLG2<

COLG1<

COLG0<

ELSIFCLK1HZ'

EVENTANDCLK1HZ='

CASESTATEIS

WHEN0=>

CASECOUNTIS--点阵倒计时

WHEN6=>

COUNT<

=5;

COLR7<

COLR6<

COLR5<

COLR4<

COLR3<

COLR2<

COLR1<

COLR0<

WHEN5=>

=4;

00111100"

00100000"

00000100"

WHEN4=>

=3;

00100100"

WHEN3=>

WHEN2=>

=1;

WHEN1=>

00001000"

WHEN0=>

STATE<

ENDCASE;

WHEN1=>

IFTIMEL=9THEN--数码管计时

TIMEL<

IFTIMEH=5THEN

TIMEH<

IFCY/=7THEN

STATE<

=3;

ELSE

ENDIF;

ELSE

=TIMEH+1;

ENDIF;

ELSE

=TIMEL+1;

ENDIF;

COLG7<

00001110"

--初始化赛道

COLG6<

COLG5<

COLG4<

COLG3<

COLG2<

COLG1<

COLG0<

COLR7<

00011111"

COLR6<

00010001"

COLR5<

COLR4<

00100010"

COLR3<

01000100"

COLR2<

10001000"

COLR1<

COLR0<

CASECYIS--赛车坐标

COLG0(7-CX)<

COLG1(7-CX)<

COLG2(7-CX)<

COLG3(7-CX)<

COLG4(7-CX)<

COLG5(7-CX)<

COLG6(7-CX)<

WHEN7=>

COLG7(7-CX)<

CASECONTROLIS--按键控制赛车

WHEN"

100"

=>

CX<

=CX-1;

010"

CY<

=CY+1;

001"

=CX+1;

WHENOTHERS=>

NULL;

CASECYIS--判断移动后是否撞墙

IFCOLR0(7-CX)='

THENSTATE<

ELSECOLG0(7-CX)<

IFCOLR1(7-CX)='

ELSECOLG1(7-CX)<

IFCOLR2(7-CX)='

ELSECOLG2(7-CX)<

IFCOLR3(7-CX)='

ELSECOLG3(7-CX)<

IFCOLR4(7-CX)='

ELSECOLG4(7-CX)<

IFCOLR5(7-CX)='

ELSECOLG5(7-CX)<

IFCOLR6(7-CX)='

ELSECOLG6(7-CX)<

STATE<

IFCY=7THENSTATE<

--判断移动后是否到达终点

WHEN2=>

COLR7<

--到达终点后显示“V”

COLR6<

COLR5<

COLR4<

COLR3<

COLR2<

COLR1<

COLR0<

COLG7<

COLG6<

00000001"

COLG5<

10000010"

COLG4<

COLG3<

00101000"

COLG2<

00010000"

COLG1<

COLG0<

WHEN3=>

COLG7<

--撞墙后显示“X”

COLR7<

01000010"

00011000"

ENDCASE;

LSTSHOW:

PROCESS(CLK1K)--在点阵上显示倒计时、赛道、和赛车

IFCLK1K'

EVENTANDCLK1K='

CASEROWSIS

WHEN"

11111110"

COLR<

=COLR0;

COLG<

=COLG0;

ROW<

=ROWS;

ROWS<

11111101"

=COLR1;

=COLG1;

11111011"

=COLR2;

=COLG2;

11110111"

=COLR3;

=COLG3;

11101111"

=COLR4;

=COLG4;

11011111"

=COLR5;

=COLG5;

10111111"

=COLR6;

=COLG6;

01111111"

=COLR7;

=COLG7;

WHENOTHERS=>

ENDCASE;

SHOWT:

PROCESS(CLK1K,TIMEH,TIMEL)--将计时译码至数码管上

CASETIMEHIS

WHEN5=>

LIGHTH<

="

1011011"

WHEN4=>

0110011"

WHEN3=>

1111001"

WHEN2=>

1101101"

WHEN1=>

0110000"

WHEN0=>

1111110"

WHENOTHERS=>

0000000"

ENDCASE;

CASETIMELIS

WHEN9=>

LIGHTL<

1111011"

WHEN8=>

1111111"

WHEN7=>

1110000"

WHEN6=>

1011111"

EVENTANDCLK1K='

THEN--利用视觉暂留显示计时

CASEP_STATEIS

WHENL=>

P_STATE<

=H;

CAT<

111110"

DISPLAY<

=LIGHTL;

WHENH=>

=L;

111101"

=LIGHTH;

ENDbehave;

五、

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1