LabVIEW+Arduino之LCD顯示

2021-01-08 沛華測控LabVIEW課程

今天的內容是LCD顯示,稍微有點複雜,所以拖更研究的時間有一丟丟久。接下來,一起來看實現的效果吧!

請看視頻

實物接線圖

12864系列LCD的接線如下(背光引腳接電源正負極,PSB引腳接地,表示選擇串行通信):

LabVIEW程序框圖

LabVIEW程序依舊是使用串口通信與Arduino「對話」,但是這次沒有用LINX工具包,而是用自己編寫的簡單串口通信程序:

第1部分 For循環初始化得到一個不斷遞增1字符的字符串數組;以此為基礎實現字符串動態遞增顯示的效果;

第2部分 初始化串口,默認波特率為9600,與Arduino一致;

第3部分 將字符串數組通過for循環索引,每隔0.1s通過串口發送相應的數據給Arduino開發板;

第4部分Arduino接收到LabVIEW發送下來的34個字節的字符串數據(包含2個字節的數據包頭+32個字節的數據),在LCD上顯示出來後,將接收到的32個字節的數據返回給LabVIEW;

第5部分 退出循環後關閉串口。

Arduino原始碼

向上滑動查看Arduino原始碼

#define LCD_RS 2

#define LCD_RW 3

#define LCD_E 4

#define LCD_REST 5

unsigned char Receptions[32] = {};

void setup() {

for (char i = 2; i <= 5; i++)

{

pinMode(i, OUTPUT);

}

Serial.begin(9600);

LCDInit(LCD_REST, LCD_RS, LCD_RW, LCD_E);

}

void loop() {

if (Serial.available() > 2)

{

if (Serial.read() == 0x55)

{

if (Serial.read() == 0xAA)

{

for (char i = 0; i <= 31; i++)

{

delay(1);

Receptions[i] = Serial.read();

}

ShowWord(0x80, Receptions, 16, LCD_RS, LCD_RW, LCD_E);

Serial.write(Receptions, 32);

}

}

}

}

void SendByteLCD(unsigned char WLCDData, char RW, char E)

{

unsigned char i;

for (i = 0; i < 8; i++)

{

if ((WLCDData << i) & 0x80)digitalWrite(RW, 1);

else digitalWrite(RW, 0);

digitalWrite(E, 0);

digitalWrite(E, 1);

}

}

void SPIWR(unsigned char Wdata, unsigned char WRS, char RW, char E)

{

SendByteLCD(0xf8 + (WRS << 1), RW, E);

SendByteLCD(Wdata & 0xf0, RW, E);

SendByteLCD((Wdata << 4) & 0xf0, RW, E);

}

void WRCommand(unsigned char CMD, char RS, char RW, char E)

{

digitalWrite(RS, 0);

digitalWrite(RS, 1);

SPIWR(CMD, 0, RW, E);

delay(1);

}

void WRData(unsigned char Data, char RS, char RW, char E)

{

digitalWrite(RS, 0);

digitalWrite(RS, 1);

SPIWR(Data, 1, RW, E);

}

void LCDInit(char REST, char RS, char RW, char E)

{

digitalWrite(REST, 1);

digitalWrite(REST, 0);

digitalWrite(REST, 1);

WRCommand(0x06, RS, RW, E); //啟始點設定:光標右移

WRCommand(0x01, RS, RW, E); //清除顯示 DDRAM

WRCommand(0x0C, RS, RW, E); //顯示狀態開關:整體顯示開,光標顯示關,光標顯示反白關

WRCommand(0x02, RS, RW, E); //地址歸零

}

void ShowWord(unsigned char addr, unsigned char *english, unsigned char count, char RS, char RW, char E)

{

unsigned char i;

WRCommand(addr, RS, RW, E); //設定 DDRAM 地址

for (i = 0; i < count;)

{

WRData(english[i * 2], RS, RW, E);

WRData(english[i * 2 + 1], RS, RW, E);

i++;

}

}

礙於篇幅,Arduino源碼這裡先不進行講解,後面再詳細講解Labview與Arduino串口通信的具體實現。

以上就是今天的內容~最後,溫馨提示:距離下次放假還有5天!!!加油了呀~

