北邮数电实验报告(猜数字) - 图文
更新时间:2023-10-29 16:26:01 阅读量: 综合文库 文档下载
- 北邮数电综合实验报告推荐度:
- 相关推荐
题目:简易猜数字游戏机的设计与实现
姓名 学院 专业 班级 学号 班内序号
一、 设计课题的任务要求
基本要求:
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(倒计时)进行求余和除法运算,求余可以对点阵的每一行进行每次灭一个灯的行为,除法可以确定点阵亮的行数。在输入数字时进行与前面输入数字的比较,如果发现数字出现重复的情况则不输入数字,直到输入不同的数字为止。
状态框图:
idle
st=1
st=1
tf=0&tm=0
ms1=1 tm=1 done=1
ms2=1 S3
总体框图: 开始游戏st
输入数字
确认数字ms1 猜数字 没有 有 确认数字ms2
不对,显示X
猜对了?
对
赢了
S2 游戏结束,显示囧 还有时间? 游戏结束,显示笑脸 三、 仿真波形及波形分析
为了方便仿真,在程序中加入了分辨当前所在状态的信号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; if clk'event and clk='1' then
if count4=12499 then
clk_scan<=not clk_scan; count4:=0; if count3=12499999 then
clk_tm<=not clk_tm; count3:=0; else count3:=count3+1; end if;
begin
else count3:=count3+1; count4:=count4+1; end if;
end if;
count3为1Hz的频率,是点阵倒计时的频率;count4为1kHz的频率,是点阵、按键、数码管、矩阵键盘的扫描频率。
状态转移:
begin
next_state<=state;
if res='1' then next_state<=idle; else
case state is
when idle =>
if st='1' then next_state<=s1;
else next_state<=idle; end if; when s1 =>
if ms1='1' then
next_state<=s2; else next_state<=s1;
end if; when s2 =>
if ms2='1' then
next_state<=s3; next_state<=over; elsif tm='1' then else next_state<=s2;
end if;
when s3 =>
if done='1' then
next_state<=over; else next_state<=s3; end if;
if st='1' then next_state<=idle; elsif tf='0' then
if tm='0' then
next_state<=s2; else next_state<=over; end if;
when over =>
else next_state<=over; end if;
when others =>next_state<=idle;
end case; end if;
idle是空白的等待状态,s1是输入要猜的数字状态,在s2状态输入猜的数字,确定后进入s3状态,没猜对会检测还有没有时间,有时间会回到s2状态,没时间会留在over状态,猜对了也会留在over状态,发现没时间后也会进入over状态
点阵显示:
begin
if clk_scan'event and clk_scan='1' then
if led=1 then --jiong
case led_row is
when \=> led_row<=\when \=> led_row<=\when \=> led_row<=\
正在阅读:
北邮数电实验报告(猜数字) - 图文10-29
钢筋混凝土原理和分析 第三版课后答案05-16
《圆的面积》练习设计及答案05-27
动人的一幕作文400字06-24
我徒步我快乐作文700字06-21
基于遗传算法的多式联运组合优化精品毕业设计(完整版)05-20
吹飞的乐谱作文500字06-27
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 北邮
- 实验
- 图文
- 数字
- 报告
- 工程勘察设计发展现状及市场前景分析
- 华南师范大学《组织行为学》考试题库(1)及满分答案
- 小学三年级下册全套奥数讲义
- 2014年单证员考试真题国际商务单证基础理论与知识试卷
- 勘察报告A3莆田市玉湖片区明珠路(一期)
- 创新创业在武汉试题五套及答案
- 唯识三十论讲话( 唯识三十论讲话)
- 旅游概论第六章测试题
- 商务部公告2005年第58号 - 对原产于韩国、沙特阿拉伯、日本、欧盟
- 09会计继续教育财务管理模块习题
- 金融工程试题
- 人身伤害事故应急预案
- 中山大学2013届校级优秀本科毕业论文奖金印领表-中山大学物理学院 - 图文
- 医院感染管理控制手册(内容) - 图文
- 微信微课堂第二讲:段落作用
- 2012级大学生职业生涯规划正式考试试卷
- 2002高考文理大综合试卷(江苏、河南卷)
- 柱上开关安装使用说明书 - 图文
- 高压直流输电系统基本原理及应用
- 2016尔雅传统文化与现代经营管理答案