|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
大家都知道,在现实生活中,我们不只会遇到离散的数字量,像声音电压等连续变化的模拟量也很重要。2 a: [ J0 ]9 G6 H9 w! f- Q3 ]% b
51单片机只能使用符合TTL电平标准的数字量,而在基础款的51单片机中,并没有集成数模转换的功能。那么为了让单片机可以处理这些模拟量,我们势必要借助其他芯片的帮助。
# ]. j& C1 Z, |& ?借助A/D转换芯片,我们可以将外部的模拟量转化为数字量输入单片机,也可以将单片机的数字量转换为模拟量输出外界。. T3 m$ j' O9 h
2 |) O2 r4 i, K一、A/D转换原理
. V5 X, P \2 UA/D转换常用如下几种方式:
! I7 Q& [ [0 A( `+ b1、逐次逼近法* L+ c. B C4 ?
逐次逼近型A/D转换器应用比较广泛,基本原理就是先将逐次逼近寄存器最高位置1,并送入D/A转换器生成模拟量V0,使用V0与输入的模拟量Vi进行比较,如果V0大于Vi则该位被保留,否则被清除。然后将寄存器次高位 置1,并不断重复上述操作,直到得出输入模拟量所对应的数字量。 F# b g1 o! k; W# i. y
2、双积分法( m# g/ S9 M+ y6 i1 f; x& Q
基本原理为,对输入模拟电压和参考电压分别进行两次积分,将输入电压平均值变换为与之成正比的时间间隔,然后利用时钟脉冲和计数器测量出时间间隔,由此得到相应的数字量输出。可以看出,这是一种间接A/D转换器,是对输入电压的平均值进行转换,所以具有很强的抗工频干扰能力。
8 T: c# L1 m$ ~3、电压频率转换法1 }; U U9 j$ T& @& y* F& _, z
当模拟电压Vi加到V/F的输入端,便产生频率F与Vi成正比的脉冲,在一定的时间内对该脉冲信号计数,将统计到计数器的计数值正比于输入电压Vi,完成A/D转换。$ g' c$ a+ V0 i
, ~; j9 o% N0 N2 T0 |二、ADC0809 A/D转换器介绍
0 j) j& y/ K% X+ O今天我们要了解的ADC0809 A/D转换器就是一款使用逐次逼近法的CMOS芯片,它使用单电源供电,转换时间100us,输入电压范围0V-5V,通过三位地址选择位来处理8路模拟量输入,可与TTL电平兼容。- i( c y& z' P8 y* k' p
, [# y$ l+ r% i单片机与ADC0809的通信有:查询、中断、延时三种方式。
) x; H) e# g+ w" n# [9 O4 Z" h+ g1.查询方式:单片机使用轮询方式查看EOC引脚状态,低电平说明转换正在进行,高电平证明转换完成,单片机将OE线(读数据允许线)变为高电平,读出数据;
+ @$ d; N1 @* Z7 J% l9 Y+ L* D0 ~9 T2.中断方式:单片机的外部中断引脚接ADC0809的EOC引脚,在中断程序中进行读数据操作;
0 ?" Z- X# {8 }. w" U9 g* r4 h* T3.延时方式:ADC0809转换时间为100us,所以可以使用定时器定时,每间隔一段时间(>100us)就读取一次数据。
" D4 ~# S) M7 u" t! Z这三种方式程序都不困难,特别是查询方式,只需要通过软件的方式进行,无需调用外部中断寄存器与定时器作为辅助。但当然,这种方式缺点也比较大,如果A/D转换器因为硬件软件原因没有工作,整个程序就会卡在循环中无法跳出,无法进行其他操作。7 I6 S( ]$ F1 v) _% X
建议大家自行使用ADC0809转换器,并配合之前讲过的LCD1602显示屏,尝试制作一款电压测量仪器,这个项目难度适中,所要注意的是由于ADC0809采用并行方式输出数据,接线比较多,建议按类型将导线归类连接,不要在简单的问题上出错。
7 |3 f3 C; X6 j) R! D“范例演练”设置了六篇公众号内容,大家能够将前五篇多多练习就可以对51单片机的认识更进一步,甚至可以举一反三,自己设计完成一些实用的小项目。
@% N Q" q2 Y) \/ N在下次也就是最后一次课程中,我们将简单了解一下现在火热的神经网络在单片机中的实现。 |
|