单片机AD采集的C程序

单片机AD采集的C程序,第1张

AD0809的采集程序

//---A/D转换---

//-----头文件引用------

#include <Reg51.h>

#include <absacc.h>

#include <intrins.h>

typedef unsigned char BYTE/*自定义字节类型*/

#define Set_Bit(BIT) (BIT = 1) /*定义置1函数*/

#define Clear_Bit(BIT) (BIT = 0) /*定义清0函数*/

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

void Write_Hd7279(BYTE,BYTE)/*定义HD7279写函数*/

BYTE Read_Hd7279(BYTE)/*定义HD7279读函数*/

void Send_Byte(BYTE)/*定义HD7279发送字节函数*/

BYTE Receive_Byte(void)/*定义HD7279接收字节函数*/

void Short_Delay(void)/*定义短延时函数*/

void Long_Delay(void)/*定义长延时函数*/

void Mcu_Init(void)/*定义MCU初始化函数*/

void Delay_200_mS(void)/*定义200ms延时函数*/

sbit Hd7279_Clk=P1^6/*定义HD7279时钟硬件连接*/

sbit Hd7279_Data=P1^5/*定义HD7279数据硬件连接*/

sbit cs=P1^7

void Short_Delay(void) /*短延时函数*/

{

BYTE i

for(i=0i<0x08i++)

}

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

void Long_Delay(void) /*长延时函数*/

{

BYTE i

for(i=0i<0x30i++)

}

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

void Write_Hd7279(BYTE Command,BYTE Data) /*HD7279写函数*/

{

Send_Byte(Command)

Send_Byte(Data)

}

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

void Send_Byte(BYTE Data_Out) /*HD7279发送字节函数*/

{

BYTE i

cs=0

Long_Delay()

for(i=0i<8i++)

{

if(Data_Out&0x80) Set_Bit(Hd7279_Data)

else Clear_Bit(Hd7279_Data)

Set_Bit(Hd7279_Clk)

Short_Delay()

Clear_Bit(Hd7279_Clk)

Short_Delay()

Data_Out=Data_Out<<1

}

Clear_Bit(Hd7279_Data)

}

//-----宏声明-----

#define A_DPORT XBYTE[0xFef3]//0809通道0地址

#define uchar unsigned char

//-----变量定义-----

bit bdata bz=0//定义标志

uchar val

//-----初始化-----

void first(void)

{

P1=0xff

P2=0xff

P3=0xff

P0=0xff

Send_Byte(0xa4)

IT1=1

EX1=1

EA=1//INT0 允许

}

//-----中断-----

void int_0(void) interrupt 2

{

val=A_DPORT//读 A_D 数据

bz=1//置读数标志

}

//-----主程序-----

main()

{

first()//初始化

while(1)

{

A_DPORT=val//启动 A_D

while(bz==0)//等待 A_D 转换结束

// val=~A_DPORT

//P1=val//数据输出

Write_Hd7279(0xc8,val&0x0f)

Write_Hd7279(0xc9,val>>4)

Write_Hd7279(0x92,0x00)

Write_Hd7279(0x93,0x00)

Write_Hd7279(0x94,0x00)

Write_Hd7279(0x95,0x00)

Write_Hd7279(0xce,0x0d)

Write_Hd7279(0xcf,0x0a)

bz=0//清读数标志

}

}

这就是C的程序

http://hi.baidu.com/dzkfw/blog/item/4a188216fd986b12c83d6d05.html

不平凡的单片机学习资料,很好的单片机教程,超好用,一个不占内存的教程,有案例。

1、最新版单片机编程宝典下载地址,学习单片机编程必备手册

2、单片机c语言运用例子

3、十天学会单片机c语言和单片机制作,最好的单片机资料

台湾华邦这颗数字电位器WMS7202010S停产了,应该有升级芯片吧,去它的网站找一下。

继续使用之前的单片机程序的情况下替代这颗数字电器,这可比较难,要找一下与WMS7202010S 完全兼容的芯片才能用原来 的程序,不但引脚完全 相同,就其内容结构,控制代码也要完全相同才行,这只有找华邦的升级产品。

你说的程序,只是编译好的HEX代码文件吗?看来,最坏的结果,就是做重新设计了。

PH计之斜率补偿  出自:

https://blog.csdn.net/k331922164/article/details/90076721?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

PH计一般不带温度补偿,而温度对强酸、强碱的pH值影响比较大,对偏中性的溶液影响不大。

这里的温度补偿有两种含义:补偿溶液、补偿斜率。

一、补偿溶液。

由于水的电离受温度影响,所以不同的溶液的pH值受温度影响的程度不同,需要查表才能补偿。

二、补偿斜率。

1、理论斜率。

这里的斜率是由能斯特方程得到的(方程的具体推导过程请参考《电化学》)。

上式中,t为摄氏度。

R是理想气体常数,等于8.314570J.K-1.mol-1。

T是温度,单位开,T=273.15+t。

F是法拉第常数,1F等于96485C.mol-1。

n是半反应式的电子转移数,单位mol,对于氢离子,n=1。

E为被测溶液的电压,E0为等电势点,单位均为伏,V。

但是,利用上式做斜率补偿时,发现温度对PH值影响很大,跟理论值相差甚远。

后来发现以下公式是正确的。

原因是:由lgx变成lnx,在lgx的基础上乘以ln10,约为2.30259。

也就是说需要把K的lg换成ln,就在K的基础上乘以2.30259。

2、实际斜率与等电势点。

温度一定时,测量标准缓冲溶液pH1=6.86,记录电压E1,再测量pH2=4.00,记录电压E2,利用下式计算实际斜率。

利用下式计算等电势点。

计算斜率误差

Kdelta = K实际 - K理论。

把Kdelta和E0保存在单片机中,测量时再取出来使用。

三、计算实际PH值。

上式中的K是K实际 = K理论 + Kdelta。K理论=-(2.30259*R*T)/F,此处的T可由防水型的DS18B20测得。

E为被测溶液的电压值。

这就完成了斜率补偿。

四、注意事项。

1、每次测量前都先校正一次。也就是先用两种标准缓冲溶液(一般使用6.86和4.00的溶液)得到Kdelta和E0,再利用这两个值来计算实测的PH值。

2、复合电极有两个地方有溶液。拧开盖子,盖子上的溶液为保护溶液,是pH=7.00的KCL溶液;电极杆内部也装有溶液,这个溶液叫外参比溶液,一般是KCL,买电极时,有一小白瓶里面装有白色粉末的就是KCL粉末,加上20mL水就可以使用了。保护溶液和外参比溶液都是必须要有,不能干掉,否则电极测量出的值不准。

3、一般购买的标准缓冲溶液只是一包粉末,可以买一些250mL的小瓶子来兑出标准缓冲溶液。

4、25摄氏度折算。将当前温度下的pH值换算到25摄氏度下的pH值,而其它条件不变。制定一个统计的参照标准,便于验证。

5、在单片机计算时,需要把浮点数扩大10000倍,再保存于EEPROM中,取出时,再除以10000倍即可。

五、参考资料。

标准缓冲液pH值与温度对照表。

https://wenku.baidu.com/view/3d002c507275a417866fb84ae45c3b3567ecdde5.html?rec_flag=default

基于单片机ADuC845的pH计的设计。

https://wenku.baidu.com/view/60e1e90f7cd184254b3535f2.html?from=search

六、本文使用的电极。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存