基于单片机的温度检测系统设计说明.docx

上传人:b****1 文档编号:10718118 上传时间:2023-05-27 格式:DOCX 页数:22 大小:102.22KB
下载 相关 举报
基于单片机的温度检测系统设计说明.docx_第1页
第1页 / 共22页
基于单片机的温度检测系统设计说明.docx_第2页
第2页 / 共22页
基于单片机的温度检测系统设计说明.docx_第3页
第3页 / 共22页
基于单片机的温度检测系统设计说明.docx_第4页
第4页 / 共22页
基于单片机的温度检测系统设计说明.docx_第5页
第5页 / 共22页
基于单片机的温度检测系统设计说明.docx_第6页
第6页 / 共22页
基于单片机的温度检测系统设计说明.docx_第7页
第7页 / 共22页
基于单片机的温度检测系统设计说明.docx_第8页
第8页 / 共22页
基于单片机的温度检测系统设计说明.docx_第9页
第9页 / 共22页
基于单片机的温度检测系统设计说明.docx_第10页
第10页 / 共22页
基于单片机的温度检测系统设计说明.docx_第11页
第11页 / 共22页
基于单片机的温度检测系统设计说明.docx_第12页
第12页 / 共22页
基于单片机的温度检测系统设计说明.docx_第13页
第13页 / 共22页
基于单片机的温度检测系统设计说明.docx_第14页
第14页 / 共22页
基于单片机的温度检测系统设计说明.docx_第15页
第15页 / 共22页
基于单片机的温度检测系统设计说明.docx_第16页
第16页 / 共22页
基于单片机的温度检测系统设计说明.docx_第17页
第17页 / 共22页
基于单片机的温度检测系统设计说明.docx_第18页
第18页 / 共22页
基于单片机的温度检测系统设计说明.docx_第19页
第19页 / 共22页
基于单片机的温度检测系统设计说明.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的温度检测系统设计说明.docx

《基于单片机的温度检测系统设计说明.docx》由会员分享,可在线阅读,更多相关《基于单片机的温度检测系统设计说明.docx(22页珍藏版)》请在冰点文库上搜索。

基于单片机的温度检测系统设计说明.docx

基于单片机的温度检测系统设计说明

信息系统综合设计报告书

 

课题名称

基于单片机的温度检测系统设计

姓名

学号

院、系、部

电气工程系

专业

电子信息工程

指导教师

 

2013年1月7日

 

基于单片机的温度检测系统设计

一、设计目的

1、了解测温系统中工作元件的工作原理;2、掌握数码管显示程序、键盘扫描及按键处理程序、温度信号处理程序、超温报警程序的编写。

二、设计要求

1.测量通道:

2路可循环显示,并有通道标志

2.温度传感器选用DS18B20

3.具有温度等信息的显示,具有温度上下限设置功能,越限时可以进行报警给出电路原理图设计,protel印刷电路图设计

三、硬件电路设计

3.1系统结构框图

 

图1系统结构框图

3.2单片机介绍

图2单片机引脚图

P0口作为I/O口使用时为准双向口。

P1口是自带上拉电阻的I/O口,是一个准双向口。

在输入操作时需要先置1。

P1口特点是输出锁存器,输出时没有条件。

输入缓冲,输入时有条件,即需要先将该口设为输入状态,先输出1。

P3口为准双向口。

可以字节访问,也可以位访问。

P3.0---RXD,串行输入口。

P3.1---TXD,串行输出口。

P3.2---INT0,外部中断0的请求。

P3.3---INT1,外部中断1的请求。

P3.4---T0,定时器/计数器0外部计数脉冲。

P3.5---T1,定时器/计数器,1外部计数脉冲。

P3.6---WR,外部数据存储器写选通。

P3.7---RD,外部数据存储器读选通。

3.3数码管显示电路

图3数码管显示电路

3.4LED显示电路

图4LED显示电路

3.5串口显示电路

图5通讯接口电路

3.6系统电路原理图

图6电路原理图

1、所需元器件

单片机AT89S521芯片(1个)、A/D转换机(1个)、温度传感器DS18B20(1个)、电阻:

10KΩ(2个)、电容:

1000μF(1个)、1uF(4个)、25uF(1个)

数码管(3个)、按钮(4个)、晶振(6MHZ)

