教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 法律文档 >

LCD1602 PIC驱动程序

来源:网络收集 时间:2026-07-05
导读: LCD1602 PIC驱动程序,程序中有详细注释。 LCD1602 PIC驱动程序 1. 仿真电路图如下: 2. 源程序如下: //LCD1602驱动程序,4位总线方式 //单片机:PIC16F877A(4MHz) LCD1602 PIC驱动程序,程序中有详细注释。 //******************初始化说明*******************

LCD1602 PIC驱动程序,程序中有详细注释。

LCD1602 PIC驱动程序

1. 仿真电路图如下:

2. 源程序如下:

//LCD1602驱动程序,4位总线方式

//单片机:PIC16F877A(4MHz)

LCD1602 PIC驱动程序,程序中有详细注释。

//******************初始化说明**************************

//4位总线方式初始化,应注意LCD接线方式,及初始化首条指令

//4位总线初始化方法:因LCD加电初始化后默认为8位总线方式,

//故首条指令只能以8位方式传送,此时高4位数据可以程序控制,

//(而低4位则取决于硬件接线方式)设定为4位总线方式的控制

//位,刚好在第4位,故此时可以将总线传送方式设为4位方式,当将

//总经传送方式设为4位后,LCD工作方式就完全可以控制了.

//关于低4位接线方式的说明:由于首条指令只需将总线方式设为

//4位传送方式,LCD便可控,因低4位的接线方式并不影响对LCD总

//线传送方式的设定,故低4位接线方式可任意(包括悬空).

//*******************************************************

#include <pic.h>

#include <data_type.h>

__CONFIG(HS &WDTDIS& PWRTEN& BORDIS& LVPDIS& UNPROTECT);

#define LCD_EN RC7

#define LCD_RS RC6

#define LCD_A RC5 //LCD背光控制

#define LCD_DATA_BUS PORTC //4位总线,只用RC0-RC3

#define LAMP_OFF 1 //背光关

#define LAMP_ON 0 //背光开

#define C 0 //控制RS用,转送命令

#define D 1 //转送数据

#define ON 1 //控制E用,高电平

#define OFF 0 //低电平

unchar LCD_init(void);

unchar Wcmd(unchar command);

unchar Wdata(unchar data);

void delay(unint loop);

void main(void)

{

unchar const str1[]="***My LCD1602***\0"; //第一行字符

unchar const str2[]="2010-06-26\0"; //第二行字符

unchar const *str_p;

LCD_init();

while(1){

LCD1602 PIC驱动程序,程序中有详细注释。

Wcmd(0x01); //清显示

delay(170); //延时1.8ms

delay(60000);

for(str_p=str1;*str_p!='\0';str_p++){

Wdata(*str_p); //送显第一行字符

delay(20000);

}

Wcmd(0x80+0x43);

for(str_p=str2;*str_p!='\0';str_p++){

Wdata(*str_p); //送显第二行字符

delay(20000);

}

delay(60000);

delay(60000);

}

}

unchar LCD_init(void)

{

PORTC=0;

LCD_RS=D;

TRISC=0b00010000;

LCD_RS=C; //传送命令

LCD_DATA_BUS=(LCD_DATA_BUS & 0xf0)| 2;

LCD_EN=ON; //设定为4位总线方式

NOP(); //延时2us

NOP();

LCD_EN=OFF; //转送高4位字节(2)

delay(5); //延时60us

Wcmd(0x28); //功能调置:4位总线,两行显示5*8点字符

Wcmd(0x01); //清显示

delay(170); //延时1.8ms

Wcmd(0x0c); //显示控制:开显示,无光标

Wcmd(0x06); //输入模式:LCD AC自增,显示不移动

LCD_A=LAMP_ON; //开背光

return 0;

}

//转送命令函数

unchar Wcmd(unchar command)

{

LCD_RS=C;

LCD_DATA_BUS=(LCD_DATA_BUS & 0xf0)|((command & 0xf0)>>4);

LCD1602 PIC驱动程序,程序中有详细注释。

LCD_EN=ON;

NOP(); //延时2us

NOP();

LCD_EN=OFF; //转送高4位字节

LCD_DATA_BUS=(LCD_DATA_BUS & 0xf0)|(command & 0x0f);

LCD_EN=ON;

asm("goto $+1"); //延时2us

LCD_EN=OFF; //转送低4位字节

delay(5);

return 0;

}

//转送数据函数

unchar Wdata(unchar data)

{

LCD_RS=D;

LCD_DATA_BUS=(LCD_DATA_BUS & 0xf0)|((data & 0xf0)>>4);

LCD_EN=ON;

NOP(); //延时2us

NOP();

LCD_EN=OFF; //转送高4位字节

LCD_DATA_BUS=(LCD_DATA_BUS & 0xf0)|(data & 0x0f);

LCD_EN=ON;

NOP(); //延时2us

NOP();

LCD_EN=OFF; //转送低4位字节

delay(5);

return 0;

}

void delay(unint loop) /*延时函数!延迟周期如下:*/

{ /*1<=loop<=3时:Cycle≈loop*10+5*/

/*4<=loop<=9时:Cycle≈loop*10+10*/

while(--loop) /*10=<loop<1000时:Cycle=loop*11+3*/

{;} /*1000=<loop<=65535时Cycle=loop*11+5*/

}

说明:电路及程序已完全调试通过,并通过开发板实验完全正常,另外有关LCD1602资料见我上传《通用1602LCD使用手册_中文.pdf》

…… 此处隐藏:796字,全部文档内容请下载后查看。喜欢就下载吧 ……
LCD1602 PIC驱动程序.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/1416138.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)