- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北邮数电实验报告(猜数字)
题目:简易猜数字游戏机的设计与实现 姓名学院专业班级学号班内序号设计课题的任务要求基本要求:1、 游戏规则:通常由两个人玩,一方出数字,另一方猜。出数字的人要想好一个没有 重复数字的 4 位数,不能让猜的人知道。2、 数字设置:通过 4*4 键盘进行 4 位数字输入,在数码管(DISP0~DISP3)上显示当前 所输入的数字。通过设置确定键(BTN1 键)进行锁定,此时数码管上的数值消失, 同时用点阵开始倒计时,即:初始状态点阵全亮,然后从右下角开始,由右到左、 由下到上逐点逐排依次熄灭,间隔时间为 1s,共计 64s。 3、 猜数字:可以通过 4*4 键盘进行 4 位数字输入进行猜数字,且每输入一位数字在数码管(DISP0~DISP3)上显示当前所输入的数字,按确定键(BTN2 键)进行确认,此时要根据输入的这组数字给出几 A 几 B,其中:? A前面的数字表示位置正确的数的个数,用DISP5显示? B前的数字表示数字正确而位置不对的数的个数,用DISP4显示? 如正确答案为 2134,而猜的人猜 5314,则是 1A2B,其中有一个4的位置对了,记为1A,而1和3这三个数字对了,而位置没对,因此记为 2B,合起来就是 1A2B ? 接着猜的人再根据出题者的几A几B继续猜,直到猜中(即 4A0B)为止。4、若数字正确则显示猜数字成功,点阵显示“?”笑脸;若输入数字错误系统仍然处于猜数字状态,点阵显示“X”,并用蜂鸣器或 led 闪烁报警。5、若到点阵全灭时(64s 结束)仍未猜出正确数字,游戏失败,点阵显示“囧”。6、设置游戏机开关。提高要求:1、若数字正确则显示猜数字成功,用蜂鸣器播放一段乐曲。2、随机产生数字,并不在数码管上显示,进行猜数字游戏,用点阵进行 128s 计时,即点阵轮询熄灭两次,其他要求同基本功能 3、4 和 5。3、自拟其他功能。 系统设计设计思路:首先是状态机的设定,设定了5个状态,分别是idle、s1、s2、s3和over。idle是空白的等待状态,s1是输入要猜的数字状态,在s2状态输入猜的数字,确定后进入s3状态,没猜对会检测还有没有时间,有时间会回到s2状态,没时间会留在over状态,猜对了也会留在over状态,在s2状态发现没时间后会进入over状态。详情可见状态框图。分频器选择了1Hz和1000Hz,1Hz是点阵倒计时的频率,1000Hz是点阵、矩阵键盘、数码管、按键的扫描频率。点阵倒计时上选择对count_down(倒计时)进行求余和除法运算,求余可以对点阵的每一行进行每次灭一个灯的行为,除法可以确定点阵亮的行数。在输入数字时进行与前面输入数字的比较,如果发现数字出现重复的情况则不输入数字,直到输入不同的数字为止。状态框图:st=1 st=1 tf=0tm=0ms1=1tm=1done=1 ms2=1总体框图:没有有 不对,显示X对 仿真波形及波形分析为了方便仿真,在程序中加入了分辨当前所在状态的信号ld_out,idle状态时,ld_out为1000,s1时ld_out为0100,s2时为0010,s3为0001。复位 游戏开始 确认输入的数字确认猜的数字 复位 idle状态 s1状态 s2状态 s3状态 idle状态源程序部分代码分析:分频器:variable count3:integer:=0;variable count4:integer:=0;beginif clkevent and clk=1 thenif count4=12499 thenclk_scan=not clk_scan; count4:=0;if count3then clk_tm=not clk_tm; count3:=0;else count3:=count3+1;end if;else count3:=count3+1; count4:=count4+1;end if;end if;count3为1Hz的频率,是点阵倒计时的频率;count4为1kHz的频率,是点阵、按键、数码管、矩阵键盘的扫描频率。状态转移:beginnext_state=state;if res=1 then next_state=idle;elsecase state iswhen idle = if st=1 then next_state=s1; else next_sta
文档评论(0)