Atmega16L的模/数转换器—AVR单片机入门篇

发布者:SparkleMagic最新更新时间:2020-02-26 来源: eefocus关键字:Atmega16L  数转换器  AVR单片机  入门篇 手机看文章 扫描二维码
随时随地手机看文章

ATMEAG16L中有8个十位精度的ADC(模/数转换器),它包括一个8通道的模拟开关、一个采样保持比较器、一个转换逻辑和4个控制/状态寄存器。其中,8通道10位模拟开关的输入端同PORTA口相连复用,用于输入模拟信号。模拟开关的输出则接至采样保持比较器的输入上,采样保持比较器可以确保模数转换逻辑的输入在转换过程中保持不变,它的输出接至模数转换逻辑


由于模拟开关的输入端同PORTA口相连复用,当一个应用系统不需要或者只需要少数的模/数转换器时,这个端口的其他引脚可以当作普通的1/0口使用。但是要注意,尽量不要在用到/VD转换器时,再将PORTA口作为普通I/O口使用,因为这会影响到A/D的转换精度。


模/数转换器可将输入的模拟电压信号转换成一个10位的数字量信号。它以某一个参考电压为基准(如内部标准参考电压2.56V或者外部输入电压源),将指定引脚上的输入电压量转换为数字信号量,写入到AVR处理器的ADC寄存器中。输入模拟电压的范围介于AGND和AVCC之间,ATMEAG16L的模,数转换器的精度最高为10位,当参考电压为5V时,最小的分辨电压是5V/2'o一0.o05v。另外,ATMEAG16L内部带有前置放大器,放大倍数为10倍和200倍,我们可将微弱的输入信号进行适当放大后再进行模/数转换。


模/数转换器相关寄存器


ATMEAG16L与模/数转换相关的寄存器主要有ADMUX、ADCSRA、ADCH和ADCLo1.ADMUX ADMUX负责控制模/数转换输入通道的选择以及参考电压源的选取。


MUX4—MUXO;控制选择A/D输入通道、放大倍数选取及差模输入方式选取。



ADLAR:ADCH和ADCL输出格式控制位,当该位置1时,输出结果左对齐;当该位置0时,输出结果右对齐。


REFS1、REFSO:为控制参考电压的选择。下表为REFS1、REFSO的设置及对应的参考电压。


REFS1 REFSO ND转换器参考电压 0 O 外部引脚AREF,内部参考源断开 0 1 AVCC(AREF引脚需并联电容) 1 O 保留 1 1 内部2.56V电压源(AREF引脚需并联电容)


2.ADCSRA ADCSRA为ADC控制和状态寄存器。



ADPS2—ADPSO:ADC预分频选择,这3位决定ADC分频器的值,如下表所示。


ADPS2 ADPS1 ADPSO 分频数 0 0 0 2 O O 1 2 0 1 0 4 0 1 1 8 1 0 O 16 1 O 1 32 1 1 0 64 1 1 1 128


ADIE;ADC中断使能。ADIE为“1”,则ADC转换结束中断即被使能;否则,中断禁止。


ADIF:.ADC中断标志。ADC转换完成,并且数据更新后,ADC中断标志(ADIF)置“1”。此时若ADC的中断使能位(ADIE)和全局中断使能位(SREG)都为“1”,则单片机产生一个ADC完成中断。当单片机执行相应的中断后,ADIF被清“O”。ADIF也可通过写入“0”来清除。


ADATE:ADC自动触发使能。ADATE置位将启动ADC自动触发功能。触发信号的上跳沿启动ADC转换。


触发信号源通过SFIOR寄存器的ADC触发信号源选择位ADTS设置。


ADSC:模数转换启动。当ADC工作于单次转换模式时,该位必须写入“1”才能启动每次转换过程;ADC工作于自由转换模式时,ADSC也必须在第一次转换时写入“1”。注意:ADC在上电后,必须首先进行一次初始化转换,这个转换值无效。


ADEN:模数转换使能。ADEN为“1”时,单片机的模数转换使能;否则禁止。


3.ADCH和ADCLADCH和ADCL两个寄存器用于存储ADC的转换结果。


为了确保数据读取的正确性,ADCL寄存器的内容应当首先被读取,一旦用户开始对ADCL读取,ADC对数据寄存器的写操作就被禁止,这就意味着,如果用户读取了ADCL,那么即便另一次ADC转换过程在读ADCH之前结束了,两个数据寄存器中的内容也不会被更新。当用户对ADCH的读操作完成后,ADC才可以更新ADCH和ADCL。


模/数转换器的使用ATMEAG16L单片机的ADC模块由ADCSRA寄存器中的ADEN位使能。当ADEN为“1”时,ADC功能有效,并且输入通道同模拟电压的输入引脚相连。此时,若ADSC置“1”,则ADC启动一次模数转换过程,这个模数转换过程用于初始化ADC(转换结果无效)。


当ADC模块被启动以后,用户可以通过ADATE位选择ADC的两种转换模式,即单次转换模式和自由转换模式。若ADATE为“0”时,则ADC工作在单次转换模式,此时,每个转换过程都需要置位ADSC,若ADATE为“1”时,则ADC工作在自由转换模式,此时,ADC连续采样模拟输入端并将转换得到的数据输出至ADC的数据寄存器ADCH和ADCL中。当一次转换过程结束后,ADIF位被置“1”,此时,若ADIE和全局中断使能位(SREG)都为“1”,则单片机产生一个ADC中断。


ATMEAG16L的模/数转换器编程实践1.简易数字式o~5v直流电压表实验用电位器RV1作模拟量的输入,右边4位数码管显示输入电压值。我们使用PA端口的第7位进行模拟量输入,而PA端口的第O—6位作数码管的段驱动,这样,显示的数字中小数点不能被点亮。因此,“千”位数码管相当于显示整数,而“个”、“十”、“百”位数码管相当于显示小数,例如:


显示3265相当于3.265V电压。


在我的文档中新建一个ac12的文件夹。建立一个ac12.prj的工程项目,最后建立源程序文件ac12.c。输入程序1:




编译通过后,将ac12.hex文件下载到AVR单片机综合试验板上。注意,标示“LEDMOD_COM”、“AD”的双排针应插上短路块,另外标示“LEDMOD_DISP”


的双排针的上面7位也应插上短路块(最下面1位不要2.“窗口”电压识别与控制实验在自动化控制中,有些设备需要在一定的条件下工作。超出此条件后,可以控制设备停机,也可以发出报警信号。现在我们使用ATmega16L单片机的ADC模块实现输入模拟量的监控,输入电压小于2.OOOV时灯D1点亮报警,输入电压大干插短路块)。我们用一枝小螺丝刀(或电笔)调节电位器RV1,改变输入的模拟电压,我们可看到数码管的显示从0000~5000(相当于o.000—5.ooov)会变化。


3.OOOV时灯D2点亮报警,输入电压在2,000—3.OOOV之间时报警灯不亮。


在我的文档中新建~个ac13的文件夹。建立一个ac13.prj的工程项目,最后建立源程序文件ac13.c。输入程序2:




编译通过后,将ac13.hex文件下载到AVR单片机综合试验板上。注意,标示“LEDMOD_COM”、“AD”的双排针应插上短路块,另外标示“LEDMOD_DISP”


的双排针的上面7位也应插上短路块(最下面1位不要插短路块)。我们用一枝小螺丝刀(或电笔)调节电位器RV1,改变输入的模拟电压,我们看到数码管显示小于2000时,灯Dl点亮;数码管显示大干3000时,灯D2点亮:数码管显示在2000—3000之间时,灯不亮。达到实验的目的。

关键字:Atmega16L  数转换器  AVR单片机  入门篇 引用地址:Atmega16L的模/数转换器—AVR单片机入门篇

上一篇:AVR单片机内部RC振荡器校正方法
下一篇:在Proteus 6.9中调试I2C设备的方法

推荐阅读最新更新时间:2024-11-05 15:57

电源管理:基于AVR单片机的多功能电源设计
引 言 随着嵌入式系统设计技术的发展,在设计和仿真中,系统 工程师 对 电源 的要求也越来越高。在嵌入式系统设计是使用8031 单片机 和74系列 集成电路 时,所有使用74系列集成电路的 电路 板都使用单一的5 V电源供电就可以了。当时的供电电源部分不是一个需要太多注意的单元,基本上5 V的电源能满足所有的数字集成电路设计的需要。而近几年来,随着技术的发展,集成电路里的 三极管 变得越来越小并且工作的 电压 越来越低,使得嵌入式系统开发的重点从系统的速度,转到 低功耗 设计上。因此在同一个嵌入式系统中,存在多种不同电压的电源供电,从低于1 V到高于5 V都存在。而且在系统的稳定性和可靠性测
[电源管理]
电源管理:基于<font color='red'>AVR单片机</font>的多功能电源设计
AVR单片机的几个重要总结
转ST和AVR时都没有系统的看过相关文档,都是根据项目,拿到datasheet,备好工具就开始了,看得最多的就是feature和pins,所以经常在一些细节上疏忽了。在经历过惨痛的教训后,总结出来一些。。。。 1. 通过ISP给Tiny25下载程序时发现内置的EEPROM的数据全部被清掉,重置为0xFF了。经过多次实践,可以这样说:给AVR单片机下载程序时,内部EEPROM的数据全部会被重置,所以,如果想往EEPROM烧些初始化值的话,最好的方式是定义个.eeprom段,在烧完FLASH程序后再将生成的eep文件烧到EEPROM中去,修改Fuse和LockBits是不影响EEPROM数据的。 2. Tiny5的A/D引脚如果悬
[单片机]
基于单片机及MODEM的MTU、RTU无线电遥测系统
一、引言     基于AVR单片机及专用MODEM芯片的MTU(Master Terminal Unit中心调度机)、RTU无线电遥测系统。     分散地分布在全市的管网监测点上的远端RTU(系统可带256个RTU)采集数据,进行数据处理后通过无线电台向中心调度端发送数据,中心调度端接收到数据后进行数据处理,数据存储,并送给模拟屏显示。 二、设计思想     原有系统的使用中,主要存在以下几个问题:1. 无线通信波特率低(300bps),误码率高,巡测速度慢,最多带32个RTU终端;2. 当某一远程RTU端的无线电台一直处于长时间误发射状态时(简称“长发” )一直占用系统频点,由于系统共用一组无线电频点,这将
[嵌入式]
AVR单片机的特性及功能全面解析
高可靠性、功能强、高速度、低功耗和低价位 , 一直是衡量单片机性能的重要指标,也是单片机占领市场、赖以生存的必要条件。 早期 单片机主要由于工艺及设计水平不高、功耗高和抗干扰性能差等原因,所以采取稳妥方案:即采用较高的分频系数对时钟分频,使得指令周期长,执行速度慢。以后的CMOS单片机虽然采用提高时钟频率和缩小分频系数等措施,但这种状态并未被彻底改观(51以及51兼容)。此间虽有某些精简指令集单片机(RISC)问世,但依然沿袭对时钟分频的作法。 AVR单片机的推出,彻底打破这种旧设计格局,废除了机器周期,抛弃复杂指令计算机(CISC)追求指令完备的做法;采用精简指令集,以字作为指令长度单位,将内容丰富的操作数与操作码安排在
[单片机]
<font color='red'>AVR单片机</font>的特性及功能全面解析
AVR单片机SPI通讯实例程序
本人的一个SPI的实例,通过SPI实现两机通讯, 采用中断方式实现双全工通讯。   本例用两MEGA8515实现,连接为:     MISO----MISO     MOSI----MOSI     SCK ----SCK     /SS ----/SS   将要发送的数据加载到发送缓冲区的函数fill_tx_buffer和从接收缓冲区读出数据的函数read_rx_buffer未给出,根据各自需求请自己完成。 #define SPI_RX_BUFFER_SIZE 10 #define SPI_RX_BUFFER_MASK ( SPI_RX_BUFFER_SIZE - 1 ) #define SPI_TX_BUFFER_SIZE 1
[单片机]
AVR单片机如何在编写程序里就配置好熔丝位
  熔丝是一个保护知识产权的设计。简单的说,你在特定的引脚上加电压,足够的电流,就可以烧断里边的这根熔丝,烧断以后,片里的程序就不可以被读出来也不能改写了,只能用来运行。一般成品出售时都这样做。专用的写片机支持这个功能。自己也可以根据芯片的官方文档来操作。熔丝位是在一个特定的地址上可以读到熔丝状态的一个位。0表示已熔断,1表示未熔断。   在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态,“Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed”表示熔丝状态为“0”(允许)。因此,配置熔丝位的过程实际上是“配置熔丝位成为未编程状态“1”
[单片机]
基于AVR单片机的控制系统设计
引言 现在许多的系统都采用了多通道Input/Output的设计,控制系统的设计也日趋复杂、庞大,所以有必要将控制电路单独分离出来。过去许多系统均采用C51系列单片机作为控制电路,但其功能有限,电路设计较为复杂、影响了系统的稳定性,也不易扩展。本文介绍的AVR单片机由美国ATMEL公司生产,采用RISC指令集,内置RAM及可以擦写数千次的FLASH,采用哈佛结构,速度较快。ATmega128为此系列中功能最强大的一款,用于设计控制系统能适应现时复杂系统的要求。 AVR单片机介绍 ATMEL公司是世界上著名的高性能低功耗非易失性存储器和数字集成电路的一流半导体制造公司。AVR单片机由ATMEL公司开发,是过去12年里第一个新发
[单片机]
基于<font color='red'>AVR单片机</font>的控制系统设计
avr单片机(atmega16)上移植freertos
atmega16单片机配置: 内存:1KB flash:16KB 结果:移植后flash只剩4KB左右 内存只剩300KB左右 因此:移植之后基本上只能开启一两个任务,内存已经不够了 正文 一.基础铺垫 二.移植freertos 三.重定向printf到uart0 四.makefile的编写 背景: 在学校学习avr一般都是iccavr这个软件,后面工作后vscode + ubuntu成为了习惯,于是搜索后有了vscode + ubuntu + avr-gcc + isp下载hex文件的玩法。 一.基础铺垫 1.在window上安装vscode 2.在window上安装虚拟机+ubuntu 3.使用vscode ssh登录
[单片机]
在<font color='red'>avr单片机</font>(atmega16)上移植freertos
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved