📄 led.c
字号:
#include "led.h"
#include <iom8.h>
//总共5个LED,一个为功能
//其余4个为频率显示,小数点后一位小数
//段PD口,位PB3,PB4,PB5,PC4,PC5
//#define LED_DATA PORTD
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};
//#define LED0 PORTB3
//str格式"P100.5"/"F 88.8"
void Display_LED(unsigned char * str)
{
//LED从左向右
//写第0个数 PB2 00000100
PORTD = LED_Code[*str];
PORTB &= 0xFB;
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
PORTB |= 0x04;
PORTD = 0;
//写第1个数 PB3 0000 1000
asm("nop");
asm("nop");
PORTD = LED_Code[*(str+1)];
PORTB &= 0xF7;
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
PORTB |= 0x08;
//写第2个数 PB4 0001 0000
asm("nop");
asm("nop");
PORTD = LED_Code[*(str+2)]|0x80;//小数点;
PORTB &= 0xEF;
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
PORTB |= 0x10;
//写第3个数 PB5 0010 0000
asm("nop");
PORTD = LED_Code[*(str+3)];
PORTB &= 0xDF;
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
PORTB |= 0x20;
PORTB = 0xFF;
// if (LED_Code[*(str+4)] )
// PORTC &= 0xFE;
// else PORTC |= 0x01;
}
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 + -