2、实现的功能

该电路要实现的功能为,实时检测外界温度,将该温度值转换为数字量,然后通过四位的数码管显示。

其中外界温度用温度传感器DS18B20感应,然后通过ADC0809转换为数字量后,通过单片机的P1口送到单片机部存储单元。

之后将该温度值转换为十进制后,将个十百位分别通过P1口送出,然后经74HC573的锁存,输出段码,之后通过P1口送出位码,经另一片74HC573锁存后驱动相应的数码管显示。

四、程序流程图设计

图7程序流程图

五、程序设计

ORG0000H

AJMPMAIN

ORG0030H

MAIN:

MOVSP,#60H

SETBP2.4

MOV30H,#0

MOV31H,#0

MOV32H,#0

MAIN1:

LCALLGET_TEMP;采集温度

LCALLSEPERATE;对采集后的温度数据进行处理

LCALLZHUANHUAN;二进制数转换为BCD的形式

LCALLQINGLING;转换为满足输出的类型

LCALLJIANTIAO;扫描键盘模块

LCALLBAOJING;报警设置模块

LCALLSHUCHU;显示数据到数码管

SJMPMAIN1

;*******************************************************************

GET_TEMP:

CLREA;使用DS18B20一定要禁止任何中断产生

LCALLINT;调用初使化子程序

MOVA,#0CCH;

LCALLWRITE;送入跳过ROM命令

MOVA,#44H

LCALLWRITE;送入温度转换命令

LCALLINT;温度转换完全,再次初使化DS18B20

MOVA,#0CCH

LCALLWRITE;送入跳过ROM命令

MOVA,#0BEH

LCALLWRITE;送入读温度暂存器命令

LCALLREAD

MOVR7,A;读出温度值低字节存入R7

LCALLREAD

MOVR6,A;读出温度值高字节存入R6

SETBEA

RET

;******************************************************************

INT:

;初始化DS18B20子程序

CLREA

L0:

CLRP2.1;复位

MOVR2,#149

L1:

DJNZR2,L1;596US

SETBP2.1;释放DS18B20总线

MOVR2,#15;4US

L2:

DJNZR2,L2;60US

CLRC;2US,清DS18B20存在信号

MOVC,P2.1;取DS18B20存在信号

JCL0;判断DS18B20存在吗?

不存在则重新来

MOVR2,#125;存在则拉高

SETBP2.1

L3:

DJNZR2,L3;共500US

RET

;******************************************************************

WRITE:

MOVR1,#08H;设置写位个数

WLOP:

RRCA;把写的位放到C

ACALLWRBIT;调写1位子程序

DJNZR1,WLOP;8位全写完?

RET

WRBIT:

MOVR2,#14;设置时间常数

CLRP2.1;写开始

NOP;2US

MOVP2.1,C;C容存到总线

WDLT:

DJNZR2,WDLT;56US

SETBP2.1;释放总线

RET

;*******************************************************************

READ:

MOVR1,#8H;设置读位数

RLOP:

ACALLRDBIT;调读1位子程序

RRCA;把读到的位在C中的依次送给A

DJNZR1,RLOP;8位读完?

RET

RDBIT:

MOVR2,#13;设置时间常数

CLRP2.1

NOP;2US

SETBP2.1;释放总线

NOP;2US

MOVC,P2.1;把总线上的容读到C

RDDLT:

DJNZR2,RDDLT;等待52US

SETBP2.1

RET

;*****************************************************************

;程序名称:

SEPERATE

;功能:

处理采集后的的数据,把小数部分分开,R6放整数R7放小数,F0放符号位

;入口参数:

R6,R7

;出口参数:

R6R7F0

;*****************************************************************

SEPERATE:

MOVA,R6

MOVC,ACC.7

MOVF0,C;符号位

JCSEPERATE1

SJMPSEPERATE2

SEPERATE1:

MOVA,R6

CPLA

MOVR6,A

MOVA,R7

CPLA

CLRC

INCA

MOVR7,A

MOVA,R6

ADDCA,#00H

MOVR6,A

SEPERATE2:

MOV40H,R7

ANL40H,#0FH;小数部分

MOVR0,#12;移12次

SEPERATE3:

MOVA,R6

RRCA

MOVR6,A

MOVA,R7

RRCA

MOVR7,A

MOVA,41H

RRCA

MOV41H,A;整数部分

DJNZR0,SEPERATE3

MOVR6,41H;存整数部分

MOVR7,40H;存小数部分

RET

;*****************************************************************

;程序名称:

ZHUANHUAN

;功能:

将R6R7中的二进制数转换为BCD的形式

;入口参数:

R6R7

;出口参数:

R4R5R6R7

;*****************************************************************

ZHUANHUAN:

MOVA,R6;开始处理整数部分

MOVB,#100

DIVAB

MOVR4,A;存百位

MOVA,B

MOVB,#10

DIVAB

MOVR5,A;存十位

MOVR6,B;存个位

MOVA,R7;开始处理小数部分地

MOVB,#5

MULAB

MOVB,#10

DIVAB

MOV40H,A;存进位

MOVA,R7

MOVB,#2

MULAB

ADDA,40H

MOVB,#10

DIVAB

MOV40H,A;存进位

MOVA,R7

MOVB,#6

MULAB

ADDA,40H

MOVB,#10

DIVAB

MOVR7,A;暂存小数最高位

MOVA,B

CLRC

SUBBA,#5

JCZHUANHUAN1

INCR7

ZHUANHUAN1:

RET

;************************************************************

;程序名称:

JIANTIAO

;功能:

扫描键盘

;入口参数:

R5R6R7

;出口参数:

30H,31H,32H

;************************************************************

JIANTIAO:

P1.7,QUIT;如果有Enter键入,则开始键盘输入

LCALLDELAY

P1.7,QUIT

CLR21H.1;每次进来都赋值输入标志,设置为0

MOV30H,R5;以当前所测温度为基准,进行加减

MOV31H,R6

MOV32H,R7

LOOP:

21H.1,QUIT;如果输入完成,20H.1则为1,退出键盘程序

P1.7,JIA

LCALLDIFINE

JIA:

P1.5,JIAN

LCALLJIAYI

JIAN:

P1.6,XIANSHI

LCALLJIANYI

XIANSHI:

LCALLQINGLING

LCALLSHUCHU

SJMPLOOP

QUIT:

RET

;**********************************************************

;程序名称:

DIFINE

;功能:

确认键盘输入和退出键盘输入

;入口参数:

ENTER_FLAG

;出口参数:

ENTER_FLAG

;**********************************************************

DIFINE:

LCALLDELAY

P1.7,LOOP;按键抖动处理

SETB21H.1

LCALLDELAY

RET

;*****************************************************************

;程序名称:

JIAYI

;功能:

数值上调处理

;入口参数:

30H,31H,32H

;出口参数:

R5R6R7

;*****************************************************************

JIAYI:

LCALLDELAY

P1.5,LOOP

INC32H;小数位加1

MOVA,32H

CJNEA,#0AH,JIANEXT;小数位增加到10,回0

MOV32H,#00H

INC31H;个位进1

MOVA,31H

CJNEA,#0AH,JIANEXT

MOV31H,#00H

INC30H;十位进1

MOVA,30H

CJNEA,#0AH,JIANEXT;十位超过99.9,溢出了

MOVR0,#200

CUOWU1:

LCALLCUOWU;出错,显示8888

DJNZR0,CUOWU1

DEC30H;退回99.9

MOV31H,#09H

MOV32H,#09H

JIANEXT:

MOVR5,30H

MOVR6,31H

MOVR7,32H

LCALLDELAY

RET

;*****************************************************************

;程序名称:

JIANYI

;功能:

数值下调处理

;入口参数:

30H,31H,32H

;出口参数:

R5R6R7

;*****************************************************************

JIANYI:

LCALLDELAY

P1.6,LOOP;按键抖动处理

DEC32H;小数位减一

MOVA,32H

CJNEA,#0FFH,JIANNEXT;小数位减到0,回到9

MOV32H,#09H

DEC31H;个位减一

MOVA,31H

CJNEA,#0FFH,JIANNEXT;个位减到0,回到9

MOV31H,#09H

DEC30H;十位减一

MOVA,30H

CJNEA,#0FFH,JIANNEXT;十位低于0,溢出了

MOVR0,#200

CUOWU2:

LCALLCUOWU;出错,显示8888

DJNZR0,CUOWU2

INC30H

MOV31H,#00H;退回00.0

