怎样在单片机C语言里面产生一个0到100的随机数啊?

2019-07-15 17:01发布

我是这样写的:int a;srand(32676);a=rand();a=32776-a;设定单片机0.5秒刷新一次显示,但是我在用1602显示这个数的时候这个随机数却一直不变,请问一下是什么原因啊?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
dianzixiaobai
2019-07-15 20:30
全部程序在这里,用单片机的测试的时候,单片机的数字一直不变。
#include<reg51.h>
#include<stdlib.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P2^6;
sbit rw=P2^5;
sbit lcden=P2^7;
uchar ge,shi,bai,qian,wan,i;
uchar code table[]="0123456789";
int a;
void delay(uint z)
{
        uint x,y;
        for(x=100;x>0;x--)
                for(y=z;y>0;y--);
}
void makerand()
{
        srand(32667);
        a=rand();
        a=32767-a;        
        bai=a/100;
        shi=a%100/10;
        ge=a%10;
}
void write_com(uchar com)
{
        rs=0;
        rw=0;
        lcden=0;
        delay(5);
        P0=com;
        lcden=1;
        delay(5);
        lcden=0;          
}
void write_date(uchar date)
{
        rs=1;
        rw=0;
        lcden=0;
        delay(5);
        P0=date;
        lcden=1;
        delay(5);
        lcden=0;
}
void lcd_init()
{
        lcden=0;
        write_com(0x38);
        write_com(0x0c);
        write_com(0x06);
        write_com(0x01);       
}
void main()
{
        lcd_init();
        while(1)
        {       
                write_com(0x80);
                makerand();
                write_date(table[bai]);
                delay(5);
                write_date(table[shi]);
                delay(5);
                write_date(table[ge]);
                delay(5);
                delay(300);                       
        }
}

一周热门 更多>