LCD1602 PIC驱动程序
更新时间:2023-08-11 14:26:02 阅读量: 教育文库 文档下载
- lcd1602推荐度:
- 相关推荐
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》
正在阅读:
LCD1602 PIC驱动程序08-11
20XX年12月大学生入党思想汇报范文:学习科学发展观11-29
河南省学法用法考试试卷02-22
剪力墙结构18层住宅楼工程施工组织设计06-16
三年级上册第四单元:两三位数成一位数(学案) - 图文12-14
最新 人教部编版八年级语文上册全套教案汇总(全册共计491页)04-28
放手梦想,需要更大的勇气10-08
雪之乐作文700字07-04
仓库保管工中级理论复习题11-19
给初学中医者的十封信05-11
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 驱动程序
- LCD1602
- PIC
- 庐陵文化的渊源_特点与历史地位
- 教师招聘考试题公共教育学.心理学考试题及参考答案
- 文档 1罗宾别墅作品解析
- 龙川一中2012届第一学期高三八月考试(理综)
- 国家环保局关于全国机动车尾气排放监测管理制度(暂行)1991.2.23
- 学习心得模板(二)
- 颈动脉疾病超声诊断
- 以就业为导向的公共管理人才培养模式
- 说课的系统科学基础
- 《学前教育科研方法》2015期末试题及答案
- 51-说到底,还是因为你弱爆了141127
- 联轴器100个问与答
- 小学生作文月季花
- 临海市青少年宫五年级写作课程第十三次课教案
- 从打工妹到作家的华丽转身
- 2018-2019-幼儿园党支部工作计划书格式201X-word范文模板 (3页)
- 电气装置安装工程1kV及以下配线工程施工及验收规范
- 人教版数学高一-新课标高一数学同步测试(2)—第一单元(函数及其表示)
- 武汉工程大学基础化学复件 第十二章过渡元素(2)
- PMP强化记忆手册(PMBOK2008版)