📄 display.c
字号:
freholder.hun=bcdmap[out][1];
freholder.dec=bcdmap[out][2];
freholder.num=bcdmap[out][3];
led_buf_auto_flush();
if(++out>41) out=0;
}
}
scanh++;
if(scanh>1)
{
scanh=0;
if(!auto_scanh)
{
dataout=(out&0x3f)|(dataout&0xc0);
freholder.tho=bcdmap[out][0];
freholder.hun=bcdmap[out][1];
freholder.dec=bcdmap[out][2];
freholder.num=bcdmap[out][3];
led_buf_auto_flush();
if(++out>41) out=0;
}
}
}
/*********************************************************************
函数原型:void timer1(void)
功 能:中断服务程序
*********************************************************************/
void timer1(void) interrupt 3 using 3
{
TH1=reload_high1;
TL1=reload_low1;
D4=!D4;
D5=!D5;
}
/*********************************************************************
函数原型:void swtich_power(void)
功 能: 开关RF12伏电源
*********************************************************************/
void switch_power(void)
{
if(RF)
{
RFOUT=dataout&0x3f;
if(message_disp)
{
dispdata=0x0f;
message_disp=!message_disp;
};
dataout=(RFOUT&0x00)|(dataout&0xc0);
}
else
{
dataout=(dataout&0xc0)|RFOUT;
if(!message_disp)
message_disp=!message_disp;
};
RF=!RF;
EA=!EA;
}
//主菡数
main()
{
init_sys();
TMOD=0x11;
TCON=0x10;
TH0=reload_high;
TL0=reload_low;
TH1=reload_high1;
TL1=reload_low1;
IE=0x82;
TR1=0;
ET1=1;
pulse_control=0;
auto_scanl=1;
auto_scanh=1;
message_disp=1;
dataout=dataout&0xc0;
freholder.tho=bcdmap[0][0];
freholder.hun=bcdmap[0][1];
freholder.dec=bcdmap[0][2];
freholder.num=bcdmap[0][3];
monitor();
}
/***************************************************************************
菡数原型:void error_message(void)
功 能:显示错误信息"0000"
****************************************************************************/
void error_message(void)
{
auto_flush=0;
set_led_buf('8',0,1);
set_led_buf('8',1,1);
set_led_buf('8',2,1);
set_led_buf('8',3,1);
message_time=5;
message_flag=1;
}
/***************************************************************************
函数原型:void set_led_buf(uchar c,uchar pos,uchr cnt)
功 能:从显示缓冲区的pos位置开始,用字符c填充cnt个字节
****************************************************************************/
void set_led_buf(uchar c,uchar pos,uchar cnt)
{
uchar ledbuf_pos;
auto_flush=0;
for(ledbuf_pos=pos;cnt>0;cnt--)
{
led_buf[ledbuf_pos]=((islower(c))?(toupper(c)):(c));
ledbuf_pos++;
if(ledbuf_pos>=4) ledbuf_pos=0;
}
}
/****************************************************************************
函数原型:void led_buf_auto_flush(void)
功 能:自动刷新显示缓冲区
*****************************************************************************/
void led_buf_auto_flush(void) reentrant
{
if(isdigit(freholder.tho))
led_buf[0]=freholder.tho;
else led_buf[0]=0x0f;
if(isdigit(freholder.hun))
led_buf[1]=freholder.hun;
else led_buf[1]=0x0f;
if(isdigit(freholder.dec))
led_buf[2]=freholder.dec;
else led_buf[2]=0x0f;
if(isdigit(freholder.num))
led_buf[3]=freholder.num;
else led_buf[3]=0x0f;
}
/*****************************************************************************
函数:void set_auto_disp(void)
设置频率
*****************************************************************************/
void set_fre_disp(void)
{
uchar ccommand;
uchar data str[4];
auto_flush=0;
curfre.tho=freholder.tho;
curfre.hun=freholder.hun;
curfre.dec=freholder.dec;
curfre.num=freholder.num;
get_str(str,4);
while(1)
{
curfre.tho=str[0];
curfre.hun=str[1];
curfre.dec=str[2];
curfre.num=str[3];
ccommand=get_ch();
if(isupper(ccommand))
switch(ccommand)
{
case 'M':if(!compare_fre_disp())
{
error_message();
auto_flush=1;
}
else auto_flush=1; break;
case 'F':break;
}
if(auto_flush) break;
}
led_buf_auto_flush();
}
/****************************************************************************
函数原型:void scan_fre_bufL(void)
功 能:自动刷新显示缓冲区
*****************************************************************************/
void scan_fre_bufL(void)
{
if(auto_scanh)
auto_scanl=!auto_scanl;
else
{
auto_scanh=!auto_scanh;
auto_scanl=!auto_scanl;
}
FLASH=0;
}
/****************************************************************************
函数原型:void scan_fre_bufL(void)
功 能:自动刷新显示缓冲区
*****************************************************************************/
void scan_fre_bufH(void)
{
if(auto_scanl)
auto_scanh=!auto_scanh;
else
{
auto_scanl=!auto_scanl;
auto_scanh=!auto_scanh;
}
FLASH=0;
}
/****************************************************************************
函数原型:void fre_outl(void)
功 能:
*****************************************************************************/
void fre_outl(void)
{
uchar out=0x00;
dataout=(dataout&0xc0)|(out&0x3f); //LEDS 999
freholder.tho=0x0f;
freholder.hun=bcdmap[0][1];
freholder.dec=bcdmap[0][2];
freholder.num=bcdmap[0][3];
led_buf_auto_flush();
F=!F;
}
/****************************************************************************
函数原型:void frr_outm(void)
功 能:
*****************************************************************************/
void fre_outm(void)
{
uchar out=0x13;
dataout=(dataout&0xc0)|(out&0x3f); //LEDS 1060
freholder.tho=bcdmap[19][0];
freholder.hun=bcdmap[19][1];
freholder.dec=bcdmap[19][2];
freholder.num=bcdmap[19][3];
led_buf_auto_flush();
F=!F;
}
/****************************************************************************
函数原型:fre_outh(void)
功 能:
*****************************************************************************/
void fre_outh(void)
{
uchar out=0x26;
dataout=(dataout&0xc0)|(out&0x3f); //LEDS 1121
freholder.tho=bcdmap[38][0];
freholder.hun=bcdmap[38][1];
freholder.dec=bcdmap[38][2];
freholder.num=bcdmap[38][3];
led_buf_auto_flush();
F=!F;
}
/****************************************************************************
函数原型:void pulse_switch(void)
功 能:
*****************************************************************************/
void pulse_switch(void)
{
pulse_control=!pulse_control;
D0=0;
D1=0;
D2=0;
D3=0;
D4=D5;
TR1=!TR1;
}
/****************************************************************************
函数原型:void fre_uph(void)
功 能:
*****************************************************************************/
void fre_up(void)
{
uchar outup;
outup=dataout&0x3f;
if(++outup>41) outup=0;
dataout=outup|(dataout&0xc0);
freholder.tho=bcdmap[outup][0];
freholder.hun=bcdmap[outup][1];
freholder.dec=bcdmap[outup][2];
freholder.num=bcdmap[outup][3];
led_buf_auto_flush();
}
/****************************************************************************
函数原型:void fre_uph(void)
功 能:
*****************************************************************************/
void fre_down(void)
{
uchar outdown;
outdown=dataout&0x3f;
if(outdown--<=0) outdown=41;
dataout=outdown|(dataout&0xc0);
freholder.tho=bcdmap[outdown][0];
freholder.hun=bcdmap[outdown][1];
freholder.dec=bcdmap[outdown][2];
freholder.num=bcdmap[outdown][3];
led_buf_auto_flush();
}
/****************************************************************************
函数原型:bit compare_fre_disp(void)
功 能:
*****************************************************************************/
bit compare_fre_disp(void)
{
uchar compare;
for(compare=0;compare<41;compare++)
{
if((bcdmap[compare][0]==curfre.tho)&&(bcdmap[compare][1]==curfre.hun)&&\
(bcdmap[compare][2]==curfre.dec)&&(bcdmap[compare][3]==curfre.num))
{
freholder.tho=curfre.tho;
freholder.hun=curfre.hun;
freholder.dec=curfre.dec;
freholder.num=curfre.num;
//TR0=1;
auto_flush=1;
led_buf_auto_flush();
message_flag=0;
dataout=(dataout&0xc0)|(compare&0x3f);
return((bit) 1);
}
}
message_flag=1;
return((bit) 0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -