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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5779|回復: 20
打印 上一主題 下一主題
收起左側

【Arduino】168種傳感器模塊系列實驗(142)---LCD1602擴展板模塊

[復制鏈接]
跳轉到指定樓層
樓主
37款傳感器與模塊的提法,在網絡上廣泛流傳,其實Arduino能夠兼容的傳感器模塊肯定是不止37種的。鑒于本人手頭積累了一些傳感器和模塊,依照實踐出真知(一定要動手做)的理念,以學習和交流為目的,這里準備逐一動手試試做實驗,不管成功與否,都會記錄下來---小小的進步或是搞不定的問題,希望能夠拋磚引玉。

【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
實驗一百四十二:LCD1602 字符液晶屏 輸入輸出擴展板 LCD Keypad Shield





評分

參與人數 1黑幣 +12 收起 理由
zero0 + 12 很給力!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:513258 發表于 2020-2-12 11:47 | 只看該作者
LCD
LCD 即 Liquid Crystal Display 的首字母縮寫,意為“液態晶體顯示器”,即液晶顯示器。而 LED 顯示器是指液晶顯示器(LCD)中的一種,即以 LED(發光二極管)為背光光源的液晶顯示器(LCD)。可見,LCD 是包括 LED的。與 LED 顯示器相對應的實際上是 CCFL顯示器。




工作原理
液晶從形狀和外觀看上去都是一種液體,但它的水晶式分子結構又表現出固體的形態。像磁場中的金屬一樣,當受到外界電場影響時,其分子會產生精確的有序排列;如對分子的排列加以適當的控制,液晶分子將會允許光線穿透;光線穿透液晶的路徑可由構成它的分子排列來決定,這又是固體的一種特征。液晶是一種有機復合物,由長棒狀的分子構成。在自然狀態下,這些棒狀分子的長軸大致平行。液晶屏(Liquid Crystal Display,以下簡稱LCD)第一個特點是必須將液晶灌入兩個列有細槽的平面之間才能正常工作。這兩個平面上的槽互相垂直(90度相交),也就是說,若一個平面上的分子南北向排列,則另一平面上的分子東西向排列,而位于兩個平面之間的分子被強迫進入一種90度扭轉的狀態。由于光線順著分子的排列方向傳播,所以光線經過液晶時也被扭轉90度。但當液晶上加一個電壓時,分子便會重新垂直排列,使光線能直射出去,而不發生任何扭轉。LCD的第二個特點是它依賴極化濾光片和光線本身,自然光線是朝四面八方隨機發散的,極化濾光片實際是一系列越來越細的平行線。這些線形成一張網,阻斷不與這些線平行的所有光線,極化濾光片的線正好與第一個垂直,所以能完全阻斷那些已經極化的光線。 只有兩個濾光片的線完全平行,或者光線本身已扭轉到與第二個極化濾光片相匹配,光線才得以穿透。LCD正是由這樣兩個相互垂直的極化濾光片構成,所以在正常情況下應該阻斷所有試圖穿透的光線。但是,由于兩個濾光片之間充滿了扭曲液晶,所以在光線穿出第一個濾光片后,會被液晶分子扭轉90度,最后從第二個濾光片中穿出。另一方面,若為液晶加一個電壓,分子又會重新排列并完全平行,使光線不再扭轉,所以正好被第二個濾光片擋住。以Synaptics TDDI技術為例,是將觸摸控制器和顯示驅動器整合到了單一芯片中,這減少了組件數量,簡化了設計。ClearPad 4291支持混合多點內嵌式設計,因利用了液晶顯示器(LCD)中的已有層,因而無需分立式觸控傳感器。ClearPad 4191又前進了一步,利用了LCD中已有的電極,因此實現了更加簡潔的系統架構。這兩款解決方案都使觸控屏更薄、顯示器更明亮,有助于改進智能手機和平板電腦設計的整體美學效果。對于反射式的TN(扭轉向列型 Twisted Nematic)液晶顯示器其構造由如下幾層組成:極化濾光片、玻璃、相互絕緣又透明的縱橫兩組電極、液晶體、電極、玻璃、極化濾光片、反射片。

回復

使用道具 舉報

板凳
ID:513258 發表于 2020-2-12 12:00 | 只看該作者
LCD1602
也叫1602字符型液晶,它能顯示2行字符信息,每行又能顯示16個字符,所以簡稱1602。它是一種專門用來顯示字母、數字、符號的點陣型液晶模塊。它是由字符型液晶顯示屏(LCD)、控制驅動主電路HD44780及其擴展驅動電路HD44100,以及少量電阻、電容元件和結構件等裝配在PCB板上而組成。由若干個5x7或者5x10的點陣字符位組成,每個點陣字符位都可以用顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此,所以它不能很好的顯示圖片。不同廠家生產的LCD1602芯片可能有所不同,但使用方法都是一樣的。為了降低成本,絕大多數制造商都直接將裸片做到板子上。采用單+5V 電源供電,外圍電路配置簡單,價格便宜,具有很高的性價比。




回復

使用道具 舉報

地板
ID:513258 發表于 2020-2-12 12:08 | 只看該作者
管腳功能
1602采用標準的16腳接口,其中:
第1引腳:GND為電源地
第2引腳:VCC接5V電源正極
第3引腳:V0為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會 產生“鬼影”,使用時可以通過一個10K的電位器調整對比度)。
第4引腳:RS為寄存器選擇,高電平1時選擇數據寄存器、低電平0時選擇指令寄存器。
第5引腳:RW為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。
第6引腳:E(或EN)端為使能(enable)端,高電平(1)時讀取信息,負跳
變時執行指令。
第7~14引腳:D0~D7為8位雙向數據端。第15~16腳:空腳或背燈電
源。
第15引腳背光正極,
第16引腳背光負極。




回復

使用道具 舉報

5#
ID:513258 發表于 2020-2-12 12:15 | 只看該作者
LCD1602 電原理圖



回復

使用道具 舉報

6#
ID:513258 發表于 2020-2-12 13:52 | 只看該作者
LCD1602的指令說明



回復

使用道具 舉報

7#
ID:513258 發表于 2020-2-12 14:31 | 只看該作者
LCD Keypad Shield擴展板
是一款提供2行16字符液晶顯示的Arduino擴展板。擴展了多個按鍵輸入,可供用戶作為LCD顯示屏的菜單選擇按鍵或者操控按鍵使用。一個擴展板就能讓你與Arduino設備進行互動。我們還擴展Arduino Reset按鍵,方便用戶進行軟件調試。用戶通過調節擴展板上的藍色電位器,能夠幫助您調節LCD屏的對比度。

對于Arduino初學者來說,不必為繁瑣復雜液晶驅動電路連線而頭疼了,這款LCD擴展板將電路簡化,直接將此板插到Arduino Duemilanove 或 Uno控制器上即可使用,調用Arduino自帶的LCD庫,簡單的幾行代碼便可以完成數據和字符的顯示功能,有興趣的朋友還能學習自定義顯示內容。




回復

使用道具 舉報

8#
ID:513258 發表于 2020-2-12 14:58 | 只看該作者

技術規格
1602藍色背景液晶(2行16字節)
具有LCD對比度調節功能
5個按鍵輸入
擴展模擬信號傳感器接口和數字口
ICSP編程接口
具有APC220,藍牙V3接口
尺寸:58x80mm

模塊應用
鍋爐控制面板
機器人控制面板
環境監控設備
機械運行狀態監控

回復

使用道具 舉報

9#
ID:513258 發表于 2020-2-12 15:26 | 只看該作者
模塊電原理圖



回復

使用道具 舉報

10#
ID:513258 發表于 2020-2-12 15:57 | 只看該作者

LCD Keypad Shield輸入輸出擴展板使用2行16個字符液晶,具有對比度調節和背光燈,使用1個模擬口便完成5個按鍵的輸入,1個復位按鍵,未使用的IO口都擴展出來備用,充分利用IO口。占用數字端口:PIN4(DB4),5(DB5),6(DB6),7(DB7),8(RS),9(E),10(背光控制),模擬按鍵端口A0。

引腳定義
模擬A0   按鈕(選擇、向上、向右、向下和向左)
數字4   DB4
數字5   DB5
數字6   DB6
數字7   DB7
數字8   RS(數據或信號顯示選擇)
數字9   復位
數字10 背光控制

回復

