单片机AD转换用的这段程序意思是什么

单片机AD转换用的这段程序意思是什么,第1张

ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch //开始转换

这是用STC单片机内部A/D转换电路进行A/D转换时,要给A/D控制寄存器ADC_CONTR写启动转换命令,ADC_CONTR是ADC控制寄存器,其中的每一位的作用见下图,而这行语句前面肯定要有定义每一位状态的语句,或用#define宏定义了各位的值。

重点不在算法,重点是会AD_init() 和AD_get(channel)

会初始化和启动AD转换并读取转换结果

至于换算是根据自己电路情况确定的,由于计算时采用过多的浮点型变量会占用较多内存,造成内存不足,因此有除法时常采用整形变量进行计算,运算时为了保持尾数不丢失,需把被除数扩大100倍或1000倍,如整数123/100=1,小数部分丢失了,为得到1.23这个结果,需把123扩大100倍,变成12300,12300/100=123.0,然后将小数点向左移2位(缩小100倍),即得1.23 这就是定(小数)点计算

LedCtrl = LedCtrl &0xdf大概就是一次选通一个数码管,7f df ef bf每次只有一位是0

接线:p3.6接srd

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


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11067531.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-13
下一篇2023-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存