#define uchar unsigned char #define uint unsigned int #define out P0 sbit rs=P2^0; sbit rw=P2^1;sbit e=P2^2; ////////////////////////// void check_busy(void); void write_command(uchar com); void write_data(uchar dat); void LCD_initial(void);
void string(uchar ad ,uchar *s); void lcd_test(void);
void delay(uint);
//主程序
void main(void)
{
LCD_initial(); while(1)
{
string(0x80,\"0 1 2 3 4 5 6 7 8 9 7 8 7\");
delay(100); write_command(0x07);//清屏 delay(100);
}
}
//1ms延时程序 void delay(uint j)
{
uchar i=250; for(;j>0;j--)
{
while(--i); i=249; while(--i); i=250;
}
}
//查忙程序
void check_busy(void)
{
uchar dt;
do
{
dt=0xff; e=0; rs=0; rw=1;
e=1; dt=out; }while(dt&0x80); e=0;
}
//写控制指令
void write_command(uchar com) {
check_busy(); e=0;
rs=0; rw=0; out=com; e=1; _nop_(); e=0; delay(1);
}
//写数据指令
void write_data(uchar dat) {
check_busy(); e=0; rs=1; rw=0; out=dat; e=1; _nop_(); e=0; delay(1);
}
//液晶屏初始化 void LCD_initial(void)
{
write_command(0x30);//8位总线,双行显示,符
5X7 的点阵字
write_command(0x0c);//开整体显示 ,光标关,无黑块 write_command(0x10);//光标右移 write_command(0x01);//清屏 delay(1);
}
//输出字符串
void string(uchar ad,uchar*s)
{
write_command(ad); while(*s>0)
{
write_data(*s++); delay(100);
W* Td kbSCd Crir Ed UNL*t £d cliT.ccd GXJJKd CXhL'atd StViXa *iw?d SLWJd 乳第审詔 \"诳泊 xa^L' L id Zl^ Ld ¥3 M邓 Wi'LEd SViPTd iCViDdl &CY9M SCV^Dd TC V t J= ■■:V r ?z LCVkDdl ZW^ZOd CCVGDd 1SH 卜 51WC 1-0 LTtflXc n K m 3g u EE ■r 2 G \"J CJ F- kAW ILQ01 .
•A . 3
CdM
Idd
也»讯 L丄噹td
Cl^Cri L1NL-T Ed aiNL'Z □DCL'lTd CPCWtd filYfZZd 14和JTd
靛術詔
PLd 零Id » H 噌Id z id X3LL\" Ld 51-t td I、
T
EO
O 31
3 C5i
rtViTZd imed CL¥-T?d Sf-I-Zd gy.nTd
血£曲
31¥ 归S#
询 ■殊
isa
KViOdl SOV\\;1M
Ki
7T« 53~K7
咖WQd 咖rwi
znrwnc
LCT'L Od Mv-ttU
LEX峙 I
I
en
IQ31
V
9-枷ad
EdM IdH