娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

1、1602液晶硬件接口介紹

1602液晶技術參數

說明:(1) 工作電流:在5v工作電壓下液晶的工作電流為2mA,僅僅指液晶,不包括背光。


1602液晶接口原理圖及引腳功能

  • 接口原理圖

引腳功能

說明:(1) 引腳3:液晶顯示偏壓信號。用來調整顯示黑點與不顯示黑點的對比度。(2) 4引腳:數據命令選擇引腳。置高電平1,為讀寫數據,置低電平0,為讀寫命令。(3) 5引腳:讀寫選擇引腳。置高電平1,為讀數據或命令,置低電平0,為寫數據或命令。(4) 6引腳:使能信號引腳。高電平有效,低電平無效。(5) 7~14引腳:8個數據引腳。因為總電流不大,直接接到PO口上,不用通過74HC245。


2、1602的讀寫時序介紹

液晶內部自帶80字節的顯示RAM,用來存儲發送的數據,內部RAM如下圖

說明:(1) 1603字符液晶是顯示字符的,字符要跟ASCII碼字符表對應,比如液晶顯示字符’1’, 就要向對應地址發送數據字符‘1’或十六進制31,或十進制49。(2) 第一行的地址0x00 ~ 0x27,第二行的地址0x40 ~ 0x67。第一行的0x00 ~ 0x0F與液晶第一行16個字符顯示地址對應。第二行的0x40 ~ 0x4F與液晶第二行16個字符顯示地址對應.每行多出來的地址用于顯示移動字幕。


1602液晶基本操作有四個時序,理解,運用1602液晶查閱即可


讀狀態:RS = L(0), R/W = H(1),E= H(1);

單片機讀1602液晶的狀態,是通過讀取液晶里的狀態字字節內容,來了解液晶內部情況,液晶狀態字字節如下表12-5,

說明:(1) 狀態字節有八位,最高位表示當前液晶是否在 ‘忙’ (給液晶寫數據或命令,液晶需先保存到緩存,然后再寫到液晶內部寄存器或RAM中,這個需要一定時間),1表示液晶在忙,在忙時禁止讀者讀寫數據或命令操作,0則可以。低七位表示當前數據指針的位置,一般低七位很少用到。(2) 單片機讀外設狀態時,需要保證接收狀態信息的引腳為高電平。所以在讀取液晶狀態時,P0口要先保證為高電平。(3) 因其他外設和液晶都共用P0口總線,若讀完液晶狀態仍保持液晶E使能信號引腳為高電平,則液晶會繼續輸出狀態值,因狀態值在P0口輸入,將會干擾到其他外設的P0口總線的數據,所以讀完液晶狀態要拉低E使能信號引腳來釋放P0總線。

以上說明,在單片機讀取液晶狀態程序部分體現,見下程序。


#define LCD1602_DB  P0

sbit LCD1602_RS = P1^0;//引腳聲明

sbit LCD1602_RW = P1^1;

sbit LCD1602_E = P1^5;


//等待液晶準備好

void  LcdWaitReady()

{

unsigned char  sta;


LCD1602_DB = 0xFF;

LCD1602_RS = 0;

LCD1602_RW = 1;


do{

LCD1602_E = 1;

sta = LCD1602_DB; //讀取狀態字

LCD1602_E = 0;//bit7等于1表示液晶正在忙,重復檢測直到其等于0為止

}while(sta & 0x80);

}


讀數據:RS = H(1),RW = H(1),E = H(1), 讀數據不常用。


寫指令:RS = L(0),RW = L(0),D0 ~ D7 = 指令碼,E = 高脈沖。

說明:(1) E = 高電平:E使能引腳先從低到高,再從高到低,形成一個高脈沖。


寫數據:RS = H(1),RW = L(0),D0 ~ D7 = 指令碼,E = 高脈沖

說明:(1) 液晶內部有一個指針,它指向哪里,我們寫的數據就會送到相應的那個地址。


3、1602液晶的指令介紹

單片機給液晶寫指令有5種設置,理解,查閱1602液晶手冊


顯示模式設置

說明:固定0x38即可


顯示開/關以及光標設置

數據指針及移動設置

清屏指令

RAM地址設置指令

說明:該指令最高位為1,低七位為RAM地址,十六進制0x80+地址碼,在程序中用 (0x80 | 地址碼)來表示該指令。在讀寫程序中先設置地址,然后進行數據的讀寫操作。


4、1602液晶簡單示例

//160LCD顯示指定字符

#include


#define Lcd1602_DB P0

sbit Lcd1602_RS = P1^0;

sbit Lcd1602_RW = P1^1;

sbit Lcd1602_E = P1^5;


void InitLcd1602();

void Lcdwritecmd(unsigned char cmd);

void LcdWaitReady();

void LcdShowstr(unsigned char x, unsigned char y, unsigned char *str);

void Lcdcursor(unsigned char x, unsigned char y);

void LcdWritedat( unsigned char str);


void main()

{

InitLcd1602();

LcdShowstr(5, 0, "L Z Y");

LcdShowstr(3, 1, "come on!!!");

while(1);

}

//初始化1602液晶

void InitLcd1602()

{

Lcdwritecmd(0x38);//16*2顯示,5*7點陣,8位數據口

Lcdwritecmd(0x0C); //顯示器開,光標關閉

Lcdwritecmd(0x06);//文字不動,地址自動加+1

Lcdwritecmd(0x01);//清屏

}

 //向LCd1602寫入一個一字節命令,cmd為待寫入命令值

void Lcdwritecmd(unsigned char cmd)

{

LcdWaitReady();

Lcd1602_RS = 0;

Lcd1602_RW = 0;

Lcd1602_DB = cmd;

Lcd1602_E = 1;

Lcd1602_E = 0;

}

//等待液晶準備好

void LcdWaitReady()

{

unsigned char sta;

Lcd1602_DB = 0xFF;

Lcd1602_RS = 0;

Lcd1602_RW = 1;

do{

   Lcd1602_E = 1;

   sta = Lcd1602_DB;//讀取狀態字

   Lcd1602_E = 0;

}while(sta & 0x80);//bit7等于1表示液晶正忙,重復檢測直到其等于0為止

}

//在液晶上顯示字符串,(x,y)為對應屏幕上的起始坐標,str為字符指針

void LcdShowstr(unsigned char x, unsigned char y, unsigned char *str)

{

Lcdcursor(x, y);//設置起始地址

while(*str != '

主站蜘蛛池模板: 阜城县| 海原县| 鄂州市| 修文县| 桓台县| 临江市| 青铜峡市| 滕州市| 沾益县| 昆山市| 什邡市| 朝阳县| 陆良县| 苗栗县| 九龙坡区| 嘉善县| 绥阳县| 措勤县| 磴口县| 双流县| 曲靖市| 淅川县| 泾阳县| 西乡县| 新和县| 讷河市| 永泰县| 肇庆市| 石泉县| 长宁县| 靖边县| 苍溪县| 汉阴县| 都江堰市| 辽宁省| 重庆市| 海口市| 武川县| 东兴市| 东乡族自治县| 梁河县|