文章目錄
- 為了御蘿的姐姐,咳咳,為了擴展知識我怎么只能用弟弟那樣小的液晶呢,我不應該大一點嗎
- ==聯動文章 [身價過億的冰山御蘿對小碼農說你液晶能顯示嗎](https://blog.csdn.net/qq_42832862/article/details/120619604?spm=1001.2014.3001.5501)==
- LCD12864簡介
- 主控芯片ST7920的功能是
- 驅動芯片ST7921的功能是
- 原理圖
- LCD12864時序圖
- 并行
- 寫指令函式LCD12864_Write_Cmd
- 寫資料函式LCD12864_Write_Data
- 12864 字符型 LCD 的寫操作程序(W R/W 接地 為低電平):
- 串行(我們沒用到,想用的自己分析這個時序圖就行了)
- ==LCD12864的命令,CGRAM,DDRAM,DDROM,GDRAM==
- 初始化函式LCD12864_Init
- image-20211005145620692
- ==為了看初始化咋樣,我們顯示一個字符看看,就暫且在初始化下面寫,不能顯示就看看代碼哪錯了==
- 中文錯誤顯示
- 中文正確顯示
- 為了方便顯示漢字,我們創建漢字快取陣列(當然下面并不是方便的操作,但是為了讓初學者明白原理,這是最好的操作)
- ==很重要的東西,顯示漢字的缺陷==
- 液晶顯示服務
- 液晶資料分配
- 12864液晶的各種存盤器關系圖
- ==內部電路的結構==
- ==顯示屏上面的實際位置==
- 1.液晶初始化操作
- 2.直接顯示英文和漢字的操作
- 3.顯示自定義字符的操作
- ==聯動文章 [身價過億的冰山御蘿對小碼農說你液晶能顯示嗎](https://blog.csdn.net/qq_42832862/article/details/120619604?spm=1001.2014.3001.5501)==
為了御蘿的姐姐,咳咳,為了擴展知識我怎么只能用弟弟那樣小的液晶呢,我不應該大一點嗎
聯動文章 身價過億的冰山御蘿對小碼農說你液晶能顯示嗎
LCD12864簡介
變態的LCD12864液晶屏,背面3個COB牛屎堆,一個主控芯片ST7920,另外兩個移位芯片ST7921

主控芯片ST7920的功能是
1.與我們的單片機并行通訊
2.字庫ROM,CGROM,DDRAM
3.行掃描COM0-COM31
4.列掃描SEG0-SEG63
5.串行方式發送資料到兩片ST7921驅動芯片
驅動芯片ST7921的功能是
1.接收來自ST7920的串行信號,轉化成并口驅動電壓
2.根據信號要求,兩片芯片分別驅動SEG64-SEG159,SEG160-SEG255

原理圖

LCD12864時序圖
并行

寫指令函式LCD12864_Write_Cmd
void LCD12864_Write_Cmd(u8 add)//寫命令,因為操作的是地址
{
LCD12864_RS = 0;
LCD12864_RW = 1;
LCD12864_E = 0;
LCD12864_RW = 0;
LCD12864_Delay(3);
LCD12864_E = 1;
LCD12864_DB = add;
LCD12864_E = 0;
}
寫資料函式LCD12864_Write_Data
void LCD12864_Write_Data(u8 Dat)//寫資料
{
LCD12864_RS = 1;
LCD12864_RW = 1;
LCD12864_E = 0;
LCD12864_RW = 0;
LCD12864_Delay(3);
LCD12864_E = 1;
LCD12864_DB = Dat;
LCD12864_E = 0;
}
這些寫指令寫資料函式和1602一樣的因為他們的時序圖是一樣的,因此程式也是一樣的
12864 字符型 LCD 的寫操作程序(W R/W 接地 為低電平):
- 寫命令程序:RS 低 電平,然后命令加載到 D0- -D7, E 腳產生 下降沿 ,命令即被12864 接收并執行,
- 寫內容程序:RS 高 電平,然后資料加載到 D0- -D7, E 腳產生 下降沿 ,資料即被 12864接收并顯示 ,
串行(我們沒用到,想用的自己分析這個時序圖就行了)

LCD12864的命令,CGRAM,DDRAM,DDROM,GDRAM
1.基本命令,地址范圍是0x00–0x3f,用來操作液晶的硬體配置等基本功能
2.擴充指令,地址范圍是0x00–0x3f,用來繪圖,反白顯示等高級功能
3.CGRAM,地址范圍0x40–0x7f,用來保存液晶本身沒有的其他自定義的影像
4.DDRAM,地址范圍是0x80–0x8f,用來保存ASCII碼值,通過ASCII碼指向自定義CGRAM影像資料首地址或者光刻的CGRAM影像資料首地址
5.GDRAM,地址范圍是0x80–0xff,允許擴充指令后,用于繪圖

前面初始化那一段可以直接用1602的,效果是一樣的,那個圖見另一篇
初始化函式LCD12864_Init
void LCD12864_Init()
{
P4M1 = 0;
P4M0 = 0;//把P4全部設定為標準IO口,這里不講究了
//這時候就根據時序圖寫時序
LCD12864_Delay(250); //上電后等待至少15ms,才能往LCD寫指令
LCD12864_Delay(250); //上電后等待至少15ms,才能往LCD寫指令
LCD12864_Write_Cmd(0x38);
LCD12864_Write_Cmd(0x01);
LCD12864_Delay(50);
LCD12864_Write_Cmd(0x02);
LCD12864_Delay(50);
LCD12864_Write_Cmd(0x06);
LCD12864_Write_Cmd(0x0c);
LCD12864_Write_Cmd(0x14);
}
為了看初始化咋樣,我們顯示一個字符看看,就暫且在初始化下面寫,不能顯示就看看代碼哪錯了

中文錯誤顯示

中文正確顯示

為了方便顯示漢字,我們創建漢字快取陣列(當然下面并不是方便的操作,但是為了讓初學者明白原理,這是最好的操作)

很重要的東西,顯示漢字的缺陷

液晶顯示服務
//液晶顯示服務
void LCD12864_Display_Ser()
{
LCD12864_Write_Cmd(0x80);
LCD12864_Write_Data(LCD12864_Write_Buffer[0]);
LCD12864_Write_Data(LCD12864_Write_Buffer[1]);
LCD12864_Write_Data(LCD12864_Write_Buffer[2]);
LCD12864_Write_Data(LCD12864_Write_Buffer[3]);
LCD12864_Write_Data(LCD12864_Chinese_Buffer[14]);
LCD12864_Write_Data(LCD12864_Chinese_Buffer[15]);//年
LCD12864_Write_Data(LCD12864_Write_Buffer[4]);
LCD12864_Write_Data(LCD12864_Write_Buffer[5]);
LCD12864_Write_Data(LCD12864_Chinese_Buffer[16]);
LCD12864_Write_Data(LCD12864_Chinese_Buffer[17]);//月
LCD12864_Write_Data(LCD12864_Write_Buffer[6]);
LCD12864_Write_Data(LCD12864_Write_Buffer[7]);
LCD12864_Write_Data(LCD12864_Chinese_Buffer[18]);
LCD12864_Write_Data(LCD12864_Chinese_Buffer[19]);//日
}
液晶資料分配
void LCD12864_Allot()//永遠都要記住LCD是慢的模塊
//不需要刷的很快(因為他放在main里面是快刷的)所以我們
//為了不影響其他器件,我們讓他刷的次數降低就行
{
static xdata u16 count = 0;
count++;
if(count>500)
{
count = 0;
//兩個位元組一組數字
LCD12864_Write_Buffer[0] = 0x30+2;//不能直接2,要轉成ASCII值
LCD12864_Write_Buffer[1] = 0x30+0;
LCD12864_Write_Buffer[2] = 0x30+2;
LCD12864_Write_Buffer[3] = 0x30+1;
LCD12864_Write_Buffer[4] = 0x30+1;
LCD12864_Write_Buffer[5] = 0x30+0;
LCD12864_Write_Buffer[6] = 0x30+0;
LCD12864_Write_Buffer[7] = 0x30+5;
}
LCD12864_Display_Ser();
}

12864液晶的各種存盤器關系圖

下圖是DDRAM的存盤地址結構圖,需顯示的漢字就是顯示在這里,液晶電路是左右半屏拼接,實際上顯示是上下半屏拼接,A0H–A7H,B0H–B7H,這兩行是上半屏的但是不顯示出來,做上下卷屏操作的時候用,A8H–AFH,B8H–BFH,就是下半屏的卷屏快取
如果是左右移屏操作,向左移屏,88H會顯示到87H的位置,但是,地址編號和內容不改變,只是修改了顯示位置
內部電路的結構

顯示屏上面的實際位置

1.液晶初始化操作
復位后,按順序寫入指令(開顯示0x0c)和(清屏0x01),然后延時一段時間
2.直接顯示英文和漢字的操作


3.顯示自定義字符的操作



聯動文章 身價過億的冰山御蘿對小碼農說你液晶能顯示嗎
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/305742.html
標籤:其他

