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

    文章

    6810

    浏览量

    147642
  • lcd
    lcd
    +关注

    关注

    34

    文章

    4278

    浏览量

    164118
  • LPC2148
    +关注

    关注

    0

    文章

    25

    浏览量

    14850
收藏 人收藏

    评论

    相关推荐

    使用ESP8266和LPC2148远程控制设备的方式

    在本教程中,我们将ESP8266 Wi-Fi 模块与 ARM7-LPC2148 微控制器连接,并创建一个网络服务器来控制连接LPC2148 的 LED。工作流程将如下所示:
    的头像 发表于 09-20 16:21 2901次阅读
    使用ESP8266和<b class='flag-5'>LPC2148</b>远程控制设备的方式

    使用ARM7-LPC2148控制伺服电机的教程

    在本教程中,我们将使用 ARM7-LPC2148 控制伺服电机。伺服电机比步进电机具有低功耗的优势。当到达所需位置时,伺服电机停止其功耗,但步进电机继续消耗功率以将轴锁定在所需位置。伺服电机主要用于 机器人项目 ,因为它们的准确性和易于操作性。
    发表于 09-22 16:40 1119次阅读
    使用<b class='flag-5'>ARM7-LPC2148</b>控制伺服电机的教程

    ARM7-LPC2148连接7段显示器的教程

    今天在本教程中,我们将用ARM7-LPC2148连接7段显示器。在详细介绍之前,我们将了解如何控制7段模块以显示任意数量的字符。
    的头像 发表于 10-28 15:34 2181次阅读
    用<b class='flag-5'>ARM7-LPC2148</b><b class='flag-5'>连接</b>7段<b class='flag-5'>显示</b>器的教程

    如何将16x2 LCD与Atmega16 AVR连接显示简单的欢迎消息

    在本教程中,我们将了解如何将 16x2 LCD 与 Atmega16 AVR 微控制器连接显示简单的欢迎消息。
    的头像 发表于 11-11 17:29 2724次阅读
    如何将<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>简单的欢迎消息

    ARM7-LPC2148开发板

    `Super ARM7-LPC2148开发套件SuperARM2148开发套件,集学习、实验、二次开发于一体,非常适合初学者快速入门。该套件标配基于ARM7TDMI-S内核的LPC2148
    发表于 04-18 17:21

    在树莓派上装LCD 16x2显示

    16x2 液晶显示屏,它有16个数据引脚,但是我们只用6个就可以了。市面上的LCD 16x2 液晶显示
    发表于 01-15 10:53

    16x2 LCD PIONEER套件屏蔽

    使用单独的电压调节器,16X2液晶模块使用HD44 7805V控制器,缺少光,跳线选择几种连接电源的方式。屏蔽可以被配置为使用面包板或线缠绕端子。我在LCD问题上没有问题,如CY8CKIT-042
    发表于 01-16 15:09

    串行显示LCD 16x2监视器

    描述串行显示 LCD 16x2 监视器这是一个小项目,我需要能够通过串行将简单文本显示到便宜的 LCD
    发表于 08-19 06:16

    使用ARM7 LPC2148微控制器构建一个简单的机械臂

    在本教程中,让我们使用 ARM7-LPC2148 微控制器构建一个简单的机械臂,通过手动控制几个电位器来拾取和放置物体。
    发表于 08-24 16:08 930次阅读
    使用<b class='flag-5'>ARM</b>7 <b class='flag-5'>LPC2148</b>微控制器构建一个简单的机械臂

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

    在本教程中,我们将使用 ARM7-LPC2148 微控制器中的 PWM 控制 LED 的亮度。
    的头像 发表于 09-23 15:14 2763次阅读
    如何使用<b class='flag-5'>ARM7-LPC2148</b>微控制器中的PWM控制LED的亮度

    将步进电机与ARM7-LPC2148连接起来的方法

    在本教程中,我们将了解如何将步进电机与 ARM7-LPC2148 连接以及如何控制它的速度。
    的头像 发表于 09-23 16:50 1348次阅读
    将步进电机与<b class='flag-5'>ARM7-LPC2148</b><b class='flag-5'>连接</b>起来的方法

    如何在ARM7-LPC2148中使用ADC

    在本教程中,我们将了解如何在 ARM7-LPC2148 中使用 ADC,方法是向模拟引脚提供不同的电压,并在模数转换后将其显示16x2 LCD 屏幕上。
    的头像 发表于 09-23 17:02 2523次阅读
    如何在<b class='flag-5'>ARM7-LPC2148</b>中使用ADC

    连接一个16x2字符LCD

    电子发烧友网站提供《连接一个16x2字符LCD.zip》资料免费下载
    发表于 11-17 09:31 0次下载
    <b class='flag-5'>连接</b>一个<b class='flag-5'>16x2</b>字符<b class='flag-5'>LCD</b>

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

    电子发烧友网站提供《如何连接和使用16x2 I2C LCD的教程.zip》资料免费下载
    发表于 11-22 14:36 0次下载
    如何<b class='flag-5'>连接</b>和使用<b class='flag-5'>16x2</b> I2C <b class='flag-5'>LCD</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>器