精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

將16x2 LCD與ARM7-LPC2148連接并顯示文字

科技觀察員 ? 來源:circuitdigest ? 作者:普拉莫斯·坦加維 ? 2022-10-28 17:12 ? 次閱讀

在本教程中,我們將了解如何將 16x2 LCD 與 ARM7-LPC2148 微控制器連接,并顯示簡單的歡迎消息。如果您是 ARM7 的新手,請從 ARM7 LPC2148 的基礎知識開始,并了解如何使用 Keil uVision 對其進行編程

所需材料

硬件

ARM7-LPC2148 微控制器板

液晶屏 (16X2)

電位計

5V 穩壓器 IC

試驗板

連接線

9V電池

微型 USB 連接線

軟件

凱爾烏維森 5

魔術閃光工具

在進入項目之前,我們必須對LCD操作模式和LCD十六進制代碼知之甚少。

16X2液晶顯示模塊

16X2 LCD表示它有16列和2行。此液晶屏有 16 個引腳。下圖顯示了LCD顯示器的引腳名稱及其功能。

pYYBAGNbnPaALpgqAAApmrSZMRU935.png

poYBAGNbnGKAAUhsAABw4z1oS6U392.png

LCD可以在兩種不同的模式下工作,即4位模式和8位模式。在 4 位模式下,我們逐個半字節發送數據,首先是上半字節,然后是下半字節。對于那些不知道什么是半字節的人:半字節是一組四位,所以字節的下四位(D0-D3)形成下半字節,而字節的上四位(D4-D7)形成較高的半字節。這使我們能夠發送8位數據。

而在8位模式下,我們可以一次直接發送8位數據,因為我們使用了所有8條數據線。

在本項目中,我們將使用最常用的模式,即4位模式。在四位模式下,我們可以節省4個引腳的微控制器,并減少布線開銷。

16x2還使用十六進制代碼來接受任何命令,LCD有許多十六進制命令,例如移動光標,選擇模式,將控件移動到第二行等。

電路圖和連接

poYBAGNbnHuAbeLwAAGsU8No_UU228.png

下表顯示了液晶屏與 ARM7-LPC2148 之間的電路連接。

pYYBAGNbnI2AX96gAABb2XK9euc985.png

穩壓器與液晶屏的連接 / ARM7 棒

下表顯示了 ARM7 和 LCD 與穩壓器之間的連接。

poYBAGNbnJyAVKAkAABw2-7SGp0776.png

帶液晶屏的電位計

電位計用于改變LCD顯示器的對比度。電位器有三個引腳,左引腳(1)連接到+5V,中心(2)連接到LCD模塊的VEE或V0,右引腳(3)連接到GND。我們可以通過轉動旋鈕來調整對比度。

跳線設置

ARM7-Stick中存在跳線引腳,因此我們可以通過使用USB或使用5V DC輸入來供電和上傳代碼。您可以看到下面的圖像。

下圖顯示了跳線處于直流位置。這意味著我們必須從外部5V電源為電路板供電。

poYBAGNbnPiAUVFVAACD63yUcbA985.jpg

這張圖片顯示跳線是在USB模式下連接的。在這里,電源和代碼通過微型USB端口提供。

pYYBAGNbnPqAPVJsAACCdxs_dcA071.jpg

注意:在本教程中,我們通過使用USB上傳代碼,將跳線設置為USB,然后將跳線更改為直流模式,以從穩壓器的5v輸入為LPC2148供電。您可以在最后給出的視頻中查看。

將16x2 LCD 與 ARM7 微控制器連接的最終電路如下所示:

pYYBAGNbnPyAcleXAADLYMJhBUQ265.jpg

編程 ARM7-液化板 2148

要對ARM7-LPC2148進行編程,我們需要可視化和閃存魔術工具。我們正在使用USB電纜通過微型USB端口對ARM7記憶棒進行編程。我們使用Keil編寫代碼并創建一個十六進制文件,然后使用閃存魔術將HEX文件閃存到ARM7棒。

本教程末尾給出了將 LCD 與 ARM 7 連接的完整代碼,下面我們將介紹其中的一些部分。

首先,我們需要包含所需的頭文件

#include -Header File to include LPC214x libraries

#include -Header File for using integer type with specified widths

#include - Header File for include standard library

#include - Header File for include standard input output library

初始化LCD模塊是一個非常重要的步驟。在這里,我們使用某些十六進制代碼,這些代碼實際上是命令,以告訴LCD有關操作模式(4位),LCD類型(16x2),起始行等的信息

void LCD_INITILIZE(void) //Function to get ready the LCD

{

IO0DIR = 0x0000FFF0; //Sets pin P0.4,P0.6 ,P0.12,P0.13,P0.14,P0.15as OUTPUT

delay_ms(20);

LCD_SEND(0x02); // Initialize lcd in 4-bit mode of operation

LCD_SEND(0x28); // 2 lines (16X2)

LCD_SEND(0x0C); // Display on cursor off

LCD_SEND(0x06); // Auto increment cursor

LCD_SEND(0x01); // Display clear

LCD_SEND(0x80); // First line first position

}

