基于单片机的温度检测系统设计Word格式文档下载.docx
- 文档编号:18011708
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:18
- 大小:77.58KB
基于单片机的温度检测系统设计Word格式文档下载.docx
《基于单片机的温度检测系统设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的温度检测系统设计Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
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锁存后驱动相应的数码管显示。
四、程序流程图设计
开始
初始化
调用温度采集模块
调用温度整数小数分离处理模块
调用温度计算成BCD码模块
调用温度转换输出类型模块
调用键盘扫描模块
调用报警模块
调用温度输出数码管模块
图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
送入温度转换命令
温度转换完全,再次初使化DS18B20
MOVA,#0CCH
MOVA,#0BEH
送入读温度暂存器命令
LCALLREAD
MOVR7,A;
读出温度值低字节存入R7
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
WRITE:
MOVR1,#08H;
设置写位个数
WLOP:
RRCA;
把写的位放到C
ACALLWRBIT;
调写1位子程序
DJNZR1,WLOP;
8位全写完?
WRBIT:
MOVR2,#14;
设置时间常数
CLRP2.1;
写开始
NOP;
2US
MOVP2.1,C;
C内容存到总线
WDLT:
DJNZR2,WDLT;
56US
释放总线
READ:
MOVR1,#8H;
设置读位数
RLOP:
ACALLRDBIT;
调读1位子程序
RRCA;
把读到的位在C中的依次送给A
DJNZR1,RLOP;
8位读完?
RDBIT:
MOVR2,#13;
CLRP2.1
把总线上的内容读到C
RDDLT:
DJNZR2,RDDLT;
等待52US
*****************************************************************
程序名称:
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
CLRC
INCA
MOVR7,A
ADDCA,#00H
SEPERATE2:
MOV40H,R7
ANL40H,#0FH;
小数部分
MOVR0,#12;
移12次
SEPERATE3:
RRCA
MOVA,41H
MOV41H,A;
整数部分
DJNZR0,SEPERATE3
MOVR6,41H;
存整数部分
MOVR7,40H;
存小数部分
程序名称:
ZHUANHUAN
功能:
将R6R7中的二进制数转换为BCD的形式
入口参数:
R6R7
出口参数:
R4R5R6R7
ZHUANHUAN:
MOVA,R6;
开始处理整数部分
MOVB,#100
DIVAB
MOVR4,A;
存百位
MOVA,B
MOVB,#10
MOVR5,A;
存十位
MOVR6,B;
存个位
MOVA,R7;
开始处理小数部分地
MOVB,#5
MULAB
MOV40H,A;
存进位
MOVB,#2
ADDA,40H
MOVB,#6
暂存小数最高位
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:
**********************************************************
DIFINE
确认键盘输入和退出键盘输入
ENTER_FLAG
DIFINE:
JBP1.7,LOOP;
按键抖动处理
SETB21H.1
JIAYI
数值上调处理
30H,31H,32H
JIAYI:
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
十位超过99.9,溢出了
MOVR0,#200
CUOWU1:
LCALLCUOWU;
出错,显示8888
DJNZR0,CUOWU1
DEC30H;
退回99.9
MOV31H,#09H
MOV32H,#09H
JIANEXT:
MOVR5,30H
MOVR6,31H
MOVR7,32H
JIANYI
数值下调处理
JIANYI:
JBP1.6,LOOP;
DEC32H;
小数位减一
MOVA,32H
CJNEA,#0FFH,JIANNEXT;
小数位减到0,回到9
DEC31H;
个位减一
个位减到0,回到9
十位减一
十位低于0,溢出了
CUOWU2:
DJNZR0,CUOWU2
INC30H
MOV31H,#00H;
退回00.0
MOV32H,#00H
JIANNEXT:
DELAY:
MOVR0,#250;
延时程序
LOOP1:
MOVR1,#100
DJNZR1,$
DJNZR0,LOOP1
BAOJING
报警控制
BAOJING:
MOVA,30H;
三个Buffer都是0的话,说明还没有输入数值,直接退出
JNZBIJIAO
JZSQUIT
BIJIAO:
置C为0
SUBBA,R5
JNZGUODU;
十位不等转移
SUBBA,R6
个位不等转移
SUBBA,R7
小数位不等转移
GUODU:
CLRP2.4
JCMINGJIAO;
当前所测温度大于设置的温度,则鸣叫
MINGJIAO:
LCALLCUOWU
LJMPJIANTIAO
SQUIT:
CUOWU
程序出错处理,显示四个8,即8888
无
CUOWU:
MOVR4,#08H
MOVR5,#08H
MOVR6,#08H
MOVR7,#08H
LCALLQINGLING
QINGLING
将R4R5R6R7转换为满足输出的类型
输入参数:
输出参数:
QINGLING:
MOVDPTR,#TABLE;
指向表首
MOVA,R4;
转换为表格中的数据
MOVCA,@A+DPTR
MOV35H,A
MOVA,R5
MOV36H,A
MOV37H,A
MOV38H,A
INC37H;
小数点
MOVA,35H
CJNEA,#0FCH,ANDY2;
高位清零
MOV35H,#00H
MOVA,36H
CJNEA,#0FCH,ANDY2
MOV36H,#00H
ANDY2:
JBF0,ANDY3;
判断是否为负数加符号
SJMPANDY;
如果为正数则不加符号
ANDY3:
CJNEA,#00H,ANDY;
最高位是否为零
MOVA,36H
CJNEA,#00H,IVERSON;
中位是否为零
MOV36H,#02H;
R5用来显示符号
SJMPANDY
IVERSON:
MOV35H,#02H;
R4用来显示符号
ANDY:
TABLE:
DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H
SHUCHU
显示数据到数码管中。
SHUCHU:
MOVR4,35H
MOVR5,36H
MOVR6,37H
MOVR7,38H
MOVR0,#07H;
分别对应四个字
LOOP2:
MOVR1,#08H;
每个字八位
MOVA,@R0
LOOP3:
CLRP1.1
MOVP1.0,C
SETBP1.1
DJNZR1,LOOP3
DECR0
CJNER0,#03H,LOOP2
*********************************************************
END
六、设计总结
通过这次设计,对本专业的认识也更加深入,在设计的过程中,有很多的感悟的体验心得,而且对工程设计的流程和步骤有了清晰地认识,为自己日后的学习和研究打下了坚实的基础。
测温系统需要很多种程序,例如键盘扫描及按键处理程序、温度信号处理程序、数码管显示程序等,只有将程序流程图完整清晰的写下来,才能使思路流畅,这样才能更加系统、有条理的编写程序。
七、参考文献
[1]高峰.单片微型计算机原理与接口技术.科学出版社,2007
[2]李飞.单片机原理及其应用.西安电子科技大学出版社,2007
[3]张毅刚.MCS-51单片机原理及应用.哈尔滨工业大学出版社,2004
[4]李玉峰.MCS-51系列单片机原理与接口技术.北京人民邮电出版社,2004
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 温度 检测 系统 设计