久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: LCD1602高手使用詳解 [打印本頁]

作者: 無風也要起浪    時間: 2018-12-9 00:24
標題: LCD1602高手使用詳解
前面總算走完了對AVR MEGA16這塊單片機的一些基本的應用方式了,這時候大家對AVR的一些內部資源比如定時器,ADC,最主要的IO口的使用方式應該有了一個雖比較粗淺但是卻比較形象的認識了。這節我們來看使用單片機的另外一大主題,就是用單片機來實現芯片控制。
在前面的數碼管顯示一文中,就已經涉及到了用單片機來控制芯片為我們工作,CEPARK AVR開發板,為了達到增強驅動能力和節省IO口的作用,運用了移位寄存器74HC595來驅動兩個四位八段數碼管,是一個十分有創意的設計。但是前面的內容重心還是集中于對AVR的IO口的控制,所以,我們從這節開始要正式逐漸深入的接觸各種芯片了。
先做個引子。單片機是一種微控制器,本身內部集成了數種資源比如CPU、內存、內部和外部總線系統,目前大部分還會具有外存。他的主要任務是利用各種資源實現電平控制,可以以此控制與它相連的下級系統,廣泛用于工業自動控制領域。
我們就從這句話出發,首先單片機用來做控制用的,而且是利用的是本身的內部資源。但是,它的功能再強大,資源再豐富也總有一個上限,總有枯竭的一天。所以我們常常利用單片機外接芯片來彌補或者增強單片機的功能來完成我們所需功能的電路。比如程序存儲器不足,可以外接外部存儲器,比如單片機內部中斷級不足,可以外接中斷控制器等等。大家可以從這個角度來理解芯片控制的意義罷。
今天我們用AVR單片機來實現對LCD1602液晶顯示芯片的控制。
首先從這個名字講起,LCD:英文全稱為Liquid Crystal Display,即為液態晶體顯示,也就是我們常說的液晶顯示了。(平時老說LCDLCD,可能大家也都不怎么注意過這個全稱吧,呵呵,當增加詞匯量了)1602則是表示這個液晶一共能顯示2行數據,每一行顯示16個字符。這個就是LCD1602的全部來由。
液晶顯示的使用有多廣泛我就不多說了,LCD1602好像10元左右就可以拿到了的,不算貴。我們來看看現在市面都有哪些樣子的1602,下面從網上搜羅了幾個(我手上的這個是藍色背光白色字體的):



其實顯而易,見也就是背光和字體的顏色不一樣罷,不過老實說,藍色背光的1602看上去顯得確實比較亮,也許是人眼視覺的關系。
接下來進入LCD1602使用的重點:操作時序。操作時序永遠使用是任何一片IC芯片的最主要的內容。一個芯片的所有使用細節都會在它的官方器件手冊上包含。所以使用一個器件事情,要充分做好的第一件事就是要把它的器件手冊上有用的內容提取,掌握。介于中國目前的芯片設計能力有限,所以大部分的器件都是外國幾個IC巨頭比如TI、AT、MAXIM這些公司生產的,器件資料自然也是英文的多,所以,英文的基礎要在閱讀這些數據手冊時得到提高哦。即便有中文翻譯版本,還是建議看英文原版,看不懂時不妨再參考中文版,這樣比較利于提高。
我們首先來看1602的引腳定義,1602的引腳是很整齊的SIP單列直插封裝,所以器件手冊只給出了引腳的功能數據表:


我們只需要關注以下幾個管腳:

3腳:VL,液晶顯示偏壓信號,用于調整LCD1602的顯示對比度,一般會外接電位器用以調整偏壓信號,注意此腳電壓為0時可以得到最強的對比度。
4腳:RS,數據/命令選擇端,當此腳為高電平時,可以對1602進行數據字節的傳輸操作,而為電平時,則是進行命令字節的傳輸操作。命令字節,即是用來對LCD1602的一些工作方式作設置的字節;數據字節,即使用以在1602上顯示的字節。值得一提的是,LCD1602的數據是8位的。
5腳:R/W,讀寫選擇端。當此腳為高電平可對LCD1602進行讀數據操作,反之進行寫數據操作。筆者認為,此腳其實用處不大,直接接地永久置為低電平也不會影響其正常工作。但是尚未經過復雜系統驗證,保留此意見。
6腳:E,使能信號,其實是LCD1602的數據控制時鐘信號,利用該信號的上升沿實現對LCD1602的數據傳輸。
7~14腳:8位并行數據口,使得對LCD1602的數據讀寫大為方便。
現在來看LCD1602的操作時序:
在此,我們可以先不讀出它的數據的狀態或者數據本身。所以只需要看兩個寫時序:
① 當我們要寫指令字,設置LCD1602的工作方式時:需要把RS置為低電平,RW置為低電平,然后將數據送到數據口D0~D7,最后E引腳一個高脈沖將數據寫入。
② 當我們要寫入數據字,在1602上實現顯示時:需要把RS置為高電平,RW置為低電平,然后將數據送到數據口D0~D7,最后E引腳一個高脈沖將數據寫入。
發現了么,寫指令和寫數據,差別僅僅在于RS的電平不一樣而已。以下是LCD1602的時序圖:


