|
12864的液晶屏的程序如下但是显示的时候没第二行了,中文也不对
[复制链接]
#include //51寄存器文件
#include
#include
typedef unsigned char BYTE; //用BYTE代替unsigned char
typedef unsigned int WORD;//WORD代替unsigned int
typedef bit BOOL ;//用BOOL代替bit
sbit rs = P2^6; //复位端
sbit rw = P2^5; //写数据端
sbit ep = P2^7; //使能端
BYTE code dis1[] = {"apple"};
BYTE code dis2[] = {"on the"};
BYTE code dis3[]={"湖南"};
BYTE code dis4[]={"中文"};
/*******************延时函数********************/
delay(BYTE ms)
{
BYTE i;
while(ms--)
{
for(i = 0; i< 250; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
lcd_wcmd(BYTE cmd)
{ // 写入指令数据到LCD
rs = 0;
rw = 0;
ep = 0;
_nop_();
_nop_();
P0 = cmd; //将8位指令通过P0口传给1602
_nop_();
_nop_();//用于产生一个脉冲宽度
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}
lcd_wdat(BYTE dat)
{ //写入字符显示数据到LCD
rs = 1;
rw = 0;
ep = 0;
P0 = dat;//将8位数据通过P0口传给12864
_nop_();
_nop_();
_nop_(); //用于产生一个脉冲宽度
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}
lcd_init()
{
lcd_wcmd(0x01);
delay(1); //LCD初始化设定
lcd_wcmd(0x38); ////16*2显示,5*7点阵,8位数据
delay(1);
lcd_wcmd(0x0f); //显示开,关光标
delay(1);
lcd_wcmd(0x06); //移动光标
delay(1);
lcd_wcmd(0x01); //清除LCD的显示内容
delay(1);
}
/*void randmake()
{int ran;
// ran=rand();
dis3[0]=ran%10000+0x30;
dis3[1]=ran%1000+0x30;
dis3[2]=ran%100+0x30;
dis3[3]=ran%10+0x30;
dis3[4]=ran%10000+0x30;}*/
main()
{
BYTE i;
lcd_init(); //初始化LCD
delay(10);
lcd_wcmd(0x80);
i = 0;
while(dis1 != '\0')
{
lcd_wdat(dis1);
i++;
delay(5);
}
lcd_wcmd(0x90);
i = 0;
while(dis2 != '\0')
{
lcd_wdat(dis2); //显示字符" www.PRECHIN.com "
i=i+1;
delay(5);
}
//randmake();
lcd_wcmd(0x88);
while(dis3 != '\0')
{
lcd_wdat(dis3);
i=i+1;
delay(5);
}
lcd_wcmd(0x98);
while(dis4 != '\0')
{
lcd_wdat(dis4);
i=i+1;
delay(5);
}
while(1);
}
![]()
|
|