/看看吧,如果不行,稍微调试,实在不行联系我吧!祝你早日完成/
#include<reg52h>
#define uchar unsigned char
#define uint unsigned int
sbit lcden=P2^6;//使能端
sbit lcdrs=P2^4;//数据命令端
sbit lcdrw=P2^5;//读写选择端
uchar SecondLine[]=" 自己写东西进来,如:NBA ";//他们两个用于液晶显示的数组
uchar FirstLine[]=" 同上 ";
void delay(uchar z)
{ uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void xsj(uchar sj)
{
lcden=0;
lcdrs=1;
lcdrw=0;
P0=sj;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void dw(uchar dz)
{
lcden=0;
lcdrs=0;
lcdrw=0;
P0=dz;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
/液晶显示的准备/
dw(0x38);
dw(0x0c);
dw(0x06);
dw(0x14);
dw(0x01);
}
main()
{uchar num;
init();
dw(0x80);
for(num=0;num<16;num++)
{ xsj(FirstLine[num]);//写入第一行字
delay(5);
}
dw(0x80+0x40);
for(num=0;num<16;num++)
{ xsj(SecondLine[num]);
delay(5);
}
}
不好意思,您的经验真得很不够,这是十分简单的程序,你不懂估计是没有去看液晶的数据手册,或者懒得去看,都是不好的
//
/ 写入字节函数 /
//
void ShowChar(unsigned char pos,unsigned char c)
{
unsigned char p;
if (pos>=0x10) //液晶中,写入不同的行,使用不同的命令,命令保存在p这个变量里面,如果写入第一行,使用else那里的命令,否则使用下面的
p=pos+0xb0; //命令代码高4位为0xc表示写入第二行,即0xb0+0x10=0xc0,后面的四位指示第二行具体哪一个位置,一共有16个位置
else
p=pos+0x80; //命令代码高4位为0x8表示写入第二行,即0x80+0x00=0x80,后面的四位指示第一行具体哪一个位置,一共有16个位置
WriteCommand (p);//写命令
WriteData (c); //写数据
}
//
/ 写入字符串函数 /
//
void ShowString (unsigned char line,char ptr)
{
unsigned char l,i;
l=line<<4; //就是乘以16,0-15在第一行,16-35在第二行
for (i=0;i<16;i++)
ShowChar (l++,(ptr+i));//循环显示16个字符 //调用上面的函数在l位置进行显示
}
以上就是关于1602液晶屏中显示的问题:本人不会搞1602,高手帮我看下这个程序那里错了,全部的内容,包括:1602液晶屏中显示的问题:本人不会搞1602,高手帮我看下这个程序那里错了,、单片机1602液晶显示中下面的程序什么意思不明白啊 下面带问号都不会啊、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)