新手學(xué)Arduino_第1頁
新手學(xué)Arduino_第2頁
新手學(xué)Arduino_第3頁
新手學(xué)Arduino_第4頁
新手學(xué)Arduino_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、新手學(xué)Arduino【液晶顯示】發(fā)表于 2011 年 12 月 31 日 由 sacheo本次試驗(yàn)使用arduino直接驅(qū)動1602液晶顯示文字。1602液晶在應(yīng)用中非常廣泛,最初的1602液晶使用的是HD44780控制器,現(xiàn)在各個(gè)廠家的1602模塊基本上都是采用了與之兼容的IC,所以特性上基本都是一致的。1602LCD主要技術(shù)參數(shù):顯示容量為16×2個(gè)字符;芯片工作電壓為4.55.5V;工作電流為2.0mA(5.0V);模塊最佳工作電壓為5.0V;字符尺寸為2.95×4.35(W×H)mm。1602液晶接口引腳定義:接口說明:1、兩

2、組電源 一組是模塊的電源 一組是背光板的電源 一般均使用5V供電。本次試驗(yàn)背光使用3.3V供電也可以工作。2、VL是調(diào)節(jié)對比度的引腳,串聯(lián)不大于5K的電位器進(jìn)行調(diào)節(jié)。本次實(shí)驗(yàn)使用1K的電阻來設(shè)定對比度。其連接分高電位與低電位接法,本次使用低電位接法,串聯(lián)1K電阻后接GND。3、RS 是很多液晶上都有的引腳 是命令/數(shù)據(jù)選擇引腳 該腳電平為高時(shí)表示將進(jìn)行數(shù)據(jù)操作;為低時(shí)表示進(jìn)行命令操作。4、RW 也是很多液晶上都有的引腳 是讀寫選擇端 該腳電平為高是表示要對液晶進(jìn)行讀操作;為低時(shí)表示要進(jìn)行寫操作。5、E 同樣很多液晶模塊有此引腳 通常在總線上信號穩(wěn)定后給一正脈沖通知把數(shù)據(jù)讀走,在此腳為高電平的時(shí)

3、候總線不允許變化。6、D0D7 8 位雙向并行總線,用來傳送命令和數(shù)據(jù)。7、BLA是背光源正極,BLK是背光源負(fù)極。1602液晶的基本操作分以下四種:下圖就是1602液晶實(shí)物圖1602直接與arduino通信,根據(jù)產(chǎn)品手冊描述,分8位連接法與4位連接法,咱們先使用8位連接法進(jìn)行實(shí)驗(yàn)。硬件連接方式如下圖代碼如下1. int DI = 12;2. int RW = 11;3. int DB = 3, 4, 5, 6, 7, 8, 9, 10;/使用數(shù)組來定義總線需要的管腳4. int Enable = 2;5.6. void LcdCommandWrite(int value) 7. / 定義所有

4、引腳8. int i = 0;9. for (i=DB0; i <= DI; i+) /總線賦值10. 11.    digitalWrite(i,value & 01);/因?yàn)?602液晶信號識別是D7-D0(不是D0-D7),這里是用來反轉(zhuǎn)信號。12.    value >>= 1;13. 14. digitalWrite(Enable,LOW);15. delayMicroseconds(1);16. digitalWrite(Enable,HIGH);17. delayMicroseconds(1); 

5、0;/ 延時(shí)1ms18. digitalWrite(Enable,LOW);19. delayMicroseconds(1);  / 延時(shí)1ms20. 21.22. void LcdDataWrite(int value) 23. / 定義所有引腳24. int i = 0;25. digitalWrite(DI, HIGH);26. digitalWrite(RW, LOW);27. for (i=DB0; i <= DB7; i+) 28.    digitalWrite(i,value & 01);29.    v

