搜索
bottom↓
回复: 3

发个以调试好的AVR16_AD程序.之前在网上找的都是有问题的.希望能够协助初学者.

[复制链接]

出0入0汤圆

发表于 2010-4-9 00:49:11 | 显示全部楼层 |阅读模式
以下为AD转换程序,希望大家参考下,有更好的请加贴指点......
#include <iom16v.h>
#include <macros.h>
#include "delay.h"//延时程序记得自己加进去哦!!!
#define uchar unsigned char
#define uint  unsigned int
#define uint32 unsigned long
uchar Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar Data[]={0,0,0,0};
void AdInit()
{
   DDRA=0X00;//ADC0为模拟输入
   ADMUX=0X40;//选择AVCC为电压参考源
   ADCSRA=((1<<ADEN)|(0<<ADSC)|(0<<ADIE));
   }

uint ReadData()
{   
  uint temp;
  ADCSRA|=(1<<ADSC);            //启动ADC开始转换
  while ((ADCSRA&0x10)!=0x10);  //等待ADC转换结束  
  ADCSRA|=(1<<ADIF);                        //写1清除标志位
  ADCSRA&=~(1<<ADSC);            //启动ADC开始转换
     temp=(uint)ADCL;  
         temp=(uint)(ADCH<<8)+temp;
  return temp;
  }
void Process(uint Indata,uchar *Outdata)
{ Indata=(uint)(((float)(Indata/20.40))*100);//要显示实际电压必须的先把16进制转10进制
  Outdata[0]=Indata/1000;              //在将最大值化为电压的最大值,不过要注意的是
  Indata=Indata%1000;                 //转化过程会变成浮点型的,所以要强制把转化结果
  Outdata[1]=Indata/100;              //变为浮点型在转化字符型
  Indata=Indata%100;
  Outdata[2]=Indata/10;
  Outdata[3]=Indata%10;
  }
void Display(uchar *Dispdata)
{
uchar move=0x01;
uchar i;
DDRB=0Xff;
DDRD=0Xff;
for(i=0;i<4;i++)
{
   PORTB=move;
   PORTD=0xff-Table[Dispdata];
if(i==0)
   PORTD&=0x7f;
else
  PORTD|=0x80;
   delay_ms(5);
   move=(move<<1);  
  }
}

void main(void)
{
  uint num;
  AdInit();
  while(1)
  {
  num=ReadData();
  Process(num,Data);
  Display(Data);
  }
  }
  贴出原理图

原理图 (原文件名:SCH.jpg)

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2010-4-9 06:11:00 | 显示全部楼层
可以贴出电路图不

出0入0汤圆

发表于 2010-4-9 08:07:59 | 显示全部楼层
MARK

出0入0汤圆

发表于 2013-3-3 09:51:37 | 显示全部楼层
这用什么来做显示的?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 05:27

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表