标题:
关于lcd1602乱码问题求解
[打印本页]
作者:
lumingfei
时间:
2018-11-15 11:26
标题:
关于lcd1602乱码问题求解
这是我的程序
初始接上1602显示没有问题
但是稍微一动板子
就会乱码 出现一些其他的字符,请问是什么原因
谢谢大家
单片机源程序如下:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define Data P2 //??????
uchar FirstLine[] ="123"; //?????????
uchar SecondLine[]="nihao"; //?????????
sbit RW=P3^3;//?????????????lcd1602??????//
sbit RS=P3^2;
sbit E=P3^4;
void delay(uchar ms) // ???????ms????
{
uchar i,j;
for(i=ms;i>0;i--)
for(j=100;j>0;j--);
}
void DelayUs(unsigned char us) //--???????
{
unsigned char uscnt;
uscnt=us>>1; /*12MHz???*/
while(--uscnt);
}
void DelayMs(unsigned char ms)
{
while(--ms)
{
DelayUs(250);
DelayUs(250);
DelayUs(250);
DelayUs(250);
}
}
void lcd_write_com(uchar c) //д????
{
DelayMs(5);//???????????????????????
E=0;
RS=0;
RW=0;
_nop_();
E=1;
Data=c;
E=0;
}
void lcd_write_dat(uchar c) //д????
{
DelayMs(5); //???????????????????????
E=0;
RS=1;
RW=0;
_nop_();
E=1;
Data=c;
E=0;
RS=0;
}
void lcd_init() //LCD?????
{
DelayMs(15);
lcd_write_com(0x38); //display mode
lcd_write_com(0x38); //display mode
lcd_write_com(0x38); //display mode
lcd_write_com(0x06); //?????????λ??
lcd_write_com(0x0c); //??????????????
lcd_write_com(0x01); //???????
}
void ShowChar(uchar pos,uchar c) //??????????
{
unsigned char p;
if (pos>=0x10)
p=pos+0xb0; //????????????????4λ?0xc
else
p=pos+0x80; //????????????????4λ?0x8
lcd_write_com(p);//д????
lcd_write_dat(c); //д????
}
void ShowString (uchar line,char *ptr) //????????
{
unsigned char l,*p;
p=ptr;
l=line<<4;
while((*p)!='\0')
{
ShowChar(l++,*(p));
p++;
}
}
void disp(void) //??????????????????
{
ShowString(0,FirstLine);
ShowString(1,SecondLine);
}
void main()
{
lcd_init();
delay(50);
while(1){
disp();
}
}
复制代码
作者:
冰冰洁洁
时间:
2018-11-15 12:16
你这程序有数据口判忙程序吗?找个标准例程看看呗,没有判忙,一动板子并口通信时数据不得丢几个呀。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1