LCD1602驅(qū)動(dòng)顯示實(shí)驗(yàn)STM32
/*********************************************************************
*名 稱:LCD_Writedata()
*功 能:寫一字節(jié)數(shù)據(jù)到LCD1602
*入口參數(shù):dat:無符號(hào)字節(jié)類型,0~255 包括各個(gè)ASCII碼字符
*出口參數(shù):無
*********************************************************************/
void LCD_Writedata(uchar dat)
{
while(LCD_busy());//等待LCD1602空閑
LCD_RS_1;
delay_nus(1);
LCD_RW_0;
delay_nus(1);
DATAOUT = dat;
LCD_EN_1; //先拉高
delay_nus(300); //很重要的延時(shí),經(jīng)調(diào)試,延時(shí)300us以上才可以
LCD_EN_0; //下降沿,開始寫入有效數(shù)據(jù)
}
/*********************************************************************
*名 稱:LCD_pos()
*功 能:設(shè)定顯示位置
*入口參數(shù):pos:顯示位置,值的范圍如下:
* 0x00----------------0x0f 0x10-------0x27 第一行(一次顯示16個(gè)字符)
* 0x40----------------0x4f 0x50-------0x67 第二行
*出口參數(shù):無
*********************************************************************/
void LCD_pos(uchar pos)
{
LCD_Writecmd(pos | 0x80);
}
/*********************************************************************
*名 稱:LCD_Setpos()
*功 能:根據(jù)習(xí)慣設(shè)定顯示位置
*入口參數(shù):row:行,row=1表示第一行,row=2表示第二行
* col:列,0~15,用于指定顯示的列,范圍可以是0~40
*出口參數(shù):無
*********************************************************************/
void LCD_Setpos(uchar row,uchar col)
{
if(row==1) LCD_Writecmd(col | 0x80);
else LCD_Writecmd(col | 0xC0);
}
/*********************************************************************
*功 能:顯示一個(gè)字符
*入 口:ch:待顯示的字符
*********************************************************************/
void LCD_DispChar(char ch)
{
LCD_Writedata(ch);
}
/*********************************************************************
*功 能:在指定位置顯示一個(gè)字符
*入 口:row:行 1或2 col:列,0~15
* ch:待顯示的字符
*********************************************************************/
void LCD_Setpos_DispChar(uchar row,uchar col,char ch)
{
LCD_Setpos(row,col);
LCD_Writedata(ch);
}
/*********************************************************************
*名 稱:LCD_DispString()
*功 能:使LCD1602顯示一個(gè)字符串,顯示位置需提前設(shè)定
*入口參數(shù):str[]:待顯示的字符串
*出口參數(shù):無
*********************************************************************/
void LCD_DispString(char str[])
{
uchar i=0;
while(str[i] !=