📄 numled.c
字号:
/* 目标MCU:MEGA8 晶振:内部RC(INT) 8MHZ,该模块中使用了seg_table[16]数组
来表示LED的16个字符0~F,led_buff[4]表示4个LED的字符代码*/
#include<iom8v.h>
#include <macros.h>
#define Vref 4995
#pragma data:code
const unsigned char seg_table[16]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
/*LED Code:定义在Flash中 0,1,2,3,
4,5,6,7,
8,9,A,B,
C,D,E,F
*/
#pragma data:data
unsigned char led_buff[4]={0x7F,0xFF,0xFF,0xFF};//首位为"."点,其他位没有显示
void ADCtoBCD(unsigned int temp)//16进制数值转换为BCD码,12精度
{
unsigned char i;
static const unsigned char *pStr=seg_table;
temp=(unsigned int)(((unsigned long)((unsigned long)temp*Vref))/0xfff);
for(i=0;i<4;i++)
{
led_buff[i]=*(pStr+temp%10);
temp=temp/10;
}
led_buff[3]&=0x7f;
}
void led_init(void)
{
DDRB|=0xff;
//方向:输出
PORTB|=0xff;
//LED数据-
DDRD|=0xf0;
//D口高位输出,单只选通4个LED功能
PORTD|=0xf0;
//高位输出高电平,LED全部熄灭.低位输入,全部为高阻态,如果为1,则带上拉电阻
}
void spark(unsigned char num)
{
PORTB=led_buff[num];
PORTD=0xf0&(~(1<<(num+4)));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -