標題:
單片機驅(qū)動lcd12864亂碼
[打印本頁]
作者:
shenqiwei
時間:
2020-9-12 17:08
標題:
單片機驅(qū)動lcd12864亂碼
視頻:
1.rar
(1.15 MB, 下載次數(shù): 7)
2020-9-12 17:07 上傳
點擊文件名下載附件
12864亂碼現(xiàn)象
#include<reg51.h>
#include<intrins.h>
#include<stdlib.h>
#define uchar unsigned char
#define uint unsigned int
#define LCD_data P0 //數(shù)據(jù)口
#define ushort unsigned short int
ushort b;
/*******引腳定義*******/
sbit LCD_RS=P3^5;
sbit LCD_RW=P3^6;
sbit LCD_EN=P3^4;
sbit LCD_PSB=P3^7;
sbit wela=P2^6;
sbit dula=P2^7;
uchar code dis1[]={"abcdefg"};
uchar code dis2[]={"您好"};
uchar code dis3[]={"歡迎光臨"};
uchar code dis4[]={"www.baidu.com"};
uchar code dis5[]={"數(shù)值:"};
uchar dis6[5]={"L 000"};
uchar dis7[5]={"R 000"};
uchar code dis8[]={""};
/*******延時函數(shù)*******/
void delay_1ms(uint x)
{
uint i,j;
for(j=0;j<x;j++)
for(i=0;i<110;i++);
}
void quzhi()
{
uint f=dis6[5],g=dis7[5];
for(f=0;f<5;f++)
for(g=0;g<5;g++);
}
/*******寫指令*******/
void write_cmd(uchar cmd)
{
LCD_RS=0;
LCD_RW=0;
LCD_EN=0;
P0=cmd;
delay_1ms(5);
LCD_EN=1;
delay_1ms(5);
LCD_EN=0;
}
/*******顯示數(shù)據(jù)*******/
void write_dat(uchar dat)
{
LCD_RS=1;
LCD_RW=0;
LCD_EN=0;
P0=dat;
delay_1ms(5);
LCD_EN=1;
delay_1ms(5);
LCD_EN=0;
}
/*******設定初始顯示位置*******/
void lcd_pos(uchar x,uchar y)
{
uchar pos;
if(x==0)
x=0x82;
else if(x==1)
x=0x91;
else if(x==2)
x=0x8A;
else if(x==3)
x=0x98;
pos=x+y;
write_cmd(pos);
}
void lcd_pos2(uchar x,uchar y)
{
uchar pos2;
if(x==0)
x=0x80;
else if(x==1)
x=0x93;
else if(x==2)
x=0x8B;
else if(x==3)
x=0x98;
pos2=x+y;
write_cmd(pos2);
}
/*******LCD初始化程序*******/
void lcd_init()
{
LCD_PSB=1; //并口方式
write_cmd(0x30);
delay_1ms(5);
write_cmd(0x0c); //顯示開,關(guān)光標
delay_1ms(5);
write_cmd(0x01); //清除LCD的顯示內(nèi)容
delay_1ms(5);
}
/*******LCD數(shù)據(jù)顯示位置*******/
void shuju()
{
uchar i;
lcd_pos(0,0); //第一行
while(dis1[i]!='\0')
{
write_dat(dis1[i]);
i++;
}
lcd_pos(1,0); //第二行
i=0;
while(dis2[i]!='\0')
{
write_dat(dis2[i]);
i++;
}
lcd_pos(2,0); //第三行
i=0;
while(dis3[i]!='\0')
{
write_dat(dis3[i]);
i++;
}
lcd_pos(3,0); //第四行
i=0;
while(dis4[i]!='\0')
{
write_dat(dis4[i]);
i++;
}
delay_1ms(2000);
write_cmd(0x01);
lcd_pos2(0,0); //第一行
i=0;
while(dis5[i]!='\0')
{
write_dat(dis5[i]);
i++;
}
lcd_pos2(1,0); //第二行
i=0;
while(dis6[i]!='\0')
{
write_dat(dis6[i]);
i++;
}
lcd_pos2(2,0); //第三行
i=0;
while(dis7[i]!='\0')
{
write_dat(dis7[i]);
i++;
}
lcd_pos2(3,0); //第四行
i=0;
while(dis8[i]!='\0')
{
write_dat(dis8[i]);
i++;
}
}
/*******主程序*******/
void main()
{
uchar i;
wela=0;
dula=0;
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;
delay_1ms(10);
lcd_init();
shuju();
quzhi();
while(1)
{
lcd_pos2(2,0); //第三行
i=0;
while(dis7[i]!='\0')
{
write_dat(dis7[i]);
i++;
}
lcd_pos2(1,0); //第二行
i=0;
while(dis6[i]!='\0')
{
write_dat(dis6[i]);
i++;
}
}
}
void T0_time() interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
b++;
dis7[2]='0'+b;
if (b>9)
{
b=0;
}
dis7[3]='0'+b;
if (b>99)
{
b=0;
}
dis7[4]='0'+b;
if (b>999)
{
b=0;
}
dis6[2]='0'+b;
if (b>9)
{
b=0;
}
dis6[3]='0'+b;
if (b>9)
{
b=0;
}
dis6[4]='0'+b;
if (b>9)
{
b=0;
}
}
復制代碼
作者:
man1234567
時間:
2020-9-15 09:33
排除硬件肯定是程序問題。帖多少代碼都不表示可以通吃任何12864的屏。
作者:
cdlongbo
時間:
2020-9-16 10:38
調(diào)試點陣,先不要顯示文字等信息,先用全黑測試一下,全黑沒有問題了在測試顯示
作者:
cdlongbo
時間:
2020-9-16 10:39
全黑不能顯示,那么重點檢查驅(qū)動與液晶屏初始化參數(shù)
作者:
shenqiwei
時間:
2021-12-16 01:07
我試過了,也調(diào)試了,沒有起到什么用
作者:
15996822510
時間:
2021-12-17 14:12
搞點圖片吧,不然還得下載你的rar,多麻煩
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1