📄 display.c
字号:
#include "public.h"
void DisplayInit(void)
{
Wait1ms(20);
PDDR_DISP_RS=1;
PCR1_DISP_RS=1;
PCR2_DISP_RS=0;
PDDR_DISP_RW=1;
PCR1_DISP_RW=1;
PCR2_DISP_RW=0;
PDDR_DISP_E=1;
PCR1_DISP_E=1;
PCR2_DISP_E=0;
PDDR_DISP_DB0=1;
PCR1_DISP_DB0=1;
PCR2_DISP_DB0=0;
PDDR_DISP_DB1=1;
PCR1_DISP_DB1=1;
PCR2_DISP_DB1=0;
PDDR_DISP_DB2=1;
PCR1_DISP_DB2=1;
PCR2_DISP_DB2=0;
PDDR_DISP_DB3=1;
PCR1_DISP_DB3=1;
PCR2_DISP_DB3=0;
PDDR_DISP_DB4=1;
PCR1_DISP_DB4=1;
PCR2_DISP_DB4=0;
PDDR_DISP_DB5=1;
PCR1_DISP_DB5=1;
PCR2_DISP_DB5=0;
PDDR_DISP_DB6=1;
PCR1_DISP_DB6=1;
PCR2_DISP_DB6=0;
PDDR_DISP_DB7=1;
PCR1_DISP_DB7=1;
PCR2_DISP_DB7=0;
/*Pin_DISP_RS=1;
Pin_DISP_RW=1;
Pin_DISP_E=1;
Pin_DISP_DB7=1;
Pin_DISP_DB6=1;
Pin_DISP_DB5=1;
Pin_DISP_DB4=1;
Pin_DISP_DB3=1;
Pin_DISP_DB2=1;
Pin_DISP_DB1=1;
Pin_DISP_DB0=1;
NOP;
Pin_DISP_RS=0;
Pin_DISP_RW=0;
Pin_DISP_E=0;
Pin_DISP_DB7=0;
Pin_DISP_DB6=0;
Pin_DISP_DB5=0;
Pin_DISP_DB4=0;
Pin_DISP_DB3=0;
Pin_DISP_DB2=0;
Pin_DISP_DB1=0;
Pin_DISP_DB0=0;
NOP;
Pin_DISP_RS=1;
Pin_DISP_RW=1;
Pin_DISP_E=1;
Pin_DISP_DB7=1;
Pin_DISP_DB6=1;
Pin_DISP_DB5=1;
Pin_DISP_DB4=1;
Pin_DISP_DB3=1;
Pin_DISP_DB2=1;
Pin_DISP_DB1=1;
Pin_DISP_DB0=1;
NOP;*/
DisplaySendCommand(y00111000);
Wait1ms(5);
DisplaySendCommand(y00111000);
Wait10us(100);
DisplaySendCommand(y00111000);
Wait10us(100);
// Display Off
DisplaySendCommand(y00001000);
// Display Clear
DisplaySendCommand(y00000001);
// Increase Mode
DisplaySendCommand(y00000110);
// Display On
DisplaySendCommand(y00001100);
Display(DISP_CLEAR);
}
void DisplayMain(void)
{
DisplayRefresh();
}
void Display(unsigned char command)
{
unsigned char i,j;
switch(command)
{
case DISP_CLEAR0:
for (j=0;j<20;j++)
DispBuff[0][j]=' ';
break;
case DISP_CLEAR1:
for (j=0;j<20;j++)
DispBuff[1][j]=' ';
break;
case DISP_CLEAR2:
for (j=0;j<20;j++)
DispBuff[2][j]=' ';
break;
case DISP_CLEAR3:
for (j=0;j<20;j++)
DispBuff[3][j]=' ';
break;
case DISP_CLEAR:
for (i=0;i<4;i++)
for (j=0;j<20;j++)
DispBuff[i][j]=' ';
case DISP_REFRESH:
F_DispRefresh0=1;
F_DispRefresh1=1;
F_DispRefresh2=1;
F_DispRefresh3=1;
break;
case DISP_REFRESH0:
F_DispRefresh0=1;
break;
case DISP_REFRESH1:
F_DispRefresh1=1;
break;
case DISP_REFRESH2:
F_DispRefresh2=1;
break;
case DISP_REFRESH3:
F_DispRefresh3=1;
break;
}
}
void PrintLine(unsigned char linenum, unsigned char @far *pStr1)
{
unsigned char i;
if(linenum>3)return;
for(i=0;i<20;i++)
{
if(*pStr1)
{
DispBuff[linenum][i]=*pStr1;
pStr1++;
}
else
DispBuff[linenum][i]=' ';
}
Display(linenum);
}
void PrintString(unsigned char @far *pStr1)
{
unsigned char i,j;
for(i=0;i<4;i++)
for(j=0;j<20;j++)
{
if(*pStr1)
{
DispBuff[i][j]=*pStr1;
pStr1++;
}
else
DispBuff[i][j]=' ';
}
Display(DISP_REFRESH);
}
void DisplayRefresh(void)
{
unsigned char i;
if(F_DispRefresh0)
{
F_DispRefresh0=0;
DisplaySendCommand(y10000000); //address 0
for (i=0;i<20;i++)
{
DisplaySendData(DispBuff[0][i]);
}
}
if(F_DispRefresh1)
{
F_DispRefresh1=0;
DisplaySendCommand(y11000000); //address 0x40
for (i=0;i<20;i++)
{
DisplaySendData(DispBuff[1][i]);
}
}
if(F_DispRefresh2)
{
F_DispRefresh2=0;
DisplaySendCommand(y10010100); //address 0x14
for (i=0;i<20;i++)
{
DisplaySendData(DispBuff[2][i]);
}
}
if(F_DispRefresh3)
{
F_DispRefresh3=0;
DisplaySendCommand(y11010100); //address 0x54
for (i=0;i<20;i++)
{
DisplaySendData(DispBuff[3][i]);
}
}
}
unsigned char DisplayReadBusy(void)
{
unsigned char readdata;
Pin_DISP_DB0=1;
Pin_DISP_DB1=1;
Pin_DISP_DB2=1;
Pin_DISP_DB3=1;
Pin_DISP_DB4=1;
Pin_DISP_DB5=1;
Pin_DISP_DB6=1;
Pin_DISP_DB7=1;
M_WAIT;
// input
PDDR_DISP_DB0=0;
PDDR_DISP_DB1=0;
PDDR_DISP_DB2=0;
PDDR_DISP_DB3=0;
PDDR_DISP_DB4=0;
PDDR_DISP_DB5=0;
PDDR_DISP_DB6=0;
PDDR_DISP_DB7=0;
M_WAIT;
Pin_DISP_RS=0;
Pin_DISP_RW=1;
M_WAIT;
Pin_DISP_E=1;
M_WAIT;
if(PinIn_DISP_DB7)
readdata=1;
else
readdata=0;
Pin_DISP_E=0;
M_WAIT;
// output
PDDR_DISP_DB0=1;
PDDR_DISP_DB1=1;
PDDR_DISP_DB2=1;
PDDR_DISP_DB3=1;
PDDR_DISP_DB4=1;
PDDR_DISP_DB5=1;
PDDR_DISP_DB6=1;
PDDR_DISP_DB7=1;
return(readdata);
}
void WaitWhenBusy(void)
{
unsigned char i;
/*for(i=0;i<4&&DisplayReadBusy();i++)
Wait10us(100);*/
while(DisplayReadBusy());
}
void DisplaySendCommand(unsigned char sendcommand)
{
UCharField temp;
temp.byte=sendcommand;
WaitWhenBusy();
Pin_DISP_RS=0;
Pin_DISP_RW=0;
M_WAIT;
Pin_DISP_E=1;
M_WAIT;
if(temp.field.B0)
Pin_DISP_DB0=1;
else
Pin_DISP_DB0=0;
if(temp.field.B1)
Pin_DISP_DB1=1;
else
Pin_DISP_DB1=0;
if(temp.field.B2)
Pin_DISP_DB2=1;
else
Pin_DISP_DB2=0;
if(temp.field.B3)
Pin_DISP_DB3=1;
else
Pin_DISP_DB3=0;
if(temp.field.B4)
Pin_DISP_DB4=1;
else
Pin_DISP_DB4=0;
if(temp.field.B5)
Pin_DISP_DB5=1;
else
Pin_DISP_DB5=0;
if(temp.field.B6)
Pin_DISP_DB6=1;
else
Pin_DISP_DB6=0;
if(temp.field.B7)
Pin_DISP_DB7=1;
else
Pin_DISP_DB7=0;
M_WAIT;
Pin_DISP_E=0;
M_WAIT;
}
void DisplaySendData(unsigned char senddata)
{
UCharField temp;
temp.byte=senddata;
WaitWhenBusy();
Pin_DISP_RS=1;
Pin_DISP_RW=0;
M_WAIT;
Pin_DISP_E=1;
M_WAIT;
if(temp.field.B0)
Pin_DISP_DB0=1;
else
Pin_DISP_DB0=0;
if(temp.field.B1)
Pin_DISP_DB1=1;
else
Pin_DISP_DB1=0;
if(temp.field.B2)
Pin_DISP_DB2=1;
else
Pin_DISP_DB2=0;
if(temp.field.B3)
Pin_DISP_DB3=1;
else
Pin_DISP_DB3=0;
if(temp.field.B4)
Pin_DISP_DB4=1;
else
Pin_DISP_DB4=0;
if(temp.field.B5)
Pin_DISP_DB5=1;
else
Pin_DISP_DB5=0;
if(temp.field.B6)
Pin_DISP_DB6=1;
else
Pin_DISP_DB6=0;
if(temp.field.B7)
Pin_DISP_DB7=1;
else
Pin_DISP_DB7=0;
M_WAIT;
Pin_DISP_E=0;
M_WAIT;
}
unsigned char ReturnDispNum(unsigned int inputnum,unsigned int pos)
{
/*volatile unsigned int temp;
temp=inputnum/pos;
temp=temp%10;
temp+='0';
return((unsigned char)temp);*/
return((inputnum/pos)%10+'0');
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -