找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3408|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

ICC AVR模數(shù)轉(zhuǎn)換的問題,求指教

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:64004 發(fā)表于 2014-7-15 11:37 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
用ICC-AVR模數(shù)轉(zhuǎn)換的問題,數(shù)據(jù)顯示不正常,AD輸入接PA7,四位數(shù)碼管位選接PA0~PA3,段選接Pc口,參考電壓選擇2,56v基準(zhǔn)電壓,實(shí)際測定的電壓是1.49v,預(yù)期數(shù)碼管應(yīng)該顯示的是596,但結(jié)果卻顯示1023,而且改變他的電壓數(shù)據(jù)會變化,但結(jié)果還是不變,望哪位大神指教下,謝謝!以下是程序:

#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int

unsigned char smg_du[]={0xee,0x28,0xb6,0xba,0x78,0xda,0xde,0xa8,0xfe,0xfa};
unsigned char smg_we[]={0x01,0x02,0x04,0x08};
uchar table[8]={0,0,0,0,0,0,0,0};

void init (void)
{
DDRA=0x0f;
PORTA=0;

DDRC=0xff;                  //01111000
PORTC=0;
}

void delay(void)
{
uint a;
for(a=0;a<300;a++);
}

/*
void display(uchar *p)
{
uchar i;
for(i=0;i<4;i++)
{
  PORTA=smg_we[i];
  PORTC=smg_du[table[i]];
  delay();

}
}
*/

adc_init(void)
{
DDRA&=~BIT(7);
PORTA&=~BIT(7);

ADMUX=0xc7;
ADCSRA=0xe8;
SFIOR=0x00;
SREG|=BIT(7);
}

void data_pro(uint temp_1,uint temp_h)
{
uint i,temp1,temp2;
temp1=temp_h*256;         
temp2=temp1+temp_1;      
table[0]=temp2/1000;
temp1=temp2%1000;
table[1]=temp1/100;
temp2=temp1%100;
table[2]=temp2/10;
table[3]=temp2%10;

for(i=0;i<4;i++)
{
  PORTA=smg_we[i];
  PORTC=smg_du[table[i]];
  delay();
  }
}


void main(void)
{
init();
adc_init();
while(1);
}

#pragma interrupt_handler adc_isr:15
void adc_isr(void)
{
uint adc_1,adc_h;
if(ADCSRA=0xe8)
{
adc_1=ADCL;
adc_h=ADCH;
data_pro(adc_1,adc_h);
}
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:57775 發(fā)表于 2014-7-28 11:31 | 只看該作者
給個電路圖看看
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表