在本届会议中,我们将看到如何将16×2 LCD连接到family PIC18F的PIC18F4550微控制器。您可以在会话中获取16×2 LCD的信息如何与8051微控制器接口16x2 LCD。
PIC18F4550的功能:
- PIC18F4550属于PIC18F家族;PIC18F4550是8位微控制器,使用RISC架构。PIC18F4550在PDIP中有40个引脚(双线包装中的双包),而TQFP中有44个PIN(Quad Flat Package)。
- 32KB闪存,2048字节SRAM(同步随机访问存储器),EEPROM(可擦除的程序仅读取内存)为256字节,嵌入了PIC18F4550中。
- 它有35个I/O引脚用于接口和与其他外围设备进行交流和通信,13频道10bit对数字转换器的模拟用于接口和通信模拟外围设备(直流电动机,LDR等)。
- 它具有2个CCP和1个ECCP模块,可增强捕获和比较模块,该模块主要用于调制和波形生成功能。CCP模块的16位寄存器作品为16个捕获位寄存器,16比较比特寄存器以及PWM和占空比寄存器。
- PIC18F4550具有SPI(串行外围界面)主机和从模式的I2C(Intermation Circuit)。它具有用于USB流传输的SPP(流平行端口)。
- PIC18F4550嵌入4个计时器模块(timer0到timer3),2个比较器模块和3个外部中断。它具有双振荡器选项,允许微控制器和USB模块以不同的时钟速度运行。它可以在2.0V至5.5V中运行
16x2 LCD接口图片微控制器电路图:
16x2 LCD接口图片微控制器- 电路说明:
电阻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(RS)应高于编写数据。为了发送命令,RS应为低,R/W引脚应低,并且启用引脚应高。
初始化LCD功能:
LCDCMD(0x38); //以8位模式,2行和5×7字体配置LCD
lcdcmd(0x0c); //显示并关闭光标
lcdcmd(0x01); //清除显示屏幕
LCDCMD(0x06); //增量光标
LCDCMD(0x80); //将光标位置设置为第一行,第一列
将命令发送到LC:
- rs = 0;注册选择引脚很低。
- rw = 0;读/写引脚也用于将命令写入LCD。
- en = 1;启用引脚很高。
将数据发送到LCD:
- Rs = 1;注册选择引脚很高。
- rw = 0;读/写引脚也用于将命令写入LCD。
- en = 1;启用引脚很高。
编程步骤:
- 在系统中安装MPLAB并创建一个新项目,选择设备和家庭选择PIC18F系列,然后将PIC18F4550控制器添加到您的项目中。
- 选择您已安装的编译器,然后将文件添加到项目中。添加文件粘贴后,下面给出的代码并运行它。由于这是一个预编译和测试程序,因此您不会发现任何错误。
- 在没有错误的情况下编译程序后,使用PickIT2或PickIT3程序员/调试器将程序转储到您的开发板上。
- 如果您不使用PICSIT,则只需编译代码,然后使HEX文件使用此HEX文件来编程PIC MicroController。
将LCD接口到PIC18F4550的程序:
#define rs lata.f0
#Define RW Lata.f1
#define en lata.f2
// LCD数据引脚
#define lcdport latb
void lcd_init();
void lcdcmd(未签名的char);
void lcddata(未签名的char);
未签名的char数据[20] =“ Hello World”;
unsigned int i = 0;
void主(void)
{
trisa = 0;//配置端口A作为输出端口
lata = 0;
trisb = 0;//将端口B配置为输出端口
latb = 0;
lcd_init();// LCD初始化
while(data [i]!=’\ 0')
{
lcddata(data [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个回应
它的帮助...。
嘿,
我正在使用PIC18F87J11 PIC微控制器。我需要与LCD相同。我使用上述代码进行了一些修改,但它无法正常工作。您能帮助解决这个问题吗?