使用道具 舉報

11#
ID:513258 發表于 2020-2-12 16:01 | 只看該作者

回復

使用道具 舉報

12#
ID:513258 發表于 2020-2-12 16:19 | 只看該作者



回復

使用道具 舉報

13#
ID:513258 發表于 2020-2-13 09:12 | 只看該作者
實驗開源參考代碼

  1. /*
  2. 【Arduino】168種傳感器模塊系列實驗(資料 +代碼 +圖形 +仿真)
  3. 實驗一百四十二:LCD1602 字符液晶屏 輸入輸出擴展板 LCD Keypad Shield
  4. 實驗之一:這個程序用來測試LCD液晶顯示模塊和5個按鍵。
  5. */

  6. #include <LiquidCrystal.h>

  7. // 選擇LCD上使用到的引腳
  8. LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

  9. // 定義各按鍵
  10. int lcd_key     = 0;
  11. int adc_key_in  = 0;

  12. #define btnRIGHT  0
  13. #define btnUP     1
  14. #define btnDOWN   2
  15. #define btnLEFT   3
  16. #define btnSELECT 4
  17. #define btnNONE   5

  18. //讀取按鍵值
  19. int read_LCD_buttons()
  20. {
  21. adc_key_in = analogRead(0);          // 從模擬口0讀值
  22. // 直接讀到的5個按鍵值在以下值附近:0,144,329,504,741
  23. // 通過設定不同的閥值,就可以對應讀到相應的按鍵
  24. if (adc_key_in > 1000) return btnNONE;
  25. if (adc_key_in < 50)   return btnRIGHT;  
  26. if (adc_key_in < 250)  return btnUP;
  27. if (adc_key_in < 450)  return btnDOWN;
  28. if (adc_key_in < 650)  return btnLEFT;
  29. if (adc_key_in < 850)  return btnSELECT;  

  30. // V1.0的版本使用以下的閥值:
  31. /*
  32. if (adc_key_in < 50)   return btnRIGHT;  
  33. if (adc_key_in < 195)  return btnUP;
  34. if (adc_key_in < 380)  return btnDOWN;
  35. if (adc_key_in < 555)  return btnLEFT;
  36. if (adc_key_in < 790)  return btnSELECT;   
  37. */

  38. return btnNONE;
  39. }

  40. void setup()
  41. {
  42. lcd.begin(16, 2);              // 開始
  43. lcd.setCursor(0,0);
  44. lcd.print("Push the buttons"); // 輸出“Push the buttons”
  45. }

  46. void loop()
  47. {
  48. lcd.setCursor(9,1);            // 光標定在第二行,空開9格
  49. lcd.print(millis()/1000);      // 輸出等待時間


  50. lcd.setCursor(0,1);            // 光標移動到第二行開頭
  51. lcd_key = read_LCD_buttons();  // 讀取按鍵

  52. switch (lcd_key)               // 選擇按鍵
  53. {
  54.    case btnRIGHT:
  55.      {
  56.      lcd.print("RIGHT ");
  57.      break;
  58.      }
  59.    case btnLEFT:
  60.      {
  61.      lcd.print("LEFT   ");
  62.      break;
  63.      }
  64.    case btnUP:
  65.      {
  66.      lcd.print("UP    ");
  67.      break;
  68.      }
  69.    case btnDOWN:
  70.      {
  71.      lcd.print("DOWN  ");
  72.      break;
  73.      }
  74.    case btnSELECT:
  75.      {
  76.      lcd.print("SELECT");
  77.      break;
  78.      }
  79.      case btnNONE:
  80.      {
  81.      lcd.print("NONE  ");
  82.      break;
  83.      }
  84. }
  85. }
復制代碼



回復

使用道具 舉報

14#
ID:513258 發表于 2020-2-13 09:12 | 只看該作者
實驗場景圖



回復

使用道具 舉報

15#
ID:513258 發表于 2020-2-13 09:24 | 只看該作者
按下不同按鍵的輸出顯示




回復

使用道具 舉報

