📄 scanled.c
字号:
/***********************************************/
/* 显示器扫描子程序 */
/* DSBUF0显示位选,0~3=千~个 */
/* DSBUF1显缓,高/低半字千/百 */
/* DSBUF2显缓,高/低半字十/个 */
/* DSFL显示位闪烁控制,FLON闪烁总控制位,1~闪 */
/***********************************************/
void Scanled(void) //显示扫描
{
uchar byte,skip=1;
if(FLON) //要闪烁否?
{
if(DSBUF0&0X40) //暗时段?0.32S交替
{
if(!((DSFL^DSBUF0)&0X03))
{
skip = 0;
Out_595(10);
}
}
}
if(skip)
{
if(DSBUF0&0X02) //由显示位选取显示数
{
byte = DSBUF2;
}
else
{
byte = DSBUF1;
}
if(DSBUF0&0X01)
{
byte = byte&0X0F;
Out_595(byte);
}
else
{
byte = (byte>>4)&0X0F;
Out_595(byte);
}
}
if(DSBUF0&0X02) //DSBUF0确定位选输出
{
if(DSBUF0&0X01)
{
V1 = 1; //个位
V2 = 1;
V3 = 1;
V4 = 0;
}
else
{
V1 = 1; //十位
V2 = 1;
V3 = 0;
V4 = 1;
}
}
else
{
if(DSBUF0&0X01)
{
V1 = 1; //百位
V2 = 0;
V3 = 1;
V4 = 1;
}
else
{
V1 = 0; //千位
V2 = 1;
V3 = 1;
V4 = 1;
}
}
DSBUF0++;
}
//输出至HC595,数码管显示
void Out_595(unsigned char byte)
{
uchar num,i;
num=tab[byte];
CP_ST = 0;
for(i=0;i<8;i++)
{
CP_SH = 0;
if(num&0X80) //送数据
DS = 1;
else
DS = 0;
CP_SH = 1;
num=num<<1;
}
CP_ST = 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -