导航:首页 > 操作系统 > ad转换实验单片机

ad转换实验单片机

发布时间:2025-01-24 03:25:00

㈠ 带12位AD转换的51单片机

TLC2543是TI的一片12位AD芯片,11通道AD转换,数据传输符合SPI串行方式,是常用的高精度AD芯片,价格有点贵了35一片,不过物有所值,在实验中读书还是很稳定的。TLC2543的操作也很简单,命令格式:通道+精度+数据顺序,不过值得注意的:是本次读取的值是上次转换的AD值,也就是说本次发送的命令是启动下一次转换同时读取上次转换的值。

㈡ 基于单片机数字频率计设计汇编语言程序的设计思路

大学实验课吧?但是图呢?图呢????发图啊~

㈢ 利用STC89C52单片机以及PCF8591的AD转换设计一个数字电压表,求大神给个程序例子,在线等!!!急!!!

这是吴鉴鹰单片机开发板配套的例程。

/*-----------------------------------------------

名称:IIC协议PCF8591AD/DA转换

内容:使用4路AD中的4路检测外部模拟量输入使用液晶显示

------------------------------------------------*/

#include<reg52.h>

#include"i2c.h"

#include"delay.h"

#include"1602.h"

#include<stdio.h>


#defineAddWr0x90//写数据地址

#defineAddRd0x91//读数据地址


externbitack;

unsignedcharReadADC(unsignedcharChl);

bitWriteDAC(unsignedchardat);

/*------------------------------------------------

主程序

------------------------------------------------*/

main()

{

unsignedcharnum=0,i;

unsignedchartemp[7];//定义显示区域临时存储数组

floatVoltage;//定义浮点变量

LCD_Init();//初始化液晶

DelayMs(20);//延时有助于稳定

LCD_Clear();//清屏

while(1)//主循环

{

for(i=0;i<5;i++)//连续读5次,取最后一次,以便读取稳定值

num=ReadADC(0);//读取第1路电压值,范围是0-255

Voltage=(float)num*5/256;//根据参考电源VREF算出时间电压,float是强制转换符号,用于将结果转换成浮点型

sprintf(temp,"V0%3.2f",Voltage);//格式输出电压值,%3.2f表示浮点输出,共3位数,小数点后2位

LCD_Write_String(0,0,temp);


for(i=0;i<5;i++)

num=ReadADC(1);

Voltage=(float)num*5/256;

sprintf(temp,"V1%3.2f",Voltage);

LCD_Write_String(8,0,temp);


for(i=0;i<5;i++)

num=ReadADC(2);

Voltage=(float)num*5/256;

sprintf(temp,"V2%3.2f",Voltage);

LCD_Write_String(0,1,temp);


for(i=0;i<5;i++)

num=ReadADC(3);

Voltage=(float)num*5/256;

sprintf(temp,"V3%3.2f",Voltage);

LCD_Write_String(8,1,temp);

//主循环中添加其他需要一直工作的程序

DelayMs(200);


}

}


/*------------------------------------------------

读AD转值程序

输入参数Chl表示需要转换的通道,范围从0-3

返回值范围0-255

操作分四步:

(1)、发送地址字节,选择该器件。

(2)、发送控制字节,选择相应通道。

(3)、重新发送地址字节,选择该器件的读写。

(4)、接收目标通道的数据。

------------------------------------------------*/

unsignedcharReadADC(unsignedcharChl)

{

unsignedcharVal;

Start_I2c();//启动总线

SendByte(AddWr);//发送器件地址

if(ack==0)return(0);

SendByte(0x40|Chl);//发送器件子地址

if(ack==0)return(0);

Start_I2c();

SendByte(AddWr+1);//10010001是读命令

if(ack==0)return(0);

Val=RcvByte();

NoAck_I2c();//发送非应位

Stop_I2c();//结束总线

return(Val);

}

㈣ 关于AD590温度传感器

AD590是一种电流输出型温度传感器,其电流输出与绝对温度成线性关系。工作电压范围为4V至30V,温度检测范围为-55℃至+150℃。AD590的温度-电流关系如下表所示:

温度(℃) 电流(μA)

-55 0

0 1

100 101

150 151

AD590的引脚图见下图。实验任务是利用AD590温度传感器测量温度,并将模拟量转换结果送入ADC0809进行A/D转换,再将结果显示在数码管上。

电路原理图如图4.30所示。硬件连线步骤如下:

(1) 将“单片机系统”区域中的P1.0-P1.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。

(2) 将“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1-S2-S3-S4-S5-S6-S7-S8端口用8芯排线连接。

(3) 将“单片机系统”区域中的P3.0与“模数转换模块”区域中的ST端子用导线连接。

(4) 将“单片机系统”区域中的P3.1与“模数转换模块”区域中的OE端子用导线连接。

(5) 将“单片机系统”区域中的P3.2与“模数转换模块”区域中的EOC端子用导线连接。

(6) 将“单片机系统”区域中的P3.3与“模数转换模块”区域中的CLK端子用导线连接。

(7) 将“模数转换模块”区域中的A2-A1-A0端子用导线连接到“电源模块”区域中的GND端子。

(8) 将“模数转换模块”区域中的IN0端子用导线连接到自制的AD590电路。

(9) 将“单片机系统”区域中的P0.0-P0.7用8芯排线连接到“模数转换模块”区域中的IN0端子。

以上步骤完成后,即可实现AD590温度传感器的温度测量和显示功能。

㈤ 共地情况下,单片机AD采样如何减少干扰

从理论上来说,2cm的隔离距离完全够用了,至于还是出现干扰需要找到干扰源及干扰频率后才能进一步定位。给你一个建议,如果有可能的话,将输入20V转5V采用DC/DC隔离电源模块来实现,或许效果会好点。另外,适当多增加一些滤波电容,组合起来进行滤波。如果有条件,可以做一些EMC实验,可以准确定位干扰源及其频率点。

阅读全文

与ad转换实验单片机相关的资料

热点内容
windowsphp扩展安装 浏览:93
emacslinux配置文件 浏览:379
python3在线教程 浏览:114
不小心删文件夹的文件 浏览:480
java获取手机IP 浏览:816
手机rar解压密码获取 浏览:344
程序员被辞退工资怎么处理 浏览:494
恋活的模型没加密 浏览:159
如何把安卓机的微信转移苹果 浏览:583
爬山算法相关题目 浏览:724
vc编程大全 浏览:118
excel表格单列数据加密 浏览:648
给同事的解压话语 浏览:992
linux关闭网卡命令行 浏览:454
史上最漂亮程序员 浏览:770
java实现excel的导入 浏览:760
光遇账号如何转移安卓 浏览:266
5分之13除以26的算法 浏览:342
兰州安宁区买解压包子 浏览:641
php接收图片代码 浏览:668