|
本帖最后由 paomo113355 于 2016-4-1 10:55 編輯
P60401-103816.jpg (2.47 MB, 下載次數(shù): 119)
下載附件
2016-4-1 10:54 上傳
P60401-103807.jpg (2.11 MB, 下載次數(shù): 117)
下載附件
2016-4-1 10:54 上傳
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit RW=P2^6;
sbit RS=P2^5;
sbit EN=P2^7;
sbit PSB=P3^2;
sbit RST=P3^4;
sbit date=P0;
uchar code shu[]="0123456789";
uchar code name[]="1234";
uchar code qq[]="1257570344";
uchar code tel[]="18483662440";
//********************************************
void busy()//12864測忙函數(shù)
{
while(1)
{
RS=0;
RW=1;
EN=1;
if((date&0x80)==0)
{
EN=0;
break;
}
}
}
//******************************************
void delayms(uint time)//毫秒延時
{
uint x,y;
for(x=time;x;x--)
for(y=110;y;y--);
}
//*********************************************
void write_com(uchar com) //寫指令
{
busy();
RS=0;
RW=0;
EN=1;
delayms(2);
P0=com;
delayms(2);
EN=0;
}
//**********************************************
void write_date(uchar date)//寫數(shù)據(jù)
{
busy();
RS=1;
RW=0;
EN=1;
delayms(2);
P0=date;
delayms(2);
EN=0;
}
//********************************************
void lcdpos(uchar x,uchar y)//顯示地址
{
if(x==0)
x=0x80;
else
if(x==1)
x=0x90;
else
if(x==2)
x=0x88;
else
if(x==3)
x=0x98;
write_com(x+y);
}
//***********************************************
void init()//初始化
{
delayms(50);
PSB=1;
RST=0;
RST=1;
write_com(0x30);//基本指令操作
delayms(5);
write_com(0x30);
delayms(5);
write_com(0x06);
delayms(5);
write_com(0x01);//清除內(nèi)容
delayms(5);
write_com(0x0c);//開顯示 關(guān)光標(biāo)
}
//************************************************
void display()
{ uchar i;
lcdpos(0,0);//第一行
for(i=0;name!=0;i++)
{
write_date(name);
delayms(5);
}
lcdpos(1,0);
for(i=0;qq!=0;i++)
{
write_date(qq);
delayms(5);
}
lcdpos(2,0);
write_com(0x88);//第三行
for(i=0;tel!=0;i++)
{
write_date(tel);
delayms(5);
}
}
//**************************************************
void main(void)
{
init();
init();
display();
while(1);
}
|
|