numled.c

来自「详细介绍M8两版间通讯」· C语言 代码 · 共 26 行

C
26
字号
/*  目标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
const unsigned char seg_table[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
/*LED Code:0,1,2,3,4,5
6,7,8,9,A,B,C,D,E,F*/
unsigned char led_buff[4]={0b011011011,0b10000011,0b10001111,0b11010110};//首位为点,其他没有显示
void ADCtoBCD(unsigned int temp)//16进制数值转换为BCD码,12精度
	 {unsigned char i;
	 temp=(unsigned int)(((unsigned long)((unsigned long)temp*Vref))/0xfff);
	 for(i=0;i<4;i++)
	 {led_buff[i]=seg_table[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)
	 {DDRB|=0xff;//方向:输出
	  PORTB=led_buff[num];
	  PORTD=(1<<(num+4));}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?