MOV32H,#00H

JIANNEXT:

MOVR5,30H

MOVR6,31H

MOVR7,32H

LCALLDELAY

RET

DELAY:

MOVR0,#250;延时程序

LOOP1:

MOVR1,#100

DJNZR1,$

DJNZR0,LOOP1

RET

;*****************************************************************

;程序名称:

BAOJING

;功能:

报警控制

;入口参数:

;出口参数:

;*****************************************************************

BAOJING:

MOVA,30H;三个Buffer都是0的话,说明还没有输入数值,直接退出

JNZBIJIAO

MOVA,31H

JNZBIJIAO

MOVA,32H

JZSQUIT

BIJIAO:

MOVA,30H

CLRC;置C为0

SUBBA,R5

JNZGUODU;十位不等转移

MOVA,31H

SUBBA,R6

JNZGUODU;个位不等转移

MOVA,32H

SUBBA,R7

JNZGUODU;小数位不等转移

RET

GUODU:

CLRP2.4

JCMINGJIAO;当前所测温度大于设置的温度,则鸣叫

RET

MINGJIAO:

LCALLCUOWU

LJMPJIANTIAO

SQUIT:

RET

;*****************************************************************

;程序名称:

CUOWU

;功能:

程序出错处理,显示四个8,即8888

;入口参数:

;出口参数:

R4R5R6R7

;*****************************************************************

CUOWU:

SETBP2.4

MOVR4,#08H

MOVR5,#08H

MOVR6,#08H

MOVR7,#08H

LCALLQINGLING

LCALLSHUCHU

RET

;*****************************************************************

;程序名称:

QINGLING

;功能:

将R4R5R6R7转换为满足输出的类型

;输入参数:

R4R5R6R7

;输出参数:

R4R5R6R7

;*****************************************************************

QINGLING:

MOVDPTR,#TABLE;指向表首

MOVA,R4;转换为表格中的数据

MOVCA,A+DPTR

MOV35H,A

MOVA,R5

MOVCA,A+DPTR

MOV36H,A

MOVA,R6

MOVCA,A+DPTR

MOV37H,A

MOVA,R7

MOVCA,A+DPTR

MOV38H,A

INC37H;小数点

MOVA,35H

CJNEA,#0FCH,ANDY2;高位清零

MOV35H,#00H

MOVA,36H

CJNEA,#0FCH,ANDY2

MOV36H,#00H

ANDY2:

F0,ANDY3;判断是否为负数加符号

SJMPANDY;如果为正数则不加符号

ANDY3:

MOVA,35H

CJNEA,#00H,ANDY;最高位是否为零

MOVA,36H

CJNEA,#00H,IVERSON;中位是否为零

MOV36H,#02H;R5用来显示符号

SJMPANDY

IVERSON:

MOV35H,#02H;R4用来显示符号

ANDY:

RET

TABLE:

DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H

;*****************************************************************

;程序名称:

SHUCHU

;功能:

显示数据到数码管中。

;入口参数:

R4R5R6R7

;出口参数:

;*****************************************************************

SHUCHU:

MOVR4,35H

MOVR5,36H

MOVR6,37H

MOVR7,38H

MOVR0,#07H;分别对应四个字

LOOP2:

MOVR1,#08H;每个字八位

MOVA,R0

LOOP3:

RRCA

CLRP1.1

MOVP1.0,C

SETBP1.1

DJNZR1,LOOP3

DECR0

CJNER0,#03H,LOOP2

RET

;*********************************************************

END

 

六、设计总结

通过这次设计,对本专业的认识也更加深入,在设计的过程中,有很多的感悟的体验心得,而且对工程设计的流程和步骤有了清晰地认识,为自己日后的学习和研究打下了坚实的基础。

测温系统需要很多种程序,例如键盘扫描及按键处理程序、温度信号处理程序、数码管显示程序等,只有将程序流程图完整清晰的写下来,才能使思路流畅,这样才能更加系统、有条理的编写程序。

七、参考文献

[1]高峰.单片微型计算机原理与接口技术.科学,2007

[2]飞.单片机原理及其应用.电子科技大学,2007

[3]毅刚.MCS-51单片机原理及应用.工业大学,2004

[4]玉峰.MCS-51系列单片机原理与接口技术.人民邮电,2004

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2