微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > AVR128的程序——ADC转换

AVR128的程序——ADC转换

时间:11-22 来源:互联网 点击:
#include

#include

#define uchar unsigned char

#define uint unsigned int

void Delayms(uint MS);

void display(uchar FirstBit,uchar Num);

uchar TempData[8];

uchar WeiMa[8] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

uchar led_discode[11]={0xc0,0xf9,0xa4,0xb0,0x99,

0x92,0x82,0xf8,0x80,0x90,0xff};

void display(uchar FirstBit,uchar Num)

{

unsigned char i;

for(i=0;i

{

PORTC=led_discode[10];

PORTA=WeiMa[i+FirstBit];

PORTC=TempData[i];

Delayms(2);

}

}

void display1(uchar FirstBit,uchar Num)

{

unsigned char i;

for(i=0;i

{

PORTC=led_discode[10];

PORTA=WeiMa[i+FirstBit];

PORTC=0X7F;

Delayms(2);

}

}

void port_init(void)

{

DDRF = 0x00;

PORTF= 0x00;

}

void adc_init(void)

{

ADMUX = 0x00;

ADCSRA= 0x00;

ADMUX |= 0X40;

ADCSRA |= 0XE8;

}

//AD是10位的,那么它将基准为5V的电压分为1024份,精度就很高了。

void data_pro(uint temp_l,uint temp_h)

{

uint temp1,temp2,dyz;

temp1=temp_h*256;

temp2=temp1+temp_l;

dyz= ((500 * (long)temp2)>>10);

temp2 = (uint)dyz;

TempData[0]=led_discode[temp2/100];

TempData[1]=led_discode[temp20/10];

TempData[2]=led_discode[temp20];

}

void main(void)

{

port_init();

adc_init();

DDRA=0XFF;

PORTA=0XFF;

DDRC=0XFF;

PORTC=0XFF;

DDRF|=0X0E;

PORTF|=0X0E;

PORTF&=0xF7;

DDRB |=0X10;

PORTB|=0X10;

TempData[0]=led_discode[0];

TempData[1]=led_discode[0];

TempData[2]=led_discode[0];

TempData[3]=led_discode[0];

SEI();

while(1);

}

void Delayms(uint MS)

{

uint i,j;

for( i=0;i

for(j=0;j<1141;j++);

}

#pragma interrupt_handler adc_isr:22

void adc_isr(void)

{

uint adc_l,adc_h;

adc_l=ADCL;

adc_h=ADCH;

data_pro(adc_l,adc_h);

display(5,3);

display1(5,1);

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top