16#
ID:513258 發表于 2020-2-13 10:21 | 只看該作者
  1. /*
  2.   【Arduino】168種傳感器模塊系列實驗(資料 +代碼 +圖形 +仿真)
  3.   實驗一百四十二:LCD1602 字符液晶屏 輸入輸出擴展板 LCD Keypad Shield
  4.   實驗之二:ADC密鑰測試
  5.   LiquidCrystal庫:IDE—工具—管理庫—搜索LiquidCrystal—安裝
  6. */

  7. #include <LiquidCrystal.h>

  8. LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

  9. char msgs[5][16] = {"Right Key OK ",
  10.                     "Up Key OK    ",
  11.                     "Down Key OK  ",
  12.                     "Left Key OK  ",
  13.                     "Select Key OK"
  14.                    };

  15. int adc_key_val[5] = {50, 200, 400, 600, 800 };
  16. int NUM_KEYS = 5;
  17. int adc_key_in;
  18. int key = -1;
  19. int oldkey = -1;

  20. void setup()
  21. {
  22.   lcd.clear();
  23.   lcd.begin(16, 2);
  24.   lcd.setCursor(0, 0);
  25.   lcd.print("ADC key testing");
  26. }

  27. void loop()
  28. {
  29.   adc_key_in = analogRead(0);    // 從A0傳感器端讀取值
  30.   key = get_key(adc_key_in);  // 轉換為按鍵

  31.   if (key != oldkey)   // 如果檢測到按鍵
  32.   {
  33.     delay(50);  // 等待解除緩沖時間
  34.     adc_key_in = analogRead(0);    // 從A0傳感器端讀取值
  35.     key = get_key(adc_key_in);    // 轉換為按鍵
  36.     if (key != oldkey)
  37.     {
  38.       lcd.setCursor(0, 1);
  39.       oldkey = key;
  40.       if (key >= 0) {
  41.         lcd.print(msgs[key]);
  42.       }
  43.     }
  44.   }
  45.   delay(100);
  46. }

  47. // 將ADC值轉換為密鑰號
  48. int get_key(unsigned int input)
  49. {
  50.   int k;

  51.   for (k = 0; k < NUM_KEYS; k++)
  52.   {
  53.     if (input < adc_key_val[k])
  54.     {
  55.       return k;
  56.     }
  57.   }

  58.   if (k >= NUM_KEYS)k = -1;  // 未按下有效鍵
  59.   return k;
  60. }
復制代碼


回復

使用道具 舉報

17#
ID:513258 發表于 2020-2-13 10:32 | 只看該作者

回復

使用道具 舉報

18#
ID:513258 發表于 2020-2-13 14:56 | 只看該作者

回復

使用道具 舉報

19#
ID:513258 發表于 2020-2-26 08:37 | 只看該作者

回復

使用道具 舉報

20#
ID:102702 發表于 2020-4-5 23:11 | 只看該作者
樓主你整合一下這文章就好了
回復

使用道具 舉報

21#
ID:513258 發表于 2020-10-24 16:00 | 只看該作者
raymondau 發表于 2020-4-5 23:11
樓主你整合一下這文章就好了

謝謝師傅鼓勵,出版社有約書,可我的基礎太差,勉強發帖了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品国产精品国产专区不片 | 成人三级视频 | 欧美一区视频在线 | 亚洲精品视频三区 | 成人欧美一区二区三区在线播放 | 日日夜夜天天 | 日日操视频 | 久久久天天 | 亚洲国产二区 | 日本视频在线播放 | 久久免费精彩视频 | 久久com | 国产三级国产精品 | 精品视频免费在线 | 欧美久久一级特黄毛片 | 美女天天干 | 色悠悠久| 国产高清在线精品一区二区三区 | 精品国产乱码久久久久久久久 | 国产在线精品一区二区 | 男女羞羞视频在线看 | 日韩成人 | 一区二区三区免费观看 | 羞羞羞视频 | 亚洲精品视频一区二区三区 | 狠狠色综合欧美激情 | 欧美伊人| 91精品国产一区二区三区 | 亚洲精品大全 | 精品欧美一区二区三区久久久 | 国产精品久久久久一区二区三区 | 神马久久久久久久久久 | 成人片免费看 | 欧洲精品在线观看 | 99精品国产一区二区三区 | 久久久精品网站 | 在线精品一区二区三区 | www日本在线播放 | 日韩中文字幕在线 | 亚洲高清视频在线 | 91成人免费看片 |