<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> STM32 >> 瀏覽文章

        Rainbow LCD顯示:制作一個簡單的電子溫濕度計

        作者:huqin   來源:本站原創   點擊數:  更新時間:2014年05月09日   【字體:

          液晶顯示器型號多種多樣,我們這里僅以1602這種最簡單的16*2字符點陣液晶模塊為例,結合DHT11來制作一個簡單的電子溫濕度計:這個溫濕度計分兩行顯示,第一行顯示當前溫度,第二行顯示當前的濕度,溫濕度每隔1秒鐘刷新一次。


         
            1602模塊共16個腳,具體功能見表格:

            由于STM32是3.3V供電,所以我們需要選用3.3V電壓的1602模塊,同時我們為了節約口線,采用了四位數據模式,D0-D3未使用。1602與Rainbow之間的接線關系如下:
            VSS => GND
            VDD => 3.3V
            VL  => 從電位器接出,電位器接在GND和3.3V之間
            RS  => PC0
            R/W => GND
            E   => PC2
            D0-D3 懸空
            D4  => PA0
            D5  => PA2
            D6  => PA4
            D7  => PA6
            BLA => 3.3V
            BLK => 與GND之間接一個100-200歐姆的電阻

         
            由于Rainbow對1602使用了C++進行封裝,使用起來很簡單,步驟如下:
            1、定義lcd對象,并指定相應的管腳:LiquidCrystal lcd(PC0, PC2, PA0, PA2, PA4, PA6),這里我們采用四位數據方式,R/W接地,對應的接線如前所述
            2、調用lcd.begin(16, 2),將lcd的模式設置成兩行顯示,每行16個字符
            3、調用lcd.setCursor()設置當前光標位置,lcd.print()在光標處輸出字符串

         
            在軟件包的“Projects\E-Thermometer”文件夾包含了本文所述的電子溫濕度計的程序,可以直接編譯、燒寫和調試。我們來看看代碼:
        #include "WProgram.h"
        #include "Dht11.h"
        #include "LiquidCrystal.h"

         
        //定義Dth11對象,需要指定DHT11數據管腳對應的GPIO管腳
        Dht11 dht11(DHT11_DATA_PIN);

         
        //定義LCD對象,使用d4-d7四條數據線進行驅動,將rw接地
        //我們共用到了6個IO:RS、E、D4-D7,RW接低電平
        //本程序接法:
        // RS => PC0
        // E => PC2
        // D4-D7 => PA0、PA2、PA4、PA6
        LiquidCrystal lcd(PC0, PC2, PA0, PA2, PA4, PA6);

         
        void setup()
        {
          //初始化開發板
          boardInit();
          //兩行顯示,每行16個字符
          lcd.begin(16, 2);

         
          lcd.print("Waiting...");
        }

         
        void loop()
        {
          while(1)
          {
            //判斷數據采集是否成功
            if(dht11.read() == Dht11::OK)
            {
              //定位到第一行,第一列顯示溫度
              lcd.setCursor(0, 0);
              lcd.print("Temperature:");
              lcd.print(dht11.getTemperature());
              lcd.write(0xDF);
              lcd.print("C");
              //第二行顯示濕度
              lcd.setCursor(0, 1);
              lcd.print("Humidity:");
              lcd.print(dht11.getHumidity());
              lcd.print("%");
            }

         
            delay(1000);
          }
        }

         

         
        int main(void)
        {
          setup();
          while(1) loop();
        }
            程序編譯無誤后,通過ST-LINK寫入到Rainbow中,將DHT11溫濕度模塊插入到Rainbow中,就可以在液晶上直觀顯示出當前的溫濕度。

         
        關閉窗口
        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