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字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [法律文档]苏教版七年级语文下册第五单元教学设计
- [法律文档]向市委巡视组进点汇报材料
- [法律文档]绵阳市2018年高三物理上学期第二次月考
- [法律文档]浅析如何解决当代中国“新三座大山”的
- [法律文档]延安北过境线大桥工程防洪评价报告 -
- [法律文档]激活生成元素让数学课堂充满生机
- [法律文档]2014年春学期九年级5月教学质量检测语
- [法律文档]放射科标准及各项计1
- [法律文档]2012年广州化学中考试题和答案(原版)
- [法律文档]地球物理勘查规范
- [法律文档]《12系列建筑标准设计图集》目录
- [法律文档]2018年宁波市专技人员继续教育公需课-
- [法律文档]工会委员会工作职责
- [法律文档]2014新版外研社九年级英语上册课文(完
- [法律文档]《阅微草堂笔记》部分篇目赏析
- [法律文档]尔雅军事理论2018课后答案(南开版)
- [法律文档]储竣-13827 黑娃山沟大开挖穿越说明书
- [法律文档]《产品设计》教学大纲及课程简介
- [法律文档]电动吊篮专项施工方案 - 图文
- [法律文档]实木地板和复合地板的比较
- 探析如何提高电力系统中PLC的可靠性
- 用Excel函数快速实现体能测试成绩统计
- 教师招聘考试重点分析:班主任工作常识
- 高三历史选修一《历史上重大改革回眸》
- 2013年中山市部分职位(工种)人力资源视
- 2015年中国水溶性蛋白市场年度调研报告
- 原地踏步走与立定教学设计
- 何家弘法律英语课件_第十二课
- 海信冰箱经销商大会——齐俊强副总经理
- 犯罪心理学讲座
- 初中英语作文病句和错句修改范例
- 虚拟化群集部署计划及操作流程
- 焊接板式塔顶冷凝器设计
- 浅析语文教学中
- 结构力学——6位移法
- 天正建筑CAD制图技巧
- 中华人民共和国财政部令第57号——注册
- 赢在企业文化展厅设计的起跑线上
- 2013版物理一轮精品复习学案:实验6
- 直隶总督署简介