大家要慢慢學會看時序圖,要知道操作一個器件的精華便蘊藏在其中,看懂看準了時序,你操控這個芯片就是非常容易的事了。1602的時序是我見過的一個最簡單的時序:
1、注意時間軸,如果沒有標明(其實大部分也都是不標明的),那么從左往右的方向為時間正向軸,即時間在增長。
2、上圖框出并注明了看懂此圖的一些常識:
(1).時序圖最左邊一般是某一根引腳的標識,表示此行圖線體現該引腳的變化,上圖分別標明了RS、R/W、E、DB0~DB7四類引腳的時序變化。
(2).有線交叉狀的部分,表示電平在變化,如上所標注。
(3).應該比較容易理解,如上圖右上角所示,兩條平行線分別對應高低電平,也正好吻合(2)中電平變化的說法。
(4).上圖下,密封的菱形部分,注意要密封,表示數據有效,Valid Data這個詞也顯示了這點。
3、需要十分嚴重注意的是,時序圖里各個引腳的電平變化,基于的時間軸是一致的。一定要嚴格按照時間軸的增長方向來精確地觀察時序圖。要讓器件嚴格的遵守時序圖的變化。在類似于18B20這樣的單總線器件對此要求尤為嚴格。
4、以上幾點,并不是LCD1602的時序圖所特有的,絕大部分的時序圖都遵循著這樣的一般規則,所以大家要慢慢的習慣于這樣的規則。
也許你還注意到了上面有許多關于時間的標注,這也是個十分重要的信息,這些時間的標注表明了某些狀態所要維持的最短或最長時間。因為器件的工作速度也是有限的,一般都跟不上主控芯片的速度,所以它們直接之間要有時序配合。話說現在各種處理器的主頻也是瘋狂增長,日后搞不好出現個雙核單片機也不一定就是夢話。下面是時序參數表:

大家要懂得估計主控芯片的指令時間,可以在官方數據手冊上查到MCU的一些級別參數。比如我們現在用AVR M16做為主控芯片,外部12MHz晶振,指令周期就是一個時鐘周期為(1/12MHz)us,所以至少確定了它執行一條指令的時間是us級別的。我們看到,以上給的時間參數全部是ns級別的,所以即便我們在程序里不加延時程序,也應該可以很好的配合LCD1602的時序要求了。怎么看這個表呢?很簡單,我們在時序圖里可以找到TR1,對應時序參數表,可以查到這個是E上升沿/下降沿時間,最大值為25ns,表示E引腳上的電平變化,必須在最大為25ns之內的時間完成。大家看是不是這個意思?
現在我來解讀我對這個時序圖的理解:
當要寫命令字節的時候,時間由左往右,RS變為低電平,R/W變為低電平,注意看是RS的狀態先變化完成。然后這時,DB0~DB7上數據進入有效階段,接著E引腳有一個整脈沖的跳變,接著要維持時間最小值為tpw=400ns的E脈沖寬度。然后E引腳負跳變,RS電平變化,R/W電平變化。這樣便是一個完整的LCD1602寫命令的時序。
下面來看看CEPARK AVR開發板的1602顯示部分原理圖:



如你所見,KID畫的這個也太能省了,就直接接1k電阻了事…….只有一點要說,就是這個解法,VL腳也就是偏壓信號腳的電壓就是不可調的了,即對比度固定。
下面附上源程序,里面做了詳細注釋,希望第一次接觸時序圖的朋友可以好好對照一下時序圖來分析程序。請點擊下載附件:作幾點說明:
1、 LCD1602對寫進去的數據字節呢是以ASCII碼識別的,所以寫進去用以顯示的字符數據必須是某一個ADCII碼,當然如果你不想查ASCII表的話,可以用字符來代替,即用單引號包含的字符常量。所以,也由此推出,’0’和30H(0的ASCII碼)是等價的。
2、 操作1602,要先對1602進行初始化,數據手冊里寫的比較清楚,并且對各個命令字的寫入并沒有先后要求。
3、 1602是有自定義字符的功能的,大家熟悉基本操作之后可以嘗試自行拓展
4、 在每次寫完數據之后,應該要將E引腳置為低電平,為下一次E的高脈沖做準備。延伸來說,這叫釋放時鐘線,要養成釋放時鐘線的好習慣。對配合時序大有裨益。
5、 可以將所要顯示的字符一次定義在一個字符數組里,以調用字符數組的形式調用顯示數據,這樣程序會變得簡潔而高效。
6、 記住時序的要求,往往是對最小時間有要求,在你嚴格配合時序的情況下仍然的不到理想的結果時,可以嘗試插入延時。這個并不違反時序的要求。況且相當多的器件手冊并沒有詳細的講述最小時間要求。
最后附上運行照片,照的還是蠻清晰的~:

