在实际应用中,常常需要对模拟量进行测量,这就需用a/d转换器。片内带a/d转换器的单片机相对较贵,而avr的多数单片机,如at90s1200、at90s8515等,片内都有模拟比较器。利用单片机片内的模拟比较器,很容易实现a/d转换,完全能够满足精度要求不高的一般性测量的需要。 本文介绍用sl-avr开发实验器做a/d转换器的实验。重点介绍在利用sl-avr开发实验器上的网络电阻和滑线电位器进行a/d转换器实验时的跳线方法。 一、 电路 图1是at90s8515控制的a/d转换器。单片机的pd6~pd0接共阴数码管的a~g,控制段码;pb6、pb7分别接数码管d0、d1的共阴极,控制位码;pc0~pc7作为输出口,接8只网络电阻;pb2(ain0)接网络电阻的输出端;pb3(ain1)接滑线电位器的中间抽头。 二、 sl-avr开发实验器上的跳线连接方法 1. led数码管跳线 将dled短路插排上的全部短路块取下,用随机附送的跳线将其中的d1接至at90s8515的pb7(第{8}脚),d0接pb6(第{7}脚)。at90s8515的40个引脚已接至锁紧插座的左右两侧。 将短路插排cz3最上面的7个短路块取下,其右边一列从上至下分别为led七段数码管的段引脚a~g,将a~g分别接到at90s8515的pd6~pd0(第{16}脚~{10}脚)。 2. 电阻网络跳线 将短路插排d2最下面的8个短路块取下,其最左边一列从下至上分别为pc0~pc7,用跳线将pc0~pc7分别接到网络电阻插排的d0~d7。 将短路插排d1最上面的8个短路块取下,其最右边一列从上至下分别为pb0~pb7,用跳线将pb2接到网络电阻插排的vout。 3. 滑线电阻跳线 在《avr高速嵌入式单片机原理与应用》一书中,滑线电位器的接线如图2a所示。据笔者实测sl-avr开发实验器的滑线电位器,其接线如图2b所示。因此,滑线电位器的接线如下:将滑线电位器上方两脚短路插排的ax端接至at90s8515的pb3(ain1),a/d端串一只电阻(如1kω)后接至gnd。vcc、gnd已引到sl-avr开发实验器的左上角的双列短路插排上。
将跳线接好,仔细检查无误后,便可进行实验了。
三、 用电阻网络实现的a/d转换器程序 用电阻网络实现的a/d转换器的源程序清单如下:.include″8515def.inc″
.org 0000
rjmp reset
.def temp=r16
.def temp1=r17
.equ label= 0100
.org $0010
reset: ldi r20,$02
out sph,r20
out spl,r20
ldi r20,$ff ;设置d口为输出
out ddrd,r20
out ddrc,r20
ldi r20,$f0
out ddrb,r20
out portb,r20
clr r20
out portc,r20
sbi $18,7
sbi $18,6
cli
ldi zh,high(label×2)
main: ldi temp,$00
nop
loop1: out portc,temp
nop
nop
nop
in temp1,acsr
sbrs temp1,5
rjmp naco
rjmp haco
naco: inc temp
brne loop1
ldi temp,$ff
haco: mov r28,temp
ldi r20,$38
display:mov temp,r28 ;显示高位
andi temp,$f0
swap temp
clr zl