新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > PIC單片機(jī)驅(qū)動LCD1602液晶顯示字符串程序

PIC單片機(jī)驅(qū)動LCD1602液晶顯示字符串程序

作者: 時間:2016-12-02 來源:網(wǎng)絡(luò) 收藏
/***************************************************************************

*** 功能:LCD1602的使用
*** 實驗內(nèi)容:LCD顯示本站網(wǎng)址和電話
***開發(fā)板連接方法: 調(diào)節(jié)1602電位器,使LCD對比度最好,裝1602時不要裝錯了,否測會燒掉。
***************************************************************************/
#include

本文引用地址:http://butianyuan.cn/article/201612/324699.htm

__CONFIG(0xFF32);
//芯片配置字,看門狗關(guān),上電延時開,掉電檢測關(guān),低壓編程關(guān),加密,4M晶體HS振蕩

//LCD控制線宏定義
#define rs RA5
#define rw RA4
#define e RA3

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

//顯示公司電話號碼
char tel[ ] = {" 110 " };

void init(); //申明I/O口初始化函數(shù)
void lcd_init(); //申明LCD初始化函數(shù)
void write(char x); //申明顯示1字節(jié)數(shù)據(jù)函數(shù)
void lcd_enable(); //申明LCD顯示設(shè)置函數(shù)
void delay(); //申明延時函數(shù)
void writelcd(char *pt); //聲明LCD寫字符串函數(shù)

/****************************************************************************
* 名 稱:main()
* 功 能:主函數(shù)
* 入口參數(shù):
* 出口參數(shù):
* 說 明:
* 備 注:
****************************************************************************/
void main()
{
init(); //調(diào)用I/O口初始化函數(shù)
lcd_init(); //調(diào)用LCD初始化函數(shù)
while (1)
{
writelcd(web); //調(diào)用顯示公司web地址函數(shù)
PORTD = 0XC0; //設(shè)置第2行顯示地址
lcd_enable(); //調(diào)用LCD顯示設(shè)置函數(shù)
writelcd(tel); //調(diào)用顯示公司tel函數(shù)
}
}

/****************************************************************************
* 名 稱:init()
* 功 能:I/O口初始化
* 入口參數(shù):
* 出口參數(shù):
* 說 明:
* 備 注:
****************************************************************************/
void init()
{
ADCON1 = 0X07; //設(shè)置A口為普通I/O口
RA1=1;
TRISA = 0X00; //設(shè)置A口為輸出
TRISD = 0X00; //設(shè)置D口為輸出
}

/****************************************************************************
* 名 稱:lcd_init()
* 功 能:LCD初始化
* 入口參數(shù):
* 出口參數(shù):
* 說 明:
* 備 注:
****************************************************************************/
void lcd_init()
{
PORTD = 0X1; //清除顯示
lcd_enable();
PORTD = 0X38; //8位2行5*7點陣
lcd_enable();
PORTD = 0X0e; //顯示開,光標(biāo)開,閃爍
lcd_enable();
PORTD = 0X06; //文字不動,光標(biāo)右移
lcd_enable();
PORTD = 0X80; //公司web顯示地址
lcd_enable();
}

/****************************************************************************
* 名 稱:write()
* 功 能:寫一個字節(jié)數(shù)據(jù)到LCD
* 入口參數(shù):char x 字符
* 出口參數(shù):
* 說 明:
* 備 注:
****************************************************************************/
void write(char x)
{
PORTD = x; //待顯示數(shù)據(jù)送PORTD口
rs = 1; //該字節(jié)數(shù)據(jù)為數(shù)據(jù),而不是命令
rw = 0; //此次操作為寫,而不是讀
e = 0; //拉低使能信號
delay(); //保持使能信號為低一段時間
e = 1; //拉高使能信號,建立LCD操作所需要的上升沿
}

/****************************************************************************
* 名 稱:lcd_enable()
* 功 能:LCD顯示設(shè)置
* 入口參數(shù):
* 出口參數(shù):
* 說 明:
* 備 注:
****************************************************************************/
voidlcd_enable()
{
rs = 0; //該字節(jié)數(shù)據(jù)為命令,而不是數(shù)據(jù)
rw = 0; //此次操作為寫,而不是讀
e = 0; //拉低使能信號
delay(); //保持使能信號為低一段時間
e = 1; //拉高使能信號,建立LCD操作所需要的上升沿
}

/****************************************************************************
* 名 稱:delay()
* 功 能:延時
* 入口參數(shù):
* 出口參數(shù):
* 說 明:
* 備 注:
****************************************************************************/
void delay()
{
int i;
for (i = 0;i < 5000;i++);
}

/****************************************************************************
* 名 稱: writelcd()
* 功 能: 在LCD上顯示字符串
* 入口參數(shù):char *pt 字符串的首地址
* 出口參數(shù):
* 說 明:
* 備 注:
****************************************************************************/
void writelcd(char *pt)
{
while(*pt)
write(*pt++);
}



評論


技術(shù)專區(qū)

關(guān)閉