51单片机课程大作业,我有个想法……

2019-03-24 19:34发布

我是一名大三学生,我想在课程结束时做一个具有如下功能的单片机:
简单来说,就是猜大小的机器。
提供给用户两个按钮,一个对应大,一个对应小。
而单片机模拟一个骰子,我在存储器内预先放了一堆1~6的随机数,
每当用户按一个按钮(比如大)后,我在两个8段数码管上先显示一下这局游戏单片机内对应的随机数(比如3),然后再显示一下77(代表哭的表情),代表用户猜错了,
接着等待用户按键开始下一局游戏。
不知道我这个实现有没有难度?大不大?
我觉得我这个创意还不错,还望大侠们指点我一下应该用怎样的中断啊,片选信号怎么安排,
另外我想问,单片机能否自己产生随机数,如果能的话,就太好啦,我的程序应该会简单很多!
小女在此谢谢大家啦! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
mengdeyongyuan
1楼-- · 2019-03-25 21:17
 精彩回答 2  元偷偷看……
mengdeyongyuan
2楼-- · 2019-03-26 03:10
知道了知道啦~明白了
孤獨の快樂
3楼-- · 2019-03-26 03:44

原帖由 mengdeyongyuan 于 2011-11-21 20:18 发表 请问为什么要 void time0() interrupt 1{t++;},interrupt 1是什么意思?是固定的?

interrupt 0  指明是外部中断0;
interrupt 1  指明是定时器中断0;
interrupt 2  指明是外部中断1;
interrupt 3  指明是定时器中断1;
interrupt 4  指明是串行口中断;

mengdeyongyuan
4楼-- · 2019-03-26 07:51
1.请问我这个T0应该在什么工作方式下?是方式2那种自动重装初值的么?初值大概怎么设置啊?
2.
srand(t); //随机数初始化
a=(char)(rand()%6); //取随机数(0~5)
if(a==0) a=6;
以上这3行是放在main函数中么?

3.
void time0() interrupt 1 //定时器0中断子程序
{
t++; //时间加1
}
这个的意思是不是t一直累加,不影响程序呢?
4.
我的中断是不是一直开着?还是在需要产生随机数的时候开?
孤獨の快樂
5楼-- · 2019-03-26 09:52
1.随便什么方式都成啦,反正目的只是为了得到随时间的变量t。srand(t); ,t值不同产生的伪随机数也就不同了,由于t值和时间有关,你也无法预测你按下的时候t的值,所以可以认为产生的是随机数。
2.按键按下去才产生随机数,所以是放在按键函数里
3.反正t超出范围就从自动回到0了,没关系
4.一直开着
mengdeyongyuan
6楼-- · 2019-03-26 15:20
恩~哈哈,跟我想的有点一样,程序已经写好啦,就是Proteus的图太难画啦~ 衷心感谢哈,没事儿,就是当时比较急,想直接QQ问你问题呢~

一周热门 更多>