新聞中心

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

PIC單片機(jī)驅(qū)動(dòng)LCD12864液晶顯示閃動(dòng)字體程序

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

/****************************************************************************
* 名 稱:wr_zb()
* 功 能:顯示設(shè)置
* 入口參數(shù):
* 出口參數(shù):
* 說 明:
****************************************************************************/
void wr_zb()
{
send_i(lcd_y);
send_i(lcd_x);
}

/****************************************************************************
* 名 稱:flash()
* 功 能:顯示閃爍
* 入口參數(shù):
* 出口參數(shù):
* 說 明:
****************************************************************************/
voidflash()
{
send_i(0x08); //關(guān)顯示
delay1(); //延長一定時(shí)間
send_i(0x0c); //開顯示
delay1();delay1(); //延長關(guān)顯示兩倍的時(shí)間
send_i(0x08); //關(guān)顯示
delay1();
send_i(0x0c); //開顯示
delay1();delay1();
send_i(0x08); //關(guān)顯示
delay1();
send_i(0x0c); //開顯示
delay1();delay1();

}

/****************************************************************************
* 名 稱:clear_p()
* 功 能:清屏
* 入口參數(shù):
* 出口參數(shù):
* 說 明:
****************************************************************************/
void clear_p()
{
send_i(0x1); //清除所有顯示
send_i(0x34); //擴(kuò)展指令操作
send_i(0x30); //基本指令操作
}

/****************************************************************************
* 名 稱:send_d()
* 功 能:寫一個(gè)字節(jié)數(shù)據(jù)到LCD
* 入口參數(shù):unsigned char x 字符
* 出口參數(shù):
* 說 明:
****************************************************************************/
void send_d(unsigned char x)
{
chk_busy(); //檢測LCD是否工作繁忙
rs = 1; //設(shè)置該字節(jié)數(shù)據(jù)是顯示數(shù)據(jù)
rw = 0; //設(shè)置該次操作為寫
PORTD = x; //送數(shù)據(jù)口PORTD
e = 1; //使能
nop();
nop();
nop();
e = 0; //禁止
}

/****************************************************************************
* 名 稱:send_i()
* 功 能:寫一個(gè)字節(jié)命令到LCD
* 入口參數(shù):unsigned char x 字符
* 出口參數(shù):
* 說 明:
****************************************************************************/
void send_i(unsigned char x)
{
chk_busy(); //檢測LCD是否工作繁忙
rs = 0; //設(shè)置該字節(jié)數(shù)據(jù)為控制命令
rw = 0; //設(shè)置此次操作為寫
PORTD = x; //送數(shù)據(jù)口PORTD
e = 1; //使能
nop();
nop();
nop();
e = 0; //禁止
}

/****************************************************************************
* 名 稱:chk_busy()
* 功 能:檢測LCD是否工作繁忙
* 入口參數(shù):
* 出口參數(shù):
* 說 明:
****************************************************************************/
void chk_busy()
{
busy = 1; //先置位繁忙標(biāo)志位
TRISD = 0XFF; //更改通信為輸入
rs = 0; //設(shè)置該字節(jié)數(shù)據(jù)為命令代碼
rw = 1; //設(shè)置此次操作為讀
while (busy)
{
nop();nop();nop();
e = 1; //使能
nop();nop();nop();
if (!RD7) busy = 0; //檢測LCD是否工作繁忙
nop();nop();nop();
e = 0; //禁止
}
e = 0; //禁止
TRISD = 0X00; //恢復(fù)通信為輸出
}

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

/****************************************************************************
* 名 稱:delayl()
* 功 能:延時(shí)
* 入口參數(shù):
* 出口參數(shù):
* 說 明:
****************************************************************************/
void delay1()
{
int i;
for (i = 0;i < 10;i++)
{
delay(); //調(diào)用延時(shí)函數(shù)
}
}

/****************************************************************************
* 名 稱: writelcd()
* 功 能: 在LCD上顯示字符串
* 入口參數(shù):const unsigned char *pt 字符串的首地址
* 出口參數(shù):
* 說 明:
****************************************************************************/
void writelcd(const unsigned char *pt)
{
while(*pt) //檢測是否達(dá)到了字符串最后
send_d(*pt++); //發(fā)送數(shù)據(jù)給lcd
}


上一頁 1 2 下一頁

評論


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

關(guān)閉