具有PIC微控制器的Interfacing16x2 LCD

在本次会话中,我们将看到如何将16×2 LCD接口到PIC18F4550微控制器,它是家庭PIC18F。您可以在会话中获取16×2 LCD的信息如何使用8051微控制器接口16x2 LCD。

PIC18F4550的功能:

  • PIC18F4550属于PIC18F家族;PIC18F4550是8位微控制器,使用RISC架构。PIC18F4550在PDIP(双线封装中)具有40个引脚,TQFP中的44个引脚(四边形封装)。
  • 32KB闪存,2048字节的SRAM(同步随机存取存储器),EEPROM(电动可擦除程序只读存储器)的256字节嵌入PIC18F4550中。
  • 它有35个I / O引脚,用于与其他外围设备接口和通信,13个通道10bit模拟到数字转换器用于接口和传送模拟外围设备(DC电机,LDR等)。
  • 它具有2个CCP和1个ECCP模块,该模块是增强的捕获和比较模块,主要用于调制和波形生成功能。CCP模块为16位寄存器,适用于16捕获位寄存器,16比较位寄存器和PWM和占空比寄存器。
  • pic18f4550有SPI(串行外围界面)和i2c(Inter集成电路)用于主和从模式。它具有用于USB流传输的SPP(流并行端口)。
  • PIC18F4550嵌入有4个定时器模块(Timer0到Timer3),2个比较器模块和3个外部中断。它具有双振荡器选项允许微控制器和USB模块以不同的时钟速度运行。它可以以2.0V为5.5V运行

16x2 LCD接口PIC微控制器电路图:

16x2 LCD接口PIC微控制器的电路图

16x2 LCD接口PIC微控制器- 电路说明:

电阻器R1用于与LCD进行对比。12 MHz的晶体振荡器连接到PIC微控制器PIC18F4550的OSC1和OSC2引脚,用于系统时钟。电容器C2和C3将发出过滤器到晶体振荡器。您可以在进入不同端口之前使用不同的端口或引脚来连接LCD,请检查数据表是否是通用的引脚或它们是特殊功能引脚。

用于接口的编程照片16x2 LCD:

接口LCD到PIC与接口不同8051.。编程的基本概念和主旨几乎相同。访问以下链接以获取更多信息//www.des-roubi.com/interfacing-16×2-lcd-8051/

仅使用用于接口的引脚,寄存器和架构将是不同的。当我们查看程序时,初始化的功能,将数据发送到LCD几乎相同。

在PIC编程中也用于初始化LCD,R / W PIN对于写入数据时,应为低,使能引脚应高,并且寄存器选择PIN(RS)应高度以编写数据。对于发送命令,RS应为低电平,R / W PIN应为低电平,使能引脚应高。

初始化LCD功能:

LCDCMD(0x38); //在8位模式下配置LCD,2行和5×7字体
LCDCMD(0x0C); //显示屏上并光标
LCDCMD(0x01); //清除显示屏
LCDCMD(0x06); //递增光标
LCDCMD(0x80); //将光标位置设置为1行,第1列

向LC发送命令
  • rs = 0;寄存器选择引脚很低。
  • rw = 0;读/写引脚还用于将命令写入LCD。
  • en = 1;使能引脚很高。
向LCD发送数据:
  • Rs = 1;寄存器选择引脚很高。
  • rw = 0;读/写引脚还用于将命令写入LCD。
  • en = 1;启用引脚很高。
编程步骤:
  • 在系统中安装MPLAB并创建一个新项目,在选择设备和家庭中选择PIC18F系列并向您的项目添加PIC18F4550控制器。
  • 选择已安装的编译器并将文件添加到项目中。添加文件后粘贴下面给出的代码并运行它。因为它是一个预编译和测试的程序,您将找不到任何错误。
  • 在编译程序后,没有错误将程序转储到开发板中使用PICKIT2或PICKIT3程序员/调试器。
  • 如果您不使用PICKIT,那么只需编译代码并使十六进制文件使用该HEX文件进行编程PIC微控制器。
将LCD接口到PIC18F4550的程序:

#define RS Lata.f0.
#define rw lata.f1
#define en lata.f2.
//液晶数据引脚
#define lcdport latb.

void lcd_init();
void lcdcmd(无符号字符);
void lcddata(无符号字符);
无符号char数据[20] =“Hello World”;
unsigned int i = 0;

void main(空白)
{
trisa = 0;//将端口A配置为输出端口
Lata = 0;
trisb = 0;//配置端口B作为输出端口
Latb = 0;
lcd_init();//液晶初始化
而(数据[i]!='\ 0')
{
lcddata(数据[i]);//调用LCDDATA函数来发送字符
//从“数据”阵列中的一个
I ++;
delay_ms(300);
}
}

void lcd_init()
{
LCDCMD(0x38);
LCDCMD(0x0C);
LCDCMD(0x01);
LCDCMD(0x06);
LCDCMD(0x80);

}

void lcdcmd(无符号char cmdout)
{
lcdport = cmdout;
rs = 0;
rw = 0;
en = 1;
delay_ms(10);
en = 0;
}

void lcddata(无符号char dataout)
{
lcdport = dataout;
Rs = 1;
rw = 0;
en = 1;
delay_ms(10);
en = 0;
}

2回复

  1. 嘿,

    我正在使用PIC18F87J11 PIC微控制器。我需要用相同的方式接口LCD。我在上面发布了代码,在它上面有一些修改,但它没有正常工作。你能有助于解决这个问题吗?

发表评论

您的电子邮件地址不会被公开。

电子机器Favicon.
<\/i>","library":""}}" data-widget_type="nav-menu.default">
Baidu
map