棋类竞赛计时钟 报告.docx

上传人:b****2 文档编号:3096281 上传时间:2023-05-05 格式:DOCX 页数:23 大小:156.15KB
下载 相关 举报
棋类竞赛计时钟 报告.docx_第1页
第1页 / 共23页
棋类竞赛计时钟 报告.docx_第2页
第2页 / 共23页
棋类竞赛计时钟 报告.docx_第3页
第3页 / 共23页
棋类竞赛计时钟 报告.docx_第4页
第4页 / 共23页
棋类竞赛计时钟 报告.docx_第5页
第5页 / 共23页
棋类竞赛计时钟 报告.docx_第6页
第6页 / 共23页
棋类竞赛计时钟 报告.docx_第7页
第7页 / 共23页
棋类竞赛计时钟 报告.docx_第8页
第8页 / 共23页
棋类竞赛计时钟 报告.docx_第9页
第9页 / 共23页
棋类竞赛计时钟 报告.docx_第10页
第10页 / 共23页
棋类竞赛计时钟 报告.docx_第11页
第11页 / 共23页
棋类竞赛计时钟 报告.docx_第12页
第12页 / 共23页
棋类竞赛计时钟 报告.docx_第13页
第13页 / 共23页
棋类竞赛计时钟 报告.docx_第14页
第14页 / 共23页
棋类竞赛计时钟 报告.docx_第15页
第15页 / 共23页
棋类竞赛计时钟 报告.docx_第16页
第16页 / 共23页
棋类竞赛计时钟 报告.docx_第17页
第17页 / 共23页
棋类竞赛计时钟 报告.docx_第18页
第18页 / 共23页
棋类竞赛计时钟 报告.docx_第19页
第19页 / 共23页
棋类竞赛计时钟 报告.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

棋类竞赛计时钟 报告.docx

《棋类竞赛计时钟 报告.docx》由会员分享,可在线阅读,更多相关《棋类竞赛计时钟 报告.docx(23页珍藏版)》请在冰点文库上搜索。

棋类竞赛计时钟 报告.docx

棋类竞赛计时钟报告

目录

一总体功能设计1

1.系统的总体功能介绍1

2.系统总体思路及原理1

3.系统总体框图2

二单元电路设计3

1.控制模块3

2.计时器模块4

3.选择器模块5

4.显示模块6

5.报警模块7

三编程下载7

1.控制器程序8

3.计时器程序9

3.选择器程序15

4.显示器程序15

5.报警器程序17

四总结与体会18

五附录18

六参考文献20

一总体功能设计

1.系统的总体功能介绍

1.该计时钟可分别完成甲乙对规定用时的计时和规定时间用完后的读秒计时。

2.规定甲乙双方各有2小时比赛规定用时,分别设计各方的用时定时器,并用数码管显示各方已用的时、分从0:

00~1:

59计时间隔为1S。

3.2小时规定时间用完后,每方限定在30秒内必须下出一步棋,此时定时器将完成对读秒时间的30S倒计时,并数码管显示此时过程30~00。

若计时到零,则发生警报信号该方超时负。

4.各定时器设置计时暂停/继续键,在规定时间计时时,该键的作用为暂停本方计时,并继续对方计时;在读秒时间计时时,该键的作用为复位本方计时起始点29S,并启动对方定时器。

2.系统总体思路及原理

系统总共分为五大模块:

1.控制模块

规定时间内输入继续\暂停端能暂停其中一方2小时计时器的同时继续另一方的计时;

当甲方或乙方用完规定的2小时后,启用其相应的30秒倒计时;

倒计时结束后,胜负已分,可复位重新开始,进行下一轮比赛。

2.计时器模块

三十秒计时器是一个倒计时计时器,甲乙双方规定时间用尽后的30秒;

二小时计时器是计算甲乙双方所规定的30秒时间。

3.选择模块

使用轮流显示甲乙双方的规定计时时间,其优点是能够在显示管较少的情况中正常计时。

4.显示模块

这是一个动态扫描显示电路,在相对应的显示管上显示八个输入端口的输入的数据。

5.报警模块

在30秒计时器,计时完后,分别采用两种方式(提示灯和警鸣)来进行报警。

3.系统总体框图

系统的总体框图如下所示:

输入

输出输出

二单元电路设计

1.控制模块

控制模块,是整个电路的核心,控制着整个计时的变化过程,其仿真结果如下所示:

图中count2ha是甲方2小时规定时间的进位,count30sa是甲方30秒倒计时的进位,en2ha控制甲方的2小时的规定时间的继续\暂停,en30sa控制甲方30秒计数器的暂停\继续,clr30sa是控制甲方30秒计时起的清零,count2hb是乙方2小时规定时间的进位,count30sb是乙方30秒倒计时的进位,en2hb控制乙方的2小时的规定时间的继续\暂停,en30sb控制乙方30秒计数器的暂停\继续,clr30sb控制乙方30秒计时器的清零。

2.计时器模块

分为三十秒倒计时模块和2小时规定计时模块

三十秒计时器是一个减法计数器,在规定2小时计时完成后进行的最后30秒倒计时,其仿真结果如下所示:

由此可知此模块30秒倒计时miaozhong1为30秒倒计时个位数,miaozhong2为倒计时的十位数,倒计时完成后产生一个进位count30,接入控制器中。

2小时规定计时器则是一个加法计时器,完成规定时间的计时,2其仿真结果如下所示:

由图可看出,此模块所显示的是分和时的计时,fenzhong1为60分钟的个位数,fenzhong2为60分钟的十位数。

时钟为小时数。

2小时后count也产生一个进位接入控制器中。

3.选择器模块

选择器模块是其本质是一个选择型开关,是对甲乙双方进行选择的模块当。

当start为0时,选用甲方,当start为1时,则选择乙方。

其仿真结果如下所示:

输入端口a、b、c、d、e代表着甲方用时情况,分别接入30秒个位、30秒十位、2小时分个位、2小时分十位、2小时时个位。

输入端口f、g、h、i、k代表着乙方用时情况,分别接入30秒个位、30秒十位、2小时分个位、2小时分十位、2小时时个位。

输出端口m30s1,m30s2,Fg,fenzhong,s,choose分别为30秒个位,30秒十位,60分钟个位,60分钟十位,小时位数,选择端口(用显示A,b表示甲乙方)。

4.显示模块

将所需显示的端口接入,采用位动态扫描显示,能更好的体现出甲乙双方比赛记录时间的整个过程。

甲方为‘1010’显示出A,乙方为‘1011’显示出b。

输入端口d0,d1,d3,d4,d5,d7分别接入30秒个位,30秒十位,60分钟个位,60分钟十位,小时位数,选择端口(用显示A,b表示甲乙方)。

5.报警模块

报警模块是甲方或乙方将最后30秒用尽后,提出警报,则代表甲方或乙方比赛失败,其仿真图如下所示:

由图可知,co30sa接入甲方30秒进位,co30sb接入乙方30秒进位,任意一方用尽30秒后会产生警报声,区分甲乙双方的是图中a,b(代表甲乙方)所接入的显示灯不同。

三编程下载

各模块程序清单如下:

1.控制器程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYkongzhiqiIS

PORT

(count2ha,count30sa,count2hb,count30sb:

INSTD_LOGIC;

clrkongzhiqi,s:

INSTD_LOGIC;

en2ha,en30sa,en2hb,en30sb,clr30sa,clr30sb:

OUTSTD_LOGIC);

ENDkongzhiqi;

ARCHITECTUREaOFkongzhiqiIS

BEGIN

PROCESS(s,count2ha)

BEGIN

if(s='0')thenen2ha<='0';

elsif(count2ha='0')then

en2ha<='1';

elseen2ha<='0';

ENDIF;

ENDPROCESS;

PROCESS(s,count2ha,count30sa)

BEGIN

if(count30sa='1')thenen30sa<='0';

elsif(count2ha='1'ands='1')then

en30sa<='1';

elseen30sa<='0';

ENDIF;

ENDPROCESS;

PROCESS(s,count2hb)

BEGIN

if(s='1')thenen2hb<='0';

elsif(count2hb='0')then

en2hb<='1';

elseen2hb<='0';

ENDIF;

ENDPROCESS;

PROCESS(s,count2hb,count30sb)

BEGIN

