|
|
本帖最后由 明日香 于 2020-12-30 10:41 編輯
我用LCD1602連接一個(gè)單片機(jī)A顯示數(shù)據(jù),是一個(gè)最簡(jiǎn)單的LCD程序,但LCD1602只發(fā)亮卻沒(méi)有顯示任何數(shù)據(jù)
這是這個(gè)單片機(jī)的電路圖:需要讓P37=0才能打開(kāi)背光;
捕獲.PNG (22.04 KB, 下載次數(shù): 36)
下載附件
2020-12-30 10:36 上傳
但相同的程序,我用另一塊單片機(jī)B卻可以正常顯示,請(qǐng)問(wèn)這是為什么?出了什么問(wèn)題呢?
這兩個(gè)開(kāi)發(fā)板的區(qū)別就是開(kāi)發(fā)板A需要讓P37=0打開(kāi)背光,而開(kāi)發(fā)板B是簡(jiǎn)單的學(xué)習(xí)版,不需要打開(kāi)背光
我感覺(jué)是這塊開(kāi)發(fā)板比較特殊,是不是少寫(xiě)了一些程序?求大家?guī)兔纯矗更c(diǎn)下,謝謝。
這是程序:
#include <reg52.h>
#include <intrins.h>
#include <stdlib.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
sbit E=P3^4; //1602使能引腳
sbit RW=P3^6; //1602讀寫(xiě)引腳
sbit RS=P3^5; //1602數(shù)據(jù)/命令選擇引腳
sbit BL=P3^7; //背光
/*sbit E=P2^7; //1602使能引腳
sbit RW=P2^5; //1602讀寫(xiě)引腳
sbit RS=P2^6;*/
uchar code table[]="1234";//要顯示的數(shù)據(jù)
void lcd_delay(uint ms)
{
uint i,j;
for(i=ms;i>0;i--)
for(j=110;j>0;j--);
}
void wcmd(uchar del)//寫(xiě)命令函數(shù)
{
RS=0;//命令選擇端
RW=0;//寫(xiě)命令
lcd_delay(1000);
P0=del; //把命令字寫(xiě)入
lcd_delay(100);
E=1;//使能
E=0;
}
void lcd1602_writedata(uchar dat)//寫(xiě)數(shù)據(jù)函數(shù)
{
RS=1;//數(shù)據(jù)選擇端
RW=0;//寫(xiě)命令
lcd_delay(1000);
P0=dat; //把要顯示的數(shù)據(jù)寫(xiě)入
lcd_delay(1000);
E=1;
E=0;
}
void lcd1602_init()//LCD初始化
{
BL=0; //打開(kāi)背光
wcmd(0x38);
lcd_delay(1000);
wcmd(0x0c);
lcd_delay(1000);
wcmd(0x06);
lcd_delay(1000);
wcmd(0x01);
}
void main()
{
uchar m=0;
lcd1602_init();
lcd_delay(100);
wcmd(0x80);
for(m=0;m<4;m++)
{
lcd1602_writedata(table[m]);
}
while(1);
}
|
|