AD590c温度传感器c程—单片机
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ad590c语言程序
#include <reg51.h>
#define LEDLen 6
#define LowTemp 0 // A/D 0
#define HighTemp 100 // A/D 255
xdata unsigned char OUTBIT _at_ 0x8002;
xdata unsigned char OUTSEG _at_ 0x8004; // 段控制口xdata unsigned char IN _at_ 0x8001;
xdata unsigned char ADPort _at_ 0x9000;
signed char CurTemp;
unsigned char LEDBuf[LEDLen];
code unsigned char LEDMAP[] = {
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f};//共阴代码
code unsigned char LEDMAP1[] = {
0xbf, 0x86, 0xdb, 0xcf, 0xe6, 0xed, 0xfd, 0x87,
0xff, 0xef};//共阴代码带小数点
void Delay(unsigned char CNT)
{
unsigned char i;
do{
i = 100;
do{
}while(--i);
}while (--CNT);
}
void DisplayLED()
{
unsigned char i;
unsigned char Pos;
unsigned char LED;
// 初始位置为右边
Pos = 0x20;
for (i = 0; i < LEDLen; i++) {
// 关闭所显示位
OUTBIT = 0;
// 取出显示数据
LED = LEDBuf[i];
OUTSEG = LED;
// 输出位选通信号,选择一位LED点亮
OUTBIT = Pos;
// 延时
Delay(2);
// 移位,选择下一位LED准备点亮
Pos >>= 1;
}
OUTBIT = 0;
}//数码管动态显示
void DisplayResult()
{
signed char T;
T = CurTemp;
//显示温度十位数
LEDBuf[0] = LEDMAP[T / 10];
//显示温度个位数
LEDBuf[1] = LEDMAP1[T % 10];
//显示小数点后一位
LEDBuf[2] = LEDMAP[((T*10)%100)%10]; }
unsigned char ReadAD()
{
unsigned int i;
// 启动A/D变换
ADPort = 0;
//延时100us,
for (i=0; i<20; i++);
//得到A/D采样值
return (0xff - ADPort);
}
void ReadTemp()
{
unsigned char i;
signed int Temp;
Temp = 0;
//采样16次,取平均数
for (i=0; i<16; i++) {
Temp += ReadAD();
};
//AD采样值转换为实际温度的公式
CurTemp = (Temp >> 4) * (HighTemp-LowTemp)/256; }
void main()
{
unsigned char dtimer;
while (1) {
for(dtimer=15; dtimer>0; dtimer--)
{
// 当前温度和设定温度送显示缓冲
DisplayResult();
// 显示当前温度和设定温度
DisplayLED();
};
// 读入当前温度
ReadTemp();
}
}
Ad590原理图
10O T 2。