单片机AD和DA转换具体过程是怎么样的

单片机AD和DA转换具体过程是怎么样的,第1张

比如8位的AD转换吧,转换0~5V为数字量信号就是把5V分成256份,每份是5/256,这个也就是精度,最小一份就是5/256 V,002V左右,比如输入信号为5V,就占了256份,AD输出结果换成16进制就是0xff,比如说输入是31V,就占了31/(5/256)=15872份,所以输出结果只能是158份,0x9e,就偏差了072份,就是0725/256=0014V,就偏差了0014V左右,如果10位的AD转换,每份就是5/1024,精度也就高了很多,反过来DA转换也是一样的,不明白可以继续问

8位AD只有256个等级,如果量程为5V, 327 / 5 256 = 167 =10100111B 当数据为 10100111时为327V,8位AD这个精度等级只能不能精确到0001V所以没法表示0327V

PIC单片机在某一时间段内只能采集开启一个AD转换通道来进行采集,你可以通过模拟通道选择位来进行通道选择的先后顺序/
可以定义一个数组用来存放采集数据
先使能AD采样,进中断清标志位,配置通道(如AN0),把采样结果存入数组
轮流进行
采集时间一结束,即可启动 A/D 转
换。 可将采集时间编程设定在 GO/DONE位置1和实际
转换启动之间。
可参考pic的PDF资料

看了一下,大概没问题,因为你的是12位的AD,所以是4096分度的,所以输入25V应该是2048,但是要必须保证PIC输入的是5V稳压,
照这样看来,你得到的2200多就是输入的5V并不准确

/

程序名称:hc595c

程序功能:595的应用文件,595控制数码管

程序作者:吴鉴鹰

创建时间:2013-12-7

修改时间:2013-12-9

程序版本:V02
/
/

包含头文件
/
#include
"inc/hc595h"
#include
"reg51h"
/

定义引脚
/
/
595控制数码管时钟信号线引脚定义
/
sbit
HC595CLK
=
P1^1;
/
595控制数码管片选信号线引脚定义
/
sbit
HC595RCK
=
P1^0;
/
595控制数码管数据输入引脚定义
/
sbit
HC595DATA
=
P1^4;
/

函数名称:SendData

函数功能:74HC595数据的发送

入口参数:unsigned
int
uiDataOne,
unsigned
int
uiDataTwo

出口参数:void
/
void
SendData(unsigned
int
uiDataOne,
unsigned
int
uiDataTwo)
{
unsigned
int
i
=
0;
/
将片选信号置为低电平
/
HC595RCK
=
0;
/
输入第一个数据:uiDataOne
/
for
(i
=
0;
i
<
8;
i++)
{
/
给出脉冲信号,首先将CLK置为0
/
HC595CLK
=
0;
if
(0
!=
(uiDataOne
&
0x80))
{
HC595DATA
=
1;
}
else
{
HC595DATA
=
0;
}
/
给出脉冲信号,首先将CLK置为1
/
HC595CLK
=
1;
/
准备第二个数据
/
uiDataOne
=
uiDataOne
<<
1;
}
/
输入第二个数据:uiDataTwo
/
for
(i
=
0;
i
<
8;
i++)
{
/
给出脉冲信号,首先将CLK置为0
/
HC595CLK
=
0;
if
(0
!=
(uiDataTwo
&
0x80))
{
HC595DATA
=
1;
}
else
{
HC595DATA
=
0;
}
/
给出脉冲信号,首先将CLK置为1
/
HC595CLK
=
1;
/
准备第二个数据
/
uiDataTwo
=
uiDataTwo
<<
1;
}
/
将片选信号置为高电平
/
HC595RCK
=
1;
}


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

原文地址: http://outofmemory.cn/yw/10556179.html

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

发表评论

登录后才能评论

评论列表(0条)

保存