資源簡介
LCD1602液晶顯示函數(shù),包括頭文件的規(guī)范寫法和相關(guān)函數(shù)。僅供參考,歡迎交流

代碼片段和文件信息
/************************************************************
?*?描述:1602字符型液晶顯示器驅(qū)動文件
?*?作者:吳義鵬(wuyipengnuaa@163.com)
?*?日期:2010年9月2日
************************************************************/
/************************************************************
?*?描述:頭文件聲明
************************************************************/
#include
#include?
#include“LCD1602.h“???//自定義的1602顯示器頭文件,在本工程內(nèi)編譯
/************************************************************
?*?描述:LCD初始化函數(shù)?(有特定的順序)
************************************************************/
void?LCD_Initial()
{
????LCD_DelayTime(15);?????????????????????????//延時15ms
LCD_Write(LCD_Command?0x38);??????????????//設(shè)置顯示模式,8位數(shù)據(jù)端口2行顯示5*7點陣
LCD_DelayTime(5); ???//延時5ms
LCD_Write(LCD_Command?0x38); ???????
LCD_DelayTime(5); ???//延時5ms
LCD_Write(LCD_Command?0x38);??????????????
LCD_DelayTime(4); ???//檢測忙信號(Proteus仿真用)
//void?LCD_BusyCheck(); ???//檢測忙信號(實際硬件電路用)
LCD_Write(LCD_Command?0x38);??????????????//設(shè)置顯示模式,確保初始化成功
LCD_DelayTime(4); ???
//void?LCD_BusyCheck(); ???
LCD_Write(LCD_Command?LCD_CLOSE);?????????//關(guān)閉顯示
LCD_DelayTime(4); ???
//void?LCD_BusyCheck(); ???
LCD_Write(LCD_Command?LCD_CLEAR_SCREEN);??//清屏
LCD_DelayTime(4); ???
//void?LCD_BusyCheck(); ???
LCD_Write(LCD_Command?LCD_SHOW_ON?|?LCD_CURSOR_OFF); ???
???????????????????????????????????????????//開顯示,無光標,當然就無閃爍啦 ???????????????????????????????????????
}
/************************************************************
?*?描述:LCD寫數(shù)據(jù)或指令函數(shù)
?*?說明:bRS表示選擇寫入指令還是數(shù)據(jù)
************************************************************/
void?LCD_Write(bit?bRS?unsigned?char?ucPort)
{
LCDEn?=?0; ?????????????//模塊使能端置0
LCDRS?=?bRS; ?//選擇指令輸入還是命令輸入
LCDRW?=?0; ?//讀寫寄存器選擇,0表示寫
_nop_(); ?//空操作,給硬件反映時間
DBPort?=?ucPort; ?//指令(數(shù)據(jù))送入輸出端口(單片機P0口)
_nop_(); ?
_nop_(); ?
LCDEn?=?1; ?//模塊使能端置1,產(chǎn)生高脈沖,指令(數(shù)據(jù))寫入LCD
_nop_(); ?
_nop_(); ?
_nop_(); ?
LCDEn?=?0; ?//模塊使能端置0
_nop_(); ?
//void?LCD_BusyCheck(); ?//檢測忙信號(實際硬件電路用)
LCD_DelayTime(3); ?//檢測忙信號(Proteus仿真用)
}
/************************************************************
?*?描述:顯示字符定位
?*?說明:在16*2的坐標上確定位置
************************************************************/
void?LCD_CoordinateXY(unsigned?char?X?unsigned?char?Y)
{
????if(Y?==?0)???????//數(shù)據(jù)在第一行顯示
{
????LCD_Write(LCD_Command?0x80?|?X);
}
else?if(Y?==?1)???????//數(shù)據(jù)在第二行顯示
{
????LCD_Write(LCD_Command?0x80?|?(X+0x40));
}
else ?//main函數(shù)中,坐標地址寫錯則在這報錯
{
????LCD_Write(LCD_Command?0x80);??
LCD_Printf(“Error?XY!“);
}
}
/************************************************************
?*?描述:字符串輸出函數(shù)
?*?說明:在LCD上顯示字符串或數(shù)字
************************************************************/
void?LCD_Printf(unsigned?char?*ucStr)
{
????while(*ucStr?!=?‘\0‘)?????????????//當字符串沒有結(jié)束時,做
{
LCD_Write(LCD_Data?*ucStr);??//LCD寫入數(shù)據(jù)(字符)
ucSt
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4174??2010-09-06?14:44??1602液晶顯示的C51函數(shù)(原創(chuàng))\LCD1602.c
?????文件???????1566??2010-09-06?14:40??1602液晶顯示的C51函數(shù)(原創(chuàng))\LCD1602.h
?????目錄??????????0??2010-09-07?21:28??1602液晶顯示的C51函數(shù)(原創(chuàng))
-----------?---------??----------?-----??----
?????????????????5740????????????????????3
評論
共有 條評論