https://static.assets-stash.eet-china.com/album/old-resources/2008/10/28/656f48c1-6b7b-44f3-89a3-825ea16d57db.rarADC0831+LCD1602显示
/*Chip:ADC0831
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
Block Diagram
__ __________
1- CS ─—|。 |─—VCC -8
| |
2-IN(+)─—| ADC |─—CLK -7
| 0831 |
3-IN(-)─—| |─—DO -6
| |
4- GND ─—| |─—VRef-5
 ̄ ̄ ̄ ̄ ̄
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
*/
#ifndef _ADC0831_1_H_
#define _ADC0831_1_H_
#include<intrins.h>
sbit AD_CS = P2^3; //ADC0831与AT89S52的管脚接线定义
sbit AD_DO = P2^4;
sbit AD_CLK = P2^5;
unsigned int Temp; //电压扩大1000倍
unsigned char VoltBuffer[7];//数据转化成液晶字符显示
unsigned char ADC_Conv(void)
{
unsigned char i;
unsigned char Data;
AD_CLK = 0;
AD_CS = 0;
_nop_();
AD_CLK = 1;
_nop_();
AD_CLK = 0; //第一个下降沿时钟信号,启动转换
_nop_();
AD_CLK = 1;
_nop_();
AD_CLK = 0; //第二个下降沿时钟信号,开始转换输出
_nop_();
for(i = 8; i > 0; i--)
{
Data <<= 1; //左移1位 //Note:先移位,后置数
if(AD_DO)
Data++; //末尾位置加1
AD_CLK = 1;
_nop_();
AD_CLK = 0; //下一个下降沿
_nop_();
}
AD_CS = 1; //本次转换已经完成
AD_CLK = 0;
for(i = 40; i > 0; i--)
{
_nop_(); //延迟时间,等待下次转换
}
return (Data); //返回转换结果
}
void Data_Conversion(void)
{
unsigned char AD_Data;
AD_Data=ADC_Conv();
Temp=5.0/256*AD_Data*1000;
}
//数据转化成液晶字符显示
void Temp_To_String(void)
{
Data_Conversion();
VoltBuffer[0]=Temp/1000+'0'; //千位
VoltBuffer[1]='.'; //小数点
VoltBuffer[2]=Temp/100%10+'0';//百位
VoltBuffer[3]=Temp/10%10+'0'; //十位
VoltBuffer[4]=Temp%10+'0'; //个位
VoltBuffer[5]='V'; //字符V
VoltBuffer[6]='\0'; //字符串结束标志符
}
/*---------------------------------*/
#endif
文章评论(0条评论)
登录后参与讨论