历史上的今天
返回首页

历史上的今天

今天是:2025年02月26日(星期三)

正在发生

2020年02月26日 | Atmega16L的模/数转换器—AVR单片机入门篇

2020-02-26 来源:eefocus

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之间时,灯不亮。达到实验的目的。

推荐阅读

史海拾趣

HM International公司的发展小趣事

机顶盒,全称为数字视频变换盒,是现代家庭娱乐中不可或缺的重要设备。从广义上讲,任何与电视机连接的网络终端设备均可视为机顶盒,其发展历程涵盖了从模拟频道增补器到数字卫星、地面及有线电视机顶盒的广泛范畴。而从狭义角度看,机顶盒特指那些具备数字处理能力的设备,如IPTV机顶盒、DVB-S卫星机顶盒、DVB-T地面机顶盒及DVB-C有线电视机顶盒等。

机顶盒的核心功能在于接收并转换数字电视信号,使之能在传统或智能电视上播放。它不仅能接收来自有线电缆、卫星天线及宽带网络的信号,还能提供电子节目指南、网页浏览等增值服务。通过机顶盒,用户能够享受到高清乃至4K超高清的电视节目,体验更为细腻的画面和震撼的音效。此外,机顶盒还具备网络交互能力,支持在线购物、观看网络视频、玩游戏等多元化活动,使电视机从单向接收信息的设备转变为智能互动终端。

随着技术的不断进步,机顶盒正朝着高清化、智能化方向发展。未来,机顶盒将不仅限于基本的信号接收与解码功能,还将融入更多智能推荐、语音识别等先进技术,为用户提供更加个性化、便捷的娱乐体验。总之,机顶盒作为连接电视与互联网的桥梁,正以其丰富的功能和广泛的应用场景,不断满足用户日益增长的娱乐需求。

Advanced Components Industries Inc公司的发展小趣事

在快速发展的过程中,ACI始终注重品质管理。公司建立了严格的质量检测体系,确保每一件产品都符合高标准的质量要求。同时,ACI还积极推行持续改进的理念,不断优化生产流程,提高生产效率。

这些努力使得ACI的产品在市场上赢得了良好的口碑。客户对公司的产品和服务给予了高度评价,纷纷表示愿意与ACI建立长期合作关系。这些正面的反馈进一步推动了ACI的发展。

BusBoard公司的发展小趣事

BusBoard公司的创始人李明,是一位具有远见卓识的电子工程师。他看到电子行业正处于飞速发展的阶段,但市场上缺乏一种高效、灵活的电路板解决方案。于是,他毅然决然地创立了BusBoard公司,致力于研发和生产标准化的电路板总线板,为电子设备制造商提供便捷的定制和升级服务。通过不懈努力,BusBoard公司的产品在市场上获得了广泛认可,为公司的发展奠定了坚实基础。

CANDD公司的发展小趣事

为了进一步提升品牌影响力和市场份额,CANDD公司开始实施国际化战略。公司首先在欧洲市场设立了分公司,并成功打开了欧洲市场的大门。随后,公司又进军亚洲市场,通过与当地企业的合作,逐渐在亚洲市场站稳了脚跟。随着国际化战略的深入实施,CANDD公司的品牌知名度和市场份额不断攀升。

Carlisle Interconnect Technologies公司的发展小趣事

1959年,对于Carlisle Interconnect Technologies来说是一个里程碑式的年份。这一年,公司正式成为Carlisle Companies Incorporated的一部分,这标志着公司从一个小型创业企业迈入了大型跨国公司的行列。这一转变为公司带来了更多的资源和机会,也使其能够更好地满足主要电子OEM的需求,专注于提供增值解决方案。

Crameda Intersys公司的发展小趣事

Crameda Intersys公司自创立之初,便以技术创新为核心竞争力。在公司成立早期,团队经过长时间的研发,成功推出了一款具有颠覆性的集成电路产品,其高效能和低能耗的特点在当时市场上独树一帜。这一技术突破不仅为公司赢得了大量的订单,也为公司的长远发展奠定了坚实基础。随着产品市场的逐步拓展,公司的知名度和影响力不断提升,为后续的技术研发和市场拓展积累了宝贵的经验和资源。

问答坊 | AI 解惑

电解电容器的检测

1.因为电解电容的容量较一般固定电容大得多,所以,测量时,应针对不同容量选用合适的量程。根据经验,一般情况下,1~47μF间的电容,可用R×1k挡测量,大于47μF的电容可用R×100挡测量。??     2.将万用表红表笔接负极,黑表笔接正极 ...…

查看全部问答>

求助 关于3362

本帖最后由 paulhyde 于 2014-9-15 09:06 编辑 这是mc3362构成的接收机应用电路图 但图的左下角用红色圈起的部分我不明白是什么 请大家指点 我猜测可能是鉴频的作用 但做板的时候那里应该怎么做?不能只用个电感和电容 有人建议买个中周骨架自 ...…

查看全部问答>

多级放大电路的耦合方式

讲的很全……………………………………………………

查看全部问答>

使用基于图形的物理综合加快FPGA设计时序收敛

传统的综合技术越来越不能满足当今采用 90 纳米及以下工艺节点实现的非常大且复杂的 FPGA 设计的需求了。问题是传统的 FPGA 综合引擎是基于源自 ASIC 的方法,如底层规划、区域内优化 (IPO,In-place Optimization) 以及具有物理意识的综合 (physica ...…

查看全部问答>

安防学习之共缆传输系统图

共缆传输系统特点: 高频传输,超大容量 布线简单,维护方便 抗扰性强,适用广泛 技术成熟,稳定性高 性价比高,经济实用 数据调制,双向传输 扩充简单,平滑升级 功能强大,扩展性好…

查看全部问答>

请问 输入到串口终端的数据保存在哪里?

请问 输入到串口终端的数据保存在哪里? 由于串口采用的是行模式 ,当输入数据时,必须输入 回车 键,数据才被读取。 我想通过编程的方式模拟手动按enter键的过程来使输入的数据被读取。有知道如何编的吗? 之所以有这种需求,使由于 驱动通过 ...…

查看全部问答>

【求助】430能产生1M的方波吗?(不影响其他的工作)

我现在需要一个1M的方波驱动抗混滤波器,能用430F1611产生一个1M的方波吗? 现在的情况是,如果用定时器A中断产生方波影响CPU的正常工作了。 请高手指点!谢谢。…

查看全部问答>

STM32F103VE调试时出现莫名其妙的RAM冲突问题

我买了一块开发板,核心是STM32F103VE,RAM为64K,程序中有3个结构体数组变量a、b、c,3个变量总共的数据大小为2K,调试时可以看到a的地址区为:0x20000004---0x20000403,b的地址区为:0x20000404---0x20000603,c的地址区为:0x20000660---0x2000 ...…

查看全部问答>

求教:关于verilog 模块例化调用的一个问题

有三个文件:ram_3_top.v;ram_3_dct.v和一个mif文件(data_ram_3.v),我程序在 ram_3_top.v中例化另外两个模块,其中 ram_3_dct.v会输出地址到data_ram_3中,使得读出mif文件里面的数据。情况是这样的,我在ram_3_dct.v中输出地址的时候,地址 ...…

查看全部问答>

关于msp430f149两个SPI同时通信的问题

msp430f149的两个SPI口均占用,想要从一个SPI口读数据然后从另外的一个SPI口发送出去。如:RX0BUF的值是否可以通过中间变量传给TX1BUF这样会不会有问题啊? …

查看全部问答>