果然還是藍色的看著舒服… …
希望能給有需要的人一點幫助。
大家加油啊
再來個官方介紹:
1.簡介
  工業字符型液晶,能夠同時顯示16x02即32個字符。(16列2行)
  注:為了表示的方便 ,后文皆以1表示高電平,0表示第電平。
2.管腳功能
  1602采用標準的16腳接口,其中:
  第1腳:VSS為電源地
  第2腳:VDD接5V電源正極
  第3腳:V0為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度)。
  第4腳:RS為寄存器選擇,高電平1時選擇數據寄存器、低電平0時選擇指令寄存器。
  第5腳:RW為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。
  第6腳:E(或EN)端為使能(enable)端。
  第7~14腳:D0~D7為8位雙向數據端。
  第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負極。
3.操作控制
  操作控制表
   操作
   讀狀態
   寫指令
   讀數據
   寫數據
   輸入
   RS=0,RW=1,E=1
   RS=0,RW=0,
  D0~7=指令碼,E=H脈沖
   RS=1,RW=1,E=1
   RS=1,RW=0,
  D0~7=數據,E=H脈沖
     注:關于E=H脈沖——開始時初始化E為0,然后置E為1,再
4.字符集
  1602液晶模塊內部的字符發生存儲器(CGROM)已經存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯數字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。
  因為1602識別的是ASCII碼,試驗可以用ASCII碼直接賦值,在單片機編程中還可以用字符型常量或變量賦值,如'A’。
  以下是1602的16進制ASCII碼表地址:
    讀的時候,先讀左邊那列,再讀上面那行,如:感嘆號!的ASCII為0x21,字母B的ASCII為0x42(前面加0x表示十六進制)。

5.指令集

  1602通過D0~D7的8位數據端傳輸數據和指令。
  顯示模式設置: (初始化)
  0011 0000 [0x38] 設置16×2顯示,5×7點陣,8位數據接口;
  顯示開關及光標設置: (初始化)
  0000 1DCB D顯示(1有效)、C光標顯示(1有效)、B光標閃爍(1有效)
  0000 01NS N=1(讀或寫一個字符后地址指針加1 &光標加1),
  N=0(讀或寫一個字符后地址指針減1 &光標減1),
  S=1 且 N=1 (當寫一個字符后,整屏顯示左移)
  s=0 當寫一個字符后,整屏顯示不移動
  數據指針設置:
  數據首地址為80H,所以數據地址為80H+地址碼(0-27H,40-67H)
  其他設置:
  01H(顯示清屏,數據指針=0,所有顯示=0);02H(顯示回車,數據指針=0)。
單片機流水燈


完整的Word格式文檔51黑下載地址:
http://m.zg4o1577.cn/bbs/dpj-145322-1.html



作者: 2799739595    時間: 2018-12-9 02:58
非常給力




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲网址 | 中文字幕在线视频精品 | 久久99精品视频 | av大片在线 | 国产精品视频网 | 欧美自拍另类 | 涩涩视频在线看 | 欧美 日韩 在线播放 | 久久久久久国产精品mv | 久久久久国产精品一区二区 | 国产日韩一区二区三免费高清 | 91大片 | 伊人久久精品 | 亚洲欧美日韩精品久久亚洲区 | 久久精品a级毛片 | 国产日韩一区二区三免费 | 日韩视频一区二区 | 日本精品一区二区三区在线观看视频 | 日韩欧美第一页 | 国产精品久久久久久久久污网站 | 自拍偷拍中文字幕 | 国产乱码精品一品二品 | 日韩免费一级 | 粉嫩高清一区二区三区 | 亚洲高清在线观看 | 国产精品视频免费观看 | 国产精品久久久亚洲 | 伊人av在线播放 | 欧美一级黄色免费看 | 亚洲欧美激情网 | 亚洲天天干 | 欧美一级在线视频 | 亚洲小视频在线播放 | 亚洲视频不卡 | 中文字幕在线免费视频 | 狠狠干综合视频 | 麻豆久久久久久 | 日韩欧美在 | 国产精品国产三级国产aⅴ原创 | 久久综合狠狠综合久久综合88 | 欧美性影院 |