📄 test.5.c
字号:
#include "ZLG7289.h"
void Delay(unsigned int t)
{
do
{
TH0 = 0xDC;
TL0 = 0x00;
TR0 = 1;
while ( !TF0 );
TF0 = 0;
TR0 = 0;
} while (--t);
}
void main()
{
code char DispDat[11] ={0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70,0xFF,0x7B,0x3E}; /*数字0123456789V的字形数据*/
bit dp_sign;
unsigned char dat;
unsigned char k;
unsigned char temp[2]={0,0};
unsigned char n;
float input;
TMOD = 0x01;
Delay(30); //延时300ms,等待ZLG7289 复位完毕
ZLG7289_Init(4); //调用ZLG7289 的初始化函数
Delay(100);
ZLG7289_Test(); /*测试*/
Delay(200);
ZLG7289_Reset(); /*复位*/
n=0;
dp_sign=0; //dp_sign初值置为0
for (;;)
{
if ( ZLG7289_pinINT == 0 ) //有键按下
{
k = ZLG7289_Key(); /*读取按键值*/
switch(k)
{
case 16: dat= 0 ; break; //0
case 25: dat= 1 ; break; //1
case 17: dat= 2 ; break; //2
case 9: dat= 3 ; break; //3
case 26: dat= 4 ; break; //4
case 18: dat= 5 ; break; //5
case 10: dat= 6 ; break; //6
case 27: dat= 7 ; break; //7
case 19: dat= 8 ; break; //8
case 11: dat= 9 ; break; //9
case 24: dat=DispDat[10]; break; //V
case 3: dat=10 ; break; //清零
case 2: dat=11 ; break; //增0.1
case 1: dat=12 ; break; //减0.1
case 0: dat=13 ; break; //Enter
case 8: dat=14 ; break; //小数点
}
if(dat==10)
{
ZLG7289_Reset(); //清零后重新输入
dp_sign=0;
n=0;
}
else if(dat==11)
{
if(dp_sign==1&&temp[n-1]<9)
{
temp[n-1]++;
ZLG7289_Download(1,6,0,temp[n-1]);
} //有小数点且自增0.1不进位
else if(dp_sign==1&&temp[n-1]>=9)
{
ZLG7289_Download(1,6,0,0); //在末位显示0
temp[n-2]++;
ZLG7289_Download(1,5,0,temp[n-2]);
ZLG7289_SegOn(47);
temp[n-1]=0;
} //有小数点且自增0.1进位
else
{
n++;
ZLG7289_SHL();
dp_sign=1; //dp_sign值置为1则有小数点输入
ZLG7289_SegOn(47); //输入小数点
ZLG7289_Download(2,7,0,DispDat[10]); //电压单位显示
ZLG7289_Download(1,6,0,1); //在末位显示1
temp[n-1]=1;
} //无小数点,只在末位显示1
} //自增0.1的实现
else if(dat==12)
{
if(dp_sign==1&&temp[n-1]>0)
{
temp[n-1]--;
ZLG7289_Download(1,6,0,temp[n-1]);
}
else if(dp_sign==1&&temp[n-1]==0)
{
temp[n-2]--;
ZLG7289_Download(1,5,0,temp[n-2]);
ZLG7289_Download(1,6,0,9);
temp[n-1]=9;
ZLG7289_SegOn(47);
}
else
{
n++;
temp[n-2]--;
ZLG7289_Download(1,5,0,temp[n-2]);
ZLG7289_Download(1,6,0,9);
ZLG7289_SegOn(47);
dp_sign=1;
temp[n-1]=9;
}
}
else if(dat==13)
{
if(n==1&&dp_sign==0)
input=temp[0];
else if(n==1&&dp_sign==1)
input=temp[0]*0.1;
else
input=temp[1]+temp[0]*0.1;
}
else if(dat==14)
{
dp_sign=1; //dp_sign值置为1则有小数点输入
ZLG7289_SegOn(55); //输入小数点
}
else
{
ZLG7289_SHL();
ZLG7289_Download(2,7,0,DispDat[10]); //电压单位显示
ZLG7289_Download(1,6,0,dat); //按键值显示
temp[n]=dat;
n++;
}
/*等待按键抬起*/
while ( !ZLG7289_pinINT );
Delay(50);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -