您的当前位置:首页正文

温度报警器毕业设计报告(上下限)

2022-09-05 来源:步旅网


目 录

摘要……………………………………………………………………………………1 关键词…………………………………………………………………………………1 Abstract………………………………………………………………………………1 Key words……………………………………………………………………………1 引言……………………………………………………………………………………1 第1章 设计方案论证与选择……………………………………………………… 1 1.1 控制模块的论证与选择…………………………………………………………1 1.2 电源模块的论证与选择…………………………………………………………1 1.3 显示器模块的论证与选择………………………………………………………1 1.4 温度传感器的论证与选择………………………………………………………1 1.5 报警设备的论证与选择…………………………………………………………1 第2章 硬件系统设计与功能实现 …………………………………………………1 2.1 系统设计的整体框图……………………………………………………………1 2.2 各模块接口电路与说明…………………………………………………………1 2.2.1 单片机的结构与最小系统电路………………………………………………1 2.2.2 液晶显示器的引脚说明和接口电路…………………………………………1 2.2.3 DS18B20的接口电路…………………………………………………………1 2.3温度控制部分的设计与说明……………………………………………………1 2.4 电路仿真原理图…………………………………………………………………1 第3章 软件系统的设计与说明 ……………………………………………………1 3.1 主程序设计………………………………………………………………………1 3.2 DS18B20初始化…………………………………………………………………1 3.3 系统完整程序……………………………………………………………………1 第4章 系统功能测试 ………………………………………………………………1 4.1 功能测试说明……………………………………………………………………1 4.2 上限功能测试……………………………………………………………………1 4.3 下限功能测试……………………………………………………………………1 4.4 温度正常时的测试………………………………………………………………1 结论……………………………………………………………………………………1 致谢……………………………………………………………………………………Y 参考文献………………………………………………………………………………Y 附录1 系统设计整体电路图………………………………………………………1 附录2 系统完整程序………………………………………………………1

基于单片机的温度报警器

电子信息工程专业学生 高俊明

指导教师 李秀娟

摘要:在日常生活及工业生产过程中,经常要用到温度的检测及控制,温度是生产过程和科学实验中普遍而且重要的物理参数之一。传统的测温元件有热电偶和二电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,这些方法相对比较复杂,需要比较多的外部硬件支持。我们用一种相对比较简单的方式来测量。

采用美国DALLAS半导体公司推出的一种改进型智能温度传感器DS18B20作为检测元件,温度范围为-55~125 ºC,最高分辨率可达0.0625 ºC。DS18B20可以直接读出被测温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。

基于STC89C52单片机的温度测量及报警电路,电路采用DS18B20作为温度监测元件,测量范围25℃-~35℃,使用LCD模块显示,能设置温度报警上下限。着重介绍软硬件系统的各部分电路,介绍了集成温度传感器DS18B20的原理,STC89C52单片机功能和应用。该电路设计新颖、功能强大、结构简单。

关键词:温度测量 报警 DS18B20 STC89C52

Cost-based AT89C51 MCU a temperature measurement、

warning circuits

Electronics and Communications Engineering Gao jun ming

Tutor Li xiu juan

Abstract:In daily life and industrial production process, often used in the detection and control of temperature, temperature is the production process and scientific experiments in general and one of the important physical parameter. Traditional thermocouple and temperature components are the second resistor. The thermocouple and thermal resistance are generally measured voltage, and then replaced by the corresponding temperature, these methods are relatively complex, requiring a relatively large number of external hardware support. We use a relatively simple way

to measure.

Use the United States following DALLAS Semiconductor DS1820 improved after the introduction of a smart temperature sensor DS18B20 as the detection element, a temperature range of -55 º C ~ 125 º C, up to a maximum resolution of 0.0625 º C. DS18B20 can be directly read out the temperature on the north side, and three-wire system with single-chip connected to a decrease of the external hardware circuit, with low-cost and easy use.

