1. 程式人生 > >微控制器 液晶顯示實驗 (原理圖加程式碼)

微控制器 液晶顯示實驗 (原理圖加程式碼)

本實驗回顧:是關於字元型LCD的顯示原理的學習以及掌握字元型LCD顯示字元的用法。

1.使用LCD顯示兩行字元,第一行顯示“hello + 英文名字”,第二行顯示時間(正確的年月日)

!注意,這裡使用1602是無法顯示漢字的,只能顯示大小寫和阿拉伯數字。

(萬年曆實驗之後有空再更新)

-------------------------------------------------------------------------分割線

原理圖附上:


這裡有幾個主要注意:

1.如果D0-D7要接在P0口的話,必須接上拉電阻,否則模擬時會出現灰色的電平,然而直接接P2口便不需要上拉電阻。51晶片一直要注意這個問題。

2.本實驗用到的LM016L雖然只有14個引腳,而實物是16個,但是這沒什麼關係,就少了個背光電池的引腳,其他功能一樣,也就是模擬用LM016L就是1602。

3.晶片上E(使能端)直接接P3.4,RS接P3.5,RW可以直接接地,因為是讀寫控制端,然而本實驗不需要從液晶屏讀取什麼,所以直接低電平即可。VDD接電源,VSS接地,D0-D7接P2。

效果圖如下:


程式碼如下:

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int 
uchar code table[]="HELLO HONORWH";
uchar code table1[]="2018 5 6";
sbit dula=P2^6;
sbit wela=P2^7;
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit rw=P3^6;
uchar num;
void delayms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=0;y<110;y++);
}
void write_com(uchar com)
{
lcdrs=0;
P2=com;
delayms(5);
lcden=1;
delayms(5);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;
P2=date;
delayms(5);
lcden=1;
delayms(5);
lcden=0;
}
void init()
{
dula=0;
wela=0;
lcden=0;
rw=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void main()
{
init();
write_com(0x80);
for(num=0;num<13;num++)
{
write_data(table[num]);
delayms(5);
}
write_com(0x80+0x40);
for(num=0;num<8;num++)
{
write_data(table1[num]);
delayms(5);
}
while(1);

}

---------------------------------------------------------分割線

博主當做簡單複習,不喜勿噴。

學習內容根據《51微控制器C語言程式設計》。