Chinaunix首页 | 论坛 | 博客
  • 博客访问: 81219
  • 博文数量: 21
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 295
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-06 11:07
个人简介

呵呵

文章分类
文章存档

2016年(1)

2015年(10)

2014年(10)

我的朋友

分类: 嵌入式

2014-11-15 23:32:29

模拟信号/数字信号

   (1)、模拟信号是一种在时间上连续,数值上也连续的物理量,具有无穷多的数值,从自然界感知的大部分物理量都是模拟性质的,如速度,压力,温度,声音等。

   (2)、数字信号在时间上和数值上均是离散的,而离散信号的值只有真与假,是或不是,因此可以使用二进制中的0与1来表示 。

 

 

 

 

ADC驱动流程

 

 

 

 

 

ADC主要驱动程序

main.c

#define ADC_FREQ 2500000

void Main(void)
{
    /*时钟初始化*/
    Set_Clk();
    
    /*adc初始化*/
    adc_init();
    
    while(1)
    {
     /*读取转换值*/
        adc_value=ReadAdc(0);

 delay(1000) ;
    }
}

 

void adc_init(void)
{
 
 //选择输入通道,AIN0,对应开发板上W1可调电阻
 int channel=0; 
 
 /*设置分频时钟*/
 preScaler = ADC_FREQ;
 preScaler = 50000000/ADC_FREQ - 1; //PCLK=50M
 
 /*AD转换频率设置,最大频率为2.5MHz*/
 rADCCON = (1<<14)|(preScaler<<6)|(channel<<3); //setup channel
 delay(1000);  

}

 

**************************************************/    
int ReadAdc(int channel)
{
   /*开始AD转换*/
   rADCCON |= 0x01; //start ADC
 
   while(rADCCON & 0x1); //check if Enable_start is low
 
   /*检查转换是否结束*/
   while(!(rADCCON & 0x8000)); //check if EC(End of Conversion) flag is high
    
   return ( (int)rADCDAT0 & 0x3ff );
}

阅读(1142) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~