📄 main.c
字号:
#include<avr/io.h>
#include<util/delay.h>
unsigned char num[]={0x7d,0x05,0x5b,0x4f,0x27,0x6e,0x7e,0x45,0x7f,0x6f,0x77,0x3e,0x78,0x1f,0x7a,0x72};
unsigned char nump[]={0xfd,0x85,0xdb,0xcf,0xa7,0xee,0xfe,0xc5,0xff,0xef,0xf7,0xbe,0xf8,0x9f,0xfa,0xf2};
void led(unsigned int nu,char dp)
{
#define led_out PORTD
#define led_Wei PORTB
#define clear PORTD=0x00
unsigned int temp[4];
temp[0]=nu/1000;
temp[1]=nu%1000;
temp[1]=temp[1]/100;
temp[2]=nu%100;
temp[2]=temp[2]/10;
temp[3]=nu%10;
led_Wei=(led_Wei^0x0f)|0x0e;
led_out=dp==0?nump[temp[0]]:num[temp[0]];
_delay_us(100);
clear;
led_Wei=(led_Wei^0x0f)|0x0d;
led_out=dp==1?nump[temp[1]]:num[temp[1]];
_delay_us(100);
clear;
led_Wei=(led_Wei^0x0f)|(0x0b);
led_out=dp==2?nump[temp[2]]:num[temp[2]];
_delay_us(100);
clear;
led_Wei=(led_Wei^0x0f)|(0x07);
led_out=dp==3?nump[temp[3]]:num[temp[3]];
_delay_us(100);
clear;
}
float f_ADC_isr(void)
{
unsigned int ui_AD,ui_ADCH,ui_ADCL;
float ui_AD_Data;
_delay_us(10);
ui_ADCL=ADCL;
ui_ADCH=ADCH;
ui_AD=(ui_ADCH<<8)|ui_ADCL;
ui_AD_Data=(float)ui_AD;
return ui_AD_Data;
}
void f_ADInit(void)
{
DDRB|=0x40;
PORTB|=0x40;
ADMUX=_BV(REFS1)|_BV(REFS0)|0x5;
ADCSR=0x87;
ADCSR|=0x40;
}
void main()
{
float AD;
unsigned int n,m;
DDRB=0xff;
DDRD=0xff;
DDRC=0x18;
PORTC=0x08;
led(8888,4);
_delay_ms(1000);
while(1)
{
f_ADInit();
_delay_us(10);
AD=f_ADC_isr();
if ((PINB&0x80)==0x80)
{
for(n=0;n<30;n++)
{
m=AD>1022?8888:27786*AD/(5120-2.56*AD);
led(m,0);
PORTC=0x08;
}
}
else
{
for(n=0;n<30;n++)
{
m=AD>1022?8888:5513*AD/(5120-2.56*AD);
led(m,3);
PORTC=0x10;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -