?? lcd.c
字號(hào):
#include "config.h"
uint8 BCD[6];
/****************************************************************************
* 名稱:ChkBusy()
* 功能:檢查總線是否忙
****************************************************************************/
void ChkBusy()
{
//PINSEL0=0xffc00000;
IODIR=0x700;
while(1)
{
IOCLR=rs;
IOSET=rw;
IOSET=en;
if(!(IOPIN & busy))break;
IOCLR=en;
}
IODIR=0x7ff;
}
/****************************************************************************
* 名稱:LCDCls()
* 功能:LCD清屏
****************************************************************************/
void LCDCls()
{ChkBusy();
IOCLR=rs; //全部清零
IOCLR=rw;
IOCLR=0xff;
IOSET=0x00000001;
IOSET=en;
IOCLR=en;
}
/****************************************************************************
* 名稱:LCDWraction()
* 功能:寫指令到LCD
****************************************************************************/
void LCDcmd(uint8 cmd)
{ChkBusy();
IOCLR=rs; //全部清零
IOCLR=rw;
IOCLR=0xff;
IOSET=cmd;
IOSET=en;
//delay(1000000);
IOCLR=en;
// delay(1000000);
}
/****************************************************************************
* 名稱:LCDsetxy()
* 功能:LCD光標(biāo)定位到xy處
****************************************************************************/
void LCDsetxy(uint8 x,uint8 y)
{ uint8 temp;
if(x==1)
{temp=0x80+y-1;
LCDcmd(temp);
}
else
{temp=0xc0+y-1;
LCDcmd(temp);
}
}
/****************************************************************************
* 名稱:LCDgohome()
* 功能:LCD光標(biāo)歸位
****************************************************************************/
void LCDgohome(void)
{LCDcmd(0x02);
}
/****************************************************************************
* 名稱:WrOp()
* 功能:寫函數(shù)
****************************************************************************/
void LCDWrdata(uint8 dat)
{
ChkBusy();
IOSET=rs; //全部清零
IOCLR=rw;
IOCLR=0xff; //先清零
IOSET=dat; //再送數(shù)
IOSET=en;
IOCLR=en;
}
/****************************************************************************
* 名稱:LCDinit()
* 功能:初始化LCD
****************************************************************************/
void LCDinit()
{ LCDcmd(0x38);/*8位數(shù)據(jù),2行顯示*/
// LCDcmd(0x08);/*顯示關(guān)閉*/
// LCDcmd(0x01);/*清屏*/
/*清屏和光標(biāo)歸位需要較長(zhǎng)的時(shí)間*/
LCDcmd(0x06);/*寫入數(shù)據(jù)后光標(biāo)右移*/
LCDcmd(0x0c);/*顯示開,不顯示光標(biāo)*/
// LCDCls();
}
/****************************************************************************
* 名稱:DisText()
* 功能:顯示文本函數(shù)
****************************************************************************/
void DisplayText(uint8 x,uint8 y,uint8 *p)
{
LCDsetxy(x,y);
while(*p !='\0')
LCDWrdata(*(p++));
}
void ShowInt(uint8 x,uint8 y,uint16 num) //在addr處顯示數(shù)字num
{//將num轉(zhuǎn)化成五個(gè)BCD碼存放在全局?jǐn)?shù)組BCD[5]中
uint8 i;
for(i=5;i>0;i--) //將NUM數(shù)據(jù)轉(zhuǎn)化成ASCII碼,如521會(huì)轉(zhuǎn)化為00521
{
BCD[i-1]=(uint8)(num%10+0x30); //取出最低位
num/=10; //去掉最低位
}
i=0;
while(BCD[i] ==0x30 && i<4) BCD[i++]=' '; //NUM轉(zhuǎn)換成數(shù)組存放,但還沒有加上小數(shù)點(diǎn)
BCD[5]='\0';
DisplayText(x,y,BCD);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -