单片机恒温控制毕业设计

  • 格式:doc
  • 大小:367.00 KB
  • 文档页数:22

目录

第一章 概述..........................................1

1.1设计任务............................. .........1

1.2意义及价值............................. ........1

第二章 硬件设计.......................................2

2.1 单片机最小系统设计.............................2

2.2 AD590集成温度传感器简介...........................3

2.3 A/D转换器的设计................................4

2.3 温度检测电路...................................4

2.4 系统硬件电路原理图设计.........................5

第三章 系统软件设计..................................6

3.1 主模块.........................................7

3.2 中断服务.......................................7

3.3 辅助模块.......................................7

3.4 仿真调试.......................................7

第四章 毕业设计总结.................................. 8

参考文献...............................................9

第一章 概述:

1.设计任务

利用单片机对被控对象进行温度控制,其范围在 -55℃~150℃,控制精度0.1℃;有四位数码显示器显示当前温以及设定温(在设定温度时);有键盘(四个按键)能对设定温度进行修改,精度0.5℃。2. 意义以及价值

电加热恒温控制器在医疗、工业生产、食品加工和农业新科技等关键领域有着重要作用,如在医疗中的恒温培养皿、样本保存器,在工业生产中的锅炉温度控制,食品加工中的发酵温控制,农业生产的温室大棚等等都有它的身影,;单片机和集成电路低廉的价格使其拥有市场主导地位。

一、单片机89C2051简介

AT89C2051(以下简称2051)是一种低功耗、高性能的8位CMOS微控制器芯片,片内带2KB的快闪可编程及可擦除只读存储器(FPE ROM)。它于MCS-51指令系统兼容,片内FPEROM允许对程序存储器在线重新编程,也可以用常规的EPROM编程器编程。ATMEL的2051将具有多种功能的8位CPU与FPEROM结合在同一芯片上,为很多嵌入式控制应用提供了高度灵活且价格适宜的方案。2051还增加了在零频下工作的静态逻辑方式及两种软件可选的省电模式。在其中,在闲置模式下,CPU停止工作,但RAM、定时器、计数器、串行口和终端系统仍在工作。在掉电模式下,只保存RAM的内容,振荡器停振,关闭芯片的所有其它功能,直到下一次硬件复

位为止。

89C2051主要性能如下:

1. 与MCS-51产品兼容。

2. 2KB的在线可重复编程快闪存储器,寿命可达1000次写/擦除周期。

3. 宽工作电压范围为2.7V~6V 。

4. 全静态工作方式:0Hz~24Hz。

5. 两级程序存储加密。

6. 128*8位SRAM。

7. 15条可编程I/O线。

8. 2个16位定时器/计数器。

9. 5个中断电源。

10. 可编程串行通道。

11. 可直接驱动LED。

12. 有片内精密模拟比较器。

13. 低功耗的闲置与掉电模式。

14. 软件设置睡眠和唤醒功能。

15. 可编程UARL通道。

16. 两个16位可编程定时/计数器。

二、AD590集成温度传感器简介

主要指标 (1)测温范围:-55~+150V。

(2)输出电流IT与绝对温度T成正比:I= αT(uA),

其中α=1uA/K,+25℃(298.2k)时IT =298.2MA。

(3)线性误差±0.3℃。

(4)电源电压:4-30V。

三、A/D转换器的设计。

利用比较器、定时器测量电容的充电时间。

Up=R2 E/(R1+R2)、Cduc/dt=IT、Uc =Tt/C,当Up=Uc时Up=IT /C* tT,

tT=Cup/αT。

二、硬件设计。

1、显示:8位字形口,4位位置口。

2、键盘:+、-、set(设置键)、esc(取消键)。

3、测温电路:3条I/O脚(P1.0、P1.1、P3.6)。

4、热丝驱动:1 I/O脚。

5、串行I/O扩展:2 I/O脚

2.1温度检测电路:

+5VRV110kU1:A(+IP)32184U1:ALM158ABCDC11uFQ1NPNR110kC1(+)+88.8VoltsR1(1)

XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51PROGRAM=AD590测量电路与显示.HEXR1R2R3R4R5R6R7R8A02A14A26A38OE1Y018Y116Y214Y312U2:A74S240+5vABCDC11uFQ1NPNR1110k+5V(+)32184U3:ALM158+88.8Volts12U4:A74HC07R93kR102k

2.2软件流程图设计

主程序:

中断服务:

键盘处理:

键盘扫描:

2.4 系统硬件电路原理图设计

D[0..3]S[0..7]S2S7S5S4S3S2S1S0S7S5S4S3S0S1D0D0D3D2D1D1D2D3D3D0D1D2XTAL24RST1P1.012P1.113P1.214P1.315P1.416P1.517P1.618P1.719P3.2/INT06P3.3/INT17P3.4/T08P3.5/T19P3.0/RXD2P3.1/TXD3P3.711XTAL15U1AT89C2051A02A14A26A38OE1Y018Y116Y214Y312U2:A74HC240R1R2R3R4R5R6R7R92KR103KSETINCDECESCC14.7uFR111KX1C333pFC433pFZeroCrossing1264U3MOC3031MR121K+5V+5VC2(+)ABCDC21uF(A)D1D2D3D4

2.5 系统软件设计

/* 单片机恒温控制程序

(1)单片机型号89C2051,时钟频率12 MHz

(2)P3口作为字型口

P3.0~P3.7(除P3.6)对应七段LED字段a~g,低电平亮;

2051内部模拟比较器输出经P3.6脚输入。

(3)P1口的使用:

P1.0~P1.1为内部模拟比较器输入脚;

P1.2为键盘输入脚;

P1.3为加热控制输出脚;

P1.4~P1.7为显示/键盘扫描输出线,对应#0~#3位置,低电

平有效;

(4)利用T0作为A/D转换定时器(单位1us )。

(5)利用T1作为5ms键盘/显示扫描定时器 。

*/

#include

#include

#define uchar unsigned char

#define uint unsigned int

#define TC1 (-5000) /*T1 5ms时间常数*/

#define STFH 100 /*闪烁周期500ms,单位5ms*/

#define STC 200 /*采样1s定时常数,单位5ms*/

#define KTC1 13 /*重发键延时,单位20ms*/

#define KTC2 8 /*重发键周期,单位20ms*/

#define KSET 1 /*SET键值*/

#define KINC 2 /*+键值*/

#define KDEC 3 /*-键值*/

#define KESC 4 /*ESC键值*/

#define FSPC 0xff /*空字型*/

#define FNGS 0xbf /*负号字型*/

#define TUP 1300 /*设定温上限,单位0.1℃*/

#define TLOW -300 /*设定温下限,单位0.1℃*/

#define TDA 3 /*温度控制死区,单位0.1℃*/

const float CVp=2e+6; /*计算常数*/

sbit AI0=P1^0; /*比较器+输入脚*/

sbit AI1=P1^1; /*比较器-输入脚*/

sbit KI=P1^2; /*键盘输入脚*/

sbit HT=P1^3; /*加热输出脚*/

sbit CMP=P3^6; /*比较器输出脚*/

uchar dbuf[4]; /*显示缓冲区*/

uchar key; /*键值*/

bit DTC,STF; /*当前温度显示、采样时间到标志*/

void fresh(int,uchar,uchar*); /*显示刷新函数*/

void thermost(int,int); /*恒温控制函数*/

int kbfun(uchar,int *); /*键盘处理函数*/

/*主函数*/

main()