對于4位模式,我們對引腳有不同類型的寫入功能,即使用上下半字節。讓我們看看,它是如何完成的

void LCD_SEND(char command) //Function to send hex commands nibble by nibble

{

IO0PIN = ( (IO0PIN & 0xFFFF00FF) | ((command & 0xF0)<<8) ); //Send upper nibble of command?

IO0SET = 0x00000040; //Making Enable HIGH

IO0CLR = 0x00000030; //Making RS & RW LOW

delay_ms(5);

IO0CLR = 0x00000040; //Makeing Enable LOW

delay_ms(5);

IO0PIN = ( (IO0PIN & 0xFFFF00FF) | ((command & 0x0F)<<12) ); //Send Lower nibble of command?

IO0SET = 0x00000040; //ENABLE HIGH

IO0CLR = 0x00000030; //RS & RW LOW

delay_ms(5);

IO0CLR = 0x00000040; //ENABLE LOW

delay_ms(5);

}

蠶食發送邏輯

IO0PIN = ( (IO0PIN & 0xFFFF00FF) | ((command & 0x0F)<<12) ); //Send Lower nibble of command?

IO0PIN = ( (IO0PIN & 0xFFFF00FF) | ((command & 0xF0)<<8) ); //Send upper nibble of command?

以上兩種說法在本方案中起著重要作用。第一個命令發送下半字節,第二個命令發送上半字節。這不會影響我們所做的其他引腳。讓我們先看看它是如何發生的,然后再了解這個邏輯

ORing- (A|0=A),(A|1=1)

ANDing-(A&0=0),(A&1=A)

因此,我們使用屏蔽概念和邏輯移位操作,而不會影響其他引腳。表示僅使用引腳 (P0.12-P0.15),不影響 P0.4、P0.6 等其他引腳。它將通過將數據移入四位并使上半字節代替下半字節并掩蓋上半字節來完成。然后,我們將下位設為零(0XF0),并使用半字節數據進行ORed,以獲得輸出端的上半字節數據。

類似的過程用于較低的蠶食數據,但在這里我們不需要移動數據。

在將數據寫入輸出時,即在命令模式下,RS 應為 LOW,執行使能必須為高電平,而在數據模式下,RS 應為高電平,執行使能必須為高電平。

現在,為了發送要在輸出端打印的字符串數據,相同的原理是逐個半字節地使用。這里的重要步驟是寄存器選擇(RS)對于數據模式必須為高電平。

void LCD_DISPLAY (char* msg) //Function to print the characters sent one by one

