标题:
单片机+LCD1602四线驱动,乱码
[打印本页]
作者:
BaseNet
时间:
2020-3-28 16:56
标题:
单片机+LCD1602四线驱动,乱码
原来的延时都是3ms,我测试的时候改成的15ms,现在显示的是第一行有一堆乱码,第二行空。麻烦各位大神帮我看看哪里出问题了呗,谢谢。
#include <stc89c5xrc.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
typedef unsigned int u16;
typedef unsigned char u8;
sbit lcdrs=P1^0;
sbit lcdrw=P1^1;
sbit lcden=P2^5;
sbit P2_0=P2^0;
sbit P2_1=P2^1;
uchar key_s, key_v, tmp;
uchar code table1[]=" 5675747456: ";
uchar code table2[]=" the best one! ";
void delayms(uint x);
void Lcd_1602_write(uchar com,date);
void Lcd_1602_init();
void main() {
uchar num;
P0=0xFF;
Lcd_1602_init();
Lcd_1602_write(0,0x80);
for(num=0;num<16;num++)
{
Lcd_1602_write(1,table1[num]);
delayms(15);
}
Lcd_1602_write(0,0xc0);
for(num=0;num<16;num++)
{
Lcd_1602_write(1,table2[num]);
delayms(15);
}
while(1) {
}
}
void delayms(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void Lcd_1602_write(uchar com,date)
{
uchar i;
lcdrw=0;
lcdrs=com;
for(i=0;i<2;i++)
{
lcden=1;
P0=(P0&0x0f)|(date&0xf0);
delayms(15);
lcden=0
date<<=4;
}
}
void Lcd_1602_init()
{
Lcd_1602_write(0,0x28);
delayms(15);
lcden=1;
lcden=0;
Lcd_1602_write(0,0x28);
Lcd_1602_write(0,0x0e);
Lcd_1602_write(0,0x06);
Lcd_1602_write(0,0x01);
}
复制代码
作者:
wbaisenn
时间:
2020-3-28 17:17
为何一定要用4线驱动,网上例程非常多
作者:
man1234567
时间:
2020-3-31 17:03
编译时注意看提示,你贴的这程序根本通不过编译。
第53行 lcden=0 后面少了个分号,加上后已在普中板上完美运行。
一般不改1602可以4数据2控制2电源共8线运行,如果加工或用转换口还可以少线。
建议找个4线任意口的程序,你的这个程序4线还是占了整个P0
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1