基于18B20的单片机课程设计报告(含汇编程序)
更新时间:2023-07-27 18:01:01 阅读量: 实用文档 文档下载
- 51单片机课程设计报告推荐度:
- 相关推荐
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
电子温度计(基于18B20)课程设计报告
可以实现:
数码管能够显示当前的温度值(两位小数); 能够通过按键设定报警温度;
温度上限或下限时能够通过蜂鸣器报警,警线可设; 开式,华氏,摄氏温标的转化。
实验要求(略)
一.设计目的
通过课程设计使学生达到以下能力训练:调查研究、分析问题的能力;查阅中外文献的能力;计算机软件应用的能力;设计计算和绘图的能力;语言文字表达的能力。对软件的灵活运用,适时开发并创新的能力。
二、设计内容
利用数字温度传感器DS18B20设计一个电子温度计,通过数码管来实时显示测得的温度值。
基本要求: ⑴、设计实验电路 ⑵、分析实验原理 ⑶、列出实验接线表
⑷、采用汇编语言编写实验程序 ⑸、通过实验验证功能的实现 ⑹、编写课程设计说明书 三、设计方案
在单片机电路设计中,大多都是使用传感器,所以可以采用一只温度传感器
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
预计功能:(从主界面开始)
1.按下键1,可显示当前温度(整数部分),和温度上限设定值;
并且在3秒的有效时间内可用键2减小设定温度上限,键3可增加上限值。最后一次按下按键后3秒自动返回主显示界面。
2. 按下键3,可显示当前温度(整数部分),和温度下限设定值;
并且在3秒的有效时间内可用键1减小设定温度上限,键2可增加上限值。最后一次按下按键后3秒自动返回主显示界面。
3.按下键2,可实现开式,华氏,摄氏温标的循环转换。
4.温度小于下限温度警线,或是温度高于上限警线时,产生声光报警。
四、设计框图
温度计电路设计总体设计框图如图1所示,控制器采用单片机AT89S51,温度传感器采用DS18B20,用八位LED数码管以并口传送数据实现温度显示。
图1总体设计框图
五、显示电路
显示电路采用两个4位共阳LED数码管,从P1口RXD,TXD串口输出段码。
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
温度传感器设计
DS18B20是1-wire器件,1-wire单总线是Maxim全资子公司Dallas的一项专有技术,与目前多数标准串行数据通信方式,如SPI/I2C/MICROWIRE不同,它采用单根信号线,既传输时钟,又传输数据,而且数据传输是双向的。它具有节省I/O口线资源,结构简单,成本低廉,便于总线扩展和维护等诸多优点。
DS18B20的性能特点如下:
●独特的单线接口仅需要一个端口引脚进行通信;
●多个DS18B20可以并联在惟一的三线上,实现多点组网功能; ●无须外部器件;
●可通过数据线供电,电压范围为3.0~5.5V; ●零待机功耗;
●温度以9或12位数字; ●用户可定义报警设置;
●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; ●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;
DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图2所示。
图2 DS18B20内部结构
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
表2 一部分温度对应值表
另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。
分别说明如下:
1、初始化 单总线的所有处理均从初始化开始。初始化过程是主机通过向作为从机的DS18B20芯片发一个有时间宽度要求的初始化脉冲实现的。初始化后,才可进行读写操作。
2 、ROM操作命令 总线主机检测到DS18B20的存在 便可以发出ROM操作命令之一 这些命令表3:
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
3、存储器操作 命令如表4:
表4 存储器操作命令
六.调试结果:
四个预计功能全部实现,且实现了两位小数显示。
主程序流程图:
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
DS18B20复位子程序 度温度值子程序
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
度温度值子程序
写DS18B20命令子程序
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
外部中断口
显示上限温度
2\3 键是否按下?
获得键值
调用一次显示
是否放开?
按键子程
计数 210 次则 返回
RETI
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
电子温度计汇编程序代码(经过STC89C52上电验证)
子程序清单:
1. 2. 3. 获得原码子程序 温度数据转化子程序
中断子程序(温度上限子程序) 4. 获得显示段码子程序 5. 显示子程序
6. 18b20初始化子程序 7. 18b20读取子程序 8. 18b20写入子程序 9.
温度下限子程序
DQ BIT P2.3 FLAG1 BIT 00H SIGN BIT 01H F_SIGN BIT 02H MSB EQU 30H LSB EQU 31H INTEG EQU 32H DECIM EQU 33H SEG_S EQU 34H SEG_I3 EQU 35H SEG_I2 EQU 36H SEG_I1 EQU 37H SEG_D1 EQU 38H SEG_D2 EQU 39H SEG_O EQU 3AH SEG_C EQU 3BH LOCAT EQU 3CH T_ALARM EQU 3DH L_ALARM EQU 3EH ALARM3 EQU 41H ALARM2 EQU 42H ALARM1 EQU 43H CURERNT3 EQU 45H CURERNT2 EQU 46H CURERNT1 EQU 47H
ORG 0000H AJMP MAIN
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
ORG 000BH LJMP IT0P
ORG 0060H
MAIN: MOV SP,#77H
SETB IT0 SETB EX0
MOV DPTR,#TABLE MOV R0,#38H MOV R1,#30H CLEAR: MOV @R1,#00H INC R1
DJNZ R0,CLEAR
MOV 60H,#50H MOV 61H,#63H MOV LOCAT,#34H MOV T_ALARM,#30 MOV L_ALARM,#18 MOV INTEG,#25
LOOP: CLR EA LCALL INIT_1820 LCALL GET_TEMPER LCALL DATA_PROC
JNB P3.1,F_EN AJMP F_NOT F_EN: LCALL DISPLAY JNB P3.1,F_EN MOV A,LOCAT XCH A,60H XCH A,61H MOV LOCAT,A
F_NOT: CLR C CLR EA
MOV A,L_ALARM CJNE A,INTEG,NEXTP LJMP NEXT2 NEXTP: JNC LALARM SETB P2.4
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
LJMP NEXT2 LALARM: CLR P2.4 AJMP SAFE NEXT2: CLR C
MOV A,T_ALARM CJNE A,INTEG,NEXT AJMP ALARM NEXT: JC ALARM SETB P2.4 AJMP SAFE ALARM: CLR P2.4
SAFE: JB P3.0 ,KILL LCALL L_TEMP KILL: SETB EA
LCALL SEG_GEN LCALL DISPLAY AJMP LOOP
;*********************************** ; 上限温度报警程序(外部中断0) ; 显示40H-47H 内容
;***********************************
IT0P: PUSH LOCAT PUSH ACC PUSH PSW PUSH 00H
MOV CURERNT3,SEG_I3 MOV CURERNT2,SEG_I2 MOV CURERNT1,SEG_I1 MOV R0,#210 START: MOV B,#100 MOV A,T_ALARM DIV AB
MOVC A,@A+DPTR MOV ALARM3,A MOV A,B MOV B,#10 DIV AB
MOVC A,@A+DPTR MOV ALARM2,A
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
MOV A,B
MOVC A,@A+DPTR MOV ALARM1,A MOV LOCAT,#40H LCALL DISPLAY JNB P3.0,FUN1 JNB P3.1,FUN2 DJNZ R0,START POP 00H POP PSW POP ACC POP LOCAT RETI
FUN1: MOV R0,#210 ;等待3秒无键按下则返回主程序 INC T_ALARM STAY1: LCALL DISPLAY ;判断按键放开 JNB P3.0,STAY1 LJMP START FUN2: MOV R0,#210 DEC T_ALARM STAY2: LCALL DISPLAY JNB P3.1,STAY2 LJMP START RETI
;*************************** ; 下限温度报警程序
;*************************** L_TEMP:
WAITL: LCALL DISPLAY JNB P3.0,WAITL PUSH LOCAT
MOV CURERNT3,SEG_I3 MOV CURERNT2,SEG_I2 MOV CURERNT1,SEG_I1 MOV R0,#210 MOV LOCAT,#40H STARTL:MOV B,#100 MOV A,L_ALARM DIV AB
MOVC A,@A+DPTR MOV ALARM3,A MOV A,B MOV B,#10 DIV AB
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
MOVC A,@A+DPTR MOV ALARM2,A MOV A,B
MOVC A,@A+DPTR
MOV ALARM1,A LCALL DISPLAY JNB P3.1,FUNL1 JNB P3.2,FUNL2 DJNZ R0,STARTL LJMP ENDL
FUNL1: MOV R0,#210
INC L_ALARM STAYL1:LCALL DISPLAY JNB P3.1,STAYL1 LJMP STARTL FUNL2: MOV R0,#210 DEC L_ALARM STAYL2:LCALL DISPLAY JNB P3.2,STAYL2 LJMP STARTL ENDL: POP LOCAT CLR IE0 RET
;****************************** ;DS18b20复位初始化子程序
;**************************** INIT_1820:
SETB DQ NOP
CLR DQ
MOV R1,#3 ;546us低电平 TSR1: MOV R0,#88 DJNZ R0,$ DJNZ R1,TSR1
SETB DQ ;释放总线 NOP NOP NOP
MOV R0,#25H TSR2:
JNB DQ, TSR3;等待回应
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
DJNZ R0,TSR2 LJMP TSR4 TSR3:
SETB FLAG1 ;监测到18b20则把标志位置1 LJMP TSR5 TSR4:
CLR FLAG1 LJMP TSR6 TSR5:
MOV R0,#100 DJNZ R0,$ TSR6:
SETB DQ RET
;******************************************* ;读出转换后的温度
;******************************************* GET_TEMPER:
SETB DQ
LCALL INIT_1820 JB FLAG1, TSS2 RET TSS2:
MOV A,#0CCH LCALL WRITE_1820 MOV A,#44H
LCALL WRITE_1820 LCALL S_DELAY LCALL INIT_1820 MOV A,#0CCH LCALL WRITE_1820 MOV A,#0BEH LCALL WRITE_1820 LCALL READ_18B20 RET
;******************************************* ;写,读DS18B20的子程序
;******************************************** WRITE_1820:
MOV R2,#8 CLR C WR1:
CLR DQ MOV R3,#3
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
DJNZ R3,$ RRC A MOV DQ,C MOV R3,#33 DJNZ R3,$ SETB DQ NOP
DJNZ R2,WR1 SETB DQ RET
READ_18B20:
MOV R4,#2 MOV R1,#31H RE00: MOV R2,#8 RE01: CLR C SETB DQ NOP NOP
CLR DQ NOP NOP NOP
SETB DQ MOV R3,#9 RE10: DJNZ R3,RE10 MOV C,DQ MOV R3,#23 DJNZ R3,$ RRC A
DJNZ R2,RE01 MOV @R1,A DEC R1
DJNZ R4,RE00 RET
;***************************************************** ;数据处理子程序,判断正负,并分离转换值的整数和小数部分 ;符号位为SIGN,0为正,1为负
;整数部分存放在INTEG(32H)中,小数部分存放在DECIM(33H)中 ;***************************************************** DATA_PROC:
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
CLR C CLR SIGN MOV A ,MSB RLC A JC NEG LJMP PROC NEG:
CLR C SETB SIGN MOV A,LSB CPL A ADD A,#1 MOV LSB,A MOV A,MSB CPL A ADDC A,#0 MOV MSB,A PROC:
MOV A,LSB ANL A,#0FH MOV DECIM,A MOV A,MSB SWAP A
ANL A,#0F0H MOV INTEG,A MOV A,LSB SWAP A
ANL A ,#0FH MOV R0,INTEG ORL A,R0 MOV INTEG,A
RET
;*************************************************************** ;生成显示码子程序 ,摄氏首地址为34H,开式首地址为50H,华氏为63H ;符号位断码存放在SEG-S中,整数断码存放在SEG-I3到SEG-I1中 ;小数部分断码存放在SEG_D1(38H),SEG_D2(39H)中 .
;*************************************************************** SEG_GEN:
JB SIGN,S_NEG MOV SEG_S,#00H SJMP S_INT S_NEG:
MOV SEG_S,#40H S_INT:
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
MOV A,INTEG MOV B,#100 DIV AB MOV 58H,A
MOVC A,@A+DPTR MOV SEG_I3,A MOV A,B MOV B,#10 DIV AB MOV 59H,A MOVC A,@A+DPTR MOV SEG_I2,A MOV A,B MOV 5AH,A MOVC A,@A+DPTR ORL A,#80H MOV SEG_I1,A
MOV A,DECIM MOV B,#12 MUL AB PUSH ACC MOV A,DECIM CLR C RRC A MOV R3,A POP ACC ADD A,R3
MOV B,#2 DIV AB PUSH ACC MOV A,B
CJNE A,#01H,SW1 POP ACC AJMP ACT SW1: POP ACC INC A ACT: MOV B,#10 DIV AB MOV 5BH,A
MOVC A,@A+DPTR MOV SEG_D1,A MOV A,B
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
MOV 5CH,A MOVC A,@A+DPTR MOV SEG_D2,A
MOV SEG_O,#63H ;符号 ℃ MOV SEG_C,#39H
MOV A,5CH ;计算开式温标数值
AGAIN1: ADD A,#5 MOV B,#10 DIV AB MOV 68H,B ADD A,5BH ADD A,#1 MOV B,#10 DIV AB MOV 67H,B ADD A,5AH ADD A,#3 MOV B,#10 DIV AB MOV 66H,B ADD A,59H ADD A,#7 MOV B,#10 DIV AB MOV 65H,B ADD A,58H ADD A,#2 MOV B,#10 DIV AB MOV 64H,B MOV R0,#64H
MOV A,@R0 MOVC A,@A+DPTR MOV @R0,A INC R0
CJNE R0,#69H,AGAIN1 ORL 66H,#80H
MOV 69H,#06H ;得到开式段码符号K
;
正在阅读:
关于工单成本核算一点思考03-12
关于转发东城区公费医疗改革办法的通知(东教人发1号)10-29
2014试验人员继续教育 - -公路滑坡监测技术简介试卷01-19
教师节座谈会发言稿02-27
江苏省永丰初级中学七年级英语下册 unit 7 abilities提高练习(无答案)(新版)牛津版10-15
医院信息系统安全等级保护定级报告12-16
关于描写父爱的诗歌03-21
相邻关系纠纷的特征及调解技巧01-21
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 汇编程序
- 单片机
- 基于
- 课程
- 报告
- 设计
- 18B20
- 北师大版九年级物理第10至13物理知识总结
- 48个国际音标表(打印版)已整理
- 四年级上册确定位置
- 小学上学期家长会学生主持设计稿
- 面料美标四分制细则
- UHF平衡式宽带20W功率放大器
- 2021三年级下册科学教学工作计划
- 大学生化妆品销售实习报告
- 特岗教师招聘考试复习资料专用(教育学、普通心理学)
- 超市投诉处理制度
- 唐山理财规划师考试认证
- 上海新世界股份有限公司
- 电脑死机的各种原因分析
- 三好学生、优秀学生干部、优秀团员、优秀少先队员等考评条例
- 光伏电站筹建需要做哪些工作
- 年产10吨菠萝蛋白酶提取工厂初步设计1
- 高分辨率卫星遥感影像在土地利用变化动态监测中的应用
- 2014年培育和践行社会主义核心价值观职业道德培训考试试卷
- 反应热 焓变 热化学反应方程式(选修4预习)
- 在统战系统暨新任职党外干部培训班讲话