The introduction of a cost-based STC89C52 MCU a temperature measurement circuits, the circuits used DS18B20 high-precision temperature sensor, measuring scope 0 º C~+100 º C, can set the warning limitation, the use of seven segments LCD that can be display the current temperature. The paper focuses on providing a software and hardware system components circuit, introduced the theory of DS18B20, the functions and applications of AT89C51 .This circuit design innovative, powerful, can be expansionary strong.

Key words: Temperature measurement warning DS18B20 STC89C52

引言:随着科技的发展,在工业、农业生产等重要领域对温度的控制要求越来越高,因而对温度报警系统的要求也越来越高。如何设计一款成本低廉、报警准确、操作简单的智能温度报警系统成为一个重要问题。以STC89C52单片机为处理核心,通过数字温度传感器DS18B20将检测到的数据输入单片机进行处理,与声光报警电路组合就可以构成温度报警系统,这种设计系统的成本较小,结构简单、操作方便,并且测量也很准确,能够满足工业、农业生产对温度要求不是特别高的地方。

温度报警系统,在工业、农业自动化控制中占有非常重要的地位。单片机系统的开发应用给现代工、农业测控领域带来了一次新的技术革命,自动化、智能化均离不开单片机的应用。将单片机控制方法运用到温度控制系统中,可以克服温度控制系统中存在的严重滞后现象,同时在提高采样频率的基础上可以很大程度的提高控制效果和控制精度。现代自动控制越来越朝着智能化发展,在很多的小型系统中,处理机的成本占系统成本的比例高达20%,而对于这些小型的系统来说,配置一个如此高速的处理机没有任何必要,因为这些小系统追求经济效益,而不是最在乎系统的快速性,所以用成本低廉的单片机控制小型的,而又不是很复杂,不需要大量复杂运算的系统中是非常适合的。

随着电子技术以及应用需求的发展,单片机技术得到了迅速的发展,在高集成度,高速度,低功耗以及高性能方面取得了很大的进展。伴随着科学技术的发展,电子技术有了更高的飞跃,我们现在完全可以运用单片机和电子温度传感器对某处进行温度检测,而且我们可以很容易地做到多点的温度检测,如果对此原理图稍加改进,我们还可以进行不同地点的实时温度检测和控制。

第1章 设计方案论证与选择

1.1控制模块的论证与选择

方案一:采用凌阳公司的16位单片机,它是16位控制器,具有体积小、可靠性高、功耗低、结构简单、具有语音处理、运算速度快等优点,但考虑到对这种单片机并不熟悉,使用起来并不是很方便,这对于硬件电路的设计和软件编程增加了难度。因此决定不使用此方案,考虑其他方案。

方案二:采用STC 89C52单片机作为处理器。STC 89C52是一个超低功耗,和标准51系列单片机相比较具有运算速度快,抗干扰能力强,支持ISP在线编程,片内含8k空间的可反复擦写1000次的Flash只读存储器,具有256 bytes的随机存取数据存储器(RAM),32个I/O口,2个16位可编程定时计数器。其指令系统和传统的8051系列单片机指令系统兼容,降低了系统软件设计的难度,电路设计简单、价格低廉,其精确度和运算速度也都完全符合系统的要求。

综合以上方案选择比较普通的更为熟悉的方案二,使用STC89C52单片机为整个系统的控制核心。

1.2电源模块的论证与选择

方案一:采用干电池供电。干电池价格低廉、携带方便、运用灵活,但不能循环使用,并且对土壤、水体污染严重,有悖于低碳环保,因此不用该方案。

方案二:直接用USB接口供电。这种方式虽然看似复杂繁琐,但是用电方便,可以不间断的供电,并且用USB接口很方便,直接用手机、mp3的充电器就可以。

综合以上方案选择低碳、环保的方案二,使用USB口供电 1.3 显示器模块的论证与选择

方案一:不使用显示设备,直接利用声光报警。这种方案可以使系统大大简化,但是温度值不能直观的读出,如若报警系统出现故障就不能被使用者及时的发现,有可能会照成大量的经济损失,因小失大故不可取。

方案二:用LED数码管实现数值的显示。LED数码管显示相对来说比较直观、明亮,可以用动态显示和静态显示两种方法编程实现,但是在所需数码管较多时占用单片机的接口较多造成单片机及接口资源紧缺,并且灵活性不好。

