p3.7接swr
p3.0接pin
p3.1接clk
ad0809的clk接脉冲
cs接8000h的译码电路程序:ad0809 xdata 8000h
org 0000h
ajmp main
org 0030h
main:mov dptr,#8000h
mov a,#01h
movx @dptr,a
call delay
movx a,@dptr
mov r0,a
call disp
call delay
call delay
call delay
ajmp maindisp:mov a,r0
anl a,#00001111b
acall dsend
mov a,r0
swap a
anl a,#00001111b
acall dsend
ret
dsend:mov dptr,#tab
movc a,@a+dptr
mov sbuf,a
jnb ti,$
clr ti
ret delay:mov r4,#250
delay1:mov r5,#250
djnz r5,$
djnz r4,delay1
ret
tab:db 03h 0
db 9fh 1
db 25h 2
db 0dh 3
db 99h 4
db 49h 5
db 41h 6
db 1fh 7
db 01h 8
db 09h 9
db 11h 灭
db 11h
db 0c1h
db 63h
db 85h
db 61h
db 71h
db 00h
end
取10次的平均值。计算机,是用二进制的,除以2、4、8、16...256,都是很方便的。
为什么要取10次呢?
还没有脱离小时候学过的十进制,对吧?
----------
单片机A/D转换测量16次平均值保存在外部RAM2000h汇编程序如下:
AVR16:
MOV R7, #16 测量 16 次
CLR A
MOV B, A
AV1:ADD A, P1累加采样值
JNC AV2
INC B进位
AV2:DJNZ R7, AV1 循环16次
ANL A, #240
ADD A, B 除以16
SWAP A求出平均值
MOV DPTR, #2000H
MOVX @DPTR, A 存到指定单元
RET
写这些,就可以了,比楼主的要求,精度还要高。
END
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)