|
本帖最后由 Lzxhmxy1839 于 2021-6-5 10:37 编辑
本人自己设计的最小系统板,还没跑过led灯,但是仔细检查了,板子应该没问题。然后接lcd屏幕,第三脚的v0我接的是2k的电位器,之前没接电位器,就只是亮背光,现在接了2k的就是显示一排黑块,p0口的上拉排阻接法正确,望各位大佬帮忙解决一下
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="Welcome"; //单字符用单引号 多字符用双引号
uchar code table1[]="Harbin CHINA";
sbit lcden=P1^0; //位定义使能端
sbit lcdrs=P1^1; //数据命令选择端
//sbit dula=P2^6; //申明U1锁存器的锁存端
//sbit wela=P2^7; //申明U2锁存器的锁存端
uchar num;
void delay(uint z) //延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com) //写命令函数
{
lcdrs=0; //写指令rs先拉低 0是写命令模式
P0=com; //给P0口送的指令码
delay(50); //延时
lcden=1; //使能端置1
delay(50);
lcden=0; //拉低 依据时序图
}
void write_data(uchar date) //写数据函数
{
lcdrs=1; //写数据rs拉高 1是写数据模式
P0=date; //P0口送数据
delay(50);
lcden=1; //使能端置1
delay(50);
lcden=0; //使能端置0
}
void init() //初始化函数
{
//dula=0; //关闭段选
//wela=0; //关闭位选
lcden=0;
delay(500); //使能端置0
write_com(0x38); //显示设置指令码 显示模式设置
delay(500);
write_com(0x38); //显示设置指令码 显示模式设置
delay(500);
write_com(0x38); //显示设置指令码 显示模式设置
delay(500);
write_com(0x38); //显示设置指令码 显示模式设置
delay(500);
write_com(0x0e); //显示开/关光标设置 0f是带黑块和光标一起闪烁 0e是只有一个__而且不闪烁 0c是后面什么都没有
write_com(0x06); //地址指针自动加1 还有整屏显示左移
write_com(0x01); //显示清零 数据指针清零
write_com(0x80+0x10); //设置数据指针位置 指向第一个
}
void main()
{
init();
for(num=0;num<7;num++)
{
write_data(table[num]);
delay(5);
}
// write_com(1);
write_com(0x80+0x50);
for(num=0;num<12;num++)
{
write_data(table1[num]);
delay(5);
}
for(num=0;num<16;num++)
{
write_com(0x18);
delay(200);
}
while(1);
}
|
|