你好:
void L1602_char(uchar hang,uchar lie,char sign) 這段函式就不解釋了,很簡單的,在指定地址寫一個數據進去。
void L1602_string(uchar hang,uchar lie,uchar *p)
{
uchar a,b=0; //宣告兩個變數,a作行地址,b作行資料最大資料個數 16
if(hang == 1) a = 0x80; //如果行為1,寫命令0x80
if(hang == 2) a = 0xc0; //如果是第二行,則寫命令0xc0
a = a + lie - 1; //0x80、0xc0是沒行第一個地址,再根據列來具體到某個位置。
//為什麼要減1,因為傳遞引數進去時,第一個位置是寫1,但是 //1602每行第一行第一個位置是0。所以減1
while(1)
wcmd(a++); //寫地址,然後把a自增一次
b++; //對資料個數計數
if((*p == "\0")||(b==16)) break; //如果遇到字串尾或者資料個數為16了,跳出
wdata(*p); //寫資料,因為是指標,所以欠扁有*取值運算子,
p++; //吧指標加1,準備取下一個資料
}
你好:
void L1602_char(uchar hang,uchar lie,char sign) 這段函式就不解釋了,很簡單的,在指定地址寫一個數據進去。
void L1602_string(uchar hang,uchar lie,uchar *p)
{
uchar a,b=0; //宣告兩個變數,a作行地址,b作行資料最大資料個數 16
if(hang == 1) a = 0x80; //如果行為1,寫命令0x80
if(hang == 2) a = 0xc0; //如果是第二行,則寫命令0xc0
a = a + lie - 1; //0x80、0xc0是沒行第一個地址,再根據列來具體到某個位置。
//為什麼要減1,因為傳遞引數進去時,第一個位置是寫1,但是 //1602每行第一行第一個位置是0。所以減1
while(1)
{
wcmd(a++); //寫地址,然後把a自增一次
b++; //對資料個數計數
if((*p == "\0")||(b==16)) break; //如果遇到字串尾或者資料個數為16了,跳出
wdata(*p); //寫資料,因為是指標,所以欠扁有*取值運算子,
p++; //吧指標加1,準備取下一個資料
}
}