c语言随机函数单片机,c程序随机函数

单片机 C语言 随机数

%是获得四位的随机数,/1000是将最高位的那个数+0x30

成都创新互联公司是专业的河曲网站建设公司,河曲接单;提供网站制作、成都做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行河曲网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

lcd里面显示的是字符,你直接得到的是一个整型的加上0x30就是字符了……

单片机C语言如何产生随机数

用库函数也可以,有简便的方法,就是捕获定时器中的值!思路如下,程序一开始就打开定时器(不开中断),让定时器在哪里跑。当你要用随机数的时候捕获出定时器中的值,然后经过运算可以得出0-9的随机数!

C51单片机用C语言写个随机函数该如何写呢?最好不要加载其它头文件的,能否实现呢?

#include stdlib.h

srand(dat); //初始化随机种子,使用该函数需要上面的头文件。如果不要这个,每次开机,对应的随机数都是相同的. dat 也是需要是个随机数,一般可以用掉电存储的方式来读取。

dat = rand() ;

51单片机用C语言如何产生随机数

1. 绝对宏:

在程序中,用“#includeabsacc.h”即可使用其中定义的宏来访问绝对地址,包括CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD

具体使用可看一看absacc.h便知,例如:

rval=CBYTE[0x0002];指向程序存贮器的0002h地址

rval=XWORD[0x0002];指向外RAM的0002h地址

2. _at_关键字

直接在数据定义后加上_at_ const即可,但是注意:

(1)绝对变量不能被初使化;

(2)bit型函数及变量不能用_at_指定。

例如:

idata struct link list _at_ 0x40;指定list结构从40h开始。

xdata char text[25b] _at_0xE000;指定text数组从0E000H开始

提示:如果外部绝对变量是I/O端口等可自行变化数据,需要使用volatile关键字进行描述,请参考absacc.h。

求助:用C语言编写一个单片机随机数

#include reg52.h

sbit Button = P1^0;

void Delay()

{

unsigned char i;

for(i=0;i125;i++);

}

void main()

{

unsigned char DisplayData;

unsigned char DisplayCode[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

TMOD=0X01;

TH0=0;

TL0=0;

ET0=1;

TR0=1;

EA=1;

while(1)

{

//利用定时器制造随机数,取出0~9的随机数

DisplayData=TH0%10;

if(Button == 0)

{

while(Button == 0)

{

P0=DisplayCode[DisplayData];

P2=0;

Delay();

}

}

}

}

void T0() interrupt 1

{

TH0=0;

TL0=0;

}

说明一下,楼主没有给出图,我假设以P1^0接开关了,P0为数码管段码,P2为数码管位选,如果P2没接138译码器就把0换成0x01就好了,主要是利用定时器的内部计数器来作随机数,因为内部计数器没变化一次为1us,所以我们没法把握,把计算器低位数据取出后经过%10的运算,就能取到0~9的数据了

51单片机产生随机数c程序

刚写的程序,我的思想是用定时器加rand()随机函数来实现的,单片机上电之后通过按键去启动取随机数,若是单片机上电就立即取随机数的话,那每次上电随机的结果都是一样的。然后是0到9不重复的随机数,程序中用了循环来判断是否和前面取的随机数相同,相同则进入下次取随机数,不同则存入数组。程序如下:#includereg52.h

#includestdlib.h //包含rand()随机函数的头文件

unsigned char t,k,i,j,a,f,n[10];

//t是计时变量,k是按键标志,i是数组下标,f是随机数重复标志,n[10]是存放随机数的数组

void init() //初始化函数

{

t=0;

i=0;

f=0;

k=0;

TMOD=0x02; //设置定时器0为工作方式2

TH0=7; //装初值

TL0=7;

EA=1; //开总中断

ET0=1; //开定时器0中断

TR0=1; //启动定时0

EX0=1; //开外部中断0,同按键的效果一样

IT0=1; //下降沿触发

}

void main()

{

init();

while(1)

{

while(k) //外部中断0触发循环

{

if(!i) //i=0时取第一个随机数放入数组n[0]

{

srand(t); //随机数初始化

a=(char)(rand()%10); //取随机数(0~9)

n[0]=a; //存入数组

i++; //数组下标加1

}

else

while(i10) //存放剩下的9个随机数

{

srand(t); //随机数初始化

a=(char)(rand()%10); //取随机数

for(j=0;ji;j++) //与前面的随机数比较

{

if(n[j]==a) //与前面的随机数相同

f=1; //标志置1

}

if(f) //有重复执行

{

f=0; //标志清0

continue; //结束本次循环

}

n[i]=a; //不同则存入数组中

i++; //数组下标加1

}

}

}

}

void inter0() interrupt 0 //外部中断0

{

k=1; //按键标志置1,主函数执行取随机数

}

void time0() interrupt 1 //定时器0中断

{

t++; //时间加1

if(t==100) t=0;

}

名称栏目:c语言随机函数单片机,c程序随机函数
本文链接:https://www.cdcxhl.com/article30/hcieso.html

成都网站建设公司_创新互联,为您提供企业网站制作营销型网站建设网站设计公司关键词优化小程序开发网站制作

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都seo排名网站优化