6、alue >>= 1;30. 31. digitalWrite(Enable,LOW);32. delayMicroseconds(1);33. digitalWrite(Enable,HIGH);34. delayMicroseconds(1);35. digitalWrite(Enable,LOW);36. delayMicroseconds(1);  / 延時(shí)1ms37. 38.39. void setup (void) 40. int i = 0;41. for (i=Enable; i <= DI; i+) 42.    pi

7、nMode(i,OUTPUT);43. 44. delay(100);45. / 短暫的停頓后初始化LCD46. / 用于LCD控制需要47. LcdCommandWrite(0×38);  / 設(shè)置為8-bit接口,2行顯示,5×7文字大小48. delay(64);49. LcdCommandWrite(0×38);  / 設(shè)置為8-bit接口,2行顯示,5×7文字大小50. delay(50);51. LcdCommandWrite(0×38);  / 設(shè)置為8-bit接口,2行

8、顯示,5×7文字大小52. delay(20);53. LcdCommandWrite(0×06);  / 輸入方式設(shè)定54.                          / 自動增量,沒有顯示移位55. delay(20);56. LcdCommandWrite(0x0E);  / 顯示設(shè)置57.         

9、60;                / 開啟顯示屏,光標(biāo)顯示,無閃爍58. delay(20);59. LcdCommandWrite(0×01);  / 屏幕清空,光標(biāo)位置歸零60. delay(100);61. LcdCommandWrite(0×80);  / 顯示設(shè)置62.                   

10、;       / 開啟顯示屏,光標(biāo)顯示,無閃爍63. delay(20);64. 65.66. void loop (void) 67.   LcdCommandWrite(0×01);  / 屏幕清空,光標(biāo)位置歸零68.   delay(10);69.   LcdCommandWrite(0×80+3);70.   delay(10);71.   / 寫入歡迎信息72.   LcdDataWr

11、ite(W);73.   LcdDataWrite(e);74.   LcdDataWrite(l);75.   LcdDataWrite(c);76.   LcdDataWrite(o);77.   LcdDataWrite(m);78.   LcdDataWrite(e);79.   LcdDataWrite( );80.   LcdDataWrite(t);81.   LcdDataWrite(o);82. &

12、#160; delay(10);83.   LcdCommandWrite(0xc0+1);  / 定義光標(biāo)位置為第二行第二個(gè)位置84.   delay(10);85.   LcdDataWrite(g);86.   LcdDataWrite(e);87.   LcdDataWrite(e);88.   LcdDataWrite(k);89.   LcdDataWrite(-);90.   LcdDataW

13、rite(w);91.   LcdDataWrite(o);92.   LcdDataWrite(r);93.   LcdDataWrite(k);94.   LcdDataWrite(s);95.   LcdDataWrite(h);96.   LcdDataWrite(o);97.   LcdDataWrite(p);98.   delay(5000);99.   LcdCommandWrite(0×0

14、1);  / 屏幕清空,光標(biāo)位置歸零100.   delay(10);101.   LcdDataWrite(I);102.   LcdDataWrite( );103.   LcdDataWrite(a);104.   LcdDataWrite(m);105.   LcdDataWrite( );106.   LcdDataWrite(h);107.   LcdDataWrite(o);108.  

15、60;LcdDataWrite(n);109.   LcdDataWrite(g);110.   LcdDataWrite(y);111.   LcdDataWrite(i);112.   delay(3000);113.   LcdCommandWrite(0×02); /設(shè)置模式為新文字替換老文字,無新文字的地方顯示不變。114.   delay(10);115.   LcdCommandWrite(0×80+5); /定義光標(biāo)位置

16、為第一行第六個(gè)位置116.   delay(10);117.   LcdDataWrite(t);118.   LcdDataWrite(h);119.   LcdDataWrite(e);120.   LcdDataWrite( );121.   LcdDataWrite(a);122.   LcdDataWrite(d);123.   LcdDataWrite(m);124.   LcdDataWrite(i);

