?? lcd240.c
字號(hào):
/*
//一個(gè)數(shù)據(jù)讀出函數(shù)
uchar LcmReadData( void )
{
uchar uData;
uData = LcmDataPort;
return uData;
}
*/
uchar LcmReadData(void)
{
uchar uData;
CheckRWCD();
sDelay(5);
pLcdCd=0;
sDelay(5);
pLcdRd=0;
sDelay(5);
uData=PORTD;
sDelay(5);
LATC|=0x38;
return uData;
}
//---------------------------------------------
//無參數(shù)指令寫入函數(shù)
void LcmWriteCommand(uchar Command)
{
CheckRWCD(); //檢測(cè)指令讀寫狀態(tài)
TRISD=0x00;
sDelay(5);
pLcdCd=1;
sDelay(5);
pLcdWr=0;
sDelay(5);
LcdDataPort=Command;
sDelay(5);
pLcdWr=1;
sDelay(5);
pLcdCd=1;
}
//單參數(shù)指令寫入函數(shù)
void LcmWriteCommandWith1Par(uchar Parameter,uchar Command)
{
LcmWriteData(Parameter);
LcmWriteCommand(Command);
}
//雙參數(shù)指令寫入函數(shù)
void LcmWriteCommandWith2Par(uchar Parameter1,uchar Parameter2,uchar Command)
{
LcmWriteData(Parameter1);
LcmWriteData(Parameter2);
LcmWriteCommand(Command);
}
//LCM初始化函數(shù)
void LcmInit( void )
{
LcmWriteCommandWith2Par(0x00,0x00,0x40); //設(shè)置文本顯示區(qū)首地址
LcmWriteCommandWith2Par(LcmLengthDots/8,0x00,0x41); //設(shè)置文本顯示區(qū)寬度
LcmWriteCommandWith2Par(0x00,0x08,0x42); //設(shè)置圖形顯示區(qū)首地址0x0800
LcmWriteCommandWith2Par(LcmLengthDots/8,0x00,0x43); //設(shè)置圖形顯示區(qū)寬度
LcmWriteCommand(0xA7); //設(shè)置光標(biāo)形狀 8x8方塊
LcmWriteCommand(0x81); //顯示方式設(shè)置 文本xor圖形(異或)
LcmWriteCommand(0x98); //圖形開 //顯示開關(guān)設(shè)置 0x9C=文本開,圖形開,光標(biāo)閃爍關(guān)
}
//清顯示存儲(chǔ)器函數(shù)
void LcmClear( uchar FillByte )
{
uint i = 8192; //此處僅清8K RAM,如果您32K RAM都使用,請(qǐng)修改i=32768(后面也要改)
if(FillByte) //注意如果填充ff時(shí),如果RAM僅使用了8K,那么8192次會(huì)寫入到文本區(qū)
{ //會(huì)形成亂碼.(24064出廠時(shí)候默認(rèn)將R7斷開,即默認(rèn)使用8KRAM)
i -= 2*1024;//所以如果填入ff時(shí)候要扣除2K的文本區(qū)
LcmWriteCommandWith2Par(0x00,0x08,0x24); //填充0xff時(shí)候要在圖形區(qū)
}
else
LcmWriteCommandWith2Par(0x00,0x00,0x24);
LcmWriteCommand(0xB0); //進(jìn)入自動(dòng)寫
while(i--)
{
CheckAutoWrite();
LcmWriteData( FillByte );
}
LcmWriteCommand(0xB2); //退出自動(dòng)寫
}
//設(shè)定顯示地址函數(shù)
void LocateXY(uchar x,uchar y,uchar mode)
{
uint temp;
temp= LcmLengthDots/8*y + x;
if(mode) //mode=1為Graphic
{ //如果圖形模式要加上圖形區(qū)首地址0x0800
temp+=0x0800;
}
LcmWriteCommandWith2Par(temp&0xff,temp/256,0x24);
}
void ShowHZ(unsigned char lin,unsigned char column,unsigned int hzcode,unsigned char dispmode) //圖形方式顯示1個(gè)漢字
{
unsigned char i;
unsigned int StartAddr;
//wCount1=lin;
//wCount1=wCount1*LineChar;
StartAddr=0x800+(unsigned int)lin*LineChar+ column; //圖形顯示RAM區(qū)為0800開始
for(i=0;i<16;i++)
{
LcmWriteCommandWith2Par( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), 0x24);
if(dispmode) LcmWriteCommandWith1Par(~HZTable[hzcode][i*2], 0xc0); //數(shù)據(jù)寫地址+1
else LcmWriteCommandWith1Par( HZTable[hzcode][i*2], 0xc0); //數(shù)據(jù)寫地址+1
if(dispmode)LcmWriteCommandWith1Par(~HZTable[hzcode][i*2+1], 0xc4); //數(shù)據(jù)寫地址不變
else LcmWriteCommandWith1Par( HZTable[hzcode][i*2+1], 0xc4); //數(shù)據(jù)寫地址不變
StartAddr=StartAddr + LineChar;
}
}
void ShowChar(unsigned char lin,unsigned char column,unsigned int hzcode,unsigned char dispmode) //圖形方式顯示1個(gè)英文字符
{
unsigned char i;
unsigned int StartAddr;
//wCount1=lin;
//wCount1=wCount1*LineChar;
StartAddr=0x800+(unsigned int)lin*LineChar+ column; //圖形顯示RAM區(qū)為0800開始
for(i=0;i<16;i++)
{
LcmWriteCommandWith2Par( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), 0x24);
if(dispmode&0x01)LcmWriteCommandWith1Par( 0x00, 0xc4); //數(shù)據(jù)寫地址不變
else if(dispmode&0x02)LcmWriteCommandWith1Par(~CharTable[hzcode][i], 0xc4); //數(shù)據(jù)寫地址不變
else LcmWriteCommandWith1Par(CharTable[hzcode][i], 0xc4); //數(shù)據(jù)寫地址不變
StartAddr=StartAddr + LineChar;
}
}
void line(unsigned char lin) //圖形方式畫一條線
{
unsigned char i;
unsigned int StartAddr;
//wCount1=lin;
//wCount1=wCount1*LineChar;
StartAddr=0x800+(unsigned int)lin*LineChar; //圖形顯示RAM區(qū)為0800開始
LcmWriteCommandWith2Par( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), 0x24);
for(i=0;i<LineChar;i++)
{
LcmWriteCommandWith1Par( 0xFF, 0xc0); //數(shù)據(jù)寫地址不變
}
}
void sInitPort(void)
{
SSPCON1=0;
SSPCON2=0;
CCP1CON=0;
CCP2CON=0;
LVDCON=0x15; // B'00010101' ;2.7V 低電壓監(jiān)測(cè)功能
INTCON2=0x00; //B'10000100' ;TMR0中斷優(yōu)先級(jí)=1
INTCON3=0x00; //B'00000000' ;INT1/2中斷DIS
ADCON1=0x8E; //82h;設(shè)置為A口 RA0為AD口,其他為數(shù)字口
TRISA=0x7F; //RA0-6為輸入
TRISB=0xFF;
TRISC=0x81; //RC7 RC0 Input
TRISD=0xFF; //
TRISE=0x00; //輸出
T1CON=0x00; //B'00001010' ;定時(shí)器1使用外部時(shí)鐘
T2CON=0x00; //B'00111100' ;1:8 T2ON
PIR1=0x00;
PIR2=0x00;
IPR1=0xFF;
IPR2=0xFF;
PIE1=0x00;//B'00000011' ;RCIE TXIE TMR2IE Enable
PIE2=0x00;//B'00000000' ;TMR3 enable
//bsf RCON,IPEN ; 使能優(yōu)先級(jí)中斷
TMR0H=0x00;
TMR0L=0x00;
INTCON=0x00; //B'00100000' ;并開TMR0中斷
T0CON=0x00; // B'10000010' ;1:8 TMR0 in timer mode
//B'10000101' ;1:64 TMR0 in timer mode 0.25us*64(prescale)*250=4ms
T1CONbits.TMR1ON=1; //T1CON, Enables Timer1
// bsf INTCON,GIE ;打開高優(yōu)先級(jí)中斷
}
//主函數(shù)
void main(void)
{
uchar i; //,rLine,rHzIndex;
INTCON=0x00;
sInitPort();
pBackLight=1;
LocateXY(0,0,Graphic);
LcmInit();
while(1)
{
LcmClear(0);
LocateXY(0,0,Graphic); //TXT
//--------------------------------------------------------------------------------------------
//--試驗(yàn)頻率次分鐘占空比 類 型 常 開 閉 路 數(shù) 檢 測(cè) 正 粘 連 斷 溫 度 觸 點(diǎn) 繼 續(xù) 停 止 狀 態(tài) 轉(zhuǎn) 換 ℃ ------
//---0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
//-------試驗(yàn)頻率:90次/分鐘 占空比:15%------------------------------
ShowHZ(0,0,0,0);
ShowHZ(0,2,1,0);
ShowHZ(0,4,2,0);
ShowHZ(0,6,3,0);
ShowChar(0,8,10,0); //: 0=正常顯示 1=空顯示 2=反顯示
ShowChar(0,9,9,0); //9
ShowChar(0,10,0,0); //0
ShowHZ(0,11,4,0);
ShowChar(0,13,11,0); // /
ShowHZ(0,14,5,0);
ShowHZ(0,16,6,0);
ShowChar(0,18,0,1); //空顯示
ShowHZ(0,19,7,0);
ShowHZ(0,21,8,0);
ShowHZ(0,23,9,0);
ShowChar(0,25,10,0); //:
ShowChar(0,26,1,0);
ShowChar(0,27,5,0);
ShowChar(0,28,12,0);
//-------------------------------------
//-------試驗(yàn)類型:常開型 試驗(yàn)路數(shù):3------------------------------
ShowHZ(16,0,0,0);
ShowHZ(16,2,1,0);
ShowHZ(16,4,10,0);
ShowHZ(16,6,11,0);
ShowChar(16,8,10,0); //:
ShowHZ(16,9,12,0);
ShowHZ(16,11,13,0);
ShowHZ(16,13,11,0);
ShowChar(16,15,0,1);//空顯示
ShowChar(16,16,0,1);//空顯示
ShowChar(16,17,0,1);//空顯示
ShowChar(16,18,0,1);//空顯示
ShowHZ(16,19,0,0);
ShowHZ(16,21,1,0);
ShowHZ(16,23,15,0);
ShowHZ(16,25,16,0);
ShowChar(16,27,10,0); //:
ShowChar(16,28,3,0);
//-------------------------------------
line(34);
line(35);
line(36);
ShowChar(39,0,13,0); //N
ShowChar(39,1,14,0); //o
ShowChar(39,2,15,0); //.
ShowChar(39,3,0,1); //空顯示
ShowHZ(39,4,23,0);
ShowHZ(39,6,24,0);
ShowChar(39,8,0,1);//空顯示
ShowChar(39,9,0,1);//空顯示
ShowHZ(39,10,17,0); //檢測(cè)狀態(tài)
ShowHZ(39,12,18,0);
ShowHZ(39,14,31,0);
ShowHZ(39,16,32,0);
ShowChar(39,18,0,1); //預(yù)留2個(gè)漢字空間 //空顯示
ShowChar(39,19,0,1); //空顯示
ShowChar(39,20,0,1); //空顯示
ShowChar(39,21,0,1); //空顯示
ShowHZ(39,22,17,0); //檢測(cè)次數(shù)
ShowHZ(39,24,18,0);
ShowHZ(39,26,4,0);
ShowHZ(39,28,16,0);
//-------------------------------------
line(60);
ShowChar(65,0,1,0); //1#
ShowChar(65,1,16,0);
ShowChar(65,2,0,1); //空顯示
ShowChar(65,3,8,0);
ShowChar(65,4,8,0);
ShowChar(65,5,8,0);
ShowChar(65,6,15,0); //.
ShowChar(65,7,8,0);
ShowHZ(65,8,35,0); //℃
ShowHZ(65,10,17,0); //檢測(cè)正常
ShowHZ(65,12,18,0);
ShowHZ(65,14,19,0);
ShowHZ(65,16,12,0);
ShowChar(65,18,0,1);//空顯示
ShowChar(65,19,0,1);//空顯示
ShowChar(65,20,0,1);//空顯示
ShowChar(65,21,0,1);//空顯示
ShowChar(65,22,8,0);
ShowChar(65,23,8,0);
ShowChar(65,24,8,0);
ShowChar(65,25,8,0);
ShowChar(65,26,8,0);
ShowChar(65,27,8,0);
ShowChar(65,28,8,0);
ShowChar(65,29,8,0);
//-------------------------------------
ShowChar(85,0,2,0); //2#
ShowChar(85,1,16,0);
ShowChar(85,2,0,1);//空顯示
ShowChar(85,3,8,0);
ShowChar(85,4,8,0);
ShowChar(85,5,8,0);
ShowChar(85,6,15,0); //.
ShowChar(85,7,8,0);
ShowHZ(85,8,35,0); //℃
ShowHZ(85,10,17,0); //檢測(cè)正常
ShowHZ(85,12,18,0);
ShowHZ(85,14,19,0);
ShowHZ(85,16,12,0);
ShowChar(85,18,0,1);//空顯示
ShowChar(85,19,0,1);//空顯示
ShowChar(85,21,0,1);//空顯示
ShowChar(85,22,8,0);
ShowChar(85,23,8,0);
ShowChar(85,24,8,0);
ShowChar(85,25,8,0);
ShowChar(85,26,8,0);
ShowChar(85,27,8,0);
ShowChar(85,28,8,0);
ShowChar(85,29,8,0);
//-------------------------------------
ShowChar(105,0,3,0); //3#
ShowChar(105,1,16,0);
ShowChar(105,2,0,1); //空顯示
ShowChar(105,3,8,0);
ShowChar(105,4,8,0);
ShowChar(105,5,8,0);
ShowChar(105,6,15,0); //.
ShowChar(105,7,8,0);
ShowHZ(105,8,35,0); //℃
ShowHZ(105,10,12,1); //常開觸點(diǎn)斷開 ShowHZ(105,10,17); //檢測(cè)正常
ShowHZ(105,12,13,1); // ShowHZ(105,12,18);
ShowHZ(105,14,25,1); // ShowHZ(105,14,19);
ShowHZ(105,16,26,1); // ShowHZ(105,16,12);
ShowHZ(105,18,22,1); // ShowEmpty(105,18);
ShowHZ(105,20,13,1); // ShowEmpty(105,19);
// ShowEmpty(105,20);
// ShowEmpty(105,21);
ShowChar(105,22,8,0);
ShowChar(105,23,8,0);
ShowChar(105,24,8,0);
ShowChar(105,25,8,0);
ShowChar(105,26,8,0);
ShowChar(105,27,8,0);
ShowChar(105,28,8,0);
ShowChar(105,29,8,0);
//-------------------------------------
while(1);
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -