arduino書工具書中文教程_第1頁
arduino書工具書中文教程_第2頁
arduino書工具書中文教程_第3頁
arduino書工具書中文教程_第4頁
arduino書工具書中文教程_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、DreamFactory0Arduino 使用Arduino器使用Arduino 使用夢工廠DreamFactory1Arduino 使用概 述什么是 Arduino?Arduino 是一塊基與開放原始代碼的 Simple i/o 平臺,並且具有使用類似 java,C 語言的開發(fā)環(huán)境??梢钥焖偈褂?Arduino 語言與 Flash 或 Processing等,作出互動。Arduino 可以使用開發(fā)完成的元件例如 Switch或 Sensors 或其他器、步進電機或其他輸出裝置。Arduino 也可以成為一個可以跟的平臺,例如說:flash processing Max/MSP VVVV 或其

2、他互動Arduino 開發(fā)界面基于開放原始碼原則,可以什么是 Roboduino?使用開發(fā)出令人驚奇的互動。DFRduino 與 Arduino 完全兼容,只是在原來的基礎上作了些改進。Arduino 的 IO 使用的,做互動需要面包板和針線搭配才能進行,而 DFRduino 的 IO 使用針座,使用我們的上。線就可以直接把各種傳感器連接到 DFRduino特色描述1 開放原始碼的電路圖設計,程式開發(fā)界面,也可依需求修改!2 DFRduino 可使用 ISP線,自我將新的 IC 程序燒入bootloader;3 可依據(jù)官方電路圖,簡化 DFRduino 模組,完成的微處理器;4 可簡單地與傳感

3、器、各式各樣的元件連接(如:紅外線,超聲波,熱敏電阻,光敏電阻,伺服電機等);5 支援多樣的互動程式 如: Flash,Max/Msp,VVVV,PD,C,Processing 等;6 使用低價格的微處理器(ATMEGA168V-10PI);7 USB 接口,不需外接電源,另外有提供 9VDC 輸入接口;8 應用方面,利用 DFRduino,人或多人游戲互動。以往只能使用滑鼠,鍵盤,CCD 等輸入的裝置的互動內容,可以更簡單地達成單性能描述123456789Digital I/O 數(shù)字輸入/輸出端共 013。Analog I/O 模擬輸入/輸出端共 05。支持 USB 接口協(xié)議及供電(不需外接

4、電源)。支持 ISP功能。支持單片機 TX/RX 端子。支持 USB TX/RX 端子。支持 AREF 端子。支持六組端子(Pin11,Pin10,Pin9,Pin6,Pin5,Pin3)。輸入電壓:接上 USB 時無須外部供電或外部 5V9V DC 輸入。10. 輸出電壓:5V DC 輸出和 3.3V DC 輸出 和外部電源輸入。11. 采用 Atmel Atmega168V-10PI 單片機。12DFRduino 大?。簩?70mm X 高 54mm。Arduino 使用夢工廠DreamFactory2Arduino 使用第一課 Arduino 語言Arduino 語言是建立在 C/C+基

5、礎上的,其實也就是基礎的 C 語言,Arduino 語言只不過把 AVR 單片機(微器)相關的一些寄存器參數(shù)設置等都函數(shù)化了,不用我們去了解他的底層,讓不太了解 AVR 單片機(微朋友也能輕松上手。器)的那么這里就簡單的注釋一下 Arduino 語言。/*基礎 C 語言*/關鍵字:··········if if.else forswitch case whiledo. while break continue returngoto語法符號:····/* *

6、/運算符:········=+-*/%=!=Arduino 使用夢工廠DreamFactory3Arduino 使用·············<><=>=&&|!+-+=-=*=/=數(shù)據(jù)類型:············boolean

7、類型char 字符類型byte 字節(jié)類型int整數(shù)類型unsigned int 無符號整型long 長整型unsigned long 無符號長整型float實數(shù)類型double string array void數(shù)據(jù)類型轉換:·····char()byte()int()long() float()常量:·HIGH | LOW表示數(shù)字 IO 口的,HIGH 表示高(1),LOW 表示低(0)。Arduino 使用夢工廠DreamFactory4INPUT | OUTPUT 表示數(shù)字IO 口的方向,INPUT 表示輸入(高阻態(tài)),OUTP