方案三:用LCD液晶显示屏显示。LCD显示器功能比较强大,只需在程序中进行定义即可,用起来比较方便,且体积小、外形薄,寿命长[1]等优点。

综合以上各方案选择方案三使用LCD液晶显示器。 1.4 温度传感器的论证与选择

方案一:输出为模拟型的温度传感器。这种传感器可随被测温度的变化实时变化,但是单片机不能直接处理输入的数据,需要经过A/D、D/A转换才能得到理想的结果,这就增加了电路和程序的复杂性。

方案二:采用输出为数字型的温度传感器DS18B20。这种传感器与单片机的接口电路十分简单,只需要三根线即可,而且测量精确度高、范围广,单片机可以直接处理传输的数据,是比较理想的一种温度传感器。

综合以上各方案选择方案二采用DS18B20。 1.5 报警设备的论证与选择

方案一:采用LED灯发光报警,这种报警方式比较直观,利用不同颜色的等对应不同的状态就可以判别出此时的温度处于的状况。

方案二:采用扬声器发声报警,这种报警方式可以使工作人员在一定距离范围内监测到温度异常进行及时处理。

方案三:采用声、光同时报警,这种报警方式综合以上两方案的有点,其效果更好,并且成本也不高。

综合考虑选择方案三比较合适。

第2章 硬件系统设计与功能实现

2.1 系统设计的整体框图

复位模块 显示模块 单 片 报警模块 控制模块 机 测温模块

图2.1 系统基本方框图

2.2 各模块接口电路与说明

2.1.1 单片机的结构与最小系统电路

图2.2 89C52单片机管脚图

XTAL2时钟电路XTAL1RAM128BSFR 21个定时个/计数器2VccCPUROM/EPROM/Flash 4KB总线控制中断系统5个中断源2个优先级串行口全双工1个4个并行口VssRSTEAPSENALEP0P1P2P3

图2.3 89C52单片机结构图

89C52有40个引脚,4个8位并行I/O口,1个全双工异步串行口,同时内含5个中断源,2个优先级,2个16位定时/计数器。89C52的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(RAM)组成。

图2.4 单片机最小系统电路(复位电路)

2.1.2 液晶显示器的引脚说明和接口电路

图2.5 液晶显示器引脚图

设计运用LCD1602液晶显示器,可以同时显示两行共32个字符。 各引脚功能如下:

Vss(1脚):一般接地。 Vdd(2脚):接电源。

Vee(3脚):液晶显示器对比度调整端,接电源时对比度最弱,接地时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。

RS(4脚):RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

R/W(5脚):R/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。

E(6脚):E(或EN)端为使能(enable)端,下降沿使能。 D0(7脚)----D7(14脚):8为三态、双向数据总线

RS 0 0 1 R/W 0 1 0 操作说明 写入指令寄存器(清除屏等) 读busy flag(DB7),以及读取位址计数器(DB0~DB6)值 写入数据寄存器(显示各字型等) 1 1 从数据寄存器读取数据 表2-1寄存器选择控制

图 2.6 液晶接口电路

引脚3接的滑动变阻器起调节液晶屏对比度的作用 2.2.3 DS18B20的接口电路

图2.7 温度传感器与单片机的接口电路

DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图2.7 所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。

当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线

制只有一根线,因此发送接口必须是三态的。其内部结构如下

DS18B20温度测量范围为-55~+125 摄氏度,可编程为9位~12 位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM 中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个DS18B20可以并联到3 根或2 根线上,CPU只需一根端口线就能与诸多DS18B20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。

DS18B20的内部结构如下图

存储器与控制逻辑64位ROM和单线接口Vdd温度传感器高温触发器TH高速缓存低温触发器TL配置寄存器8位CRC发生器 图2.8 DS18B20内部结构图

2.2.4 报警电路与单片机的接口

图2.9 声光报警电路与单片机的接口

报警电路采用声、光同时报警来完成。在程序中事先设置好温度报警的上、

