|
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcdrs=P2^0;
sbit lcdrw=P2^1;
sbit lcden=P2^2;
uchar table[]="aa 01 03 0f 00";
uchar table1[];
unsigned char a,b,m;
uchar sendflag=0;
uchar receflag=0;
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
bit lcd_busy()
{
bit result;
lcdrs=0;
lcdrw=1;
lcden=1;
delay(10);
result=(bit)(P0&0X80);
lcden=0;
return(result);
}
void lcd_wcmd(uchar cmd)
{
while(lcd_busy());
lcdrs=0;
lcdrw=0;
lcden=0;
delay(5);
P0=cmd;
lcden=1;
delay(5);
lcden=0;
}
void lcd_wdat(uchar dat)
{
while(lcd_busy());
lcdrs=1;
lcdrw=0;
lcden=0;
P0=dat;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void lcd_init()
{
delay(15);
lcd_wcmd(0x01);
lcd_wcmd(0x38);
delay(5);
lcd_wcmd(0x38);
delay(5);
lcd_wcmd(0x0c);
delay(5);
lcd_wcmd(0x01);
delay(5);
}
void lcd_pos(uchar pos) //設(shè)定顯示位置
{
lcd_wcmd(pos | 0x80);
}
void senddata() //發(fā)送數(shù)據(jù)
{
ES=0;
for(a=0;a<14;a++)
{
SBUF=table[a];
while(!TI);
TI=0;
}
ES=1;
}
void serial()interrupt 4
{
if(RI)
{
RI=0;
delay(1000);
if(b)
{
b=0;
b++;
b<14;
receflag=1; //發(fā)送完了清標(biāo)志
}
table1[b]=SBUF;
}
}
void display() //數(shù)據(jù)顯示
{
if(receflag)
{
lcd_pos(0x00);
for(m=0;m<16;m++)
{
lcd_wdat(table1[b]);
}
receflag=0;
}
}
void main(void)
{
TMOD=0X20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SM0=0;
SM1=1;
REN=1;
EA=1;
ES=1;
lcd_init();
while(1)
{
senddata();
delay(2000);
display();
}
}
|
|