将16x2 LCD与ARM7-LPC2148连接并显示文字

发布者:cxd88988最新更新时间:2023-02-15 来源: elecfans关键字:16x2  LCD  显示文字 手机看文章 扫描二维码
随时随地手机看文章

在本教程中,我们将了解如何将 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++;

}


关键字:16x2  LCD  显示文字 引用地址:将16x2 LCD与ARM7-LPC2148连接并显示文字

上一篇:基于S3C2410A和AD7656-1菊花链实现多通道ADC的设计
下一篇:智能电表抄表系统用ARM7 LPC2148的设计方案

推荐阅读最新更新时间:2024-11-08 13:34

爱特梅尔推出带有集成LCD控制器的AVR XMEGA系列
爱特梅尔公司(Atmel® Corporation)宣布将LCD控制器加入广受欢迎的AVR® XMEGA®微控制器(MCU)系列器件中。将LCD控制器集成进MCU能够帮助设计人员减低设计复杂性和总体系统成本,同时为智能仪表、家庭自动化、电动工具和其它需要用户界面的应用提供超低功耗特性。 带有集成LCD控制器的AVR XMEGA系列整合了在LCD显示器上运行图块所需的全部特性,降低了整体设计复杂性。这些器件还包括一个能够实现LCD信号内部重路由(re-routing)的创新SWAP模式,帮助设计人员简化PCB设计和减低复杂性。这些AVR XMEGA微控制器采用爱特梅尔 picoPower®技术,能够实现超低功耗,新器件所用的电流
[单片机]
18B20温度LCD显示程序
18B20温度LCD显示程序 #include AT89X51.H //器件配置文件 #include intrins.h sbit LCM_RS=P3^3; //引脚定义 sbit LCM_RW=P3^4; //引脚定义 sbit LCM_EN=P3^5; //引脚定义 sbit OUT=P3^6; //控制继电器 sbit TSOR=P3^7; //温度测试端 #define Busy 0x80 //常量定义 #define uchar unsigned char #define uint unsigned int #define DATAPORT P1 #define reset
[单片机]
芯海自带笔段式LCD
;============================================ ; filename: 自带笔段式lcd.asm ; chip : csu1181b ; author : ; date : 2012-07-27 ;============================================ include csu1181b.inc ;============================================ ; program start ;============================================ org 000h goto A1
[单片机]
LCD和OLED在车载显示中的应用
  汽车信息系统的复杂性和信息密度在日益上升,这使得汽车内部显示器不再仅仅是基本的集中仪表显示,而是要满足越来越详细和多样化的车内信息显示需求。   目前,市场对于能够同时显示文字和图形的高分辨率显示器的需求迅速增长。无源矩阵LCD(如TN-LCD或STN-LCD)和有源矩阵LCD(TFT-LCD)正在用于传送对驾驶员非常重要的基本驾驶信息(如速度计、里程表、发动机警告灯、驱动轮加载调节系统或4WD指示灯以及燃油表等)。除了这些主要信息以外,还有一些次要信息如外部温度指示、音频信息显示、空调控制和座椅加热指示信息等。显示系统需要在传统的基础上进一步扩展成两大块:用于中央控制台的信息显示和后座娱乐系统的音视频显示。   电子车载
[电源管理]
HOLTEK新推出HT67F5640 20-bit Delta-Sigma A/D + LCD型Flash MCU
Holtek推出全新的20-bit Delta-Sigma A/D + LCD型Flash MCU产品,HT67F5640。ADC有效位数(ENOB)可达18位,全系列符合工业等级 -40°C ~ 85°C 工作温度与高抗噪声之性能要求,提供I2C / SPI / UART接口,并搭载数据存储器 (EEPROM),可用于生产过程或成品运作中储存调校或运作所需参数与数据,不因电源关闭而消失,可有效提高生产效能与产品弹性。 HT67F5640 Program Memory为4K Words、SRAM 256 Bytes、内建64 Bytes Data EEPROM,除Crystal外并内建精准Internal RC Oscilla
[单片机]
传业成、宸鸿瓜分新款iPhone LCD触控面板订单
集微网消息, 外传苹果将一口气推出3款新iPhone,其中一款是6.1寸LCD面板,不过触控结构改为外挂薄膜触控面板。 据了解,薄膜传感器仍由日本写真独家供货,触控面板贴合订单则是GIS和TPK分食。  从面板供货商来看,OLED面板几乎仍是由三星独家供货,至于LCD面板则是采用JDI最新的18:9全面屏面板、四方边框仅0.5毫米,也有部分LCD面板是由LGD供货。 至于触控面板方面,OLED屏幕iPhone的触控面板还是由三星一条龙整合,变化比较大的则是LCD屏幕iPhone,由先前的In Cell内嵌式触控面板改为外挂式触控面板。 其中薄膜触控传感器还是日本写真独家供货,至于外挂式触控面板贴合订单则是GIS业成和TPK宸鸿分食
[手机便携]
单片机小白学习之路(四十一)---LCD1602液晶理解
目标:理解LCD1602液晶工作原理 1.LCD1602简介 1602液晶也叫1602字符型液晶,它能显示2行字符信息,每行又能显示16个字符,所以简称1602。它是一种专门用来显示字母、数字、符号的点阵型液晶模块。 它是由若干个5x7或者5x10的点阵字符位组成,每个点阵字符位都可以用显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此,所以它不能很好的显示图片。 1602 引脚作用 VL是液晶显示偏压信号,当感觉屏幕过暗或过亮是可以调节此电压来调整亮度 RS是高电平是是数据选项,是低电平是命令选项 R/W 是高电平是读操作,是低电平是写操作 E是使能信号
[单片机]
单片机小白学习之路(四十一)---<font color='red'>LCD</font>1602液晶理解
面板业度寒冬 手握现金比气长
据台湾自由时报报道,这波面板景气寒冬,究竟会持续多久,面板厂指出,这已经不是单独产业供需问题,也许在供给端控制下,乐观一点,最快明年第一季末或第二季就会出现调节性的缺货,让部分尺寸面板价格出现反弹;然而,预期明年全球经济景气仍然低迷下,包括市调机构与外资券商均预估面板业明年仍笼罩在供过于求的情况下,面板厂最好有亏损一整年的准备。 报价下滑不见止跌迹象 市调机构IDC指出,过去面板价格急跌最多两季之后就会出现反弹,以今年来看,面板价格于4月开始反转,若以过去经验分析,应该在今年第四季就要见到止跌、反弹,然而,报价却持续往下滑落,目前除了较大尺寸液晶电视面板外,32吋以下产品几乎都跌到现金成本以下,甚至已经跌到材料成本
[焦点新闻]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved