簡介:上期我向大家介紹了字符型液晶1602的基本功能,并用51單片機的驅動顯示,你可以用它表達你的幸運日期或者你喜歡的數字。雖然說1602液晶使用方便,但如果你想用它表達更多的語言,就難以滿足要求了。
一、原理簡介
我手里的這款128×64液晶內部是以ST7920芯片作為控制器,是一種具有4位/8位并行、2線或3線串行多種接口方式,內部含有國標一級、二級簡體中文字庫的點陣圖形液晶顯示模塊;其顯示分辨率為128×64, 內置8192個16×16點漢字,和128個16×8點ASCII字符集。可以顯示8×4行16×16點陣的漢字。因此利用該液晶模塊可以靈活的構成全中文人機交互圖形界面,也可完成圖形顯示。低電壓低功耗也是其一顯著特點。其外觀圖如圖1(a)所示,其管腳排布如圖1(b)所示。
值得說明一點的是,只要是控制器為ST7920芯片(或者類似芯片型號)的帶字庫的128×64液晶,不論其背光的顏色(普遍可見的有黃綠色、藍色和白色),甚至管腳分布稍有差異,其特性與控制方法基本都是一樣。128×64液晶的管腳各功能如表1所示。
其中并行模式下,管腳RS為高電平時, DB7~DB0為顯示數據;RS為低電平時,表示DB7~DB0為顯示指令。
R/W管腳為高電平且E為高電平時,數據被讀到DB7~DB0,R/W管腳為低電平且E管腳從高電平跳到低電平時,DB7~DB0的數據被寫到IR或DR,如表2、表3所示。
值得注意的是,當128×64液晶工作在2線或3線串行接口方式時,所需要的控制管腳發生改變,如表1中所示,第4管腳成為串行的片選信號,第5管腳成為串行的數據口,而第6管腳成為串行的同步時鐘,所以表2、3不適合串行工作下的管腳狀態。本文中對串行控制128×64液晶不做過多介紹。
12864液晶模塊的控制芯片有兩套控制命令,分為基本指令和擴充指令。這里介紹幾個12864液晶編程時經常用到的幾個指令
二、電路詳解
如圖2所示,128×64液晶的控制管腳都接到了單片機管腳上,前文提到,在功能設置指令中可以將液晶設為并行的8位、4位數據接口,圖中采用的是8位的數據接口,當然也可以當四位數據接口或者串行接口來用。另液晶電源正端接5V,負端接地,背光正端由5V經過一個二極管降壓后接入,負端接地。此外,液晶的偏壓管腳(VO)接到一個電位器的中間抽頭,電位器的兩端分別接5V和地,這樣就可通過調節電位器來實現對128×64液晶對比度的調節。經實驗測試,筆者手里的128×64液晶的偏壓管腳的電壓調節到3.6~3.7V時對比度效果最好。讀者可以自己實踐測試。
圖2 128×64液晶與單片機的連接圖
三、程序設計
在程序設計之前,我們先了解下128×64液晶內部控制器ST7920的讀寫時序,其讀寫時序如圖3、4所示。
圖3 ST7920的數據寫入時序(8位數據線模式)
圖4 ST7920的數據讀取時序(8位數據線模式)
對照時序圖和表2、表3,我們可以很容易的寫出驅動128×64液晶的各個子函數,如下所示:
/*讀忙函數:檢測液晶是否能夠接收數據或命令,可用
一段延時替代*/
void check_busy(void)
{
BF = HIGH;
//將讀忙管腳設為輸入
RS = LOW;
//讀忙時,RS電平應為低
RW = HIGH;
//讀忙時,RS電平應為高
E = HIGH;
//E置高,配合數據讀取
while(BF==1);
//死循環,如果忙,則一直等待
E = LOW; //E置低
}
/*寫指令函數:向寄存器寫入控制字
參數:cmd - 要寫入的控制字*/
void LCD_en_command(uchar cmd)
{
check_busy();
//先檢測液晶是否能夠接收指令
RS= LOW;
//寫指令時,RS電平應為低
RW=LOW;
//寫指令時,RS電平應為低
LCDIO= cmd;
//將要寫入的指令輸出到對應的端口
E=HIGH;
//E置高
E=LOW;
//E置低,下降沿寫入數據
}
/*寫數據函數:向寄存器寫入數據
參數:dat - 要寫入的數據*/
void LCD_en_dat(uchar dat)
{
check_busy();
//先檢測液晶是否能夠接收數據
RS=HIGH;
//寫數據時,RS電平應為高
RW=LOW;
//寫數據時,RW電平應為低
LCDIO=dat;
//將要寫入的數據輸出到對應的端口
E=HIGH;
//E置高
E=LOW;
//E置低,下降沿寫入數據
}
要使128×64液晶能正常工作和操作方便,除了寫數據和命令函數外,還需要進行初始化等操作,先將本講中所用到的操作128×64液晶的主要函數設計如下。
液晶初始化函數:初始化液晶,設置液晶的工作方式等。
void LCD_init(void)
{
RST=0;
//RST管腳置低,復位液晶
LCD_delay();
//延時一段時間,以完全復位
RST=1;
//RST管腳置高,復位完成
PSB=1;
//PSB管腳置高,并行工作模
LCD_en_command(0x30);
//設置8位并數據格式
LCD_en_command(0x0c);
//開顯示器
LCD_en_command(0x80);
//顯示起始地址
CLEARSCREEN();
//對液晶進行清屏
}
/*設置顯示地址函數:
參數:x取值范圍:0~7;y取值范圍:1~4 */
void LCD_set_xy( uchar x, uchar y )
{
switch(y) //判斷是哪一行顯示
{
case 1:LCD_en_command(0x80 + x);break;
//如果是第一行,地址加0x80
case 2:LCD_en_command(0x90 + x);break;
//如果是第二行,地址加0x90
case 3:LCD_en_command(0x88 + x);break;
//如果是第三行,地址加0x88
case 4:LCD_en_command(0x98 + x);break;
//如果是第四行,地址加0x98
default:break; //否則退出
}
}
/*寫字符串函數:向液晶寫入字符串
參數:x-列坐標,y-行坐標,*s-將要顯示的字符串數
據*/
void LCD_write_string(uchar x, uchar y, uchar *s)
{
LCD_set_xy( x, y );
//先設置要顯示的地址
while (*s) //如果當前字符沒有結束
{
LCD_en_dat(*s); //顯示當前字符
s ++; //指向下一個字符
}
}
四、調試要點與實驗現象
接好硬件(特別是連接好128×64液晶),通過冷啟動方式將程序所生成的。hex文件下載到單片機運行后,復位單片機,然后就可在學習板上看到12864液晶上顯示的“128×64液晶測試”等字符。
調試128×64液晶時應注意的是,對于液晶的讀忙函數如果用一段延時代替的話,一定要足夠長,不同128×64液晶的所需要的時間可能稍許不同,這也是導致液晶無顯示,出亂碼等的常見原因。此外,與前講介紹的1602液晶相似,對于128×64液晶上的V0管腳,作為液晶顯示器對比度調整端,其接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產生“鬼影”,因此可通過一個電位器實現對其的電壓調整,前文提到,將其調節到3.6~3.7V 時對比度效果最好。
五、總結
本講簡要介紹了帶字庫128×64液晶的工作原理并給出了驅動實例,在液晶的操作時序一定要嚴格,需參考其數據手冊或規格書。
對于128×64液晶,如果在實際應用中僅使用并口或串口通信模式,可將PSB(第15腳)接固定電平,并口時接高電平;串口時接低電平,從而節省控制管腳。
128×64液晶的內部接有上電復位電路,因此可以將RESET(第17腳)懸空或者接到電源正上,以節省控制管腳。
128×64液晶內部帶有豐富的DDRAM(文本顯示RAM)和GDRAM(繪圖RAM),本文只是對其驅動方法經行了介紹,但具體如何實現等需要讀者自己實踐。
液晶的顯示對后續程序的輔助作業很大,可以用它來顯示一些調試信息或者測量數據等非常方便,下講就將結合液晶顯示來實現一個單片機的簡易頻率計,敬請期待。
上一篇:一種嵌入式Web服務器的遠程測控系統
下一篇:基于電力線載波技術的遠程電流數據采集系統的設計
推薦閱讀
史海拾趣
在快速發展的電子行業中,FTDI始終保持著高度的警惕性和創新精神。面對假冒芯片的威脅,公司采取了強有力的打擊措施以維護用戶權益和市場口碑。同時,為了更好地滿足市場需求,FTDI不斷加強技術團隊建設,引進經驗豐富的工程師和有潛力的大學畢業生,不斷提升自身的研發實力和技術水平。此外,公司還密切關注市場動態和技術趨勢,以便及時調整戰略方向并推出具有競爭力的新產品。通過這些努力,FTDI在電子行業中持續保持著領先地位。
為了進一步擴大市場份額,AMERICASEMI積極尋求與其他企業的合作機會。公司與多家知名電子產品制造商建立了穩定的合作關系,為其提供優質的半導體產品和技術支持。同時,AMERICASEMI還積極開拓國際市場,將產品出口到全球多個國家和地區,實現了業務的快速增長。
隨著公司規模的擴大和市場需求的增長,Boyd Corporation積極拓展全球業務版圖。公司在多個國家和地區設立了生產基地和研發中心,以便更好地服務全球客戶。通過全球化布局,Boyd Corporation不僅提升了生產效率,還加強了與全球客戶的合作關系,進一步鞏固了其在電子行業的領導地位。
隨著環保意識的日益增強,Captive Fastener公司積極響應國家環保政策,推動生產方式的綠色轉型。公司引進先進的環保生產設備和技術,減少生產過程中的污染排放。同時,公司還研發出可回收再利用的緊固件產品,為電子行業的可持續發展做出了貢獻。
為了進一步提升技術實力和市場競爭力,Fascomp積極尋求與國際知名企業的技術合作。通過與多家跨國公司的聯合研發項目,Fascomp成功吸收和借鑒了國際先進的技術和管理經驗。此外,公司還積極拓展海外市場,產品遠銷歐美、亞洲等多個國家和地區,進一步提升了公司的國際化水平。
本帖最后由 jameswangsynnex 于 2015-3-3 19:58 編輯 專門為下一代光網絡提供智能光子解決方案供應商Avanex今天宣布將在3月5日-10舉行的OFC2006上展示一系列的新產品,展位號:2640。 “我們公司的重組工作逐步接近尾聲,與此同時我們很 ...… 查看全部問答∨ |
|
職位描述 Windows驅動程序設計和實現 職位要求 1.計算機、電子工程、通信、自動化等相關專業本科以上學歷; 2.熟練掌握C/C++語言編程; 3.精通WDM, WDF編程,熟悉DriverStudio, WINDBG等開發工具; 4.深入理解Windows操作系統組成原理和內核 ...… 查看全部問答∨ |
|
看了半天107的以太網模塊,還是沒有看懂。請問各位大大,SMI MII RMII 有什么區別啊,他們分別是干嘛用的。謝謝了。 另外,這張框圖也沒看懂,哪位大大能幫忙解釋下。 [ 本帖最后由 gaokushuai 于 2011-9-22 15:06 編輯 ]… 查看全部問答∨ |
|
使用觸摸屏來作為類似于鼠標的上下左右,兩個按鍵作為左右擊,做了個類似于我們筆記本電腦的觸摸板的東西,效果不出,是標準HID協議做的。給大家分享!… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 邁來芯高可靠可編程霍爾開關,5月21日 10:00 邀您觀看直播
- 新思科技技術日:硬件加速驗證解決方案專場 火熱報名中!
- 【已結束】TE 直播|如何有效應對當下測試測量領域的挑戰
- 答疑專場:模擬世界的最重要構成——信號鏈與電源
- TI 有獎直播 | 使用基于 Arm 的 AM6xA 處理器設計智能化樓宇
- 【已結束】直播“戴”“芯”:英飛凌可穿戴設備保姆級解決方案
- #micropython大作戰#多種參與姿勢,大家一起來玩micropython!
- 揭秘正確選擇探頭的5大要素 (泰克原裝探頭促銷,高貴不貴,199元起)
- 有獎直播:萬物互聯 -世健公司攜手Microchip專家,共同探討IoT解決方案