单片机我懂的不多,就跟不懂一样。。。。 但就软件编程这个角度我到可以提出我的想法
你不说有71个字是固定的,最后一个字从甲、乙、丙、丁里面随机选吗
那你在定义好了前71个字的数组后,可以定义一个二维数组,这二维数组里存放甲、乙、丙、丁
就像这样:
code unsigned char rndword[4][32]={{},{},{},{}};
我写点的地方你就写那些十六进制数字,这分别代表四个字
然后呢
你可能是先用一个循环把前71个字输出吧? 这我不管啥样。
反正到第72个字时,你要单独立出来来输出这个了随机数。
看代码:
int iRandom;
srand((unsigned)time(NULL)); // 这步是拿时间做随机数的种子
iRandom = rand()%4; //产生0到3的数,这个用来做二维数组的下标
然后你可能就用循环来输出了吧
for(j = 0 ; j < 32 ; j++)
{
//输出 rndword[iRandom][j]; 这看你单片机的咯
}
主要还是说下rand函数吧, 这要求你先拿一个东西做种子,一般都拿时间,就是srand是种子生成器,这样rand便能以时间做种子产生随机数了,之所以rand%4就是让它所产生的随机数除4取余,来得到0,1,2,3 来做数组下标用。 就这样
对了,忘了提醒,要加载
#include<stdlibh>
#include<timeh>
第一个头文件是srand 和rand函数的声明, 第二个是time函数的声明
这个程序可以循环显示0~9#include<reg51h>#include<intrinsh>#define uchar unsigned char#define uint unsigned intuchar code Table_of_Digits[]={0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00, //00x00,0x00,0x00,0x21,0x7f,0x01,0x00,0x00, //10x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00, //20x00,0x22,0x49,0x49,0x49,0x36,0x00,0x00, //30x00,0x0c,0x14,0x24,0x7f,0x04,0x00,0x00, //40x00,0x72,0x51,0x51,0x51,0x4e,0x00,0x00, //50x00,0x3e,0x49,0x49,0x49,0x26,0x00,0x00, //60x00,0x40,0x40,0x40,0x4f,0x70,0x00,0x00, //70x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00, //80x00,0x32,0x49,0x49,0x49,0x3e,0x00,0x00, //90xff,0x81,0x81,0x81,0x81,0x81,0x81,0xff};uchar code xdat[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};uchar code ydat[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};uchar i=0,j=0,t=0,Num_Index,key,xi,yi; sbit we1=P1^1;sbit we2=P1^3;//主程序void main(){//P1=0x80;Num_Index=0; //从0 开始显示TMOD=0x01; //T0 方式0TH0=(65536-2000)/256; //2ms 定时TL0=(65536-2000)%256;IE=0x82;key=0;xi=0;yi=0;EX0=1;IT0=1;TR0=1; //启动T0while(1);}//T0 中断函数void ext_int0() interrupt 0{ key++; key&=0x03;}void LED_Screen_Display() interrupt 1{TH0=(65536-2000)/256; //2ms 定时TL0=(65536-2000)%256;switch(key){case 0: P0=0xff; we1=1; P0=~Table_of_Digits[Num_Index8+i]; we1=0; P0=0xff; //输出位码和段码 we2=1; P0=xdat[i]; we2=0; if(++i==8) i=0; //每屏一个数字由8 个字节构成 if(++t==250) //每个数字刷新显示一段时间 { t=0; if(++Num_Index==10) Num_Index=0; //显示下一个数字 } break;case 1: we1=1; P0=~xdat[xi]; we1=0; we2=1; P0=ydat[yi]; we2=0; if(++t==250) //每个数字刷新显示一段时间 { t=0; yi++; if(yi>7){yi=0;xi++;} if(xi>7)xi=0; } break;case 2: we1=1; P0=0x00; we1=0; P0=0xff; //输出位码和段码 we2=1; P0=xdat[i]; we2=0; if(++t==250) //每个数字刷新显示一段时间 { if(++i==8) i=0; //每屏一个数字由8 个字节构成 t=0; } break;default: key=0; i=0; j=0; t=0; xi=0; yi=0; Num_Index=0; we1=1; P0=0xff; we1=0; we2=1; P1=0x80; we2=0; break;}}
以上就是关于单片机led点阵的程序怎么写我想修改。用C语言写的、就是怎么样随机选择一组代码。让每次显示的内容都不全部的内容,包括:单片机led点阵的程序怎么写我想修改。用C语言写的、就是怎么样随机选择一组代码。让每次显示的内容都不、怎么写8×8led点阵屏显示数字0-9的程序、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)