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

歷史上的今天

今天是:2025年01月26日(星期日)

2021年01月26日 | 51單片機教程(八):圖型帶字庫液晶128×64

發布者:Volare 來源: eefocus關鍵字:128×64 手機看文章 掃描二維碼
隨時隨地手機看文章

簡介:上期我向大家介紹了字符型液晶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),本文只是對其驅動方法經行了介紹,但具體如何實現等需要讀者自己實踐。


液晶的顯示對后續程序的輔助作業很大,可以用它來顯示一些調試信息或者測量數據等非常方便,下講就將結合液晶顯示來實現一個單片機的簡易頻率計,敬請期待。


關鍵字:128×64 引用地址:51單片機教程(八):圖型帶字庫液晶128×64

上一篇:一種嵌入式Web服務器的遠程測控系統
下一篇:基于電力線載波技術的遠程電流數據采集系統的設計

推薦閱讀

近日,拓斯達發布2017年度業績預告,公司預計實現凈利潤1.3億元-1.45億元,同比增長67.58%-86.92%。此前的數據顯示,公司2012-2016年營業收入和凈利潤年復合增長率分別達到47.13%和32.58%。拓斯達董事長吳豐禮接受中國證券報記者專訪時表示,“穩比快好”,“踩著剎車前進”。他提出,公司要將機器人產業鏈中“系統集成、本體制造、軟件開發”三段全部打通...
什么是自動冷啟?正常情況下,要想給STC單片機下載程序,必須在下載軟件發送下載命令之后再給STC單片機上電(如果之前已經上電,就要斷電再上電),這樣STC單片機才能進入到下載狀態,這是STC定義好的下載協議,這一冷啟的動作一般是由手動去完成的。自動冷啟就是自動完成冷啟這一動作,從而達到自動下載的目的。STC單片機沒有上電,發下載命令有什么用,...
工業機器人本體競爭格局:四大家族壟斷,國產品牌突圍工業機器人“四大家族”日本發那科、瑞士ABB、日本安川、德國KUKA,在全球高端應用領域占有較高市占率。國內品牌廣州啟帆、埃夫特、新松、埃斯頓、廣州數控、新時達享受市場增長紅利快速成長,正在國內市場實現突圍。2016年,“四大家族”全球市場中的市占率合計達58%,占據了全球市場份額的超過半壁江...
藍牙市場研究報告對于《藍牙市場最新資訊》中重點描述的趨勢和預測進行深入分析。眾所周知,各國政府正在將藍牙技術用于接觸風險通知系統,幫助追蹤、追溯并減緩新冠病毒在人群中的傳播。同時,各組織機構也在嘗試使用這項技術幫助人們安全返回辦公室、商業樓宇、公共空間和公共場所。這份補充性的報告將深入分析藍牙技術如何在各種不同環境中助力保護公眾...

史海拾趣

問答坊 | AI 解惑

OFC2006:Avanex將推出一系列新品

本帖最后由 jameswangsynnex 于 2015-3-3 19:58 編輯 專門為下一代光網絡提供智能光子解決方案供應商Avanex今天宣布將在3月5日-10舉行的OFC2006上展示一系列的新產品,展位號:2640。    “我們公司的重組工作逐步接近尾聲,與此同時我們很 ...…

查看全部問答∨

ARM的開發步驟

ARM的開發步驟 ARM的開發步驟1. 做個最小系統板:如果你從沒有做過ARM的開發,建議你一開始不要貪大求全,把所有的應用都做好,因為ARM的啟動方式和dsp或單片機有所不同,往往會遇到各種問題,所以建議先布一個僅有Flash,SRAM或SDRAM、CPU、JT ...…

查看全部問答∨

單片機與CNA總線接口電路

如題,下載是不要忘了幫頂…

查看全部問答∨

北京 誠聘 windows驅動軟件開發工程師(兼或全職)

職位描述 Windows驅動程序設計和實現 職位要求 1.計算機、電子工程、通信、自動化等相關專業本科以上學歷; 2.熟練掌握C/C++語言編程; 3.精通WDM, WDF編程,熟悉DriverStudio, WINDBG等開發工具; 4.深入理解Windows操作系統組成原理和內核 ...…

查看全部問答∨

STM32的貨期

                                 原來用luminary的準備改成st的選stm32f101r8t6找一個代理商問了,說一千片左右要6到8周的供貨期,問他們有沒有其他 ...…

查看全部問答∨

錯位

                                 問題已解決…

查看全部問答∨

SMI MII RMII 的區別是什么

看了半天107的以太網模塊,還是沒有看懂。請問各位大大,SMI MII RMII 有什么區別啊,他們分別是干嘛用的。謝謝了。   另外,這張框圖也沒看懂,哪位大大能幫忙解釋下。 [ 本帖最后由 gaokushuai 于 2011-9-22 15:06 編輯 ]…

查看全部問答∨

上傳個關于ASCII碼轉換的軟件

在我們編通訊程序時,可能要用到ASCII和十六進制之間轉換或其他二進制轉換的問題。這是個很好的工具,數值是正確的,有些網上下的軟件都有錯誤!…

查看全部問答∨

利用msp430f5525 的USB做了個觸摸板驅動

使用觸摸屏來作為類似于鼠標的上下左右,兩個按鍵作為左右擊,做了個類似于我們筆記本電腦的觸摸板的東西,效果不出,是標準HID協議做的。給大家分享!…

查看全部問答∨

基于FPGA實現PCIE

求高手能講解下,用FPGA實現PCIE總線接口,就是簡單談談設計思路和實現方式…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 阿瓦提县| 岢岚县| 贡觉县| 定日县| 青川县| 巴彦淖尔市| 额尔古纳市| 交口县| 竹北市| 柘城县| 扬中市| 贺州市| 隆子县| 乌兰县| 丹阳市| 轮台县| 宝鸡市| 南华县| 刚察县| 通城县| 景东| 长春市| 宜城市| 元谋县| 黎平县| 锦州市| 湖州市| 夏津县| 赤壁市| 漳浦县| 霍邱县| 广饶县| 平舆县| 安陆市| 亳州市| 清徐县| 涿州市| 云林县| 峨边| 奎屯市| 梧州市|