收藏文章 楼主

16X2 LCD与PIC单片机的接口

版块:科技头条   类型:普通   作者:科技资讯   查看:44   回复:0   获赞:0   时间:2023-06-01 21:35:08

在本节课中,我们将看到如何将16×2的LCD连接到PIC18F4550微控制器,PIC18F系列微控制器。你可以在 "如何将16X2 LCD与8051单片机连接 "一节中获得关于16X2 LCD的信息。


本文引用地址:


PIC18F4550的特点:


PIC18F4550属于PIC18F系列;PIC18F4550是一个8位微控制器,使用RISC架构。PIC18F4550在PDIP(双列封装)中有40个引脚,在TQFP(四列扁平封装)中有44个引脚。


PIC18F4550中嵌入了32KB的闪存,2048字节的SRAM(同步随机存取存储器),256字节的EEPROM(电可擦除程序只读存储器)。


它有35个I/O引脚用于与其他外设的接口和通信,13个通道的10位模拟到数字转换器用于与模拟外设(直流电动机、LDR等)的接口和通信。


它有2个CCP和1个ECCP模块,即增强型捕获和比较模块,主要用于调制和波形生成功能。CCP模块由16位寄存器组成,作为16个捕获位寄存器,16个比较位寄存器,以及PWM和占空比寄存器工作。


PIC18F4550具有SPI(串行外设接口)和i2c(集成电路间)的主从模式。它有SPP(流式并行端口)用于USB流式传输。


PIC18F4550嵌入了4个定时器模块(定时器0至定时器3),2个比较器模块和3个外部中断。它有双振荡器选项,允许微控制器和USB模块以不同的时钟速度运行。它可以在2.0V到5.5V的电压下运行。


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


16X2 LCD与PIC单片机的连接 - 电路解析:


电阻器R1用于为LCD提供对比度。12MHz的晶体振荡器被连接到PIC微控制器PIC18F4550的OSC1和OSC2引脚,用于系统时钟。电容器C2和C3将作为晶体振荡器的过滤器。你可以使用不同的端口或引脚来连接LCD,在使用不同的端口之前,请检查数据表,这些引脚是通用的还是特殊功能引脚。


对PIC进行编程以连接16X2的LCD:


将LCD连接到PIC与连接到8051没有区别。编程的基本概念和要点几乎是一样的。请访问以下链接了解更多信息:https://www.electronicshub.org/interfacing-16×2-lcd-8051/。


只有用于接口的引脚、寄存器和结构会有所不同。当我们看程序时,像初始化、向LCD发送数据的功能几乎是一样的。


在pic编程中,为了初始化LCD,R/W引脚应该是低电平,用于写入数据,使能引脚应该是高电平,寄存器选择引脚(RS)应该是高电平,用于写入数据。对于发送命令,RS应该是低电平,R/W引脚应该是低电平,使能引脚应该是高电平。


初始化LCD功能:


lcdcmd(0x38);//将LCD配置为8位模式,2行,5×7字体。


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编程器/调试器将程序转入你的开发板。


如果你没有使用PICKIT,那么只需编译代码并制作HEX文件,使用这个HEX文件为PIC微控制器编程。


将LCD连接到PIC18F4550的程序:


#define rs LATA.F0


#define rw LATA.F1


#define en LATA.F2


//LCD Data pins


#define lcdport LATB


void lcd_init();


void lcdcmd(unsigned char);


void lcddata(unsigned char);


unsigned char data[20]=”hello world”;


unsigned int i=0;


void main(void)


{


TRISA=0;                             // Configure Port A as output port


LATA=0;


TRISB=0;                             // Configure Port B as output port


LATB=0;


lcd_init();                              // LCD initialization


while(data[i]!=’′)


{


lcddata(data[i]);     // Call lcddata function to send characters


// one by one from “data” array


i++;


Delay_ms(300);


}


}


void lcd_init()


{


lcdcmd(0x38);


lcdcmd (0x0C);


lcdcmd(0x01);


lcdcmd(0x06);


lcdcmd(0x80);


}


void lcdcmd(unsigned char cmdout)


{


lcdport=cmdout;


rs=0;


rw=0;


en=1;


Delay_ms(10);


en=0;


}


void lcddata(unsigned char dataout)


{


lcdport=dataout;


rs=1;


rw=0;


en=1;


Delay_ms(10);


en=0;


}

 
回复列表
默认   热门   正序   倒序

回复:16X2 LCD与PIC单片机的接口

Powered by 7.12.10

©2015 - 2025 90Link

90link品牌推广 网站地图

您的IP:10.1.228.218,2025-12-23 00:09:24,Processed in 0.35861 second(s).

豫ICP备2023005541号

头像

用户名:

粉丝数:

签名:

资料 关注 好友 消息
免责声明
  • 1、本网站所刊载的文章,不代表本网站赞同其观点和对其真实性负责,仅供参考和借鉴。
  • 2、文章中的图片和文字版权归原作者所有,如有侵权请及时联系我们,我们将尽快处理。
  • 3、文章中提到的任何产品或服务,本网站不对其性能、质量、适用性、可靠性、安全性、法律合规性等方面做出任何保证或承诺,仅供读者参考,使用者自行承担风险。
  • 4、本网站不承担任何因使用本站提供的信息、服务或产品而产生的直接、间接、附带或衍生的损失或责任,使用者应自行承担一切风险。

侵权删除请致信 E-Mail:3454251265@qq.com