AVR单片机ADC的应用


AVR单片机ADC的应用


1.数模转换的基础知识


数模转换器(ADC)基本上是一个比例上的问题,即由ADC产生的数字值跟输入模拟量与转换器量程的比值有关的。转换关系如下:


Vin/Vfullscale=X/(2N-1)  其中X是数字输出,N是数字输出的位数(ADC的位数),Vin是模拟输入量的值,Vfullscale是模拟输入量的最大值。


数模转换的转换精度计算:


Vresolution=Vfullscale/((2N-1)


2.AVR微控器的ADC介绍


AVR微控器的ADC具有两个ADC寄存器:ADC控制与状态寄存器ADCSR控制ADC的运行;ADC多路复用选择器ADMUX,控制8个测量的模拟量输入。



为了ADC以最大的精度操作时,要求使用50HZ---200K HZ之间的时钟频率,选择合适的比例分频因子以获得50HZ---200KHZ的转换频率。由于ADC的速度比较慢,如果处理器在ADC转换数据时处于等待状态,会浪费时间,则ADC通常采用中断模式。ADC初始化:


(1) 设置ADCSR的最低三位,确定分频因子

(2) 设置ADIE为1,打开中断模式

(3) 设置ADEN为高电平,使ADC有效

(4)  设置ADSC,以马上开始转换


3.应用


系统功能:当在模拟通道3输入电压超过3V时,系统点亮红色LED;当输入电压小于2V时,点亮黄色LED,当输入电压在2V--3V间,点亮绿色LED.


将单片机下位机程序下载到单片机最小系统,插上USB转TLL模块,就可以运行电脑上位机软件,最后通过电脑连接投影仪,投影在会场的大屏幕上,效果很好。

硬件连接:三个LED分别接至AT908535的PORD口的PORTD.0、 PORTD.1、PORTD.2 AVR微控制器的ADC外设会根据所使用的具体微控制器而有所不同,所有的ADC都对VCC连接中的引脚电压有噪声抑制要求,有些拥有内置的噪声消除器,有些则拥用在内部控制Vref的能力,使用ADC时需要查看相关微控制器的手册。


程序代码:

#i nclude<90s9535.h>

#define LEDS PORTD

#define red 0xfe

#define yellow 0xfd

#define green 0xfc

#define uchar unsigned char

interrupt[ADC_INT] void adc_isr(void)

{

uchar adc_data; //variable for ADC result

adc_data=ADCW; //read all 10bits into variable

if(adc_data>(3*1023)/5)

LEDS=red;

else(adc_data<(2*1023)/5)

LEDS=yellow;

else

LEDS=green;

ADCSR=ADCSR|0x40; //start the next conversion

}

void main()

{

DDRD=0x07; //least signifcant 3 bits for output

ADMUX=0x03; //select to read only channel 3

ADCSR=0xCE; //ADC中断,64分频

#asm("sei")

while(1); //等待ADC中断产生

}

> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >

以单片机教学为例,首先分析单片机技术课程的知识目标和能力目标,将整个课程划分为若干个具有递进性和连贯性的“项目”。每个项目都是一个具体的产品设计与制作,都含有一些编程和焊接的新知识和新技能,以项目带动教学,由浅入深地把知识和技能渗透到项目的实施过程中。按照这个教学思路,设计了三个单片机小制作,100个程序范例。

生成海报
点赞 0

钟, 广林

我还没有学会写个人说明!

相关推荐

PCF8591详解(蓝桥杯单片机模块(IIC总线))

概述 PCF8591是一款单芯片、单电源、低功耗8位CMOS数据采集设备 具有四个模拟输入、一个模拟输出和一个串行12c总线接口。 三个地址引脚AO, A1和A2用于编程硬件地址,允许使用多达8个设备连接到12c总线而不需要额外

AVR单片机一些学习笔记

下面是自己在学习AVR单片机时的学习经验,分享出来给大家,一起学习。 1、AVR单片机采用RISC架构,8051单片机采用CISC架构。 前者速度为后者的2~4倍,为流水