📄 digit_tube.c
字号:
/*--------------------------------------
includes
--------------------------------------*/
#include<stc12c5410ad.h>
#include<delay.h>
/*--------------------------------------
extern variables
--------------------------------------*/
extern unsigned char display_buffer[4];
extern unsigned char number_code[11];
extern unsigned char refresh_index;
/*--------------------------------------
funcinons
--------------------------------------*/
void digit_tube_initial(void)
{
P1M0 = P1M0 & 0x01; //P1,1234567输出
P1M1 = P1M1 | 0xfe;
P2M0 = P2M0 & 0xf0; //P2,0123输出
P2M1 = P2M1 | 0x0f;
}
void digit_tube_test(void)
{
P22=0;P23=0;P11=0;P13=0;
P21=0;P12=0;P15=0;P16=0;P17=0;P20=0;P14=0;
delay(100);
P22=1;P23=1;P11=1;P13=1;
P21=1;P12=1;P15=1;P16=1;P17=1;P20=1;P14=1;
}
void refresh_digit_tube(void)
{
refresh_index++;
if(refresh_index >= 5) refresh_index = 1;
if(refresh_index == 1)
{
P23 = 0; //设置位选线电平
P22 = 1;
P11 = 1;
P13 = 1;
//设置段选线电平
if((number_code[display_buffer[0]])&0x80)P21=0;else P21=1;
if((number_code[display_buffer[0]])&0x40)P12=0;else P12=1;
if((number_code[display_buffer[0]])&0x20)P15=0;else P15=1;
if((number_code[display_buffer[0]])&0x10)P16=0;else P16=1;
if((number_code[display_buffer[0]])&0x08)P17=0;else P17=1;
if((number_code[display_buffer[0]])&0x04)P20=0;else P20=1;
if((number_code[display_buffer[0]])&0x02)P14=0;else P14=1;
}
if(refresh_index == 2)
{
P23 = 1; //设置位选线电平
P22 = 0;
P11 = 1;
P13 = 1;
//设置段选线电平
if((number_code[display_buffer[1]])&0x80)P21=0;else P21=1;
if((number_code[display_buffer[1]])&0x40)P12=0;else P12=1;
if((number_code[display_buffer[1]])&0x20)P15=0;else P15=1;
if((number_code[display_buffer[1]])&0x10)P16=0;else P16=1;
if((number_code[display_buffer[1]])&0x08)P17=0;else P17=1;
if((number_code[display_buffer[1]])&0x04)P20=0;else P20=1;
if((number_code[display_buffer[1]])&0x02)P14=0;else P14=1;
}
if(refresh_index == 3)
{
P23 = 1; //设置位选线电平
P22 = 1;
P11 = 0;
P13 = 1;
//设置段选线电平
if((number_code[display_buffer[2]])&0x80)P21=0;else P21=1;
if((number_code[display_buffer[2]])&0x40)P12=0;else P12=1;
if((number_code[display_buffer[2]])&0x20)P15=0;else P15=1;
if((number_code[display_buffer[2]])&0x10)P16=0;else P16=1;
if((number_code[display_buffer[2]])&0x08)P17=0;else P17=1;
if((number_code[display_buffer[2]])&0x04)P20=0;else P20=1;
if((number_code[display_buffer[2]])&0x02)P14=0;else P14=1;
}
if(refresh_index == 4)
{
P23 = 1; //设置位选线电平
P22 = 1;
P11 = 1;
P13 = 0;
//设置段选线电平
if((number_code[display_buffer[3]])&0x80)P21=0;else P21=1;
if((number_code[display_buffer[3]])&0x40)P12=0;else P12=1;
if((number_code[display_buffer[3]])&0x20)P15=0;else P15=1;
if((number_code[display_buffer[3]])&0x10)P16=0;else P16=1;
if((number_code[display_buffer[3]])&0x08)P17=0;else P17=1;
if((number_code[display_buffer[3]])&0x04)P20=0;else P20=1;
if((number_code[display_buffer[3]])&0x02)P14=0;else P14=1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -