永发信息网

单片机LCD12864液晶屏

答案:4  悬赏:50  手机版
解决时间 2021-11-30 04:33
  • 提问者网友:焚苦与心
  • 2021-11-29 09:04
单片机LCD12864液晶屏
最佳答案
  • 五星知识达人网友:雾月
  • 2021-11-29 09:44
你用的是串口方式 而程序是并口方式,所以再怎么弄都不会显示出来 ;
我这里有串口方式的程序 今晚刚编好的 也测试了液晶能显示出来 你看看吧 把我的端口对应改一下就行 如果液晶再无法显示 那就是你硬件的问题了 比如PSB端口是否接了低电平
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit cs=P2^5; //片选端 高电平有效
sbit sid=P2^6; //数据线
sbit sclk=P2^7; //串行时钟信号 下降沿有效
uchar table[]="我是个小兵却乐天知命,在你的世界说鸟语,在我的世界对不起请说汉语";
uchar datecnt;

void delayms(uint z)//单位延时一毫秒
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);

}
void send_byte(uchar byte)//发送一个字节函数
{
uchar j;
cs=1;
for(j=0;j<8;j++)
{
sclk=0;
byte=byte<<1;
sid=CY;
sclk=1;
sclk=0;
}
cs=0;
}

void writecom_12864(uchar com)//写命令控制函数
{
uchar HDATA,LDATA;
HDATA=com&0xf0;
LDATA=((com<<4)&0xf0);
send_byte(0xf8);
send_byte(HDATA);
send_byte(LDATA);
}

void writedate_12864(uchar date)//写数据控制函数
{
uchar HDATA,LDATA;
HDATA=date&0xf0;
LDATA=((date<<4)&0xf0);
send_byte(0xfa);
send_byte(HDATA);
send_byte(LDATA);
}

void init_12864()//初始化12864
{
writecom_12864(0x30);
writecom_12864(0x30);
writecom_12864(0x0c);
writecom_12864(0x01);//清屏
writecom_12864(0x06);
}

void display_12864()
{

for(datecnt=0;datecnt<64;datecnt++)
{
if(datecnt==0) writecom_12864(0x80);
if(datecnt==16)writecom_12864(0x90);
if(datecnt==32)writecom_12864(0x88);
if(datecnt==48)writecom_12864(0x98);
writedate_12864(table[datecnt]);
}
}

void main()
{
init_12864();
display_12864();
while(1);
}
全部回答
  • 1楼网友:一把行者刀
  • 2021-11-29 12:15
最好是招专业刷程序的刷下程序
还有一个就是你的液晶屏白屏。或屏线坏了
一般不管程序对错。都不会显示白屏只显示黑屏或花屏
  • 2楼网友:往事隔山水
  • 2021-11-29 11:58
你仿真了没?仿真成功了就应该不是软件问题而是硬件问题。硬件的话检查显示器与单片机相连的控制端和数据传输端是否连好。看看有没有虚焊、短路什么的问题。
  • 3楼网友:一袍清酒付
  • 2021-11-29 10:25
凭俺的经验,如果12864只有背光灯在亮的话,请调节对比度也就是12864的第三脚,直接接到地
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