8、UT 表示輸出(AVR 能提供5V 電壓 40mA 電流)。true | falsetrue 表示真(1),false 表示假(0)。Arduino 使用··/*/以上為基礎 c 語言的關鍵字和符號,有 c 語言基礎的都應該了解其含義,這里也不作過多的解釋。/*Arduino 語言*/結構··void setup() 初始化變量,管腳模式,調用庫函數(shù)等void loop() 連續(xù)執(zhí)行函數(shù)內的語句功能數(shù)字 I/O·pinMode(pin, mode)數(shù)字 IO 口輸入輸出模式定義函數(shù),pin 表示為 013, mode 表示為 INPUT 或 O

9、UTPUT。·digitalWrite(pin, value)數(shù)字 IO 口輸出如定義 HIGH 可以驅動 LED。定義函數(shù),pin 表示為 013,value 表示為 HIGH 或 LOW。比·int digital(pin)數(shù)字 IO 口讀輸入函數(shù),pin 表示為 013,value 表示為 HIGH 或 LOW。比如可以讀數(shù)字傳感器。模擬 I/O·int analog(pin)模擬 IO 口讀函數(shù),pin 表示為 05(Arduino Diecimila 為 05,Arduino nano 為 07)。比如可以讀模擬傳感器(10 位AD,05V 表示為 01

10、023)。·analogWrite(pin, value) -數(shù)字IO 口輸出函數(shù),Arduino 數(shù)字IO 口標注了的 IO 口可使用該函數(shù),pin 表示 3, 5, 6, 9, 10, 11,value 表示為 0255。比如可用于電機調速或音樂。擴展 I/O·shiftOut(dataPin, clockPin, bitOrder, value)SPI 外部 IO 擴展函數(shù),通常使用帶 SPI 接口的 74HC595 做 8 個IO 擴展,dataPin 為數(shù)據(jù)口,clockPin 為時鐘口,bitOrder 為數(shù)據(jù)傳輸方向(MSBFIRST 高位在前,LSBFIRS

11、T 低位在前),value 表示所要傳送的數(shù)據(jù)(0255),另外還需要一個 IO 口做 74HC595 的使能。·unsigned long pulseIn(pin, value)脈沖長度函數(shù),返回時間參數(shù)(us),pin 表示為 013,value 為 HIGH 或 LOW。比如 value 為 HIGH,那么當 pin 輸入為高時,然后返回該時間。時,開始,當 pin 輸入為低時,停止計時間函數(shù)Arduino 使用夢工廠DreamFactory5Arduino 使用·unsigned long millis() 返回時間函數(shù)(ms),該函數(shù)是指,當程序運行就開始該參數(shù)溢

12、出大概需要 50 天時間。并返回的參數(shù),··delay(ms)延時函數(shù)(ms)。delayMicroseconds(us)延時函數(shù)(us)。數(shù)學函數(shù)·····min(x, y) 求最小值max(x, y) 求最大值abs(x) 計算絕對值constrain(x, a, b) 約束函數(shù),下限 a,上限 b,x 必須在 ab 之間才能返回。map(value, fromLow, fromHigh, toLow, toHigh)約束函數(shù),value 必須在 fromLow 與 toLow 之間和 fromHi gh 與 toHig

13、h 之間。pow(base, exponent) 開方函數(shù),base 的 exponent 次方。sq(x)平方sqrt(x) 開根號···三角函數(shù)···sin(rad)cos(rad) tan(rad)隨機數(shù)函數(shù)···randomSeed(seed) 隨機數(shù)端口定義函數(shù),seed 表示讀模擬口 analoglong random(max) 隨機數(shù)函數(shù),返回數(shù)據(jù)大于等于 0,小于 max。(pin)函數(shù) 。long random(min, max) 隨機數(shù)函數(shù),返回數(shù)據(jù)大于等于 min,小于 max。外部

14、中斷函數(shù)·attachInterrupt(interrupt, , mode)外部中斷只能用到數(shù)字 IO 口 2 和 3,interrupt 表示中斷口初始 0 或 1,表中斷,CHANGE 有變化就中斷,RISING 上升沿中斷,F(xiàn)ALLING示一個功能函數(shù),m下降沿中斷。OW 低·detachInterrupt(interrupt)中斷開關,interrupt=1 開,interrupt=0 關。中斷使能函數(shù)··interrupts() 使能中斷noInterrupts()中斷串口收發(fā)函數(shù)·Serial.begin(speed) 串口定義波

15、特率函數(shù),speed 表示波特率,如 9600,19200 等。Arduino 使用夢工廠DreamFactory6Arduino 使用·····int Serial.available()緩沖器狀態(tài)。int Serial.() 讀串口并返回收到參數(shù)。Serial.flush()清空緩沖器。Serial.print(data) 串口輸出數(shù)據(jù)。Serial.println(data) 串口輸出數(shù)據(jù)并帶回。/*Arduino 語言庫文件*/官方庫文件地址:········

16、;·EEPROM -EEPROM 讀寫程序庫Ethernet - 以太網(wǎng)器程序庫LiquidCrystal - LCD程序庫Servo - 舵機SoftwareSerial -程序庫任何數(shù)字 IO 口模擬串口程序庫Stepper - 步進電機程序庫Wire - TWI/I2C 總線程序庫Matrix - LED 矩陣程序庫Sprite - LED 矩陣圖象處理程序庫/*/第二課 Arduino 的數(shù)字、模擬端口Arduino器內帶 Bootloader 程序,是系統(tǒng)上電后運行的第一段代碼,就好比 PC 機 BIOS 中的程序,啟動就進行自檢,配置端口等等,當然單片機就是靠燒寫熔絲位來

17、設定上電從 boot 區(qū)啟動的,使用這個程序就可以直接把從串口發(fā)來的程序存放到 flash 區(qū)中。我們在使用 Arduino 編譯環(huán)境,就先讓單片機復位,啟動 Bootloader 程序引導串口發(fā)過來的程序順利寫入 flash 區(qū)中,flash 可以重復燒寫,因此想更新就是這么的方便。下面我來簡單的一下驅動的安裝和編譯環(huán)境的使用。首先連接程序用的線。首先將數(shù)據(jù)線的圓口一端插在 Arduino328 板子上如圖:Arduino 使用夢工廠DreamFactory7Arduino 使用·將數(shù)據(jù)線的扁口一端插在電腦的 USB 接口上,如下圖所示:·插好后,Arduino328板上

18、的電源指示燈會被點亮,電腦上會出現(xiàn)一個框如圖:Arduino 使用夢工廠DreamFactory8Arduino 使用·選擇從列表或指定位置安裝,點擊,出現(xiàn)如下圖:·然后點擊瀏覽,在出現(xiàn)的瀏覽文件夾框中點擊光盤,在光盤下找到 arduino0018 文件夾,點擊打開,會看見有drivers 文件夾如下圖所示:Arduino 使用夢工廠DreamFactory9Arduino 使用·點擊 drivers 文件夾,會看到 FTDIUSBDrivers 文件夾,如圖:·然后點擊這個文件夾,接著點擊確定,點擊,會出現(xiàn)如圖框:Arduino 使用夢工廠DreamF

19、actory10Arduino 使用·這時我們只要等待即可,稍后會出現(xiàn)如下圖框:·點擊完成,這樣驅動就安裝好了,下次再將數(shù)據(jù)線插到電腦就出現(xiàn)安裝驅動框了,插上數(shù)據(jù)線就可以程序了。Arduino 使用夢工廠DreamFactory11最新的編譯Arduino0018,解壓后就可以直接使用,接下來我們就可以開始練手了,打開 Arduino0Arduino 使用然后018。Arduino 0018 開發(fā)編譯環(huán)境很簡潔,各個功能鍵功能描述如下:Arduino 使用夢工廠DreamFactory12Arduino 使用接下來點 Tools->Board 選擇開發(fā)板型號,這里我們

20、使用的是 Arduino Duemilanove 328,然后點 Tools->Serisl Port 選擇串口,即 USB的串口地址,前面的工作做好后,我們就可以進入實驗階段了。Arduino 使用夢工廠DreamFactory13是這樣描述 setup()的:用來初始化Arduino 使用Arduino 語言是以 setup()開頭,loop()作為主體的一個程序構架。官方變量,管腳模式,調用庫函數(shù)等等,此函數(shù)只運行一次。loop()函數(shù)是一個循環(huán)函數(shù),函數(shù)內的語句周而復始的循環(huán)執(zhí)行,功能類似 c 語言中的“main();”。Digital Output 數(shù)字輸出實驗功能:使 PIN

21、13 腳上的 LED 閃爍。int ledPin = 13; void setup()/ 設定LED 的數(shù)字IO 腳pinMedPin, OUTPUT);/ 設定數(shù)字IO 口的模式,OUTPUT 為輸出void loop()digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000);/ 設定PIN13 腳為HIGH = 4V/ 設定延時時間,1000 = 1 秒/ 設定PIN13 腳為LOW = 0V/設定延時時間功能:使 PIN11 腳上的 LED 逐漸變亮逐漸變暗。int ledPin =

22、11; int val;void setup()/ 設定LED 的數(shù)字IO 腳/定義一個變量pinMedPin, OUTPUT);/ 設定數(shù)字IO 口的模式,OUTPUT 為輸出void loop()for(val=0;val<255;val+)/變量循環(huán)+1analogWrite(ledPin, val); /輸出delay(50);/設定延時時間for(val=255;val>0;val-)analogWrite(ledPin, val); delay(50);/變量循環(huán)-1Digital Input 數(shù)字輸入實驗Arduino 使用夢工廠DreamFactory14Ardui

23、no 使用功能:閉合開關 SW,PIN13 腳上的 LED 亮,斷開開關 SW,PIN13 腳上的 LED 滅。int ledPin = 13; int switchPin = 7; int val = 0;void setup()/ 設定LED 的數(shù)字 IO 腳/ 設定開關的數(shù)字 IO 腳/定義一個變量pinMedPin, OUTPUT);/ 設定數(shù)字 IO 口的模式,OUTPUT 為輸出/ 設定數(shù)字 IO 口的模式,INPUT 為輸入pinMode(switchPin, INPUT);void loop()val = digitalif (HIGH = val)(switchPin);di

24、gitalWrite(ledPin, LOW);/讀數(shù)字 IO 口上的狀態(tài)/ 如果開關斷開,LED 滅/ 如果開關閉合,LED 亮elsedigitalWrite(ledPin, HIGH);Analog Input 模擬輸入實驗Arduino 使用夢工廠DreamFactory15Arduino 使用功能:調節(jié)電位器 RPot,使輸入模擬量的變化來改變 LED 閃爍的頻率。int ledPin = 13; int RPotPin = 5; int val = 0;void setup()/ 設定LED 的數(shù)字 IO 腳/ 設定模擬輸入IO 腳/定義一個變量pinMedPin, OUTPUT)

25、;/ 設定數(shù)字 IO 口的模式,OUTPUT 為輸出void loop()val = analog(RPotPin);/讀模擬IO 口上的數(shù)據(jù)/ 設定 PIN13 腳為 HIGH = 4V/ 延時時間為模擬輸入的值/ 設定 PIN13 腳為 LOW/ 延時時間為模擬輸入的值digitalWrite(ledPin, HIGH); delay(value); digitalWrite(ledPin, LOW); delay(value);第三課 Arduino 的串口通訊Arduino 不但有 14 個數(shù)字接口和 6 個模擬接口外,還有 1 個更為常用的串口接口。在實際應用中串口以只需要少量的幾根

26、線就能和其他串口通訊的優(yōu)勢被廣應用。串行接口按標準被分為RS-232、RS-422、RS-485。RS-232 是在 1962 年發(fā)布的,也是目前 PC 機與通信工業(yè)中應用最廣泛的一種串行接口,RS-232 采取不平衡傳輸方式,即所謂單端通訊。典型的 RS-232 信號在正負之間擺動,在發(fā)送數(shù)據(jù)時,發(fā)送端驅動器輸出正在+5+15V,負在-5-15V。我們的單片機使用的是 TTL的串行協(xié)議,因此單片機與 pc 通訊時需要進行 RS-232和 TTL與單片機通訊時則可以直接連接。的轉換,最常用的轉換是 MAX232,單片機USB 版本的 Arduino 則是通過 USB 轉成TTL 串口程序的,數(shù)

27、字口 PIN 0 和PIN 1 就是 TTL 串口RX 和 TX。Arduino 使用夢工廠DreamFactory16串口通訊協(xié)議都會有波特率、數(shù)據(jù)位、停止位、校驗位等參數(shù)。大Arduino 使用串口通訊中最重要的一點就的通訊協(xié)議,家設置也不用怕,Arduino 語言中 Serial.begin()函數(shù)就能使大家輕松完成設置,我們只需要改變該函數(shù)的參數(shù)即可,例如 Serial.begin(9600),則表示波特率為 9600bit/s(每秒比特數(shù)bps),其余參數(shù)默認即可。Arduino 語言中還提供了 Serial.available()串口緩沖器狀態(tài)、Serial.()讀串口、Seria

28、l.print()串口發(fā)送及 Serial.println()帶換行符串口發(fā)送四個函數(shù)。下面我們用一段代碼來演示這些函數(shù)的用途。實驗無須char word; void setup()電路,只需要將的 USB 線連接即可。Serial.begin(9600);/ 打開串口,設置波特率為 9600 bpsvoid loop()if (Serial.available() > 0) /串口緩沖器是否有數(shù)據(jù)裝入word = Serial. if(word='a')();/串口輸入的字符是否為 aSerial.print("Robot ");/從串口發(fā)送字符串S

29、erial.println("is NO.1"); /從串口發(fā)送字符串并換行編譯完程序后,點紅圈里的按鈕,打開串口監(jiān)視器;Arduino 使用夢工廠DreamFactory17Arduino 使用選擇串口監(jiān)視器的波特率為 9600bps,在發(fā)送框里填上字母 a,點 send 發(fā)送,下面的顯示框里就會顯示返回的數(shù)據(jù),如果發(fā)送其他字母,則無返回值。第四課 Arduino 的I2C/TWI 通訊什么的I2C 呢?I2C 即 InterIntegrated Circuit 串行總線的縮寫,是 PHILIPS 公司推出的間串行傳輸總線。它以 1 根串行數(shù)據(jù)線(SDA)和 1 根串行時

30、鐘線(SCL)實現(xiàn)了雙工的同步數(shù)據(jù)傳輸。具有接口線少,化,器件封裝形式小,通信速率較高等優(yōu)點。在主從通信中,可以有多個 I2C 總線器件同時接到 I2C 總線上,通過地址來識別通信對象。幸運的是,Arduino 已經為我們提供了 I2C 的庫函數(shù)(Wi),這樣我們就可以很輕松的玩 IIC 通訊了 。這里使用Arduino Diecimila 做主機,2 個 Arduino Nano 做從機(不一定非要 nano 做從機,Arduino Diecimila、Mini 甚至其他IIC 器件都可以。如果 IIC 總線上掛了多個從機,那么就要在總線上加上拉電阻。),Arduino Nano 是 Ard

31、uino中的新成員,估計大家還不太熟悉吧,這里我就簡單一下。Arduino Nano 實際和Arduino Diecimila 差不多,但 Arduino Nano 與 Arduino Diecimila 相比較,Arduino NanArduino 使用夢工廠DreamFactory18o 在體積上占很大優(yōu)勢,并且具有 8 個模擬口,比Arduino Diecimila 還多 2 個,還具有 USB 電源和外接電源自動切換功能,12 版的編譯環(huán)境支持nano 硬件。Arduino 使用I2C 總線也是主從方式通訊,I2C 總線連接多個微器,顯然不能同時兩個主器件,先總線的器件成為主器件,這就

32、是總線競爭。在競爭過程中數(shù)據(jù)被破壞、丟失。數(shù)據(jù)只能在主、從器件中傳送,結束后,主、從器件將總線,主、從器件角色。下面我們就做個簡單的 I2C 通訊實驗,通過編譯環(huán)境的串口監(jiān)視器向主機發(fā)送指令,主機收到后,再通過 I2C 總線發(fā)送給地址匹配的從機,然后從機驅動 LED 點亮。代碼分主從部分,主機部分寫入 Arduino Diecimila,從機部分寫入 Arduino Nano。實驗實物圖:Arduino 使用夢工廠DreamFactory19Arduino 使用在上代碼之前,我們先了解一下 IIC 的庫函數(shù)Wi里面的常用函數(shù)。·····

33、3;····begin() begin(address)requestFrom(address, count) beginTransmission(address) endTransmission()send()byte available() byte receive() onReceive(handler) onRequest(handler)/初始化Wire 庫,和設置 IIC 總線主從機/帶地址參數(shù)就是從機,不帶就是主機/在啟動IIC 總線后,可以繼續(xù)/開始給從機發(fā)送地址另一個地址,和次數(shù)/結束本次IIC 通訊,與上條函數(shù)成對使用/發(fā)送數(shù)據(jù)/用于

34、/接收數(shù)據(jù)數(shù)據(jù)是否有效,有效才開始接收/從機接收主機發(fā)來的數(shù)據(jù)/從機請求主機發(fā)送數(shù)據(jù)主機代碼:(從編譯器串口監(jiān)視器發(fā)送數(shù)字 1,2,3,4 來從機的 LED 亮與滅)#include <Wi void setup()Wire.begin();>/啟動I2C 總線,地址缺省表示為主機/啟動串口,設置波特率為 9600 y"); /發(fā)送字符Serial.begin(9600);Serial.println("void loop()int val;if(Serial.available() > 0) /串口緩沖器是否有數(shù)據(jù)裝入val=Serial. if(val

35、=49)/1();/讀串口Wire.beginTransmission(4); / 與地址 4 的從機連接通訊Arduino 使用夢工廠DreamFactory20Arduino 使用Wire.send(1); Wire.endTransmission(); Serial.println("49 OK");delay(10);/發(fā)送數(shù)字 1 開 LED 停止發(fā)送串口上顯示 49 OK 表示完成,49 表示為數(shù)字 1 的ASCII 碼else if(val=50)/2Wire.beginTransmission(4); Wire.send(0); Wire.endTransm

36、ission(); Serial.println("50 OK"); delay(10);else if(val=51)/3Wire.beginTransmission(5); Wire.send(1); Wire.endTransmission(); Serial.println("51 OK"); delay(10);else if(val=52)/4Wire.beginTransmission(5); Wire.send(0); Wire.endTransmission(); Serial.println("52 OK"); d

37、elay(10);else Serial.println(val);/與地址 4 的從機連接通訊發(fā)送數(shù)字 0 關 LED停止發(fā)送串口上顯示 50 OK 表示完成/與地址 5 的從機連接通訊發(fā)送數(shù)字 1 開 LED停止發(fā)送串口上顯示 51 OK 表示完成/與地址 5 的從機連接通訊發(fā)送數(shù)字 0 關 LED停止發(fā)送串口上顯示 52 OK 表示完成從機 A 代碼:(接收到主機發(fā)送的 1 點亮 LED,接收到 0 關掉 LED)#include <Wi int LED = 2; void setup()Wire.begin(4);>/ 設置從機地址為 4/從機接收主機發(fā)來的數(shù)據(jù)/ 設置IO

38、 口為輸出模式Wire.onReceive(receiveEvent);pinMED,OUTPUT);Arduino 使用夢工廠DreamFactory21Arduino 使用void loop()delay(100);void receiveEvent(int howMany)int c = Wire.receive(); if(c=1)/ 接收從主機發(fā)過來的數(shù)據(jù)/ 接收單個字節(jié)digitalWrite(LED,HIGH); / 如果為 1 開LEDelse if(c=0)digitalWrite(LED,LOW); / 如果為 0 關LED從機 B 代碼:(接收到主機發(fā)送的 1 點亮 LE

39、D,接收到 0 關掉 LED)#include <Wi int LED = 2; void setup()Wire.begin(5);>/ 設置從機地址為 5Wire.onReceive(receiveEvent); /pinMED,OUTPUT);void loop()delay(100);void receiveEvent(int howMany)int c = Wire.receive(); if(c=1)digitalWrite(LED,HIGH);else if(c=0)digitalWrite(LED,LOW);Arduino 使用夢工廠DreamFactory22Ar

40、duino 使用第五課 Arduino1602 字符液晶顯示1602 字符液晶是最常用的一種,很具有代表性,1602 液晶分 4 總線和 8 總線 2 種驅動方式(關于該液晶的詳細資料,大家可以搜索,這里就不做詳細說明了)。我們用單片機驅動 1602 液晶,使用并口操作很容易就驅動起來了,但使用 Arduino 板驅動 1602 液晶,還真有點費勁,因為他只能位操作。根據(jù)官方提供的例程,很容易看出他們使用的是最常用的 8 總線驅動方式, int DI = 12;int RW = 11;他巧妙的使用 for 循環(huán)語句完成了位操作的賦值。來看看官方的工程代碼:int DB = 3, 4, 5, 6

41、, 7, 8, 9, 10;/使用數(shù)組來定義總線需要的管腳int Enable = 2;void Lcdint i = 0;dWrite(int value) / poll all the pinsfor (i=DB0; i <= DI; i+)/總線賦值digitalWrite(i,value & 01);value >>= 1;digitalWrite(Enable,LOW); delayMicroseconds(1); digitalWrite(Enable,HIGH); delayMicroseconds(1); digitalWrite(Enable,LOW

42、); delayMicroseconds(1);/ send a pulse to enable/ pause 1 ms according to datasheet/ pause 1 ms according to datasheetvoid LcdDataWrite(int value)int i = 0; digitalWrite(DI, HIGH); digitalWrite(RW, LOW);/ poll all the pinsfor (i=DB0; i <= DB7; i+) digitalWrite(i,value & 01);value >>= 1;

43、digitalWrite(Enable,LOW);delayMicroseconds(1); digitalWrite(Enable,HIGH); delayMicroseconds(1); digitalWrite(Enable,LOW);delayMicroseconds(1);/ send a pulse to enable/ pause 1 ms according to datasheetArduino 使用夢工廠DreamFactory23Arduino 使用void setup (void) int i = 0;for (i=Enable; i <= DI; i+)pinM

44、ode(i,OUTPUT);delay(100);/ initiatize lcd after a short pauseneeded by the LCDs controllerLcddWrite(0x38);/ set:/ 8-bit interface, 1 display lines, 5x7 fontdelay(20);LcddWrite(0x06);/ entry mode set:/ increment automatically, no display shiftdelay(20);LcddWrite(0x0E);/ display control: / turn displa

45、y on, cursor on, no blinkingdelay(20);LcddWrite(0x01);/ clear display, set cursor position to zerodelay(100);LcddWrite(0x80);/ display control: / turn display on, cursor on, no blinkingdelay(20);void loop (void) LcddWrite(0x02);/ set cursor position to zero/ Write the welcome messagedelay(10); LcdDa

46、taWrite('H'); LcdDataWrite('o'); LcdDataWrite('l'); LcdDataWrite('a'); LcdDataWrite(' '); LcdDataWrite('C'); LcdDataWrite('a'); LcdDataWrite('r'); LcdDataWrite('a'); LcdDataWrite('c'); LcdDataWrite('o'); LcdDataW

47、rite('l'); LcdDataWrite('a');delay(500);實驗器材:Arduino DM一個,USB 電纜一根,LCD1602 一個,線若干。根據(jù)例程定義接線圖如下:Arduino 使用夢工廠DreamFactory24Arduino 使用大家需要注意的是,液晶根據(jù)不同的顏色不同的型號,對比度(VEE)調節(jié)電壓也不同,行調節(jié),本實驗使用的是灰膜液晶,VEE 直接接到地即可。都需要接個電位器進Arduino 使用夢工廠DreamFactory25Arduino 使用根據(jù)我們使用的液晶更改功能初始化設置,指令集如下表:它的讀寫操作、屏幕和光標的

48、操作都是通過指令編程來實現(xiàn)的。(說明:1 為高指令 1:清顯示,指令碼 01H,光標復位到地址 00H 位置指令 2:光標復位,光標返回到地址 00H、0 為低)指令 3:光標和顯示模式設置 I/D:光標移動方向,高右移,低左移 S:屏幕上所有文字是否左移或者右移。高表示有效,低則無效指令 4:顯示開關。 D:整體顯示的開與關,高表示開顯示,低表示關顯示 C:不閃爍光標的開與關,高表示有光標,低表示無光標 B:光標是否閃爍,高閃爍,低指令 5:光標或顯示移位 S/C:高時移動顯示的文字,低時移動光標指令 6:功能設置命令 DL:高時為 4 位總線,低時為 8 位總線 N:低時為單行顯示,高時雙

49、行顯示 F: 低時顯示 5x7 的點陣字符,高時顯示 5x10 的點陣字符指令 7:字符發(fā)生器 RAM 地址設置指令 8:DDRAM 地址設置指令 9:讀忙信號和光標地址 BF:為忙標志位,高不忙。指令 10:寫數(shù)據(jù)指令 11:讀數(shù)據(jù)表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低表示Arduino 使用夢工廠DreamFactory26Arduino DM 的數(shù)字端口只有 14 個,那么 LCD1602 就占用了 10 個,浪費了不少資源,對我們以后的電路擴展帶來了極大的不便。于是我就可以使用該液晶的 4 總線驅動方式,可以節(jié)省 3 個數(shù)字端口出來作其他擴展。本人編寫的工程代碼如下:Ardui

50、no 使用/*/ int LCD1602_RS=12;int LCD1602_RW=11;int LCD1602_EN=10;int DB = 6, 7, 8, 9;char str1="Welcome to"/定義 4 總線數(shù)字IO 口/第一行顯示內容char str2="R"/第二行顯示內容/*/void LCD_int i,temp;d_Write(intd)/寫命令digitalWrite( LCD1602_RS,LOW); digitalWrite( LCD1602_RW,LOW);digitalWrite( LCD1602_EN,LOW);t

51、emp=d & 0xf0;for (i=DB0; i <= 9; i+)digitalWrite(i,temp & 0x80); temp <<= 1;digitalWrite( LCD1602_EN,HIGH); delayMicroseconds(1); digitalWrite( LCD1602_EN,LOW);temp=(d & 0x0f)<<4;for (i=DB0; i <= 10; i+)digitalWrite(i,temp & 0x80); temp <<= 1;digitalWrite( LCD

52、1602_EN,HIGH); delayMicroseconds(1); digitalWrite( LCD1602_EN,LOW);/*/void LCD_Data_Write(int dat)int i=0,temp;/寫數(shù)據(jù)Arduino 使用夢工廠DreamFactory27Arduino 使用digitalWrite( LCD1602_RS,HIGH); digitalWrite( LCD1602_RW,LOW); digitalWrite( LCD1602_EN,LOW); temp=dat & 0xf0;for (i=DB0; i <= 9; i+)digitalWrite(i,temp & 0x80); temp <<= 1;digitalWrite( LCD1602_EN,HIGH); dela

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論