{

uint8_t i=0;

while(msg[i]!=0)

{

IO0PIN = ( (IO0PIN & 0xFFFF00FF) | ((msg[i] & 0xF0)<<8) ); //Sends Upper nibble?

IO0SET = 0x00000050; //RS HIGH & ENABLE HIGH to print data

IO0CLR = 0x00000020; //RW LOW Write mode

delay ms(2);

IO0CLR = 0x00000040; // EN = 0, RS and RW unchanged(i.e. RS = 1, RW = 0)

delay ms(5);

IO0PIN = ( (IO0PIN & 0xFFFF00FF) | ((msg[i] & 0x0F)<<12) ); //Sends Lower nibble

IO0SET = 0x00000050; //RS & EN HIGH

IO0CLR = 0x00000020;

delay ms(2);

IO0CLR = 0x00000040;

delay ms(5);

i++;

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7487

    瀏覽量

    151045
  • lcd
    lcd
    +關注

    關注

    34

    文章

    4411

    瀏覽量

    167084
  • LPC2148
    +關注

    關注

    0

    文章

    25

    瀏覽量

    14919
收藏 人收藏

    評論

    相關推薦

    使用ESP8266和LPC2148遠程控制設備的方式

    在本教程中,我們ESP8266 Wi-Fi 模塊與 ARM7-LPC2148 微控制器連接創建一個網絡服務器來控制連接
    的頭像 發表于 09-20 16:21 ?3329次閱讀
    使用ESP8266和<b class='flag-5'>LPC2148</b>遠程控制設備的方式

    使用ARM7-LPC2148控制伺服電機的教程

    在本教程中,我們將使用 ARM7-LPC2148 控制伺服電機。伺服電機比步進電機具有低功耗的優勢。當到達所需位置時,伺服電機停止其功耗,但步進電機繼續消耗功率以軸鎖定在所需位置。伺服電機主要用于 機器人項目 ,因為它們的準確性和易于操作性。
    發表于 09-22 16:40 ?1419次閱讀
    使用<b class='flag-5'>ARM7-LPC2148</b>控制伺服電機的教程

    ARM7-LPC2148連接7顯示器的教程

    今天在本教程中,我們將用ARM7-LPC2148連接7顯示器。在詳細介紹之前,我們將了解如何控制7段模塊以
    的頭像 發表于 10-28 15:34 ?2908次閱讀
    用<b class='flag-5'>ARM7-LPC2148</b><b class='flag-5'>連接</b><b class='flag-5'>7</b>段<b class='flag-5'>顯示</b>器的教程

    如何16x2 LCD與Atmega16 AVR連接顯示簡單的歡迎消息

    在本教程中,我們將了解如何 16x2 LCD 與 Atmega16 AVR 微控制器連接
    的頭像 發表于 11-11 17:29 ?3095次閱讀
    如何<b class='flag-5'>將</b><b class='flag-5'>16x2</b> <b class='flag-5'>LCD</b>與Atmega<b class='flag-5'>16</b> AVR<b class='flag-5'>連接</b><b class='flag-5'>并</b><b class='flag-5'>顯示</b>簡單的歡迎消息

    如何DHT11與樹莓派連接16x2 LCD屏幕上顯示溫度和濕度的值

    在本教程中,我們學習如何流行的DHT11傳感器與Raspberry Pi連接,并在16x2 LCD屏幕上
    的頭像 發表于 11-14 16:53 ?4183次閱讀
    如何<b class='flag-5'>將</b>DHT11與樹莓派<b class='flag-5'>連接</b>在<b class='flag-5'>16x2</b> <b class='flag-5'>LCD</b>屏幕上<b class='flag-5'>顯示</b>溫度和濕度的值

    MPU6050與Raspberry Pi連接顯示16x2 LCD值的步驟

    今天在本文中,我們將將此MPU6050與Raspberry Pi連接顯示16x2 LCD上的值。
    的頭像 發表于 11-17 16:42 ?3370次閱讀
    <b class='flag-5'>將</b>MPU6050與Raspberry Pi<b class='flag-5'>連接</b><b class='flag-5'>并</b><b class='flag-5'>顯示</b><b class='flag-5'>16x2</b> <b class='flag-5'>LCD</b>值的步驟

    ARM7-LPC2148開發板

    `Super ARM7-LPC2148開發套件SuperARM2148開發套件,集學習、實驗、二次開發于一體,非常適合初學者快速入門。該套件標配基于ARM7TDMI-S內核的LPC2148
    發表于 04-18 17:21

    串行顯示LCD 16x2監視器

    描述串行顯示 LCD 16x2 監視器這是一個小項目,我需要能夠通過串行將簡單文本顯示到便宜的 LCD
    發表于 08-19 06:16

    使用ARM7 LPC2148微控制器構建一個簡單的機械臂

    在本教程中,讓我們使用 ARM7-LPC2148 微控制器構建一個簡單的機械臂,通過手動控制幾個電位器來拾取和放置物體。
    發表于 08-24 16:08 ?1201次閱讀
    使用<b class='flag-5'>ARM7</b> <b class='flag-5'>LPC2148</b>微控制器構建一個簡單的機械臂

    如何使用ARM7-LPC2148微控制器中的PWM控制LED的亮度

    在本教程中,我們將使用 ARM7-LPC2148 微控制器中的 PWM 控制 LED 的亮度。
    的頭像 發表于 09-23 15:14 ?3317次閱讀
    如何使用<b class='flag-5'>ARM7-LPC2148</b>微控制器中的PWM控制LED的亮度

    步進電機與ARM7-LPC2148連接起來的方法

    在本教程中,我們將了解如何步進電機與 ARM7-LPC2148 連接以及如何控制它的速度。
    的頭像 發表于 09-23 16:50 ?1674次閱讀
    <b class='flag-5'>將</b>步進電機與<b class='flag-5'>ARM7-LPC2148</b><b class='flag-5'>連接</b>起來的方法

    如何在ARM7-LPC2148中使用ADC

    在本教程中,我們將了解如何在 ARM7-LPC2148 中使用 ADC,方法是向模擬引腳提供不同的電壓,并在模數轉換后將其顯示16x2 LCD 屏幕上。
    的頭像 發表于 09-23 17:02 ?3154次閱讀
    如何在<b class='flag-5'>ARM7-LPC2148</b>中使用ADC

    如何連接和使用16x2 I2C LCD的教程

    電子發燒友網站提供《如何連接和使用16x2 I2C LCD的教程.zip》資料免費下載
    發表于 11-22 14:36 ?0次下載
    如何<b class='flag-5'>連接</b>和使用<b class='flag-5'>16x2</b> I<b class='flag-5'>2</b>C <b class='flag-5'>LCD</b>的教程

    如何16x2 LCD與Raspberry pi4連接

    電子發燒友網站提供《如何16x2 LCD與Raspberry pi4連接.zip》資料免費下載
    發表于 06-19 11:45 ?0次下載
    如何<b class='flag-5'>將</b><b class='flag-5'>16x2</b> <b class='flag-5'>LCD</b>與Raspberry pi4<b class='flag-5'>連接</b>

    如何連接16x2 LCD顯示

    電子發燒友網站提供《如何連接16x2 LCD顯示器.zip》資料免費下載
    發表于 07-12 09:21 ?0次下載
    如何<b class='flag-5'>連接</b><b class='flag-5'>16x2</b> <b class='flag-5'>LCD</b><b class='flag-5'>顯示</b>器