📄 lcd.c
字号:
if(j==line)
{
h = ARRAY8_SmallNumb[k][g];
h = h | 0x01;
}
else
h = ARRAY8_SmallNumb[k+1][g];
WriteData(h);
}
}
else
{
if(j==line)
{
for(h=0;h<8;h++)
{
WriteData(0x01);
}
}
else
{
for(h=0;h<8;h++)
{
WriteData(0x00);
}
}
}
}
}
}
/************************************************************************
**************************LCD 测试结果显示******************************/
void ShowBigNumber(unsigned int number)
{
unsigned char j,k,m,n;
unsigned char g;
ShowLCDData(1,32,6,0x00,20);
ShowLCDData(1,32,5,0x00,20);
NumbTo8421(number);
for(j=5;j<7;j++)
{
SelectScreen(1);
SetColumn(52);
SetLine(j);
n = 0;
for(m=0;m<4;m++)
{
if(m==1)
{
SelectScreen(2);
SetColumn(0);
SetLine(j);
}
k = Dis_Value[m].U *2;
if(k != 0)
n=1;
if( m < 2 && n==0 && k==0)
{
for(g=0;g<12;g++)
{
WriteData(0x00);
}
}
else
{
if(j==5)
{
for(g=0;g<12;g++)
WriteData(ARRAY16_BigNumb[k][g]);
}
else
{
for(g=0;g<12;g++)
WriteData(ARRAY16_BigNumb[k+1][g]);
}
}
if(m==2)
{
if(j==5)
{
for(g=0;g<12;g++)
WriteData(ARRAY16_BigNumb[20][g]);
}
else
{
for(g=0;g<12;g++)
WriteData(ARRAY16_BigNumb[21][g]);
}
}
}
}
}
/************************************************************************
****************LCD 显示*********************************************/
void ShowLCDData(unsigned char scre,unsigned char col,unsigned char lin,unsigned char dat,unsigned char quan)
{
unsigned char i;
SelectScreen(scre);
SetColumn(col);
SetLine(lin);
for(i=0;i<quan;i++)
{
WriteData(dat);
}
}
/************************************************************************
****************LCD 日期显示*********************************************/
void ShowYearM_D(unsigned char year,unsigned char month,unsigned char day,unsigned char t)
{ //t=0 都正显 t=1 year反显 t=2 month反显 t=4 day反显
unsigned char i;
i = t;
i &= 0x01;
ShowYearM_DFunction(year,16,i);
t >>=1;
i = t;
i &= 0x01;
ShowYearM_DFunction(month,36,i);
t >>=1;
i = t;
i &= 0x01;
ShowYearM_DFunction(day,56,i);
ShowXGorMH(24,0);
ShowXGorMH(44,0);
}
/************************************************************************
****************LCD 日期显示子程序*********************************************/
void ShowYearM_DFunction(unsigned char ymd,unsigned char col,unsigned char t)
{ //t=0 正显 t=1 反显
unsigned char h,i,j,k,m;
SelectScreen(2);
for(i=0;i<2;i++)
{
j = ymd;
j &= 0x0f;
j = j*2;
for(k=2;k<4;k++)
{
SetColumn(col);
SetLine(k);
for(m=0;m<8;m++)
{
if(k==2)
h = ARRAY8_SmallNumb[j][m];
else
h = ARRAY8_SmallNumb[j+1][m];
if(t!=0)
h = ~h;
WriteData(h);
}
}
ymd >>= 4;
col = col-8;
}
}
/************************************************************************
****************LCD 斜杠显示子程序*********************************************/
void ShowXGorMH(unsigned char col,unsigned char xgmh)
{ //xgmh=0:斜杠 2:冒号
unsigned char i,k;
SelectScreen(2);
for(i=2;i<4;i++)
{
SetColumn(col);
SetLine(i);
for(k=0;k<4;k++)
{
WriteData(XieG_MaoH[xgmh][k]);
}
xgmh++;
}
}
/************************************************************************
****************菜单显示*************************************************/
void ShowMenu(unsigned char menu,unsigned char t)
{ //t=0 正显 t=1 反显 menu 0=打印 2=返回
unsigned char i,j,k,m;
i = menu;
SelectScreen(MenuFace2[i][0]);
menu = menu*2;
for(k=0;k<2;k++)
{
SetColumn(MenuFace2[i][1]);
SetLine(k);
for(m=0;m<28;m++)
{
if(t==0)
WriteData(ARRAY8_Menu[menu][m]);
else
{
j = ~ARRAY8_Menu[menu][m];
WriteData(j);
}
}
menu++;
}
}
/************************************************************************
**************************提示语句返回函数************************************/
void PrompFaceBack(void)
{
if(PrompDelay >=100)
{
Flag.Promp_Delay_CON = 0;
PrompDelay = 0;
if(Flag.Samp_Y_N_CON)
{
ClearShowArea();
ShowBigNumber(Samp_abs);
}
else
{
ClearShowArea();
PromptScreen(0,6);
}
}
}
/************************************************************************
**************************定时日期界面************************************/
void TimeLapseDate(unsigned char yea_min,unsigned char mon_sec,unsigned char date)
{//t=0 都正显 t=1 分反显 t=2 秒反显
yea_min = yea_min+yea_min/10*0x06;
mon_sec = mon_sec+mon_sec/10*0x06;
ShowYearM_D(yea_min,mon_sec,date,0);
ShowLCDData(2,44,2,0x00,20);
ShowLCDData(2,44,3,0x00,20);
ShowXGorMH(24,2);
}
/************************************************************************
**************************定时时间处理及显示*****************************/
void ShowLapseTime(unsigned char i,unsigned h)
{ //i:测试项目号,h:第几次定时 0 :第一次 1:第二次
LapseSecond = Item_Time[i][h];
if(LapseSecond >=60)
{
LapseMinute=LapseSecond/60;
LapseSecond=0;
}
else
LapseMinute=0;
TimeLapseDate(LapseMinute,LapseSecond,0);
}
/************************************************************************
**************************提示语句函数**********************************/
void PromptScreen(unsigned char head,unsigned char length)
{ //head: 提示语句首字的地址, length:提示语句的字数
unsigned char i,j,k;
unsigned char col_;
ClearShowArea();
SelectScreen(1);
col_ = 36;
for(i=0;i<length;i++)
{
if(i==2)
{
SelectScreen(2);
col_=0;
}
for(j=0;j<2;j++)
{
SetColumn(col_);
SetLine(j+5);
for(k=0;k<14;k++)
WriteData(Prompt_Screen[2*i+j+head][k]);
}
col_ += 14;
}
if(length<6) //显示提示语句时 清除其他显示
{
k = 6-length;
k = k*14;
col_ = 56-k;
ShowLCDData(2,col_,5,0x00,k);
ShowLCDData(2,col_,6,0x00,k);
}
}
/************************************************************************
****************测试完成************************************************/
void ShowOK(void)
{
unsigned char j,k;
SelectScreen(2);
for(j=0;j<2;j++)
{
SetColumn(8);
SetLine(j+2);
for(k=0;k<16;k++)
WriteData(OK_Array[j][k]);
}
ShowLCDData(2,24,2,0x00,20);
ShowLCDData(2,24,3,0x00,20);
}
/************************************************************************
**************************"放弃本次测试?"**********************************/
void PromptFQBCCS(void)
{
unsigned char i,j,k;
unsigned char col_;
ClearShowArea();
SelectScreen(1);
col_ = 36;
for(i=0;i<6;i++) //"放弃本次测试"
{
if(i==2)
{
SelectScreen(2);
col_=0;
}
for(j=0;j<2;j++)
{
SetColumn(col_);
SetLine(j+4);
for(k=0;k<14;k++)
{
if(j)
WriteData(Prompt_FQBCCS[2*i+j][k]);
else
WriteData(Prompt_FQBCCS[2*i+j][k]+1);
}
}
col_ += 14;
}
SelectScreen(2);
for(j=0;j<2;j++)
{
SetColumn(56);
SetLine(j+4);
for(k=0;k<7;k++)
{
WriteData(WenH_Array[j][k]);
}
}
}
/************************************************************************
****************"是""否"选择程序*********************************************/
void SelectYorN(bit i)
{ //i=0 是 i!=0否
unsigned char j,k,m;
SelectScreen(1);
for(j=0;j<2;j++)
{
SetColumn(50);
SetLine(j+6);
for(k=0;k<14;k++)
{
m = Y_N_Array[j][k];
if(i)
m = ~m;
WriteData( m);
}
}
SelectScreen(2);
for(j=0;j<2;j++)
{
SetColumn(28);
SetLine(j+6);
for(k=0;k<14;k++)
{
m = Y_N_Array[j+2][k];
if(i==0)
m = ~m;
WriteData( m);
}
}
}
/************************************************************************
****************页码显示*********************************************/
void ShowPage(unsigned char i)
{
unsigned char j;
SelectScreen(2);
SetColumn(58);
SetLine(7);
for(j=0;j<4;j++)
WriteData(Page_Number[i][j]);
}
/************************************************************************
****************中文菜单显示*********************************************/
void ShowFaceNO1(void)
{
}
/************************************************************************
****************毫秒延时程序*********************************************/
void Delay(unsigned int Ms)
{
unsigned char us,usn;
while(Ms)
{
usn = 2;
while(usn)
{
us = 0xF6;
while(us)
{--us;}
--usn;
}
--Ms;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -