标题: 以下这段单片机语句是什么意思?为什么可以显示0-9的随机数 [打印本页]

作者: 初学者菜鸟666    时间: 2019-1-20 16:43
标题: 以下这段单片机语句是什么意思?为什么可以显示0-9的随机数
void randmaker()
{
uint ran;
ran=rand();
dis1[0]=ran/10000+0x30;
dis1[1]=ran%10000/1000+0x30;
dis1[2]=ran%1000/100+0x30;
dis1[3]=ran%100/10+0x30;
dis1[4]=ran%10+0x30;
ran=rand();
dis1[5]=ran/10000+0x30;
dis1[6]=ran%10000/1000+0x30;
dis1[7]=ran%1000/100+0x30;
dis1[8]=ran%100/10+0x30;
dis1[9]=ran%10+0x30;
}



作者: 刀刀见红    时间: 2019-1-20 22:55
ran=rand();是产生随机数函数,假如通过该函数现在产生了一个数字1234,为了在相应的位置上显示出来,1234是不是要这样分解?

dis1[0]=ran/10000
dis1[1]=ran%10000/1000
dis1[2]=ran%1000/100
dis1[3]=ran%100/10
dis1[4]=ran%10
那个后面+0x30是在lcd中1602中特有的,0x30表示的是0, 0x31表示的是1 ......如此而己!见意去看看lcd1602的规格书
作者: ahshmj    时间: 2019-1-21 08:22
就这一段程序是产生不了“随机数”的。只是将另外的程序(你没贴出来)已经产生的随机数的每一位分开并送显示。
作者: HC6800-ES-V2.0    时间: 2019-1-21 08:24
刀刀见红 发表于 2019-1-20 22:55
ran=rand();是产生随机数函数,假如通过该函数现在产生了一个数字1234,为了在相应的位置上显示出来,1234 ...

补充一句:
+0x30,不是1602独有的,这是转换为ASCII码,当然,1602的显示字符ASCII码是标准的,所以要这样转换。
作者: 周超然    时间: 2019-1-21 11:30
rand是函数库里面的产生随机数函数接口,就是产生一个随机数。
后面就是取上面千位,百位,十位,在已ASCII形式显示出来

作者: 街角の风铃    时间: 2019-1-21 11:45
rand()是随机数获取的函数  把随机数返回值赋给ran变量
对ran整数进行分解,把整数的各个位上的数字分解出来保存到数组dis1中
字符“1”的ASCII码就是0x31,后面+0x30就是把数字转换成ASCII码
作者: Sawardeakar    时间: 2019-1-21 12:13
ahshmj 发表于 2019-1-21 08:22
就这一段程序是产生不了“随机数”的。只是将另外的程序(你没贴出来)已经产生的随机数的每一位分开并送显 ...

一看就二,ran=rand();就是能产生随机数,更本就不要另外的程序,这是函数库的函数。只要加了头文件#include<stdlib.h>就行!+0x30是在lcd中1602中特有的,其它LCD都不这么显示,就是告诉了别人LCD1602与众不同,别人想再深入可以看相关资就行。这就是所谓点到为止!
作者: areyouok    时间: 2019-1-21 13:26
Sawardeakar 发表于 2019-1-21 12:13
一看就二,ran=rand();就是能产生随机数,更本就不要另外的程序,这是函数库的函数。只要加了头文件#incl ...

这个观点很新颖。点到为止!有意思!
作者: #include51.h    时间: 2019-1-21 14:00
Sawardeakar 发表于 2019-1-21 12:13
一看就二,ran=rand();就是能产生随机数,更本就不要另外的程序,这是函数库的函数。只要加了头文件#incl ...

说的很有深意!赞一个1
作者: 初学者菜鸟666    时间: 2019-1-21 15:09
谢谢各位我明白了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1