|
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="I LIKE MCU!";
uchar code table1[]="WWW*TXMCU*COM";
sbit LCD1602_E=P2^7; // 使能
sbit RW=P2^5; // 选择写入
sbit LCD1602_RS=P2^6; // 选择发送命令
uchar num,bb;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com) //写命令
{
LCD1602_RS=0; //使能
P0=com; //赋值 //P0口接液晶屏
delay(5);
LCD1602_E=1;
delay(5);
LCD1602_E=0;
}
void write_data(uchar date) //写数据
{
LCD1602_RS=1;
P0=date;
delay(5);
LCD1602_E=1;
delay(5);
LCD1602_E=0;
}
void init() //初始化
{
LCD1602_E=0;
write_com(0x38);
write_com(0x0e);
write_com(0x06);
write_com(0x01);
write_com(0x80+0x10); // 第一行地址 指针
}
void main()
{
RW=0; //选择写入为低电平
init();
for(num=0;num<11;num++)
{
write_data(table[num]);
delay(20);
}
// write_com(1); // 清屏
write_com(0x80+0x53); // 第二行地址 指针
for(num=0;num<13;num++)
{
write_data(table1[num]);
delay(20);
}
while(1)
{
for(num=0;num<10;num++)
{
write_com(0x18); //从右往左开始流动10位
delay(100);
}
write_com(1); //清屏 去掉这个清屏就可以从右往左流动,
}
}
// 我要的效果: 我要从右往左流动10位就清屏,从新开始从右往左流动
// 搞不定 请问怎么弄谢谢了!!!!
|
|