单片机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

#include <reg52.h> //包含51单片机头文件

//共阳极数码管0-9数组编码

unsigned char code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}

//数码管位选数组编码,这里有8位数码管(既8个数码管)

unsigned char code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}

//下面是变量申明

unsigned char mode=0

unsigned int temp

float dianya

unsigned int dianya1

//下侍空顷面是51单片机端口位申明

sbit START=P1^5

sbit EOC=P1^6

sbit OE=P1^7

sbit a=P1^0

sbit b=P1^1

sbit c=P1^2

sbit key=P1^3

//一个延时函数

void delay(unsigned int z)

{

while(z--)

}

//按键扫描函数

void key_scan()

{

if(key==0) //当key按下时,key既端口P1^3

{

delay(10) //延时

if(key==0) //在检测端口P1^3是否为低

{

/********************************************

到这里你发现你程序有问题

********************************************/

}

}

switch (mode) //这里也有问题,如果mode只为0,变量a b c清0,可以用if语句

{

case 0 : a=0b=0c=0break

}

}

void main()//主函数

{

unsigned char aa[4],i

while(1)

{

key_scan()

P2=wei[0] // 选中第一个数码管

P0=seg[mode] //第一个数码管显示存在变量mode里的数

/*******************************************

下面部分应该为从AD检测一个电压

*******************************************/

START=1 //P1^5 置1

delay(10) //延时

START=0 //P1^5 置0

while(EOC==0) //如果P1^6为0,一亏让直循环等待

OE=1//P1^7置1

temp=P3 //把P3端口上8位数赋值给变量temp

dianya=(5.0/255)*temp //8位AD值转换成老陆电压显示值

dianya1=dianya*10

aa[2]=dianya1/10 //把转换后的值除10

aa[3]=dianya1%10 //把转换后的值求模

for(i=2i<4i++)

{

P2=wei[i] //数码管2,3分别位选

if(i==2)

P0=seg[aa[i]]&0x7f //显示转换后的电压值aa[2]并加上点 (除10的值)

else P0=seg[aa[i]] //显标转换后的电压值aa[3](求模值)

delay(1)

}

}

}


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

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

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-26
下一篇2025-08-26

发表评论

登录后才能评论

评论列表(0条)

    保存