欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
1602不顯示內容僅顯示白方塊
[打印本頁]
作者:
maisibei
時間:
2023-8-27 20:09
標題:
1602不顯示內容僅顯示白方塊
求助大佬幫忙看看,目的是做一個檢測光亮度的器件,目前檢測系統沒有問題,但原定的顯示部分(1602)無法正常顯示代碼如下
#include <REG52.H>
#include <math.h>
#include <stdio.h>
#include <INTRINS.H>
#define uchar unsigned char
#define uint unsigned int
#define DataPort P0
sbit LCM_RS=P2^7;
sbit LCM_RW=P2^6;
sbit LCM_EN=P2^5;
sbit k1=P1^5;
sbit led=P3^7;
sbit beep=P3^6;
sbit light = P1^1;
void delay(unsigned int k);
void InitLcd();
void WriteDataLCM(uchar dataW);
void WriteCommandLCM(uchar CMD,uchar Attribc);
void DisplayOneChar(uchar X,uchar Y,uchar DData);
void LCD_Clear();
void InitLcd()
{
WriteCommandLCM(0x38,1);
WriteCommandLCM(0x08,1);
WriteCommandLCM(0x01,1);
WriteCommandLCM(0x06,1);
WriteCommandLCM(0x0c,1);
}
void WaitForEnable(void)
{
DataPort=0xff;
LCM_RS=0;LCM_RW=1;_nop_();
LCM_EN=1;_nop_();_nop_();
while(DataPort&0x80);
LCM_EN=0;
}
void WriteCommandLCM(uchar CMD,uchar Attribc)
{
if(Attribc)WaitForEnable();
LCM_RS=0;LCM_RW=0;_nop_();
DataPort=CMD;_nop_();
LCM_EN=1;_nop_();_nop_();LCM_EN=0;
}
void WriteDataLCM(uchar dataW)
{
WaitForEnable();
LCM_RS=1;LCM_RW=0;_nop_();
DataPort=dataW;_nop_();
LCM_EN=1;_nop_();_nop_();LCM_EN=0;
}
void DisplayOneChar(uchar X,uchar Y,uchar DData)
{
Y&=1;
X&=15;
if(Y)X|=0x40;
X|=0x80;
WriteCommandLCM(X,0);
WriteDataLCM(DData);
}
void delay(unsigned int k)
{
unsigned int i,j;
for(i=0;i<k;i++)
{
for(j=0;j<121;j++)
{;}
}
}
void LCD_Clear(void)
{
WriteCommandLCM(0x01);
delay(20);
}
void main()
{
InitLcd()
LCD_Clear();
DisplayOneChar(0,1,'d');
DisplayOneChar(1,1,'a');
DisplayOneChar(2,1,'n');
led=0;
beep=1;
k1=0;
WriteCommandLCM(0x08);
while(1)
{
if(light==0)
{
led=1;
beep=0;
}
}
}
復制代碼
作者:
cnfloatleaf
時間:
2023-8-28 00:26
這種情況一般是LCD的連接線有問題,查一下接線對不對,程序中IO定義對不對,程序讀寫時序對不對
作者:
yxtao
時間:
2023-8-28 08:27
可以查查背光亮度調節,太亮可能會這樣
作者:
hange_v
時間:
2023-8-28 08:54
調節背光電阻試試
作者:
chxelc
時間:
2023-8-28 09:05
void InitLcd()
{
WriteCommandLCM(0x38,1);delay(50);
WriteCommandLCM(0x08,1);delay(50);
WriteCommandLCM(0x01,1);delay(50);
WriteCommandLCM(0x06,1);delay(50);
WriteCommandLCM(0x0c,1);delay(50);
}
初始化函數每句加個延時試一下。
作者:
楊雪飛
時間:
2023-8-28 15:23
這個程序能編譯?有錯誤沒有排除吧
作者:
楊雪飛
時間:
2023-8-28 15:42
81和95 行 WriteCommandLCM(0x08);在聲明函數的時候void WriteCommandLCM(uchar CMD,uchar Attribc)里邊這是有參數的
87 行的 InitLcd() 后邊應該有個“ ;”吧?
原程序復制過來的話,不知道在你的KEIL里可以生成HEX?不報錯嗎?
作者:
liucan2020
時間:
2023-8-28 15:55
確實少了; 但是顯示白塊 應該是有數據過來了 ,檢查硬件部分看看有沒有問題。再有這種現象 最好是拍個圖片上來。
作者:
cnfloatleaf
時間:
2023-8-28 17:55
如果是背光太亮,多少能看到些字符影子。
作者:
MarxLuyi
時間:
2023-8-29 10:15
調節背光滑動電阻
作者:
ltqc
時間:
2023-8-29 10:59
P0口有接上拉電阻嗎?
作者:
huaruolong
時間:
2023-8-29 23:37
void InitLcd()
{
WriteCommandLCM(0x38,1);
WriteCommandLCM(0x08,1);
WriteCommandLCM(0x01,1);
WriteCommandLCM(0x06,1);
WriteCommandLCM(0x0c,1);
}
void WaitForEnable(void)
{
DataPort=0xff;
LCM_RS=0;LCM_RW=1;_nop_();
LCM_EN=1;_nop_();_nop_();
while(DataPort&0x80);
LCM_EN=0;
}
void WriteCommandLCM(uchar CMD,uchar Attribc)
{
if(Attribc)WaitForEnable();
LCM_RS=0;LCM_RW=0;_nop_();
DataPort=CMD;_nop_();
LCM_EN=1;_nop_();_nop_();LCM_EN=0;
}
這2個函數有問題,液晶不能初始化。你從壇子里搜一下, while(1)
{
if(light==0)
{
led=1;
beep=0;
}
}while里面沒有顯示函數,就算能顯示,也一直顯示d,a,n三個字母。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1