c語言隨機(jī)函數(shù)單片機(jī),c程序隨機(jī)函數(shù)

單片機(jī) C語言 隨機(jī)數(shù)

%是獲得四位的隨機(jī)數(shù),/1000是將最高位的那個數(shù)+0x30

成都創(chuàng)新互聯(lián)公司是專業(yè)的河曲網(wǎng)站建設(shè)公司,河曲接單;提供網(wǎng)站制作、成都做網(wǎng)站,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行河曲網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

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

單片機(jī)C語言如何產(chǎn)生隨機(jī)數(shù)

用庫函數(shù)也可以,有簡便的方法,就是捕獲定時器中的值!思路如下,程序一開始就打開定時器(不開中斷),讓定時器在哪里跑。當(dāng)你要用隨機(jī)數(shù)的時候捕獲出定時器中的值,然后經(jīng)過運(yùn)算可以得出0-9的隨機(jī)數(shù)!

C51單片機(jī)用C語言寫個隨機(jī)函數(shù)該如何寫呢?最好不要加載其它頭文件的,能否實(shí)現(xiàn)呢?

#include stdlib.h

srand(dat); //初始化隨機(jī)種子,使用該函數(shù)需要上面的頭文件。如果不要這個,每次開機(jī),對應(yīng)的隨機(jī)數(shù)都是相同的. dat 也是需要是個隨機(jī)數(shù),一般可以用掉電存儲的方式來讀取。

dat = rand() ;

51單片機(jī)用C語言如何產(chǎn)生隨機(jī)數(shù)

1. 絕對宏:

在程序中,用“#includeabsacc.h”即可使用其中定義的宏來訪問絕對地址,包括CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD

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

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

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

2. _at_關(guān)鍵字

直接在數(shù)據(jù)定義后加上_at_ const即可,但是注意:

(1)絕對變量不能被初使化;

(2)bit型函數(shù)及變量不能用_at_指定。

例如:

idata struct link list _at_ 0x40;指定list結(jié)構(gòu)從40h開始。

xdata char text[25b] _at_0xE000;指定text數(shù)組從0E000H開始

提示:如果外部絕對變量是I/O端口等可自行變化數(shù)據(jù),需要使用volatile關(guān)鍵字進(jìn)行描述,請參考absacc.h。

求助:用C語言編寫一個單片機(jī)隨機(jī)數(shù)

#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)

{

//利用定時器制造隨機(jī)數(shù),取出0~9的隨機(jī)數(shù)

DisplayData=TH0%10;

if(Button == 0)

{

while(Button == 0)

{

P0=DisplayCode[DisplayData];

P2=0;

Delay();

}

}

}

}

void T0() interrupt 1

{

TH0=0;

TL0=0;

}

說明一下,樓主沒有給出圖,我假設(shè)以P1^0接開關(guān)了,P0為數(shù)碼管段碼,P2為數(shù)碼管位選,如果P2沒接138譯碼器就把0換成0x01就好了,主要是利用定時器的內(nèi)部計(jì)數(shù)器來作隨機(jī)數(shù),因?yàn)閮?nèi)部計(jì)數(shù)器沒變化一次為1us,所以我們沒法把握,把計(jì)算器低位數(shù)據(jù)取出后經(jīng)過%10的運(yùn)算,就能取到0~9的數(shù)據(jù)了

51單片機(jī)產(chǎn)生隨機(jī)數(shù)c程序

剛寫的程序,我的思想是用定時器加rand()隨機(jī)函數(shù)來實(shí)現(xiàn)的,單片機(jī)上電之后通過按鍵去啟動取隨機(jī)數(shù),若是單片機(jī)上電就立即取隨機(jī)數(shù)的話,那每次上電隨機(jī)的結(jié)果都是一樣的。然后是0到9不重復(fù)的隨機(jī)數(shù),程序中用了循環(huán)來判斷是否和前面取的隨機(jī)數(shù)相同,相同則進(jìn)入下次取隨機(jī)數(shù),不同則存入數(shù)組。程序如下:#includereg52.h

#includestdlib.h //包含rand()隨機(jī)函數(shù)的頭文件

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

//t是計(jì)時變量,k是按鍵標(biāo)志,i是數(shù)組下標(biāo),f是隨機(jī)數(shù)重復(fù)標(biāo)志,n[10]是存放隨機(jī)數(shù)的數(shù)組

void init() //初始化函數(shù)

{

t=0;

i=0;

f=0;

k=0;

TMOD=0x02; //設(shè)置定時器0為工作方式2

TH0=7; //裝初值

TL0=7;

EA=1; //開總中斷

ET0=1; //開定時器0中斷

TR0=1; //啟動定時0

EX0=1; //開外部中斷0,同按鍵的效果一樣

IT0=1; //下降沿觸發(fā)

}

void main()

{

init();

while(1)

{

while(k) //外部中斷0觸發(fā)循環(huán)

{

if(!i) //i=0時取第一個隨機(jī)數(shù)放入數(shù)組n[0]

{

srand(t); //隨機(jī)數(shù)初始化

a=(char)(rand()%10); //取隨機(jī)數(shù)(0~9)

n[0]=a; //存入數(shù)組

i++; //數(shù)組下標(biāo)加1

}

else

while(i10) //存放剩下的9個隨機(jī)數(shù)

{

srand(t); //隨機(jī)數(shù)初始化

a=(char)(rand()%10); //取隨機(jī)數(shù)

for(j=0;ji;j++) //與前面的隨機(jī)數(shù)比較

{

if(n[j]==a) //與前面的隨機(jī)數(shù)相同

f=1; //標(biāo)志置1

}

if(f) //有重復(fù)執(zhí)行

{

f=0; //標(biāo)志清0

continue; //結(jié)束本次循環(huán)

}

n[i]=a; //不同則存入數(shù)組中

i++; //數(shù)組下標(biāo)加1

}

}

}

}

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

{

k=1; //按鍵標(biāo)志置1,主函數(shù)執(zhí)行取隨機(jī)數(shù)

}

void time0() interrupt 1 //定時器0中斷

{

t++; //時間加1

if(t==100) t=0;

}

名稱欄目:c語言隨機(jī)函數(shù)單片機(jī),c程序隨機(jī)函數(shù)
本文鏈接:http://muchs.cn/article30/hcieso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、營銷型網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司、關(guān)鍵詞優(yōu)化、小程序開發(fā)、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化