17、125.   LcdDataWrite(n);126.   delay(5000);127. 實(shí)驗(yàn)效果如下 4位接法在正常使用下,8位接法基本把a(bǔ)rduino的數(shù)字端口占滿了,如果想要多接幾個(gè)傳感器就沒有端口了,這種情況下怎么處理呢,咱們可以使用4位接法。4位接法的硬件連接方法如下圖硬件接好后把下面的代碼上傳到控制板上,看看效果。1. int LCD1602_RS=12;2. int LCD1602_RW=11;3. int LCD1602_EN=10;4. int DB = 6, 7, 8, 9;5. char str1=”Welcome t

18、o”;6. char str2=”geek-workshop”;7. char str3=”this is the”;8. char str4=”4-bit interface”;9.10. void LCD_Command_Write(int command)11. 12. int i,temp;13. digitalWrite( LCD1602_RS,LOW);14. digitalWrite( LCD1602_RW,LOW);15. digitalWrite( LCD1602_EN,LOW);16.17. temp=command & 0xf0;18. for (i=DB0; i

19、 <= 9; i+)19. 20.    digitalWrite(i,temp & 0×80);21.    temp <<= 1;22. 23.24. digitalWrite( LCD1602_EN,HIGH);25. delayMicroseconds(1);26. digitalWrite( LCD1602_EN,LOW);27.28. temp=(command & 0x0f)<<4;29. for (i=DB0; i <= 10; i+)30. 31.    

20、digitalWrite(i,temp & 0×80);32.    temp <<= 1;33. 34.35. digitalWrite( LCD1602_EN,HIGH);36. delayMicroseconds(1);37. digitalWrite( LCD1602_EN,LOW);38. 39.40. void LCD_Data_Write(int dat)41. 42. int i=0,temp;43. digitalWrite( LCD1602_RS,HIGH);44. digitalWrite( LCD1602_RW,LOW)

21、;45. digitalWrite( LCD1602_EN,LOW);46.47. temp=dat & 0xf0;48. for (i=DB0; i <= 9; i+)49. 50.    digitalWrite(i,temp & 0×80);51.    temp <<= 1;52. 53.54. digitalWrite( LCD1602_EN,HIGH);55. delayMicroseconds(1);56. digitalWrite( LCD1602_EN,LOW);57.58. temp=(da

22、t & 0x0f)<<4;59. for (i=DB0; i <= 10; i+)60. 61.    digitalWrite(i,temp & 0×80);62.    temp <<= 1;63. 64.65. digitalWrite( LCD1602_EN,HIGH);66. delayMicroseconds(1);67. digitalWrite( LCD1602_EN,LOW);68. 69.70. void LCD_SET_XY( int x, int y )71. 72. 

23、60; int address;73.   if (y =0)    address = 0×80 + x;74.   else          address = 0xC0 + x;75.   LCD_Command_Write(address);76. 77.78. void LCD_Write_Char( int x,int y,int dat)79. 80.   LCD_SET_XY( x, y );81.

24、   LCD_Data_Write(dat);82. 83.84. void LCD_Write_String(int X,int Y,char *s)85. 86.     LCD_SET_XY( X, Y );    /設(shè)置地址87.     while (*s)             /寫字符串88.     89.       LCD_Data_Write(*s);9

25、0.       s +;91.     92. 93.94. void setup (void)95. 96.   int i = 0;97.   for (i=6; i <= 12; i+)98.    99.      pinMode(i,OUTPUT);100.    101.   delay(100);102.   LCD_Command_Write(0

26、5;28);/4線 2行 5×7103.   delay(50);104.   LCD_Command_Write(0×06);105.   delay(50);106.   LCD_Command_Write(0x0c);107.   delay(50);108.   LCD_Command_Write(0×80);109.   delay(50);110.   LCD_Command_Write(0×01);111.   delay(50);112.113. 114.115. void loop (void)116. 117.    LCD_C

溫馨提示

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

評論

0/150

提交評論