微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > PIC单片机驱动LCD1602液晶显示字符串程序

PIC单片机驱动LCD1602液晶显示字符串程序

时间:12-02 来源:互联网 点击:
/***************************************************************************

*** 功能:LCD1602的使用
*** 实验内容:LCD显示本站网址和电话
***开发板连接方法: 调节1602电位器,使LCD对比度最好,装1602时不要装错了,否测会烧掉。
***************************************************************************/
#include

__CONFIG(0xFF32);
//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡

//LCD控制线宏定义
#define rs RA5
#define rw RA4
#define e RA3

//显示公司web地址
char web[ ] = {"***.*********.***"};

//显示公司电话号码
char tel[ ] = {" 110 " };

void init(); //申明I/O口初始化函数
void lcd_init(); //申明LCD初始化函数
void write(char x); //申明显示1字节数据函数
void lcd_enable(); //申明LCD显示设置函数
void delay(); //申明延时函数
void writelcd(char *pt); //声明LCD写字符串函数

/****************************************************************************
* 名 称:main()
* 功 能:主函数
* 入口参数:
* 出口参数:
* 说 明:
* 备 注:
****************************************************************************/
void main()
{
init(); //调用I/O口初始化函数
lcd_init(); //调用LCD初始化函数
while (1)
{
writelcd(web); //调用显示公司web地址函数
PORTD = 0XC0; //设置第2行显示地址
lcd_enable(); //调用LCD显示设置函数
writelcd(tel); //调用显示公司tel函数
}
}

/****************************************************************************
* 名 称:init()
* 功 能:I/O口初始化
* 入口参数:
* 出口参数:
* 说 明:
* 备 注:
****************************************************************************/
void init()
{
ADCON1 = 0X07; //设置A口为普通I/O口
RA1=1;
TRISA = 0X00; //设置A口为输出
TRISD = 0X00; //设置D口为输出
}

/****************************************************************************
* 名 称:lcd_init()
* 功 能:LCD初始化
* 入口参数:
* 出口参数:
* 说 明:
* 备 注:
****************************************************************************/
void lcd_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
* 入口参数:char x 字符
* 出口参数:
* 说 明:
* 备 注:
****************************************************************************/
void write(char x)
{
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()
* 功 能:延时
* 入口参数:
* 出口参数:
* 说 明:
* 备 注:
****************************************************************************/
void delay()
{
int i;
for (i = 0;i < 5000;i++);
}

/****************************************************************************
* 名 称: writelcd()
* 功 能: 在LCD上显示字符串
* 入口参数:char *pt 字符串的首地址
* 出口参数:
* 说 明:
* 备 注:
****************************************************************************/
void writelcd(char *pt)
{
while(*pt)
write(*pt++);
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top