Arduino控制LCD屏幕顯示出helloworld字元串基本知識及其軟硬體設計
首先是一些基礎知識:
LCD 1602簡介:(圖片來自http://www.51hei.com/bbs/dpj-36571-1.html)
Arduino LiquidCrystal庫簡介:
這個庫可以封裝了對LCD晶元的一些操作,用起來很方便,不用再自己編寫相關的晶元時序控制、數據或命令讀寫等函數的代碼了。
1. LiquidCrystal()
簡介:創建一個LiquidCrystal的實例(構造函數).可使用4線或8線方式作為數據線(請註意,還需要指令線).若採用四線方式,將d0-d3懸空不連接.RW引腳可接地而不用接在Arduino的某個引腳上;如果這樣接,省略在函數中的rw參數。
構造函數:
LiquidCrystal(rs, enable, d4, d5, d6, d7)
LiquidCrystal(rs, rw, enable, d4, d5, d6, d7)
LiquidCrystal(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7)
LiquidCrystal(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7)
參數說明:
rs: rs連接的Arduino的引腳編號 rw: rw連接的Arduino的引腳編號 enable:enable連接的Arduino的引腳編號
d0, d1, d2, d3, d4, d5, d6, d7: 連接的Arduino的引腳編號
例子 :
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); //使用的上述第一個構造函數,Arduino的12腳接LCD的rs腳、11腳接enable...
void setup() { lcd.print("hello, world!"); } void loop() {}
2.begin()
簡介 :指定顯示屏的尺寸(寬度和高度)。
語句:lcd.begin(cols, rows)
參數設置 :
lcd:一個LiquidCrystal類型的變數
cols: 顯示器可以顯示的列數(1602是16列)
rows: 顯示器可以顯示的行數(1602是2行)
3.clear()
簡介:清屏
語句:lcd.clear();
4.setCursor()
簡介 : 將游標定位在特定的位置
語句 lcd.setCursor(col, row)
參數:
lcd:一個LiquidCrystal類型的變數
col: 你要顯示游標的列 (從0開始計數)
row: 你要顯示游標的行 (從0開始計數)
5.print()
簡介: 將文本顯示在LCD上
語句 :
lcd.print(data)
lcd.print(data, BASE)
參數:
data:要顯示的數據,可以是char, byte, int, long或者string類型的
BASE (optional): 數制(可選的),BIN,DEC,OCT,HEX分別將數字以二進位,十進位,八進位,十六進位方式顯示出來.
該庫還有其他很多有用的函數,這裡就不一一介紹了,具體要應用到時可以查閱相關庫資料。
有了這些基本知識之後,我們可以開始準備連接硬體線路了
要用的材料:
1.杜邦線若幹
2.Arduino主板一塊
3.面板包一塊
4.1602 LCD一塊
5.可變電阻器一個
6.220歐電阻一個
連接方式:
將LCD的RS,ENABLE,D4,D5,D6,D7分別接到Arduino的12,11,5,4,3,2口;
LCD的Vss、R/W接到GND, Vdd接到5v;
LCD的A腳接到5v,k腳串接一個電阻到GND(稍微降低一點背光的亮度);
可變電阻的一隻腳接到5v,中間一隻接到lcd的V0,另外一隻接到GND,這個可變電阻的作用是調節LCD的對比度,若對比度不合適則會導致字元顯示看不到!
軟體代碼:
// 引用LiquidCrystal Library #include <LiquidCrystal.h> // 建立LiquidCrystal 的變數lcd // LCD 接腳: rs, enable, d4, d5, d6, d7 // 對應到Arduino 接腳: 12, 11, 5, 4, 3, 2 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { // 設定LCD 的行列數目(2 x 16) lcd.begin(16, 2); // 列印"Hello World" 訊息到LCD 上 lcd.print("hello, world!"); } void loop() { // 將游標設到第5列,第2行(第一列第一行為0,0),設置顯示到屏幕第二行中間 lcd.setCursor(6, 1); // 列印Arduino 重開之後經過的秒數 lcd.print(millis()/1000); }
代碼在連接好的電路上運行的結果:
結果顯示算是成功了,本次實驗值得註意的有以下幾點:
1.對硬體如LCD的基本瞭解,各個引腳的接法,其中LCD對比度的控制,在V0腳上串接一個可調電阻是個很好的選擇
2.對Arduino庫的瞭解,用起來很方便,不需自己編寫賦複雜的硬體控制代碼。
參考:
http://www.51hei.com/bbs/dpj-36571-1.html
百度文庫