下限(25℃---35℃)。当温度低于25℃时红灯发光同时扬声器发声报警;当温度高于35℃时黄灯发光同时扬声器发生报警;当温度介于25℃、35℃之间时路灯亮,扬声器不发声。

2.3 温度控制部分的设计与说明

为了安全控制,利用系统小电流控制继电器开关控制外部调温设备(电机等,在这里没有给出具体的调温设备)。当P1.3为低时,三极管导通使继电器开关拨到右端,控制外设接通电路。系统只给出了一个继电器演示,具体电路可以并联一个继电器分别控制升温、降温。

图2.10 控制设备与单片机的接口

2.4 电路仿真原理图 详见附录1

第3章 软件系统的设计与说明

3.1 主程序设计

整个系统的功能由硬件电路和软件来实现的,当硬件电路确定后,软件编程也基本定型。从软件功能来划分可以分成两部分:一是监控部分(主程序),它是整个系统的核心,专门协调各执行模块的关系;二是执行部分(子程序),用来完成各种实质性的功能,如测量、计算、显示等。每一个执行软件也就是一个小的功能执行模块,将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。主程序流程见图3.1。

开始 MCU初始化 DS18B20初始化 判定温度 大于35℃时亮红灯、喇叭响 亮绿灯 小于25℃时亮黄灯、喇叭响 显示温度 结束

图 3.1 主程序流程图

3.2 DS18B20初始化

开始C51寄存器初始化N18B20存在?Y温度转换命令读取温度温度数据处理温度显示N温度比较超出范围?Y报警

图3.2 DS18B20初始化

3.3 系统完整程序 详见附录2

第4章 系统功能测试

4.1 功能测试说明

设置报警温度上限为35℃,下限为25℃,在protues仿真软件中将温度传感器分别调至37℃、23℃、30℃观察仿真结果 4.2 上限功能测试

如下图,当温度为37℃时的结果

图4.1 仿真1

4.3 下限功能测试

如下图,当温度为23℃时的结果

图4.2 仿真2

4.4 温度正常时的测试

如下图,当温度为30℃时的结果

图4.3 仿真3

结论

基于STC89C52单片机的数字温度报警器系统的设计,对整个硬件电路和软件程序设计做了分析。介绍52单片机的结构、特点,加深了对STC89C52单片机知识的了解。介绍了数字温度计的设计方案及原理,并学习了数字温度传感器DS18B20。利用了proteus及keil等仿真软件,同时学习了proteus的仿真方法、步骤和在keil的编程方法。总之仿真实验的成功直观的反应了设计的正确性。

致谢

×(小四宋体)×××××××××××××××××××…… 参考文献:

[1] 余小平.奚大顺.电子系统设计[M].基础篇.北京:北京京航空航天大学出版社,2011:

95-96.

[2] 张刚毅.彭喜元.新编MCS-51单片机应用设计(第三版)[M].哈尔滨:哈尔滨工业大学

出版社,2010年 [3]

[1] 作者姓名,作者姓名.参考文献题目[J]. 期刊或杂志等名称,年份,卷(期数):页码. [2] 刘凡丰. 美国研究型大学本科教育改革透视[J] . 高等教育研究,2003,5(1):18-19.

没有卷的就直接写2003(1)(本条为期刊杂志著录格式)

[4] 作者姓名. 参考文献题目[D].南京:南京农业大学,2002:页码.(本条为硕士、博士

论文著录格式)

文献类型标志说明:普通图书 M ,会议记录C,汇编G,报纸N,期刊J,学位论文D,报告R,标准S,专利P,数据库DB,计算机程序CP。

论文中图的具体要求为: ① 主线粗于辅线(座标线)

② 图题,小5黑(句末无标点)

③ 标值线(座标上的刻度线)一律在图的内侧 ④ 图例一律在图题的上方或在图中,6宋 ⑤ 图注一律在图题的下方,6宋

⑥ 标目(座标的文字说明)及图内文字,6宋

⑦ 图版(照片)说明在图题之下,6宋,文字一般接排,如:A.麦穗形态;B.花原基

