标题:
4位控制1602屏的单片机程序问题
[打印本页]
作者:
xjtong
时间:
2019-7-4 14:38
标题:
4位控制1602屏的单片机程序问题
IO口不够用,所以只能用4位控制1602屏,不成功。不知道问题在哪里,望高人指导!
单片机源程序如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcdrs= P2^1;
sbit lcdrw= P2^2;
sbit lcden= P2^3;
void delay(uint m)
{while(--m);}
void write(uchar com,uchar date)
{
uint nn=20;
lcdrs=com;
P1=(date&0xf0);
delay(nn);
lcden=1;
delay(nn);
lcden=0;
P1=(date&0x0f)<<4;
delay(nn);
lcden=1;
delay(nn);
lcden=0;
delay(nn);
}
void init()
{
lcdrw=0;
lcden=0;
delay(5);
write(0,0x28);
write(0,0x0c);
write(0,0x01);
write(0,0x80);
delay(255);
}
void main()
{
init();
while(1){
write(0,0x80);write(1,'a');
}
}
复制代码
作者:
angmall
时间:
2019-7-5 06:17
你这个初始化程序出问题了!,对比一下就知道哪里错了。
/*******************************************************************************
* 函 数 名 : LcdInit()
* 函数功能 : 初始化LCD屏
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
#ifndef LCD1602_4PINS
void LcdInit() //LCD初始化子程序
{
LcdWriteCom(0x38); //开显示
LcdWriteCom(0x0c); //开显示不显示光标
LcdWriteCom(0x06); //写一个指针加1
LcdWriteCom(0x01); //清屏
LcdWriteCom(0x80); //设置数据指针起点
}
#else
void LcdInit() //LCD初始化子程序
{
LcdWriteCom(0x32); //将8位总线转为4位总线
LcdWriteCom(0x28); //在四位线下的初始化
LcdWriteCom(0x0c); //开显示不显示光标
LcdWriteCom(0x06); //写一个指针加1
LcdWriteCom(0x01); //清屏
LcdWriteCom(0x80); //设置数据指针起点
}
#endif
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1