#include
#include
#define uchar unsigned char
//延时1 毫秒 程序
void delayms();
//延时 s 毫秒 程序
void delay(uchar s);
//初始化 LCD
void InitLCD();
//写LCD 指令
void WriteInstruction(uchar);
//写LCD 数据
void WriteData(uchar);
//写地址
void WriteAdd(uchar);
//读LCD 状态
uchar BusyTest();
//LCD 操作位 设置
sbit RS=P2^2;
sbit RW=P2^1;
sbit E=P2^0;
sbit BF=P1^7;
uchar flag=1;
uchar code str[]="your test result:";
uchar code digit[]="0123456789";
uchar *p;
//main 程序
void main()
{
int x;
uchar D1,D2,D3,D4,D5,i;
//初始化LCD
InitLCD();
//写地址
WriteAdd(0x00);
p=str;
while(*p!='\0')
{
WriteData(*p);
p++;
delay(5);
}
//
while(1)
{
x=rand();
D1=x%10;
D2=(x%100)/10;
D3=(x%1000)/100;
D4=(x%10000)/1000;
D5=x/10000;
//写地址
WriteAdd(0x45);
delay(5);
if(x>=10000)
WriteData(digit[D5]);
delay(5);
if(x>=1000)
WriteData(digit[D4]);
delay(5);
if(x>=100)
WriteData(digit[D3]);
delay(5);
WriteData(digit[D2]);
delay(5);
WriteData('.');
delay(5);
WriteData(digit[D1]);
for(i=0;i<4;i++)
delay(250);
WriteData(0x01);
}
}
//初始化 LCD
void InitLCD()
{
delay(15);
WriteInstruction(0x38);// 显示模式设置
delay(5);
WriteInstruction(0x38);
delay(5);
WriteInstruction(0x38);
delay(5);
WriteInstruction(0x0c);//显示模式设置: 开显示,显示光标,闪烁光标
delay(5);
WriteInstruction(0x06);//显示模式设置: 光标右移,文字不移动。
delay(5);
}
//写 LCD 指令
void WriteInstruction(uchar instruction)
{
//LCD 忙碌,等待。
while(BusyTest()==1);
//写指令
RS=0;
RW=0;
E=0;
_nop_();
_nop_();
_nop_();
//指令
P1=instruction;
_nop_();
_nop_();
_nop_();
E=1;
_nop_();
_nop_();
_nop_();
E=0;
}
//写LCD 数据
void WriteData(uchar d)
{
//LCD 忙碌,等待。
while(BusyTest()==1);
//写数据
RS=1;
RW=0;
E=0;
_nop_();
_nop_();
_nop_();
//指令
P1=d;
_nop_();
_nop_();
_nop_();
E=1;
_nop_();
_nop_();
_nop_();
E=0;
}
//写地址,属于写指令
void WriteAdd(uchar ad)
{
uchar addr=ad+0x80;
WriteInstruction(addr);
}
//读LCD 状态
uchar BusyTest()
{
bit result;
//读LCD 状态
RS=0;
RW=1;
E=1;
_nop_();
_nop_();
_nop_();
//指令
result=BF;
_nop_();
_nop_();
_nop_();
E=0;
return result;
}
void delay(uchar s)
{
uchar tem;
for(tem=0;tem
{
delayms();
}
}
void delayms()
{
uchar i,j;
for(i=0;i<10;i++)
for(j=0;j<33;j++)
;
}
上一篇:c51: DS1820
下一篇:C51: INT0
推荐阅读最新更新时间:2024-03-16 15:15