12864液晶 介绍
本小節目錄:
??????????? 8.1,12864液晶的簡介
??????????? 8.2,12864液晶連接單片機原理圖?????????
??????????? 8.3,12864時序圖的分析和程序編寫
????? 液晶是非常能給人視覺享受的東西啦!例如手機的液晶屏,液晶電視,………,浪漫點的還有液晶燈,迷人的液晶鞋,炫酷的液晶手表,,,,,,等等!但不管怎么說,還是學會使用最簡單的液晶吧!
8.1.1)12864液晶的簡介
?常用的12864液晶模塊有黃綠背光的、藍色背光的,有帶/不帶字庫的,其控制芯片主要有如KS0108、T6863、ST7920等,這里本人用的為ST7920為控制芯片的YB12864-ZB液晶屏。但不管用什么類型的12864,其使用操作都大同小異!當然,如果會使用1602了,12864的使用也變得事半功倍啦!
????
1)關于12864液晶的說明:
???? 1,可顯示漢字及圖形,內置8192個中文漢字(16X16點陣)、128個字符(8X16點陣)及64X256點陣顯示RAM(GDRAM),顯然比1602高級!
???? 2,可以選擇8位并行或者4位串行操作
???? 3,可以顯示128列× 64行內容,可實現文字與圖形混合顯示功能、可以自由的設置光標、顯示移位功能、垂直畫面旋轉功能、反白顯示功能、休眠模式等
??
??????????????????????????? 圖1 ?12864液晶實物圖
?
?
2)12864液晶接口說明:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖2 12864液晶接口圖
簡介上圖:
??? 1,引腳3(VL):一般接一個103的電位器,用于調節液晶的顯示亮度。
??? 2,引腳15(PSB):高電平時選擇并口,低電平時選擇串口
3,引腳16(NC):空腳即不需要接任何管腳即可。
?
3)12864狀態字說明
表8-1 狀態字分布表
| STA7? D7 | STA6 D6 | STA5 D5 | STA4 D4 | STA3 D3 | STA2 D2 | STA1 D1 | STA0 D0 | ||
| STA0~STA6 | 當前地址指針的數值 | - | |||||||
| STA7 | 讀/寫操作使能 | 1:禁止 0:使能 | |||||||
| ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
??? 嚴格來說,對控制器每次進行讀寫操作之前,都必須進行讀寫檢測,確保STA7為0。也即一般程序中所謂的判斷忙操作。
?
8.1.2)12864指令說明
? 表8-2基本指令表
| 指令名稱 | 指令碼 | 指令說明 | |||||||
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | ||
| 清屏 | L | L | L | L | L | L | L | H | 清屏:1、數據指針清零 2、所有顯示清零 |
| 歸位 | L | L | L | L | L | L | H | * | AC = 0,光標、畫面回HOME位 |
| 輸入方式 設置 | L | L | L | L | L | H | ID | S | ID=1→AC自動增一; ID=0→AC減一 S=1→畫面平移; S=0→畫面不動 |
| 顯示開 關控制 | L | L | L | L | H | D | C | B | D=1→顯示開;D=0→顯示關 C=1→游標顯示;C=0→游標不顯示 B=1→游標反白;B=0→光標不反白 |
| 移位控制 | L | L | L | H | SC | RL | * | * | SC=1→畫面平移一個字符; SC=0→光標 R/L=1→右移;R/L=0→左移 |
| 功能設定 | L | L | H | DL | * | RE | * | * | DL=0→8位數據接口; DL=1→4位數據接口 RE=1→擴充指令; RE=0→基本指令 |
| 設定 CGRAM 地址 | L | H | A5 | A4 | A3 | A2 | A1 | A0 | 設定CGRAM地址到地址計數器(AC),AC范圍為00H~3FH需確認擴充指令中SR=0 |
| 設定 DDRAM 地址 | H | L | A5 | A4 | A3 | A2 | A1 | A0 | 設定DDRAM地址計數器(AC) 第一行AC范圍:80H~8FH 第二行AC范圍:90H~9FH |
?
?
表8-3擴充指令表
| 指令名稱 | 指令碼 | 指令說明 | |||||||
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | ||
| 待命模式 | L | L | L | L | L | L | L | H | 進入待命模式后,其他指令都可以結束待命模式 |
| 卷動 RAM 地址選擇 | L | L | L | L | L | L | H | SR | SR=1→允許輸入垂直卷動地址 SR=0→允許輸入IRAM地址(擴充指令)及設定CGRAM地址 |
| 反白顯示 | L | L | L | L | L | H | L | R0 | R0=1→第二行反白;R0=0→第一行反白(與執行次數有關) |
| 睡眠模式 | L | L | L | L | H | SL | L | L | D=1→脫離睡眠模式; D=0→進入睡眠模式 |
| 擴充功能 | L | L | H | DL | * | RE | G | * | DL=1→8位數據接口; DL=0→4位數據接口 RE=1→擴充指令集; RE=0→基本指令集 G=1→繪圖顯示開; G=0→繪圖顯示關; |
| 設定 IRAM地址 卷動地址 | L | H | A5 | A4 | A3 | A2 | A1 | A0 | SR=1→A5~A0為垂直卷動地址 SR=0→A3~A0為IRAM地址 |
| 設定 繪圖RAM 地址 | H | L | L | L | A3 | A2 | A1 | A0 | 垂直地址范圍:AC6~AC0 水平地址范圍:AC3~AC0 |
| A6 | A5 | A4 | A3 | A2 | A1 | A0 | |||
?
?
8.1.3)? 12864顯示坐標關系
1)漢字顯示坐標
表8-4漢字顯示坐標地址表
| 行名稱 | 列地址 | |||||||
| 第一行 | 80H | 81H | 82H | 83H | 84H | 85H | 86H | 87H |
| 第二行 | 90H | 91H | 92H | 93H | 94H | 95H | 96H | 97H |
| 第三行 | 88H | 89H | 8AH | 8BH | 8CH | 8DH | 8EH | 8FH |
| 第四行 | 98H | 99H | 9AH | 9BH | 9CH | 9DH | 9EH | 9FH |
?
2)繪圖坐標分布圖
? ? ?
?????????????????????? 圖3 12864液晶繪圖顯示坐標
水平方向有128個點,垂直方向有64個點,在更改繪圖RAM時,由擴充指令設置GDRAM地址,設置順序為先垂直后水平地址(連續2個字節的數據來定義垂直和水平地址),最后是2個字節的數據給繪圖RAM(先高8位,后低8位)。
最后總結一下12864液晶繪圖的步驟,步驟如下:
1) 關閉圖形顯示,設置為擴充指令模式。
2) 寫垂直地址,分上下半屏,地址范圍為:0~31。
3) 寫水平地址,兩起始地址范圍分別為:0x80~0x87(上半屏)、0x88~0x8F(下半屏)。
4) 寫數據,一幀數據分兩次寫,先寫高8位,后寫低8位。
5) 開圖形顯示,并設置為基本指令模式。
?
在此說明一點,也是好多新人模糊的地方。ST7920可控制256*32點陣(32行256列),而12864液晶實際的行地址只有0-31行,12864液晶的32-63行是從0-31行的第128列劃分出來的。也就是說12864的實質是“256×32”,只是這樣的屏“又長又窄”,不適用,所以將后半部分截下來,拼裝到下面,因而有了上下兩半屏之說。再通俗點說第0行和第32行同屬一行,行地址相同;第1行和第33行同屬一行,以此類推。
??? 如果還不明白,暫時不需要深究,當會用的時候,自然而然就會明白了!
?
8.2)12864液晶連接單片機原理圖
?????????????????? 圖4? 麥光單片機開發板中液晶連接單片機圖
?
有些初學者可能會問? 為什么電路圖是這樣連接的,讀者可以對照上圖2即知
接口說明:
1)液晶1、2為電源接口; 19、20為背光電源。
2)? 液晶3端為液晶對比度調節端,其中連接一個10KΩ電位器來調節液晶對比度第一次使用時,在液晶上電狀態下,調節至液晶上面一行顯示出黑色小格為止。
3)? 液晶4端為向液晶控制器寫數據、命令選擇端,接單片機的P3.5口。
4)液晶5端為讀、寫選擇端,接單片機的P3.4口。
5)液晶6端為使能信號端,接單片機的P3.3口。
6)液晶15端為串(L)、并(H)口選擇端,接單片機的P3.2口。
7)液晶16、18為空管腳口,在硬件上不做連接。
8)液晶7~14為8位數據端口,依次接單片機的P0口。
?
8.3,12864時序圖的分析和程序編寫
這里本人只介紹并行操作,串行操作基本留給感興趣的讀者去探索吧!
?
1)?并行寫操作時序圖
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖5? 12864寫操作時序圖
?
相信看懂1602的人都很容易知道時序圖了,在此不多說
/*************************************************
函數功能:??? 寫命令數據到LCD
入口參數:??? Cmd
出口參數:??? ? void
RS=L; RW=L, E=高脈沖,D0~D7=指令碼
**************************************************/
void Write_LCD_Command(Uchar8 Cmd)?? ? // 寫命令
{
?? LCD_Busy_Wait();?? // 忙檢測
?? LCD_Rs = 0; ?
? LCD_Rw = 0;
? LCD_En = 0;
?? P0 = Cmd; ? ? ? ?
? ?Delay_1ms(5);
?? LCD_En = 1;
?? Delay_1ms(5);
?? LCD_En = 0;
}
/*************************************************
函數功能:??? 寫數據
入口參數:??? Data
出口參數:??? void
RS = H, RW = L, E= 高脈沖, D0~D7= 數據。
*************************************************/
void Write_LCD_Data(Uchar8 Date)??? ? // 寫數據?
{
??? LCD_Busy_Wait();?? // 忙檢測
??? LCD_Rs = 1;
?????? LCD_Rw = 0;
?????? LCD_En = 0;
?????? P0 = Date;
?????? Delay_1ms(5);
?????? LCD_En = 1;
?????? Delay_1ms(5);
?????? LCD_En = 0;
}
?
以上程序的說明基本跟1602液晶是一樣的
/*******************************************************
函數功能:行列(位置)選擇,設定顯示位置
入口參數:X(行)、Y(列)
出口參數:無
******************************************************/
void lcd_pos(Uchar8 X, Uchar8 Y)
{
??? Uchar8 pos;
?????? if(X ==1)? {X = 0x80;}????????????? // 第一行
?????? else if(X == 2) {X = 0x90;}? // 第二行
?????? else if(X == 3) {X = 0x88;}? // 第三行
?????? else if(X == 4) {X = 0x98;}? // 第四行
?????? pos = X+Y;
?????? Write_LCD_Command(pos);??????? // 顯示地址
}
由于程序太長,為了更好編輯,本人已將剩下程序上傳,需看可下載。
?
本人見過有些程序中沒有忙檢測也是可以的,但個人一直認為:加上忙檢測LCD_Busy_Wait()是非常有必要的,為什么?1,對于電子學習的一種嚴謹,培養這種意識吧 ?2,為日后我們使用更大,更復雜液晶的時候避免出現不必要的麻煩呀!3,一顆不嚴謹,不靠譜的心,如何給女人安全感呀?嘿嘿………..
? ?
怎么說液晶也算是有點嬌氣的東東啦!并且很多液晶價格蠻貴的!還是建議看看佳佰科技有關于液晶使用注意事項吧:
?
1.處理
(1)要避免在處理機械振動和對模塊施加外力,都可能使屏不顯示或損壞。???
(2)不能用手或堅硬工具或物體接觸、按壓、磨擦顯示屏,否則屏上的偏光片被物體劃壞。
(3)如果屏破裂液晶材料外漏,液晶可以通過空氣被吸入,而且要避免液晶與皮膚接觸,如果接,觸應立即用酒精沖洗,然后再用水徹底沖洗。
(4)不能使用可溶有機體來清洗顯示屏。因為這些可溶的溶劑對偏光片不利,清洗顯示屏時,可
用棉花蘸少量石油苯輕輕擦拭或用透明膠帶粘起臟物。
?(5)要防止高壓靜電產生的放電,將損壞模塊中的 CMOS 電路。
(6)不能把模塊放在溫度高的地方,尤其不能長時間放在濕度大的地方,最好把模塊放在溫度為
0℃-35℃,濕度低于 70%的環境中。
(7)模塊不能貯存在太陽直射的地方。
?
2.操作
?(1)當電源接通時,不能組裝或拆卸模塊。
(2)在電源電壓的偏差、輸入電壓的偏差及環境溫度等最壞條件下,也不能超過最大的額定值,
否則將損壞 LCD 模塊。
?
?
總結
以上是生活随笔為你收集整理的12864液晶 介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 毕业生写论文必备!!超详细讲解参考文献格
- 下一篇: mysql自定义序号_mysql序列号生