📄 led.c
字号:
#include "STC89C51.H"
#include <led.h> /* use _nop_() function */
#include "data_type.h"
extern Sys_stru Sys_Val;
/*
LED段码值
*/
#define LED_DOT 0x80
static char code led_num_chr[10]=
{
0x3f|LED_DOT, // 0
0x06|LED_DOT, // 1
0x5b|LED_DOT, // 2
0x4f|LED_DOT, // 3
0x66|LED_DOT, // 4
0x6d|LED_DOT, // 5
0x7d|LED_DOT, // 6
0x07|LED_DOT, // 7
0x7f|LED_DOT, // 8
0x6f|LED_DOT, // 9
};
/*
ms延时子程序
*/
void Delay_ms(uint timer_val)
{
Sys_Val.Delay_start = Sys_Val.SysTimer;
while(Sys_Val.SysTimer-Sys_Val.Delay_start<timer_val) ;
}
void Disp_Number(UINT32 Val)
{
uchar cc,buf[6],j,i,bit_isdsp;
Val&=0x0fffff;
for (cc=0;cc<=5;cc++) { buf[cc]=0; } //速度优先
while ( Val>=100000 ) { Val-=100000; buf[0]++;}
while ( Val>=10000 ) { Val-=10000; buf[1]++;}
while ( Val>=1000 ) { Val-=1000; buf[2]++;}
while ( Val>=100 ) { Val-=100; buf[3]++;}
while ( Val>=10 ) { Val-=10; buf[4]++; }
buf[5]=Val;
/*
buf[0]=Val/0x186a0;
buf[0]=(Val/0x2710); //1 代码量优先
buf[1]=(Val/0x3e8%0xa); //2
buf[2]=(Val/0x64%0xa); //3
buf[3]=(Val/0xa%0xa); //4
buf[4]=(Val%0xa); //5
*/
j=0;
bit_isdsp=0;
for(i=0;i<6;i++)
{
if(buf[i])
{
j=i;
bit_isdsp=1<<(i+1);
break;
}
}
for(i=bit_isdsp;i>0;i>>=1)
{
P0=0xff-i;
P1=led_num_chr[buf[j]];
j++;
Delay_ms(1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -