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

上传人:doc321 文档编号:12779096 上传时间:2021-12-06 格式:DOC 页数:19 大小:815KB
返回 下载 相关 举报
基于单片机的温检测系统设计.doc_第1页
第1页 / 共19页
基于单片机的温检测系统设计.doc_第2页
第2页 / 共19页
基于单片机的温检测系统设计.doc_第3页
第3页 / 共19页
基于单片机的温检测系统设计.doc_第4页
第4页 / 共19页
基于单片机的温检测系统设计.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

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

1、基于单片机的温检测系统设计 作者: 日期:2 个人收集整理 勿做商业用途2009级信息系统综合设计信息系统综合设计报告书课题名称基于单片机的温度检测系统设计姓 名学 号院、系、部电气工程系专 业电子信息工程指导教师2013年1月7日基于单片机的温度检测系统设计一、设计目的1、了解测温系统中工作元件的工作原理; 2、掌握数码管显示程序、键盘扫描及按键处理程序、温度信号处理程序、超温报警程序的编写. 二、 设计要求1. 测量通道:2路可循环显示,并有通道标志2。 温度传感器选用DS18B203。 具有温度等信息的显示,具有温度上下限设置功能,越限时可以进行报警给出电路原理图设计,protel印刷电

2、路图设计三、 硬件电路设计3。1系统结构框图 AT89S518BIT CPU键盘电路DS18B20 温度芯片数据传输数据显示超温报警输入电源PC机继电器1 N继电器2压缩制冷器加热器 图1 系统结构框图3.2 单片机介绍 图2 单片机引脚图P0口作为I/O口使用时为准双向口。P1口是自带上拉电阻的I/O口,是一个准双向口。在输入操作时需要先置 1。P1口特点是输出锁存器,输出时没有条件。输入缓冲,输入时有条件,即需要先将该口设为输入状态,先输出1。 P3口为准双向口。可以字节访问,也可以位访问.P3。0-RXD,串行输入口。P3.1-TXD,串行输出口。P3。2-INT0,外部中断0的请求.P

3、3。3-INT1,外部中断1的请求。P3.4-T0,定时器/计数器0外部计数脉冲.P3.5-T1,定时器/计数器,1外部计数脉冲。P3.6-WR,外部数据存储器写选通。P3。7-RD,外部数据存储器读选通。3.3数码管显示电路 图3 数码管显示电路3。4 LED显示电路 图4 LED显示电路3。5串口显示电路图5 通讯接口电路3.6系统电路原理图图6 电路原理图1、所需元器件 单片机AT89S521芯片(1个)、A/D转换机(1个)、温度传感器DS18B20(1个)、电阻:10K(2个)、电容:1000F(1个)、1uF(4个)、25uF(1个)数码管(3个)、按钮(4个)、晶振(6MHZ)2

4、、实现的功能 该电路要实现的功能为,实时检测外界温度,将该温度值转换为数字量,然后通过四位的数码管显示。其中外界温度用温度传感器 DS18B20感应,然后通过ADC0809转换为数字量后,通过单片机的P1口送到单片机内部存储单元.之后将该温度值转换为十进制后,将个十百位分别通过P1口送出,然后经74HC573的锁存,输出段码,之后通过P1口送出位码,经另一片74HC573锁存后驱动相应的数码管显示。四、 程序流程图设计开始初始化调用温度采集模块调用温度整数小数分离处理模块调用温度计算成BCD码模块调用温度转换输出类型模块调用键盘扫描模块调用报警模块调用温度输出数码管模块图7 程序流程图五、程序

5、设计ORG 0000HAJMP MAINORG 0030HMAIN:MOV SP,#60H SETB P2.4 MOV 30H,0 MOV 31H,#0 MOV 32H,0 MAIN1:LCALL GET_TEMP ;采集温度 LCALL SEPERATE ;对采集后的温度数据进行处理 LCALL ZHUANHUAN ;二进制数转换为BCD的形式 LCALL QINGLING ;转换为满足输出的类型 LCALL JIANTIAO ;扫描键盘模块 LCALL BAOJING ;报警设置模块 LCALL SHUCHU ;显示数据到数码管 SJMP MAIN1;*GET_TEMP: CLR EA ;

6、使用DS18B20一定要禁止任何中断产生 LCALL INT ;调用初使化子程序 MOV A,0CCH ; LCALL WRITE ;送入跳过ROM命令 MOV A,44H LCALL WRITE ;送入温度转换命令 LCALL INT ;温度转换完全,再次初使化DS18B20 MOV A,#0CCH LCALL WRITE ;送入跳过ROM命令 MOV A,0BEH LCALL WRITE ;送入读温度暂存器命令 LCALL READ MOV R7,A ;读出温度值低字节存入R7 LCALL READ MOV R6,A ;读出温度值高字节存入R6 SETB EA RET;*INT: ;初始化

7、DS18B20子程序 CLR EAL0:CLR P2.1 ;复位 MOV R2,149L1:DJNZ R2,L1 ;596US SETB P2。1 ;释放DS18B20总线 MOV R2,15 ;4USL2:DJNZ R2,L2 ;60US CLR C ;2US,清DS18B20存在信号 MOV C,P2.1 ;取DS18B20存在信号 JC L0 ;判断DS18B20存在吗?不存在则重新来 MOV R2,125 ;存在则拉高 SETB P2.1L3:DJNZ R2,L3 ;共500US RET;*WRITE: MOV R1,08H ;设置写位个数 WLOP:RRC A ;把写的位放到C AC

8、ALL WRBIT ;调写1位子程序 DJNZ R1,WLOP ;8位全写完? RET WRBIT: MOV R2,14 ;设置时间常数 CLR P2.1 ;写开始 NOP ;2US MOV P2.1,C ;C内容存到总线 WDLT:DJNZ R2,WDLT ;56US SETB P2.1 ;释放总线 RET;*READ: MOV R1,#8H ;设置读位数 RLOP:ACALL RDBIT ;调读1位子程序 RRC A ;把读到的位在C中的依次送给A DJNZ R1,RLOP ;8位读完? RET RDBIT: MOV R2,13 ;设置时间常数 CLR P2.1 NOP ;2US SETB

9、 P2。1 ;释放总线 NOP ;2US MOV C,P2。1 ;把总线上的内容读到C RDDLT: DJNZ R2,RDDLT ;等待52US SETB P2。1 RET;*;程序名称:SEPERATE;功能:处理采集后的的数据,把小数部分分开,R6放整数R7放小数,F0放符号位;入口参数: R6,R7;出口参数: R6 R7 F0;*SEPERATE: MOV A,R6 MOV C,ACC。7 MOV F0,C ;符号位 JC SEPERATE1 SJMP SEPERATE2SEPERATE1:MOV A,R6 CPL A MOV R6,A MOV A,R7 CPL A CLR C INC

10、 A MOV R7,A MOV A,R6 ADDC A,#00H MOV R6,A SEPERATE2:MOV 40H,R7 ANL 40H,0FH ;小数部分 MOV R0,12 ;移12次 SEPERATE3:MOV A,R6 RRC A MOV R6,A MOV A,R7 RRC A MOV R7,A MOV A,41H RRC A MOV 41H,A ;整数部分 DJNZ R0,SEPERATE3 MOV R6,41H ;存整数部分 MOV R7,40H ;存小数部分 RET;*;程序名称:ZHUANHUAN;功能:将R6R7中的二进制数转换为BCD的形式;入口参数:R6R7;出口参数

11、:R4R5R6R7;*ZHUANHUAN: MOV A,R6 ;开始处理整数部分 MOV B,100 DIV AB MOV R4,A ;存百位 MOV A,B MOV B,10 DIV AB MOV R5,A ;存十位 MOV R6,B ;存个位 MOV A,R7 ;开始处理小数部分地 MOV B,#5 MUL AB MOV B,10 DIV AB MOV 40H,A ;存进位 MOV A,R7 MOV B,2 MUL AB ADD A,40H MOV B,#10 DIV AB MOV 40H,A ;存进位 MOV A,R7 MOV B,6 MUL AB ADD A,40H MOV B,10

12、DIV AB MOV R7,A ;暂存小数最高位 MOV A,B CLR C SUBB A,#5 JC ZHUANHUAN1 INC R7 ZHUANHUAN1:RET;*;程序名称:JIANTIAO;功能:扫描键盘;入口参数:R5R6R7;出口参数:30H,31H,32H;*JIANTIAO: JB P1。7,QUIT ; 如果有Enter键入,则开始键盘输入 LCALL DELAY JB P1。7,QUIT CLR 21H.1 ; 每次进来都赋值输入标志,设置为0 MOV 30H, R5 ;以当前所测温度为基准,进行加减 MOV 31H, R6 MOV 32H, R7LOOP: JB 21

13、H。1,QUIT ;如果输入完成,20H.1则为1,退出键盘程序 JB P1.7,JIA LCALL DIFINEJIA: JB P1.5,JIAN LCALL JIAYIJIAN: JB P1.6,XIANSHI LCALL JIANYIXIANSHI:LCALL QINGLING LCALL SHUCHU SJMP LOOPQUIT:RET;*;程序名称:DIFINE;功能:确认键盘输入和退出键盘输入;入口参数:ENTER_FLAG;出口参数:ENTER_FLAG;*DIFINE: LCALL DELAY JB P1.7,LOOP ;按键抖动处理 SETB 21H。1 LCALL DELA

14、Y RET;*;程序名称:JIAYI;功能:数值上调处理;入口参数: 30H,31H,32H;出口参数:R5R6R7;*JIAYI: LCALL DELAY JB P1。5,LOOP INC 32H ;小数位加1 MOV A,32H CJNE A,#0AH,JIANEXT ;小数位增加到10,回0 MOV 32H,#00H INC 31H ;个位进1 MOV A,31H CJNE A,#0AH,JIANEXT MOV 31H,#00H INC 30H ;十位进1 MOV A,30H CJNE A,#0AH,JIANEXT ;十位超过99.9,溢出了 MOV R0,#200CUOWU1:LCAL

15、L CUOWU ;出错,显示8888DJNZ R0,CUOWU1 DEC 30H ;退回99。9 MOV 31H,#09H MOV 32H,#09HJIANEXT: MOV R5,30H MOV R6,31H MOV R7,32H LCALL DELAY RET;*;程序名称:JIANYI;功能:数值下调处理;入口参数: 30H,31H,32H;出口参数:R5R6R7;*JIANYI: LCALL DELAY JB P1。6,LOOP ;按键抖动处理 DEC 32H ;小数位减一 MOV A,32H CJNE A,0FFH,JIANNEXT ;小数位减到0,回到9 MOV 32H,#09H D

16、EC 31H ;个位减一 MOV A,31H CJNE A,0FFH,JIANNEXT ;个位减到0,回到9 MOV 31H,#09H DEC 30H ;十位减一 MOV A,30H CJNE A,#0FFH,JIANNEXT ;十位低于0,溢出了 MOV R0,200CUOWU2:LCALL CUOWU ;出错,显示8888 DJNZ R0,CUOWU2 INC 30H MOV 31H,00H ;退回00。0MOV 32H,#00HJIANNEXT: MOV R5,30H MOV R6,31H MOV R7,32H LCALL DELAY RETDELAY: MOV R0,#250 ;延时程

17、序LOOP1: MOV R1,100 DJNZ R1,$ DJNZ R0,LOOP1 RET;*;程序名称:BAOJING;功能:报警控制;入口参数:;出口参数:;*BAOJING: MOV A,30H ;三个Buffer都是0的话,说明还没有输入数值,直接退出 JNZ BIJIAO MOV A,31H JNZ BIJIAO MOV A,32H JZ SQUIT BIJIAO: MOV A,30H CLR C ;置C为0 SUBB A,R5 JNZ GUODU ;十位不等转移 MOV A,31H SUBB A,R6 JNZ GUODU ;个位不等转移 MOV A,32H SUBB A,R7 J

18、NZ GUODU ;小数位不等转移 RETGUODU:CLR P2。4 JC MINGJIAO ;当前所测温度大于设置的温度,则鸣叫 RET MINGJIAO:LCALL CUOWU LJMP JIANTIAOSQUIT:RET;*;程序名称:CUOWU;功能:程序出错处理,显示四个8,即8888;入口参数:无;出口参数:R4R5R6R7;*CUOWU: SETB P2。4 MOV R4,08H MOV R5,#08H MOV R6,08H MOV R7,08H LCALL QINGLING LCALL SHUCHU RET;*;程序名称:QINGLING;功能:将R4R5R6R7转换为满足输

19、出的类型;输入参数:R4R5R6R7;输出参数:R4R5R6R7;*QINGLING: MOV DPTR,TABLE ;指向表首 MOV A,R4 ;转换为表格中的数据 MOVC A,A+DPTR MOV 35H,A MOV A,R5 MOVC A,A+DPTR MOV 36H,A MOV A,R6 MOVC A,A+DPTR MOV 37H,A MOV A,R7 MOVC A,A+DPTR MOV 38H,A INC 37H ;小数点 MOV A,35H CJNE A,#0FCH,ANDY2 ;高位清零 MOV 35H,00H MOV A,36H CJNE A,0FCH,ANDY2 MOV

20、36H,00H ANDY2: JB F0,ANDY3 ;判断是否为负数加符号 SJMP ANDY ;如果为正数则不加符号 ANDY3: MOV A,35HCJNE A,00H,ANDY ;最高位是否为零MOV A,36H CJNE A,#00H,IVERSON ;中位是否为零 MOV 36H,#02H ;R5用来显示符号 SJMP ANDY IVERSON: MOV 35H,#02H ;R4用来显示符号 ANDY: RET TABLE:DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H;*;程序名称:SHUCHU;功能:显示数据到数码管中.;入

21、口参数:R4R5R6R7;出口参数:无;*SHUCHU: MOV R4,35H MOV R5,36H MOV R6,37H MOV R7,38HMOV R0,07H ;分别对应四个字 LOOP2:MOV R1,08H ;每个字八位 MOV A,R0 LOOP3: RRC A CLR P1。1 MOV P1.0,C SETB P1.1 DJNZ R1,LOOP3 DEC R0 CJNE R0,#03H,LOOP2 RET;* END六、设计总结通过这次设计,对本专业的认识也更加深入,在设计的过程中,有很多的感悟的体验心得,而且对工程设计的流程和步骤有了清晰地认识,为自己日后的学习和研究打下了坚实的基础。测温系统需要很多种程序,例如键盘扫描及按键处理程序、温度信号处理程序、数码管显示程序等,只有将程序流程图完整清晰的写下来,才能使思路流畅,这样才能更加系统、有条理的编写程序.七、参考文献1 高峰。单片微型计算机原理与接口技术.科学出版社,20072 李飞.单片机原理及其应用。西安电子科技大学出版社,20073 张毅刚。MCS-51单片机原理及应用。哈尔滨工业大学出版社,20044 李玉峰。MCS51系列单片机原理与接口技术.北京人民邮电出版社,2004

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1