点击(此处)折叠或打开
-
#include<reg52.h>
-
#include<intrins.h>
-
#include<stdlib.h>
-
-
#define uchar unsigned char
-
#define uint unsigned int
-
-
sbit lcden=P3^4;
-
sbit lcdrs=P3^5;
-
sbit lcdrw=P3^6;
-
sbit lcdpsb=P1^7;/*串并行*/
-
sbit wela=P2^6;
-
sbit dula=P2^7;
-
-
uchar dis1[10];/*display1*/
-
uchar dis2[]={""};
-
uchar dis3[]={"我是谢彪"};
-
uchar dis4[]={"--------"};
-
uint i;
-
-
void delay_ms(uint);
-
void lcd_init();
-
void write_cmd(uchar);
-
void write_dat(uchar);
-
void lcd_pos(uchar,uchar);
-
void makerand();
-
-
void main()
-
{
-
wela=0;
-
dula=0;
-
-
delay_ms(10);
-
lcd_init();
-
-
lcd_pos(1,0);
-
i=0;
-
while(dis2[i]!=0)
-
{
-
write_dat(dis2[i]);
-
i++;
-
}
-
-
lcd_pos(2,0);
-
i=0;
-
while(dis3[i]!=0)
-
{
-
write_dat(dis3[i]);
-
i++;
-
}
-
-
lcd_pos(3,0);
-
i=0;
-
while(dis4[i]!=0)
-
{
-
write_dat(dis4[i]);
-
i++;
-
}
-
-
while(1)
-
{
-
lcd_pos(0,0);
-
makerand();
-
for(i=0;i<10;i++)
-
{
-
delay_ms(50);
-
write_dat(dis1[i]);
-
}
-
}
-
-
}
-
-
void lcd_init()
-
{
-
lcdpsb=1;/*并行方式*/
-
write_cmd(0x30);
-
delay_ms(5);
-
write_cmd(0x0c);
-
delay_ms(5);
-
write_cmd(0x01);/*清除*/
-
delay_ms(5);
-
}
-
-
void lcd_pos(uchar x,uchar y)
-
{
-
uchar pos;
-
if(x==0)
-
x=0x80;
-
else if(x==1)
-
x=0x90;
-
else if(x==2)
-
x=0x88;
-
else if(x==3)
-
x=0x98;
-
pos=x+y;
-
write_cmd(pos);
-
}
-
-
void makerand()
-
{
-
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;
-
}
-
-
void write_cmd(uchar cmd)
-
{
-
lcdrs=0;
-
lcdrw=0;
-
lcden=0;
-
P0=cmd;
-
delay_ms(5);
-
lcden=1;
-
delay_ms(5);
-
lcden=0;
-
}
-
-
void write_dat(uchar dat)
-
{
-
lcdrs=1;
-
lcdrw=0;
-
lcden=0;
-
P0=dat;
-
delay_ms(5);
-
lcden=1;
-
delay_ms(5);
-
lcden=0;
-
}
-
-
void delay_ms(uint del)
-
{
-
uint i;
-
for(;del>0;del--)
-
for(i=124;i>0;i--);
- }