数显温度及报警系统 (单片机原理)有能力的帮做份吧 过了有重谢!

设计任务书
1、任务简介:
数码管显示模块具有数字显示能力,显示内容直观。温度显示及报警功能在工业上被广泛使用,应该有一定的应用价值。本设计要求利用单片机完成一个温度显示及报警系统,并能根据情况对其功能进行扩展。
2、设计要求:
⑴ 系统硬件设计:利用课堂讲授的单片机设计模板根据本设计任务书完成设计要求;
基本要求:
 硬件必须有如下器件:AT89S52、8位数码管、ADC0804、DAC0832、24C64、蜂鸣器、LED报警指示灯、键盘等。
 用Protues绘制出仿真原理图并能够进行软件仿真调试。
附加要求:
 用Protel 绘制出原理图。
提高要求:
 用Protel 绘制出PCB图。
⑵ 系统软件设计:用C51或51汇编完成控制软件的编写与调试;
基本要求:(通过键盘换屏显示)
 1屏显示“ГIc--XX.X”(例如:ГIc—80.7);
 2屏显示“HELP----” ;
 根据AD转换值直接输出至DA0832(0-5V)
附加要求:
 当超限时蜂鸣器鸣叫;
 设定好的参数存放于AT24C64 EEPROM中,每次开机自动将参数调入RAM以备查询;
提高要求:
 报警信号加一路继电器输出。
 具有参数输入光标指示功能;
 可通过键盘设定温度范围、超限报警值等参数;

第二阶段 温度变送器的应用
一、实习内容和要求:
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热电阻非线性补偿问题该如何处理,可能的同学请实现非线性补偿,测试补偿前后的变送器特性。
四、实习总结

图传不上去
温馨提示:答案为网友推荐,仅供参考