|
本帖最后由 吃瓜子不吐殼 于 2018-8-20 11:37 編輯
初學(xué)51單片機不久,網(wǎng)上買了LCD12864的液晶顯示器,自帶ST7920字庫?墒遣还芪以趺凑垓v,就是顯示不出來任何東西,檢查了很多遍,接線沒有問題。代碼也反復(fù)修改了,就是不顯示任何東西!!
現(xiàn)在請大神們幫忙看下是不是代碼的問題,如果代碼沒有問題,就是買到壞的顯示器了!
#include <reg52.h>
#include <string.h>
#define u8 unsigned char
#define u16 unsigned int
sbit RS = P2^0;//1:輸入內(nèi)容,0:輸入指令
sbit WRD = P2^1;//讀寫選擇:1讀0寫
sbit E = P2^2;//E在上升沿時并行數(shù)據(jù)被寫入顯示器
sbit PSB = P2^3;//模式切換:1并行,0串行
void delay5ms(void)//5ms延時函數(shù)
{
unsigned char a,b;
for(b=185;b>0;b--)
for(a=12;a>0;a--);
}
void LCD12864_CMD(u8 cmd)//向顯示器寫入命令
{
WRD=0;//寫入模式
RS=0;//寫入為命令
P1=cmd;//將命令輸送到并行數(shù)據(jù)線上
E=0;//提供一個上升沿脈沖
delay5ms();
E=1;
delay5ms();
E=0;
}
void LCD12864_DAT(u8 dat)//向顯示器寫入數(shù)據(jù)
{
WRD=0;//寫入模式
RS=1;//寫入為數(shù)據(jù)
P1=dat;//將命令輸送到并行數(shù)據(jù)線上
E=0;//提供一個上升沿脈沖
delay5ms();
E=1;
delay5ms();
E=0;
}
void LCD12864Init()//顯示器初始化
{
PSB=1;//選擇并行模式
LCD12864_CMD(0x30);//選擇基本指令集
LCD12864_CMD(0x0c);//打開顯示,關(guān)閉游標(biāo)
LCD12864_CMD(0x01);//清屏,地址歸零
}
void main()
{
LCD12864Init();//初始化
LCD12864_CMD(0x80);//設(shè)定顯示地址
LCD12864_DAT(‘A’);//左上角顯示一個A
}
2018/08/21更新:
首先謝謝各位的熱心幫助。
問題找到了,是顯示器硬件的原因,和買家溝通后了解到,產(chǎn)品出廠時默認(rèn)把背后的S和JP2觸電短接了,導(dǎo)致只能以串行方式通訊,而商品介紹里沒有說明白這一點,我用電烙鐵把焊點分開,現(xiàn)在能用了。
微信截圖_20180820113140.png (130.3 KB, 下載次數(shù): 19)
下載附件
2018-8-20 11:36 上傳
|
|