1. 程式人生 > >1602液晶顯示

1602液晶顯示

rac tab img data delay 命令 bit 顯示 數據

技術分享

液晶有1,2端為電源。15、16為背光源。為防止直接加5V電壓燒壞背光燈,在15腳串接一個10歐的電阻用於限流。

液晶3端為液晶對照度調節端。通過一個10k歐電位器接地來調節液晶顯示的對照度。

液晶的4端為液晶控制器寫數據/讀數據選擇端,接P3.5口

液晶5端為讀/寫選擇端。由於我們不從液晶讀取不論什麽數據,僅僅向其寫入命令和數據,因此此端始終選擇為寫狀態。即始終接地。

液晶 6端為使能信號,是操作時必需的信號,接單片機的P3.4口。


寫 操作時序

(1)通過RS確定是寫數據還是寫命令。寫命令包含使液晶的光標顯示/不顯示、光標閃爍/不閃爍、需/不須要移屏、在液晶的什麽位置顯示,等等

(2)讀/寫控制端的設置為寫模式。即低電平

(3)將數據或命令送達數據線上

(4)給E一個高脈沖將數據送入液晶控制器,完畢寫操作


一下是我寫的一個程序

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="GOOD GOOD STUDY!";
uchar code table1[]="DAY DAY UP ^_^!";
sbit lcden=P3^4;
sbit rs=P3^5;
sbit dula=P2^6;
sbit wela=P2^7;
uchar num;
void delay(unsigned char i)
{

unsigned char j,k;
for(j=i;j>0;j--)
for(k=90;k>0;k--);
}
void write_com(uchar com)
{
rs=0;//選擇寫指令
P0=com; //將要寫的命令送到數據總線上
delay(5);
lcden=1; //使能端給一高脈沖。由於初始化函數中已將lcd置為0
delay(5);
lcden=0; //完畢高脈沖
}
void write_data(uchar date)
{
rs=1; //寫數據
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}


void init()
{
dula=0;
wela=0;
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}


void main()
{
init();
write_com(0x80);
for(num=0;num<16;num++)
{
write_data(table[num]);
delay(5);
}
write_com(0x80+0x40);
for(num=0;num<15;num++)
{
write_data(table1[num]);
delay(5);
}
while(1);
}

通過 這個能夠寫一些簡單的時序了

看懂 時序圖


1602液晶顯示