if(count30sb='1')thenen30sb<='0';

elsif(count2hb='1'ands='0')then

en30sb<='1';

elseen30sb<='0';ENDIF;

ENDPROCESS;

PROCESS(s,clrkongzhiqi)

BEGIN

if(clrkongzhiqi='1')thenclr30sa<='1';

elsif(s='0')then

clr30sa<='1';

elseclr30sa<='0';

ENDIF;

ENDPROCESS;

PROCESS(s,clrkongzhiqi)

BEGIN

if(clrkongzhiqi='1')thenclr30sb<='1';

elsif(s='1')then

clr30sb<='1';

elseclr30sb<='0';

ENDIF;

ENDPROCESS;

enda;

3.计时器程序

30秒计时器程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYsanshimiaoIS

PORT

(clk:

INSTD_LOGIC;

clr,en:

INSTD_LOGIC;

count30:

OUTSTD_LOGIC;

miaozhong1:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

miaozhong2:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDsanshimiao;

ARCHITECTUREaOFsanshimiaoIS

SIGNALbcd1n:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALvcd10n:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

PROCESS(clk,clr,en)

BEGIN

if(clr='1')thencount30<='0';

elsif(clk'EVENTANDclk='1')then

if(bcd1n=0andvcd10n=0)then

count30<='1';

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(clk,clr)

BEGIN

IF(clr='1')THEN

bcd1n<="1001";

ELSIF(clk'EVENTANDclk='1')THEN

IF(en='1')THEN

IF(bcd1n=0)THEN

bcd1n<="1001";

ELSIF(bcd1n=0andvcd10n=0)THEN

bcd1n<="1001";

ELSE

bcd1n<=bcd1n-1;

ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

miaozhong1<=bcd1n;

miaozhong2<=vcd10n;

PROCESS(clk,clr)

BEGIN

IF(clr='1')THEN

vcd10n<="0010";

ELSIF(clk'EVENTANDclk='1')THEN

IF(en='1')THEN

IF(bcd1n=0ANDvcd10n=0)THEN

vcd10n<="0010";

ELSIF(bcd1n=0)THEN

vcd10n<=vcd10n-1;

ELSE

vcd10n<=vcd10n;

ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

enda;

2小时计时器程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYerxiaoshiIS

PORT

(clk:

INSTD_LOGIC;

clr:

INSTD_LOGIC;

en:

INSTD_LOGIC;

count:

OUTSTD_LOGIC;

fenzhong1,shizhong1:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

fenzhong2:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDerxiaoshi;

ARCHITECTUREaOFerxiaoshiIS

SIGNALbcd11n:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALvcd110n:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALbcd21n:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALvcd210n:

STD_LOGIC_VECTOR(3DOWNTO0);SIGNALbcd31n:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALvcd310n:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALco,co1:

STD_LOGIC;

BEGIN

PROCESS(co,clr)

BEGIN

IF(clr='1')THEN

bcd21n<="0000";

ELSIF(co'EVENTANDco='1')THEN

IF(bcd21n=9)THEN

bcd21n<="0000";

ELSE

IF(en='1')THEN

bcd21n<=bcd21n+1;

ELSE

bcd21n<=bcd21n;

ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(co,clr)

BEGIN

IFclr='1'THEN

vcd210n<="0000";

ELSIF(co'EVENTANDco='1')THEN

IF(bcd21n=9)THEN

IF(vcd210n=5)THEN

vcd210n<="0000";

ELSE

IF(en='1')THEN

vcd210n<=vcd210n+1;

ELSE

vcd210n<=vcd210n;

ENDIF;

ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(co)

BEGIN

if(co'EVENTANDco='1')then

if(bcd21n=9andvcd210n=5)then

co1<='1';

elseco1<='0';

ENDIF;

ENDIF;

ENDPROCESS;

fenzhong1<=bcd21n;

fenzhong2<=vcd210n;

shizhong1<=bcd31n;

PROCESS(clk,clr)

BEGIN

IF(clr='1')THEN

bcd11n<="0000";

ELSIF(clk'EVENTANDclk='1')THEN

IF(bcd11n=9)THEN

bcd11n<="0000";

ELSE

IF(en='1')THEN

bcd11n<=bcd11n+1;

ELSE

bcd11n<=bcd11n;

ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(clk,clr)

BEGIN

IFclr='1'THEN

vcd110n<="0000";

ELSIF(clk'EVENTANDclk='1')THEN

IF(bcd11n=9)THEN

IF(vcd110n=5)THEN

vcd110n<="0000";

ELSE

IF(en='1')THEN

vcd110n<=vcd110n+1;

ELSE

vcd110n<=vcd110n;

ENDIF;

ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(clk)

BEGIN

if(clk'EVENTANDclk='1')then

if(bcd11n=9andvcd110n=5)then

co<='1';

elseco<='0';

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(co1,clr)

BEGIN

IF(clr='1')THEN

bcd31n<="0000";

ELSIF(co1'EVENTANDco1='1')THEN

IF(bcd31n=1)THEN

bcd31n<="0000";

ELSE

IF(en='1')THEN

bcd31n<=bcd31n+1;

ELSE

bcd31n<=bcd31n;

ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(clk)

BEGIN

if(clk'EVENTANDclk='1')THEN

if(bcd21n=9andvcd210n=5andbcd31n=1andbcd11n=9andvcd110n=5)then

count<='1';

elsif(clr='1')thencount<='0';

ENDIF;

endif;

ENDPROCESS;

enda;

3.选择器程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYchooseqiIS

PORT

(start:

INSTD_LOGIC;

a,b,c,d,e:

inSTD_LOGIC_VECTOR(3DOWNTO0);

f,g,h,i,j:

inSTD_LOGIC_VECTOR(3DOWNTO0);

30s1,30s2,Fg,fengzhong,S,choose:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDchooseqi;

ARCHITECTUREaOFchooseqiIS

BEGIN

PROCESS(start,a,b,c,d,e,f,g,h,i,j)

BEGIN

if(start='1')then

30s1<=a;30s2<=b;Fg<=c;fengzhong<=d;S<=e;choose<="1010";

else30s1<=f;30s2<=g;Fg<=h;fengzhong<=i;S<=j;choose<="1011";

endif;

ENDPROCESS;

enda;

4.显示器程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYxianshiqiIS

PORT(CLK:

INSTD_LOGIC;

d0,d1,d3,d4,d5,d7:

inSTD_LOGIC_VECTOR(3DOWNTO0);

SG:

OUTSTD_LOGIC_VECTOR(7DOWNTO0);--段控制信号输出

BT:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));--位控制信号输出

END;

ARCHITECTUREoneOFxianshiqiIS

SIGNALCNT8:

STD_LOGIC_VECTOR(2DOWNTO0);

SIGNALA:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

P1:

PROCESS(CNT8)

BEGIN

CASECNT8IS

WHEN"000"=>BT<="00000001";A<=d0;

WHEN"001"=>BT<="00000010";A<=d1;

WHEN"010"=>BT<="00000100";A<="1101";

WHEN"011"=>BT<="00001000";A<=d3;

WHEN"100"=>BT<="00010000";A<=d4;

WHEN"101"=>BT<="00100000";A<="1100";

when"110"=>BT<="01000000";A<=d5;

WHEN"111"=>BT<="10000000";A<=d7;

WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESSP1;

P2:

PROCESS(CLK)

BEGIN

IFCLK'EVENTANDCLK='1'

THEN

CNT8<=CNT8+1;

ENDIF;

ENDPROCESSP2;

P3:

PROCESS(A)

BEGIN

CASEAIS

WHEN"0000"=>SG<="00111111";WHEN"0001"=>SG<="00000110";

WHEN"0010"=>SG<="01011011";WHEN"0011"=>SG<="01001111";

WHEN"0100"=>SG<="01100110";WHEN"0101"=>SG<="01101101";

WHEN"0110"=>SG<="01111101";WHEN"0111"=>SG<="00000111";

WHEN"1000"=>SG<="01111111";WHEN"1001"=>SG<="01101111";

WHEN"1010"=>SG<="01110111";WHEN"1011"=>SG<="01111100";

WHEN"1100"=>SG<="01000000";WHEN"1101"=>SG<="00000000";

WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESSP3;

END;

5.报警器程序

libraryieee;

useieee.std_lo

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

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2