⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 基于ATMEL Mega8的电阻测量仪
💻 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 + -