数显温度及报警系统 (单片机原理)有能力的帮做份吧 过了有重谢!_百度...
发布网友
发布时间:2024-09-07 06:02
我来回答
共1个回答
热心网友
时间:2024-09-15 22:39
第二阶段 温度变送器的应用
一、实习内容和要求:
1、 采用Pt100热电阻作为温度传感器,测量范围为0~200度;
2、 设计热电阻传感器的测量转换电路、信号放大电路;
3、 设计仪表供电电路,已知外部输入的电源为24V直流电源;
4、 搭建8051单片机最小系统、LM032L液晶显示、基本按键输入电路;
5、 基于AD1674芯片开发A/D转换电路,正确连接AD1674与8051,实现热电阻转换后的信号采集;
6、 采用D/A转换芯片DAC1230实现4~20mA的信号输出;
7、 编写程序代码,实现热电阻信号采集、仪表信号输出、测量值显示、仪表必须的参数设置等智能仪表的基本功能。
二:温度变送器的设计程序:
#include<REG52.h>
#include<stdio.h>
#include<intrins.h>
/* ---------------*/
sbit ADC_STS=P1^0;
sbit ADC_CS=P1^1;
sbit ADC_A0=P1^2;
sbit ADC_CE=P1^3;
sbit ADC_RC=P1^4;
sbit L_RS=P1^5;
sbit L_RW=P1^6;
sbit L_E=P1^7;
sbit DAC_CS=P3^0;
sbit DAC_WR=P3^1;
sbit DAC_XFER=P3^2;
float ADC_data;
/*----------------*/
void delay(void)
{
unsigned int j,k;
for(j=20;j>0;j--)
for(k=200;k>0;k--);
}
/* --------ADC--------*/
void ADC_C( void)
{
P0=0xff;
DAC_CS=1;
_nop_();
ADC_CE=0;
ADC_CS=1;
ADC_RC=1;
ADC_A0=1;
_nop_();
ADC_CS=0;
_nop_();
ADC_RC=0;
_nop_();
ADC_CE=1;
_nop_();
ADC_CE=0;
ADC_CS=1;
ADC_RC=1;
}
void ADC_R(void)
{ ADC_CS=0;
_nop_();
ADC_A0=0;
_nop_();
ADC_RC=1;
_nop_();
ADC_CE=1;
_nop_();
ADC_data=P0;
}
/* ------LCD-------*/
void LCD_init(void)
{ ADC_CS=1;
_nop_();
P2=0x38;
L_RS=1;L_RW=1;L_E=0;
_nop_();
L_RS=0;L_RW=0;
_nop_();
L_E=1;
_nop_();
L_E=0;
delay();
L_RS=1;L_RW=1;P2=0x0e;
_nop_();
L_RS=0;L_RW=0;
_nop_();
L_E=1;
_nop_();
L_E=0;
delay();
L_RS=1;L_RW=1;_nop_();
}
void LCD_display(unsigned char L_data)
{ P2=L_data;
L_RS=1;L_RW=0;
_nop_();
L_E=1;
_nop_();
L_E=0;
delay();
L_RS=1;L_RW=1;_nop_();
}
void LCD_clc(void)
{
P2=0x01;
L_RS=1;L_RW=1;L_E=0;
_nop_();
L_RS=0;L_RW=0;
_nop_();
L_E=1;
_nop_();
L_E=0;
delay();
L_RS=1;L_RW=1;
}
void LCD_shift(void)
{
P2=0xc0;
L_RS=1;L_RW=1;L_E=0;
_nop_();
L_RS=0;L_RW=0;
_nop_();
L_E=1;
_nop_();
L_E=0;
delay();
L_RS=1;L_RW=1;
}
/* ---DAC-------*/
void DAC(int DAC_data)
{ P2=DAC_data;
DAC_CS=1;
DAC_XFER=1;
DAC_WR=1;
_nop_();
DAC_CS=0;
_nop_();
DAC_WR=0;
delay();
DAC_WR=1;
_nop_();
DAC_CS=1;
_nop_();_nop_();
P2=0x00;DAC_CS=0; DAC_XFER=0;
_nop_();
DAC_WR=0;
delay();
DAC_WR=1;
DAC_CS=1;
}
/*------MAIN------*/
void main(void)
{ int length,t;
unsigned char tt[]=" TEMPRETURE";
while(1)
{ADC_C();
ADC_R();
//转换温度的程序,不太清楚。
LCD_init();
LCD_clc();
for(length=0;length<15;length++)
{LCD_display(tt[length]);}
LCD_shift();
DAC(t);
delay();
}
}
对应的电路图如下:
三、思考题
1、 仪表零点、量程如何调整?
2、 你所设计的仪表应该采用哪一种线制连接方式?
3、 考虑Pt100热电阻非线性补偿问题该如何处理,可能的同学请实现非线性补偿,测试补偿前后的变送器特性。
四、实习总结
图传不上去