|
本帖最后由 Lzxhmxy1839 于 2021-6-5 10:37 編輯
本人自己設計的最小系統板,還沒跑過led燈,但是仔細檢查了,板子應該沒問題。然后接lcd屏幕,第三腳的v0我接的是2k的電位器,之前沒接電位器,就只是亮背光,現在接了2k的就是顯示一排黑塊,p0口的上拉排阻接法正確,望各位大佬幫忙解決一下
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="Welcome"; //單字符用單引號 多字符用雙引號
uchar code table1[]="Harbin CHINA";
sbit lcden=P1^0; //位定義使能端
sbit lcdrs=P1^1; //數據命令選擇端
//sbit dula=P2^6; //申明U1鎖存器的鎖存端
//sbit wela=P2^7; //申明U2鎖存器的鎖存端
uchar num;
void delay(uint z) //延時函數
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com) //寫命令函數
{
lcdrs=0; //寫指令rs先拉低 0是寫命令模式
P0=com; //給P0口送的指令碼
delay(50); //延時
lcden=1; //使能端置1
delay(50);
lcden=0; //拉低 依據時序圖
}
void write_data(uchar date) //寫數據函數
{
lcdrs=1; //寫數據rs拉高 1是寫數據模式
P0=date; //P0口送數據
delay(50);
lcden=1; //使能端置1
delay(50);
lcden=0; //使能端置0
}
void init() //初始化函數
{
//dula=0; //關閉段選
//wela=0; //關閉位選
lcden=0;
delay(500); //使能端置0
write_com(0x38); //顯示設置指令碼 顯示模式設置
delay(500);
write_com(0x38); //顯示設置指令碼 顯示模式設置
delay(500);
write_com(0x38); //顯示設置指令碼 顯示模式設置
delay(500);
write_com(0x38); //顯示設置指令碼 顯示模式設置
delay(500);
write_com(0x0e); //顯示開/關光標設置 0f是帶黑塊和光標一起閃爍 0e是只有一個__而且不閃爍 0c是后面什么都沒有
write_com(0x06); //地址指針自動加1 還有整屏顯示左移
write_com(0x01); //顯示清零 數據指針清零
write_com(0x80+0x10); //設置數據指針位置 指向第一個
}
void main()
{
init();
for(num=0;num<7;num++)
{
write_data(table[num]);
delay(5);
}
// write_com(1);
write_com(0x80+0x50);
for(num=0;num<12;num++)
{
write_data(table1[num]);
delay(5);
}
for(num=0;num<16;num++)
{
write_com(0x18);
delay(200);
}
while(1);
}
|
|