陈月龙6465基于单片机的温度检测系统设计.docx
- 文档编号:2465701
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:22
- 大小:76.66KB
陈月龙6465基于单片机的温度检测系统设计.docx
《陈月龙6465基于单片机的温度检测系统设计.docx》由会员分享,可在线阅读,更多相关《陈月龙6465基于单片机的温度检测系统设计.docx(22页珍藏版)》请在冰点文库上搜索。
陈月龙6465基于单片机的温度检测系统设计
信息系统综合设计报告书
课题名称
基于单片机的温度检测系统设计
姓名
陈月龙
学号
20096465
院、系、部
电气工程系
专业
电子信息工程
指导教师
刘鑫淼康朝红
2013年1月7日
基于单片机的温度检测系统设计
20096465陈月龙
一、设计目的
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:
JBP1.7,QUIT;如果有Enter键入,则开始键盘输入
LCALLDELAY
JBP1.7,QUIT
CLR21H.1;每次进来都赋值输入标志,设置为0
MOV30H,R5;以当前所测温度为基准,进行加减
MOV31H,R6
MOV32H,R7
LOOP:
JB21H.1,QUIT;如果输入完成,20H.1则为1,退出键盘程序
JBP1.7,JIA
LCALLDIFINE
JIA:
JBP1.5,JIAN
LCALLJIAYI
JIAN:
JBP1.6,XIANSHI
LCALLJIANYI
XIANSHI:
LCALLQINGLING
LCALLSHUCHU
SJMPLOOP
QUIT:
RET
;**********************************************************
;程序名称:
DIFINE
;功能:
确认键盘输入和退出键盘输入
;入口参数:
ENTER_FLAG
;出口参数:
ENTER_FLAG
;**********************************************************
DIFINE:
LCALLDELAY
JBP1.7,LOOP;按键抖动处理
SETB21H.1
LCALLDELAY
RET
;*****************************************************************
;程序名称:
JIAYI
;功能:
数值上调处理
;入口参数:
30H,31H,32H
;出口参数:
R5R6R7
;*****************************************************************
JIAYI:
LCALLDELAY
JBP1.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
JBP1.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:
JBF0,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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 陈月龙 6465 基于 单片机 温度 检测 系统 设计