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个测量的模拟量输入。
ADEN
|
ADSC
|
ADFR
|
ADIF
|
ADIE
|
ADPS2
|
ADPS1
|
ADPS0
|
表2-1 ADCSR位定义
位
|
说明
|
ADEN
|
ADC支持位设置为1则允许ADC
|
ADSC
|
ADC开始转换位,设置为1则开始第一次轮换
|
ADFR
|
ADC自由模式选择位,设置为1则允许自由模式
|
ADIF
|
ADC中断标志
|
ADIE
|
ADC中断屏蔽位,设置为1允许每个转换结束时产生中断
|
ADPS2
|
ADC比例因子选择位
|
ADPS1
|
ADC比例因子选择位
|
ADPS0
|
ADC比例因子选择位
|
为了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.
硬件连接:三个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中断产生
}
关键字:avr单片机 adc应用
引用地址:
avr单片机的adc应用
推荐阅读最新更新时间:2024-03-16 15:16
avr单片机+RFID的门禁系统
设计文档: 单片机源程序如下: /****************************************************************************************************************** 程序名: 射频卡门禁系统 功能概述: 1、 点阵LCD(128*64)显示。在正常、设置情况下LCD显示系统各个时期的菜单以供选择。 2、 射频卡开锁,开锁时用射频卡放在读卡器上(距离 15CM)即可开锁,如果用非法卡连续刷写次数超过3 次则报警(报警功能没有添加),这时系统将关闭刷
[单片机]
AVR单片机下载烧录快速入门
存储器 锁定位(2)保护类型LB模式LB2LB1 111没有使能存储器保护特性210在并行和SPI/JTAG串行编程模式中Flash和EEPROM的进 一步编程被禁止,熔丝位被锁定。(1)300在并行和SPI/JTAG串行编程模式中Flash和EEPROM的进 一步编程及验证被禁止,锁定位和熔丝位被锁定(1)BLB0模式BLBO2BLB01 111SPM 和LPM 对应用区的访问没有限制210不允许SPM 对应用区进行写操作300不允许SPM 指令对应用区进行写操作,也不允许运行于 Boot Loader 区的LPM指令从应用区读取数据。若中断向量 位于Boot Loader 区,那么执行应用区代码时中断是禁止 的。401不允许运
[单片机]
AVR单片机改造遥控车
利用玩具遥控车的高频发射电路和高频接收电路,结合单片机 进行数据传输,模拟两通道比例控制遥控器。 发射端用ATTINY24从TX的8号脚控制玩具遥控器的高频发射部分 接收端用ATTINY24从RX2的3号脚接收信号。然后PWM控制 遥控车的两个电机,一个由电位器反馈。另一个由测速 盘反馈。 数据结构 0 高电平100us,低电平300us 1 高电平200us,低电平200us 数据帧结构 16位为一个包起始2位(10),地址2位,数据10位,结束2位(01) 每5个包为一个循环 1号包 全0包,不含起始结束,用于接收端复位。 2,3号包 地址01号数据。 4,5号包 地址02号数据。 纠错采用重复校验,当收到两组数据
[单片机]
基于AVR的LED显示屏的灰度设计与实现
LED点阵块具有亮度高、发光均匀、可靠性好、拼装方便等优点,能构成各种尺寸的显示屏。目前,LED显示屏已被广泛应用于文字显示并取得了很好的效果,但是大部分仅能显示滚动的文字信息而不能显示图像,并且还存在系统复杂等缺点。本文提出了一种主从式单片机的 LED显示屏 解决方案,该设计方案利用AVR单片机自身的FLASH ROM和RAM,外部无需任何存储电路,电路结构简单。该系统实现了图像的16阶灰度显示,可广泛用于商场、车站等公共场合。 1 AVR单片机简介 AVR单片机是增强型内置FLASH的RISC(ReducedInstruction Set CPU)精简指令集高速8位单片机,硬件采用哈佛(Harward)结构
[单片机]
24位Σ-Δ模数转换器CS1240在电子秤中的应用
芯海科技有限公司自主研发的CS1240是一款24位高精度、低功耗Σ-Δ模数转换芯片,其分辨率为24位,有效精度高达21位,可以在2.7V-5.5V电源电压条件下工作。 CS1240具有8个模拟输入端、8个数字输入输出通道, 可以选择输入通道模拟缓冲器或者直接将信号输入模数转换器,模拟缓冲器可以有效提高芯片的输入阻抗。芯片提供内部测试电流(2微安),可以检测输入端开路或短路情况。集成的8位数模转换器(DAC)可以通过寄存器控制来调节输入信号的偏置电压,有效扩大输入信号的范围,最大可以调整满幅度(FS)的50%。 CS1240/1241带有片内1~128倍可编程增益放大器(PGA),在128倍时,有效分辨率可达19位。调制器是一个二
[测试测量]
基于AVR单片机的数控直流稳压电源的设计
从20世纪90年代末起,随着对系统更高效率和更低功耗的需求,电信与数据通讯设备的技术更新推动电源行业中直流/直流电源转换器向更高灵活性和智能化方向发展。本文设计的直流稳压电源主要由单片机系统、键盘、数码管显示器、指示灯及报警电路、检测电路、D/A转换电路、直流稳压电路等部分组成。其中数控电源采用按键盘,可对输出电压及报警阈值以快慢两种方式进行设置,输出由单片机通过D/A控制驱动模块输出一个稳定电压。同时稳压方法采用单片机控制, 单片机通过A/D采样输出电压,与设定值进行比较,若有偏差则调整输出,越限则输出报警信号并截流。工作过程中,稳压电源的工作状态(输出电压、电流等各种工作状态)均由单片机输出驱动LCD显示,由键盘控制进行
[电源管理]
AVR单片机微秒级和毫秒级延时函数
在用单片机IO口模拟总线时序时老是碰到问题,自己总结了一下大多数是因为我们的延时不准确造成的,所以自己调了两个延时函数,我板子上用的是AT Mega128的单片机和16MHz的晶振,用示波器看了这两个函数产生的波形还挺准确的,希望大家能用得上 ^_^ //16MHz晶振 时间范围:1-65535us void Delay_us(unsigned int us) { unsigned int i; i = us/2; i--; asm( nop ); asm( nop ); for(;i!=0;i--) { asm( nop );
[单片机]
avr单片机的AD转换实验
AD转换实验。 1、AD转换实验。程序进行周期AD转换,在并转换值显示在数码管上。 2、使用内部1 M晶振。 3、进行此实验需要插上:JP1的所有8个短路块、JP9(A/D)。 4、此实验采用项目化管理,主要文件有ADC、DISP、主程序。 */ #include "iom16v.h" #include macros.h #include "iom16v.h" #include macros.h extern unsigned char get_ad(void);/*AD采样函数*/ extern void Disp_Init(void);/*显示初始化*/ extern unsigned char led_buf ;/*
[单片机]