📄 display.c
字号:
/*********************************************************
Project: ST FST(TDA7540)
File name: DISPLAY.C
Description:
Write/Modify: Perry
Time: 2005-11-22- 10:02:50
*********************************************************/
#include "public.h"
void DisplayInit(void)
{
PD_DISP_RS=1;//yete ask
PO_DISP_RS=1;
PD_DISP_RW=1;
PO_DISP_RW=1;
PD_DISP_E=1;
PO_DISP_E=1;
PO_ALL_DB=0xFF;
PD_ALL_DB=0xFF;// output
// Function set
DisplaySendCommand(y00111000);//yete ask
Wait1ms(5);
DisplaySendCommand(y00111000);
Wait10us(100);
DisplaySendCommand(y00111000);
Wait10us(100);
WaitWhenBusy();
// Display Off
DisplaySendCommand(y00001000);
WaitWhenBusy();
// Display Clear
DisplaySendCommand(y00000001);
WaitWhenBusy();
// Increase Mode
DisplaySendCommand(y00000110);
WaitWhenBusy();
// Display On
DisplaySendCommand(y00001100);
Display(DISP_CLEAR);
}
void DisplayMain(void)
{
Flash(0,0xFF);
Animation(ANIMATION_RUN);
if(F_DispRefresh)
{
F_DispRefresh=0;
DisplayRefresh();
}
}
void Display(unsigned char command)
{
unsigned char i;
switch(command)
{
case DISP_CLEAR:
for (i=0;i<32;i++)
DispBuff[i]=' ';
case DISP_REFRESH:
F_DispRefresh=1;
break;
}
}
void PrintAnimation(unsigned char *p)
{
unsigned char i;
for(i=0;;i++,p++)
{
AniBuff[i]=*p;
if(*p==0)break;
}
}
void Animation(unsigned char mode,unsigned char *p,unsigned char bgtime)
{
unsigned char i,temp;
switch(mode)
{
case 0:
if(!F_DispAnimation)
break;
if(AniTimer>0)
break;
AniTimer=4;
for(i=0,temp=0;i<16;i++)
{
if(*PAni)
{
DispBuff[i]=*PAni;
}
else
{
DispBuff[i]=' ';
temp=1;
}
PAni++;
}
if(temp)
{
PAni=PAni-AniPos-16;
AniPos=0;
AniTimer=AniBeginTime;
}
else
{
if(AniPos==0)
AniTimer=AniBeginTime;
PAni-=15;
AniPos++;
}
F_DispRefresh=1;
break;
case 1:
PAni=p;
AniPos=0;
AniBeginTime=bgtime;
F_DispAnimation=1;
break;
case 2:
F_DispAnimation=0;
break;
}
}
void Flash(unsigned char start, unsigned char length)
{
unsigned char i;
if(length==0xFF)
{
if(F_HalfSecondOut && F_DispFresh)
{
F_DispRefresh=1;
}
}
else if(length==0)
{
F_DispRefresh=1;
FlashStart=0;
FlashLength=0;
F_DispFresh=0;
}
else
{
FlashStart=start;
FlashLength=length;
F_DispFresh=1;
}
}
void PrintLine1(unsigned char *pStr1)
{
unsigned char i;
for(i=0;i<16;i++)
{
if(*pStr1)
{
DispBuff[i]=*pStr1;
pStr1++;
}
else
DispBuff[i]=' ';
}
Display(DISP_REFRESH);
}
void PrintLine2(unsigned char *pStr1)
{
unsigned char i;
for(i=16;i<32;i++)
{
if(*pStr1)
{
DispBuff[i]=*pStr1;
pStr1++;
}
else
DispBuff[i]=' ';
}
Display(DISP_REFRESH);
}
void PrintString(unsigned char *pStr1,unsigned char *pStr2)
{
unsigned char i;
for(i=0;i<16;i++)
{
if(*pStr1)
{
DispBuff[i]=*pStr1;
pStr1++;
}
else
DispBuff[i]=' ';
}
for(i=16;i<32;i++)
{
if(*pStr2)
{
DispBuff[i]=*pStr2;
pStr2++;
}
else
DispBuff[i]=' ';
}
Display(DISP_REFRESH);
}
void DisplayRefresh(void)
{
unsigned char i;
WaitWhenBusy();
DisplaySendCommand(y10000000); //address 0
for (i=0;i<16;i++)
{
WaitWhenBusy();
if(F_DispFresh && F_HalfSecond && i>=FlashStart && i<FlashStart+FlashLength)
DisplaySendData(' ');
else
DisplaySendData(DispBuff[i]);
}
WaitWhenBusy();
DisplaySendCommand(y11000000); //address 0x40
for (i=16;i<32;i++)
{
WaitWhenBusy();
if(F_DispFresh && F_HalfSecond && i>=FlashStart && i<FlashStart+FlashLength)
DisplaySendData(' ');
else
DisplaySendData(DispBuff[i]);
}
}
unsigned char DisplayReadBusy(void)
{
unsigned char readdata;
PD_ALL_DB=0;// input
Pin_DISP_RS=0;
Pin_DISP_RW=1;
NOP;
Pin_DISP_E=1;
NOP;
readdata=Pin_ALL_DB>>7;
Pin_DISP_E=0;
PD_ALL_DB=0xFF;//output
return(readdata);
}
void WaitWhenBusy(void)
{
unsigned char i;
/*for(i=0;i<4&&DisplayReadBusy();i++)
Wait10us(100);*/
while(DisplayReadBusy());
}
void DisplaySendCommand(unsigned char sendcommand)
{
Pin_DISP_RS=0;
Pin_DISP_RW=0;
NOP;
Pin_DISP_E=1;
NOP;
Pin_ALL_DB=sendcommand;
Pin_DISP_E=0;
}
void DisplaySendData(unsigned char senddata)
{
Pin_DISP_RS=1;
Pin_DISP_RW=0;
NOP;
Pin_DISP_E=1;
NOP;
Pin_ALL_DB=senddata;
Pin_DISP_E=0;
}
void DisplayTimer100ms(void)
{
if(AniTimer>0)AniTimer--;
}
/*********************************************************
File End
*********************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -