0
问答首页 最新问题 热门问题 等待回答标签广场
我要提问

LCD

lcd程序的问题

#include

#define uchar unsigned char

#define uint unsigned int

uchar code lcd[]="abcaa";

uchar code lcd1[]="aaaaa";

sbit   lcd_rs=P3^2;

sbit   lcd_rw=P3^1;

sbit   lcd_en=P3^0;

sbit   lcd_busy=P1^7;

uchar num;

void delay(uint z)  //延时程序

{

uint x,y;

for(x=z;x>0;x--)

  for(y=110;y>0;y--);

}

void lcd_tbusy(void)   //检测lcd是否在忙

{

    P1 = 0xff;  //设备读状态

    lcd_rs= 0;

    lcd_rw = 1;

    lcd_en = 1;

    while(lcd_busy);  //等待LCd不忙

    lcd_en = 0;    //

}

void write_com(uchar com)//lcd写指令控制命令

{

    lcd_tbusy();

lcd_rs=0;

    lcd_rw=0;

P1=com;

lcd_en=1;

delay(1);

lcd_en=0;

    delay(1);

}

void write_data(uchar date)//lcd写数据命令

{

    lcd_tbusy();

lcd_rs=1;

    lcd_rw=0;

P1=date;

delay(1);

lcd_en=1;

delay(1);

lcd_en=0;

}

void init()

{

lcd_en=0;

    delay(15);

write_com(0x38);//设置lcd显示模式

    delay(5);

write_com(0x38);

    delay(5);

write_com(0x38);

write_com(0x0f);//设置光标的显示/闪烁

write_com(0x05);//设置显示后指针加1,并且光标移一位

write_com(0x01);//清屏设置

write_com(0x80);//设置字符从地址为10的位置开始显示

}

void main()

{

init();

// write_data('1');

for(num=0;num<5;num++)

{

  write_data(lcd[num]);

  delay(20);

}

write_com(0x80+0x40);

for(num=0;num<5;num++)

{

  write_data(lcd1[num]);

  delay(20);

}

// write_com(0x01);

//   for(num=0;num<16;num++)

//    {

//  write_com(0x18);//整屛左移

//  delay(200);

// }

while(1);

}

这是我自己写的一个lcd显示的程序,出了一些问题,问了同学也找不出来,

(1)光标无法设置,程序下载后,看不到光标,

(2)下载后lcd第一行显示“abcdaa”第二行显示'aaaaaabcdaa"正常的显示是第一行是“abcaa”第二行是“aaaaa”

请教高手帮忙解答

提问者:请叫我杰西卡 地点:- 浏览次数:8939 提问时间:07-27 15:52
我有更好的答案
提 交
2条回答
60user6 07-28 17:35 回答数:0 被采纳数:0
fous2012 08-03 00:11 回答数:0 被采纳数:0
1602吗,将测试是否忙的程序直接改成用 延时代替好了
撰写答案
提 交
1 / 3
1 / 3
相关LCD
力信LCD开关电源电路
LCD背光闪烁
LCD12864程序无法显示
请教LCD背光引脚
关于LCD信号传输接口的资料