相關焦點

  • LABVIEW+Arduino
    而arduino可以模擬這些操作,再與LABVIEW相結合,可以在同一程序能實現切換頻點、通道等的操作,並根據測試需要將所需要的測試數據記錄在相應的表格內。一、什麼是arduinoArduino是一款便捷靈活、方便上手的開源電子原型平臺。包含硬體(各種型號的Arduino板)和軟體(Arduino IDE)。由一個歐洲開發團隊於2005年冬季開發。
  • ESkill LCD2004液晶模塊ARDUINO連接應用
    編譯後LCD2004A液晶模塊顯示結果如圖:六、注意事項1,LED2004A的vcc引腳必須接5V,接3.3V時液晶屏顯示不清楚。2,若加載arduino程序後出現找不到文件庫,應下載後按步驟到「項目->Include Library->Add Zip Library」添加到工作文件中。3,若添加後仍然報錯,找不到庫文件,則直接將下載的庫文件放到路徑C:\Program Files\Arduino\libraries下面就可以了。
  • LabVIEW+Arduino之四位數碼管顯示
    微信搜索【沛華測控】訂閱我們Shania本來想更一期「一位數碼管倒計時」的課程,後面覺得不是很有意思,於是換成四位數碼管,想做一個「數碼管顯示電壓值」的效果。經過幾天的摸索,分別使用LabVIEW和Arduino C/C++實現了同樣的效果,今天跟大家簡單分享一下。
  • Arduino基礎入門篇32—LCD1602驅動庫的使用
    LCD1602顯示本篇介紹液晶驅動庫「LiquidCrystal」,通過庫來驅動LCD1602刷新顯示秒數。1.
  • 【arduino】童芯派彩屏顯示圖片,圖片取模後在TFT液晶顯示
    原理:無論是12864的液晶還是1602的液晶,還是彩色的TFT的液晶,原理上是差不多的,只不過一般的黑白液晶是用0和1來顯示一個點,比如0代表不現實,1代表顯示,這樣一堆的點就能夠組合出圖案了。彩屏的原理也一樣,只不過因為要表示彩色,所以不能只用「黑」和「白」來表示,需要用更多的數字區分不同的顏色總結:將每個點的顏色信息發送到屏幕模塊上,就能顯示圖像了針對童芯派,童芯派上是128×128個點組成的,即128行,128列,一共128×128個點,如果是用01表示黑白,那麼這些點理論上需要128×128×1b的存儲空間(b是小寫的,即bit,位,8b=1B),如果我們要顯示
  • 【Arduino】利用I2C模板命令控制LCD1602的顯示
    #include <Wire.h>#include <LiquidCrystal_I2C.h>LiquidCrystal_I2C lcd(0x27,16,2); char array1[]=" hello world!
  • lcd12864單行反白顯示
    反白顯示   1.指在論壇內對於劇情透露之類的內容使用白色字體書寫,由讀者自行決定是否觀看。2.反白顯示還出現在AVG(即解密類遊戲的攻略中)因為人眼總有餘光,容易看到本不想看的答案(可能會喪失遊戲性)所以反白顯示。3.在12864液晶顯示屏中,指像素點黑變白,白變黑,剛好相反,顯示相同圖形。
  • lcd1602隻亮不顯示_lcd1602簡單顯示程序
    lcd1602隻亮不顯示_lcd1602簡單顯示程序 網絡整理 發表於 2020-04-23 09:13:10   lcd1602隻亮不顯示
  • 具有I2c LCD顯示屏的Arduino和ESP8266
    在此部分,我們顯示了單獨購買的適配器。我們將顯示器平行焊接在背面。通過i2c引腳,顯示器將直接與Arduino通信。因此,此Arduino將通過微控制器管理顯示器的所有命令,從而簡化其連接和編程。 void setup() { //inicializa o display (16 colunas x 2 linhas) lcd.begin (16,2); // ou 20,4 se for o display 20x4 } 循環 我們的程序將使顯示器每1秒閃爍一次。
  • Arduino 通過 I2C 驅動 LCD1602 液晶屏
    LCD 1602 液晶屏模塊的使用,之前在「Arduino用超聲波模塊+LCD1602測距並顯示」一文中有詳細介紹。
  • Arduino 課時七:控制LCD1602液晶顯示屏
    一.硬體準備:LCD1602液晶顯示屏1塊,LCD通用I2C轉接板,杜邦線若干LCD1602液晶顯示屏是經典的工業字符型液晶屏,具有2行16列,最多可以顯示二.程序設計:lcd.init():初始化LCD;lcd.backlight():開啟LCD背光;lcd.print():液晶輸出;lcd.setCursor
  • 軟硬體開源製作Arduino藍牙智能手錶,12864oled顯示
    閒暇時間試著用開源的arduino做了一個藍牙智能手錶,簡述過程把經驗分享給大家,這個藍牙手錶可以顯示時間,連接手機顯示通知數量,電池,wifi等。買齊以上材料後,如圖用烙鐵把它們對應連接起來。圖片上是沒有開關的圖,強烈建議裝個按鈕,這樣可以切換顯示。
  • 用Arduino開發物聯網設備之初識Arduino
    硬體部分:最初Arduino硬體只有那麼幾種,uno、mini等,但是現在經過這麼多年的發展,越來越多的硬體支持了arduino開發環境,所以現在也很難去界定什麼是血統純正的arduino硬體了。軟體部分:這部分也就是我們平時說的Arduino,我們其實使用的就是arduino框架來對很多的mcu來進行編程。這裡很多小夥伴其實有很多疑問,比如為什麼要用arduino來進行?
  • PS2鍵盤接口設計之二(實現了從鍵盤輸入並顯示在LCD液晶屏上)
    打開APP PS2鍵盤接口設計之二(實現了從鍵盤輸入並顯示在LCD液晶屏上) 佚名 發表於 2017-02-10 18:58:12
  • 青海省lcd顯示模塊選哪家_顯之研流行時尚
    青海省lcd顯示模塊選哪家,顯之研流行時尚,深圳辦事處:0755-83523595/83523195 上海辦事處:021-51035020。青海省lcd顯示模塊選哪家, 不要隨意更換包裝或丟掉原包裝。操作用的電動改錐都不要漏電。較需要注意的就是焊接使用的烙鐵一定要有良好的接地性,沒有漏電。
  • Arduino Nano驅動OLED滾動顯示
    本篇章我們使用Arduino Nano開發板來驅動0.91英寸OLED滾動顯示。Arduino Nano開發板是基於ATmega328的小巧且完整的Arduino系列開發板,兼容Arduino程序,你可以在官網(https://store.arduino.cc
  • Arduino 課程 第 9 課 LCD1602 I2C 液晶實驗
    LiquidCrystal_I2C lcd(0x27,16,2);初始化對象中有三個參數,分別對應 地址、列、行。地址取決於轉接板上A0 A1 A2 的連接。懸空即拔掉跳線帽。短路即插上跳線帽。#include <Wire.h>#include <LiquidCrystal_I2C.h>LiquidCrystal_I2C lcd(0x27, 16, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display// 創建液晶屏對象// 參數1 液晶屏地址// 參數2
  • 基於labview的示波器控制設計
    計算機控制示波器步驟實例(以LAN口控制為例,開發軟體:labview)下面針對計算機如何編程控制示波器的步驟進行詳細的說明。3.1 開發軟體的選取市場上最流行的分析和開發軟體很多,有VC/VC++、VB/VBA、Matlab、Labview、LabWindow CVI等開發軟體,根據個人的愛好和對某個軟體的熟悉程度來選用。
  • lcd顯示屏幕一定要購買品牌的嗎?
    隨著顯示屏應用不斷的普及,人們無論在生活或工作中也離不開它,很多人在購買智能終端產品時都想問問lcd顯示屏幕品牌,因此很多終端製造商也很關注lcd顯示屏幕品牌,以便將其做成賣點和噱頭佔領更多的市場份額,吸引消費者,因此今天海飛智顯的小編想來和大家聊聊lcd顯示屏幕品牌重要嗎?
  • Arduino顯示模塊之1602LCD
    I2C_LCD引腳說明GND - 地線 VCC - 電源(5V or 3.3v 電源不同顯示效果有點差別)SDA - I2C