附录 1 系统设计整体电路图

附录 2 系统完整程序 #include

#define uchar unsigned char #define uint unsigned int

uchar i;

sbit d1=P1^0; sbit d2=P1^1;

sbit d3=P1^2; sbit d4=P1^3; sbit lcdrs=P3^0; sbit lcdrw=P3^1; sbit lcden=P3^2; sbit beep=P3^6;

sbit DQ = P3^7;//定义ds18B20总线IO uchar code t0[]=\"now temperature \"; uchar code t1[]=\" is \";

uchar code wendu[]=\"0123456789\"; //利用一个温度表解决温度显示乱码 //液晶显示模块

void mdelay(uint delaytime) {

uint j=0;

for(;delaytime>0;delaytime--) for(j=0;j<124;j++) {;}

} //1S延时

void write_com(uchar com) {

lcdrs=0; P2=com; mdelay(10); lcden=1; mdelay(10); lcden=0; }

void write_date(uchar date) {

lcdrs=1; P2=date; mdelay(10); lcden=1; mdelay(10); lcden=0; }

void init_lcd() {

lcden=0;

lcdrw=0;

write_com(0x38);

write_com(0x01); write_com(0x0c); write_com(0x06); write_com(0x80); for(i=0;i<16;i++) {

write_date(t0[i]); mdelay(0); }

write_com(0x80+0x40); for(i=0;i<16;i++) {

write_date(t1[i]); mdelay(0); } }

//温度采集模块

void tmpDelay(int num)//延时函数 {

while(num--) ; }

void Init_DS18B20()//初始化ds1820 {

unsigned char x=0; DQ = 1; //DQ复位

tmpDelay(8); //稍做延时 DQ = 0; //单片机将DQ拉低

tmpDelay(80); //精确延时 大于 480us DQ = 1; //拉高总线 tmpDelay(14);

x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败 tmpDelay(20); }

unsigned char ReadOneChar()//读一个字节 {

unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--) {

DQ = 0; // 给脉冲信号 dat>>=1;

DQ = 1; // 给脉冲信号 if(DQ)

dat|=0x80; tmpDelay(4); }

return(dat); }

void WriteOneChar(unsigned char dat)//写一个字节 {

unsigned char i=0; for (i=8; i>0; i--) {

DQ = 0;

DQ = dat&0x01; tmpDelay(5); DQ = 1; dat>>=1; } }

unsigned int Readtemp()//读取温度 {

unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0; Init_DS18B20();

WriteOneChar(0xCC); // 跳过读序号列号的操作 WriteOneChar(0x44); // 启动温度转换 Init_DS18B20();

WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0xBE); //读取温度寄存器

a=ReadOneChar(); //连续读两个字节数据 //读低8位 b=ReadOneChar(); //读高8位 t=b; t<<=8;

t=t|a; //两字节合成一个整型变量。 tt=t*0.0625; //得到真实十进制温度值,因为DS18B20可以精确到0.0625度,所以读回数据的最低位代表的是0.0625度

t= tt*10+0.5; //放大十倍,这样做的目的将小数点后第一位也转换为可显

示数字,同时进行一个四舍五入操作。 return(t); }

void display() {

unsigned int num,num1;

unsigned int shi,ge,xiaoshu; num=Readtemp(); num1=num/10; if(num1>35) {

beep=!beep; d1=0; d2=1; d3=1; d4=0;

// mdelay(100); }

else if(num1<25) {

beep=!beep; d1=1; d2=0; d4=0; d3=1;

// mdelay(100); } else { d1=1; d2=1; d3=0; }

shi=num/100; ge=num/10%10; xiaoshu=num%10;

write_com(0x80+0x40+5); write_date(wendu[shi]);

write_com(0x80+0x40+6); write_date(wendu[ge]);

write_com(0x80+0x40+7); write_date(0x2e);

write_com(0x80+0x40+8); write_date(wendu[xiaoshu]); }

void main() {

init_lcd(); while(1) {

display(); mdelay(10); } }

因篇幅问题不能全部显示,请点此查看更多更全内容