找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4859|回复: 13
收起左侧

各位好,51单片机产生5到10之间随机数方法

  [复制链接]
ID:321836 发表于 2021-8-2 22:12 | 显示全部楼层 |阅读模式
要设计一个随机等待时间的程序,求问各位大佬51单片机产生5到10之间随机数方法,不知用c语言中的办法能否顺利实现?谢谢
回复

使用道具 举报

ID:883242 发表于 2021-8-2 23:26 | 显示全部楼层
开个定时器,按下期间取定时器的值即可。
回复

使用道具 举报

ID:190577 发表于 2021-8-3 07:29 | 显示全部楼层
void timer1() interrupt 3
{
        static uchar count1=0;
        TH1=(65535-20000)/256;
        TL1=(65535-20000)%256;
        count1++;                                                      
        if(count1==20)  //1秒到达
        {
              count1=0;
              num=1+(unsigned char)(20.0*rand()/(RAND_MAX));
     }
}
回复

使用道具 举报

ID:149799 发表于 2021-8-3 08:16 | 显示全部楼层
这是一个好方法
回复

使用道具 举报

ID:386001 发表于 2021-8-3 08:30 | 显示全部楼层
直接按照C语言中产生的随机数即可
回复

使用道具 举报

ID:584814 发表于 2021-8-3 08:54 | 显示全部楼层
1、用 rand() 乘 5 后加 5 取整 ,结果你懂;
2、用中断计数,计数范围 5 到 10 ,抽取。
回复

使用道具 举报

ID:321836 发表于 2021-8-3 10:26 | 显示全部楼层
这样实现的,但51单片机好像容易死机。。。
#define MAX              10             //随机数最大值
#define MIN               5              //随机数最小值
unsigned int random(unsigned int m)
{
unsigned int value;
  srand(m);
value = rand() % (MAX + 1)+ MIN;     //获取一个随机数(5-10)
  return value;
}
回复

使用道具 举报

ID:245053 发表于 2021-8-3 10:38 | 显示全部楼层
使用C语言的随机函数就可以了,
回复

使用道具 举报

ID:155507 发表于 2021-8-3 12:11 | 显示全部楼层
已飞的鹰 发表于 2021-8-3 10:26
这样实现的,但51单片机好像容易死机。。。
#define MAX              10             //随机数最大值
#d ...

你这个是伪随机数

计算机的伪随机数是由随机种子根据一定的计算方法计算出来的数值。所以,只要计算方法一定,随机种子一定,那么产生的随机数就是固定的。
回复

使用道具 举报

ID:139742 发表于 2021-8-3 14:37 | 显示全部楼层
开个ADC, 连续采样4次后取最低位,组合成一个0~15的数. ADC引脚悬空并尽量短
回复

使用道具 举报

ID:879348 发表于 2021-8-3 14:47 | 显示全部楼层
sustlixin 发表于 2021-8-3 08:30
直接按照C语言中产生的随机数即可

那对于单片机是假的
回复

使用道具 举报

ID:321836 发表于 2021-8-7 12:15 | 显示全部楼层
各位请问:这个1秒计时到达后产生的随机数如何保存作为计数的初始值?谢谢
回复

使用道具 举报

ID:161164 发表于 2021-8-7 12:54 来自手机 | 显示全部楼层
已飞的鹰 发表于 2021-8-7 12:15
各位请问:这个1秒计时到达后产生的随机数如何保存作为计数的初始值?谢谢

写入EEProm,开机时读取
回复

使用道具 举报

ID:57657 发表于 2021-8-7 13:09 | 显示全部楼层
不要用那个rand函数,不知道是什么算法 以及内存占用,容易造成堆栈溢出。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表