锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

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

时间:2024-05-01 11:37:09

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

__CFIG(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()
{
AON1 = 0X07; //设置A口为普通I/O口
RA1=1;
SA = 0X00; //设置A口为输出
TR = 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显示设置
* 入口参数:
* 出口参数:
* 说 明:
* 备 注:
****************************************************************************/
void lcd_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++);
}


-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章