📄 led.c
字号:
#include "led.h"
#include <reg52.h>
#include <intrins.h>
//总共4个LED,频率显示,小数点后一位小数
//段P1口,位P22,P23,P24,P25
#define LED_DATA P1
#define LED1 0x04
#define LED2 0x08
#define LED3 0x10
#define LED4 0x20
#define LED_0 0x0
#define LED_SET P2
unsigned char LED_Code[]={/*0,1,2,3,4,5,6,7,8,9,' '(不显示)*/
//0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00};
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF};
//#define LED0 PORTB3
//str格式"P100.5"/"F 88.8"
void Display_LED(unsigned char * str)
{
//LED从左向右
//写第1个数 P22 00000100
LED_DATA = LED_Code[*str];
LED_SET |= LED1;
_nop_();
_nop_();
_nop_();
_nop_();
LED_SET &= ~LED1;
//写第2个数 P23 0000 1000
_nop_();
_nop_();
LED_DATA = LED_Code[*(str+1)];
LED_SET |= LED2;
_nop_();
_nop_();
_nop_();
_nop_();
LED_SET &= ~LED2;
//写第3个数 P24 0001 0000
_nop_();
_nop_();
LED_DATA = LED_Code[*(str+2)]&0x7F;//小数点;
LED_SET |= LED3;
_nop_();
_nop_();
_nop_();
_nop_();
LED_SET &= ~LED3;
//写第4个数 P25 0010 0000
_nop_();
_nop_();
if (*(str+4))
LED_DATA = LED_Code[*(str+3)]&0x7F;
else LED_DATA = LED_Code[*(str+3)];
LED_SET |= LED4;
_nop_();
_nop_();
_nop_();
_nop_();
LED_SET &= ~LED4;
LED_SET = LED_0;
}
void Freq_2_Buffer(unsigned long Freq,unsigned char * disbuffer)
{
// 0 显示最左一位,百位;1 十位;2 个位; 3 小数点后一位
unsigned int tmp;
tmp = Freq/100;
disbuffer[0] = tmp / 1000 ;
// disbuffer[0] = 10; //不显示
// else disbuffer[0] = 1;
disbuffer[1] = (tmp / 100)%10 ;
disbuffer[2] = (tmp / 10)%10 ;
disbuffer[3] = tmp %10 ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -