您的位置 首页 系统

AVR128的程序——ADC转化

includeiom128vh>includemacrosh>defineucharunsignedchardefineuintunsignedintvoidDelayms(uintMS)

#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);
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/xitong/262331.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部