小白學1602字元點陣型LCD液晶顯示模組

2021-08-17 12:21:02 字數 3581 閱讀 8206

我們都知道,液晶顯示已經深入我們的日常的生活之中,液晶顯示器的英文名:lcd,而它經常被用於顯示動畫,比如影視,在工業上,lcd被經常用於狀態的顯示視窗。

對於液晶的控制,我們第一步需要知道液晶的構造,液晶全稱是「液態晶體」,介於固態和液態之間,我們一般常用的液晶形態是向列型液晶,分子形狀為細長棒形,或者稱之為桿狀。在不同電流電場的作用下,液晶分子會做規則旋轉呈90度排列。即在上下兩片玻璃之間旋轉,這樣就會改變透射率和反射率。

第二步就需要知道1602顯示模組的介面。本次的1602液晶顯示之所以叫1602,是因為它可以顯示2行,每行顯示16個點陣字元。再仔細的分下去就是乙個點陣字元的大小為5*8點陣的圖形字元(你可以仔細數一下液晶顯示屏)。它帶有字型檔,能顯示ascii字元。下圖是1602lcd模組的顯示圖:

對於1602lcd的引腳說明:

v0:接可調電阻,可以調節液晶顯示的對比度(一般俗指的就是亮度),若直接接地,對比度最高。

rs:資料或者命令的選擇端,通俗的講就是資料的讀寫和指令的寫入。當微控制器要往lcd模組寫指令的時候,應使rs為低電平(從**下達指令給地方,地方要擺好低姿態),同樣當微控制器從lcd模組讀取狀態時,rs也為低電平(從**收取地方報告時,地方要以低姿態上書)。但是當微控制器要寫入資料給lcd時,應使rs為高電平(地方要高調的完成**下達的年度計畫)。微控制器一般不會用於對lcd讀取資料。

r/w:讀寫控制端。r/w為高電平時,表示讀;r/w為低電平時,表示寫(地方放低姿態)。

e:lcd模組的使能訊號控制端。

微控制器需要通過rs,rw和e這三端來控制lcd模組。

d0-d7:8位資料匯流排,三態雙開(高電平狀態、低電平狀態、高阻狀態[既懸空])

blk:需要背光時,bla串接乙個限流電阻後接vcc,blk接地

blk:背光接地。

寫指令   輸入:rs=l,r/w=l,e=下降沿脈衝,db0-db7=指令碼

輸出:無

讀狀態   輸入:rs=l,r/w=h,e=h(l為低電平,h為高電平),

輸出:db0-db7=狀態字

寫資料   輸入:rs=h,r/w=l,e=下降沿脈衝,db0-db7=資料

輸出:無

讀資料   輸入:rs=h,r/w=h,e=h(l為低電平,h為高電平),

輸出:db0-db7=資料

對於相關的指令碼,可以通過lcd資料手冊查詢初始lcd的狀態設定,既通過設定指令碼(8個指令碼d0-d7)來設定其狀態,可以通過替換程式當中的lcd初始化中的小括號裡面的16進製制數值改變初始狀態。

一般來說:在lcd模組內部頻率為270khz(一些廠家為250khz),而大部分的指令執行時間需要37us(40us)左右,只有清屏和ddram資料位址指標ac清零(或者說歸位)指令執行時間需要1.52ms(1.64ms)左右,因此延時值可以取大點如5ms,保證操作可靠,以滿足要求。

下面咱們就程式來說一下:

lcddisplay.c

#include"stm32f10x_heads.h"

//write_command_lcm對lcd1602寫指令

voidwrite_command_lcm(u8 com)

gpio_resetbits(gpiod,gpio_pin_5);//rw=0,寫操作

gpio_resetbits(gpiod,gpio_pin_4);//rs=0,指令

gpio_write(gpiod,com);

gpio_resetbits(gpiod,gpio_pin_6);//e=0,形成寫脈衝

delay_nms(5);

gpio_setbits(gpiod,gpio_pin_6);  //e=0,形成寫脈衝

delay_nms(5);

gpio_resetbits(gpiod,gpio_pin_6); //e=0,下降沿寫

//write_data_lcm對lcd1602寫資料

void write_data_lcm(u8info)

gpio_resetbits(gpiod,gpio_pin_5);//rw=0,寫操作

gpio_resetbits(gpiod,gpio_pin_6);//e=0,形成寫脈衝

gpio_write(gpiod,info);

gpio_setbits(gpiod,gpio_pin_4);//rs=1,指令

delay_nms(5);

gpio_setbits(gpiod,gpio_pin_6);  //e=1,形成寫脈衝

delay_nms(5);

gpio_resetbits(gpiod,gpio_pin_6); //e=0,下降沿寫

//lcm_init(),對lcd1602初始化

voidlcm_init(void)//lcm初始化

write_command_lcm(0x38);//顯示模式設定

write_command_lcm(0x08);//關閉顯示

write_command_lcm(0x01);//顯示清屏

write_command_lcm(0x06);//顯示游標移動位置

write_command_lcm(0x0c);//顯示開及游標設定

// set_xy_lcm() 對lcd1602設定顯示座標位置,既開始顯示資料時的位置

voidset_xy_lcm(unsigned char x,unsigned char y)

unsigned char address;

if(x==0) //在lcd的顯示屏的第一行顯示資料

address=0x80+y;

if(x==1) //在lcd的顯示屏的第二行顯示資料

address=0xc0+y;

write_command_lcm(address);

//display_list_char()按指定的位置顯示一串字元

voiddisplay_list_char(unsigned char x,unsigned char y,unsigned char *s)

set_xy_lcm(x,y);

while(*s)

write_data_lcm(*s)

s++;

//主程式執行

int main()

lcm_init();

display_list_char(0,0,"fo.xi.90s");

display_list_char(1,0,"guan,zhu,wo");

while(1);

下面是lcd的.h檔案

#ifndef __lcd_h

#define __lcd_h    

#include"sys.h"

#define rspcout(6)

#define enpcout(8)

void write_command_lcm(u8info);

void write_data_lcm(u8info);

void lcm_init (void);

需要將上面的程式慢慢看一下,方可與之前所描述的文字相對應,進行理解,可能說的有一些錯誤的地方,希望能提醒批改。

2 5 字元型資料(字元)

字元型資料就是字元。字元型資料是用單引號括起來的乙個字元。例如 a b 都是合法字元型資料。在c語言中,字元型資料有以下特點 轉義字元是一種特殊的字元。轉義字元以反斜線 開頭,後跟乙個或幾個字元。轉義字元具有特定的含義,不同於字元原有的意義,故稱 轉義 字元。例如,在前面各示例中printf函式的格...

GB18030字元編碼格式和點陣字型檔

中國國bai家標準gb2312就是簡體中文字符集 台灣計算機界使用的big5碼是繁體字中文字符集 日本的jis x0208標準是日文漢字字符集 南韓的ks c5601是南韓漢字字符集。ansi 美國國家標準學會 推出了一種雙位元組編碼的標準,將上述三國四方的字符集加以統一,稱為 ansi 編碼。在簡...

1145 字串p型編碼

給定乙個完全由數字字元 0 1 2 9 構成的字串str,請寫出str的p型編碼串。例如 字串122344111可被描述為 1個1 2個2 1個3 2個4 3個1 因此我們說122344111的p型編碼串為1122132431 類似的道理,編碼串101可以用來描述1111111111 0000000...