PIC单片机驱动LCD1602液晶显示字符串程序.docx
《PIC单片机驱动LCD1602液晶显示字符串程序.docx》由会员分享,可在线阅读,更多相关《PIC单片机驱动LCD1602液晶显示字符串程序.docx(6页珍藏版)》请在冰豆网上搜索。
PIC单片机驱动LCD1602液晶显示字符串程序
PIC单片机驱动LCD1602液晶显示字符串程序
/***************************************************************************
***功能:
LCD1602的使用
***实验内容:
LCD显示本站网址和电话
***开发板连接方法:
调节1602电位器,使LCD对比度最好,装1602时不要装错了,否测会烧掉。
***************************************************************************/
#include;
__CONFIG(0xFF32);
//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡
//LCD控制线宏定义
#definersRA5
#definerwRA4
#defineeRA3
//显示公司web地址
charweb[]={"***.*********.***"};
//显示公司电话号码
chartel[]={"
110
"};
voidinit();
//申明I/O口初始化函数
voidlcd_init();
//申明LCD初始化函数
voidwrite(charx);
//申明显示1字节数据函数
voidlcd_enable();
//申明LCD显示设置函数
voiddelay();
//申明延时函数
voidwritelcd(char*pt);
//声明LCD写字符串函数
/****************************************************************************
*名
称:
main()
*功
能:
主函数
*入口参数:
*出口参数:
*说
明:
*备
注:
****************************************************************************/
voidmain()
{
init();
//调用I/O口初始化函数
lcd_init();
//调用LCD初始化函数
while
(1)
{
writelcd(web);
//调用显示公司web地址函数
PORTD=0XC0;
//设置第2行显示地址
lcd_enable();
//调用LCD显示设置函数
writelcd(tel);
//调用显示公司tel函数
}
}
/****************************************************************************
*名
称:
init()
*功
能:
I/O口初始化
*入口参数:
*出口参数:
*说
明:
*备
注:
****************************************************************************/
voidinit()
{
ADCON1=0X07;
//设置A口为普通I/O口
RA1=1;
TRISA=0X00;
//设置A口为输出
TRISD=0X00;
//设置D口为输出
}
/****************************************************************************
*名
称:
lcd_init()
*功
能:
LCD初始化
*入口参数:
*出口参数:
*说
明:
*备
注:
****************************************************************************/
voidlcd_init()
{
PORTD=0X1;
//清除显示
lcd_enable();
PORTD=0X38;
//8位2行5*7点阵
lcd_enable();
PORTD=0X0e;
//显示开,光标开,闪烁
lcd_enable();
PORTD=0X06;
//文字不动,光标右移
lcd_enable();
PORTD=0X80;
//公司web显示地址
lcd_enable();
}
/****************************************************************************
*名
称:
write()
*功
能:
写一个字节数据到LCD
*入口参数:
charx字符
*出口参数:
*说
明:
*备
注:
****************************************************************************/
voidwrite(charx)
{
PORTD=x;
//待显示数据送PORTD口
rs=1;
//该字节数据为数据,而不是命令
rw=0;
//此次操作为写,而不是读
e=0;
//拉低使能信号
delay();
//保持使能信号为低一段时间
e=1;
//拉高使能信号,建立LCD操作所需要的上升沿
}
/****************************************************************************
*名
称:
lcd_enable()
*功
能:
LCD显示设置
*入口参数:
*出口参数:
*说
明:
*备
注:
****************************************************************************/
voidlcd_enable()
{
rs=0;
//该字节数据为命令,而不是数据
rw=0;
//此次操作为写,而不是读
e=0;
//拉低使能信号
delay();
//保持使能信号为低一段时间
e=1;
//拉高使能信号,建立LCD操作所需要的上升沿
}
/****************************************************************************
*名
称:
delay()
*功
能:
延时
*入口参数:
*出口参数:
*说
明:
*备
注:
****************************************************************************/
voiddelay()
{
inti;
for(i=0;i<5000;i++);
}
/****************************************************************************
*名
称:
writelcd()
*功
能:
在LCD上显示字符串
*入口参数:
char*pt字符串的首地址
*出口参数:
*说
明:
*备
注:
****************************************************************************/
voidwritelcd(char*pt)
{
while(*pt)
write(*pt++);
}