文档介绍:大连理工大学本科设计报告
题目: 单总线高精度温度采集系统
课程名称: 单片机综合设计实验
学院(系): 信息与通信工程学院
专业: 电子信息工程
班级: 电子
学号:
学生姓名:
成绩:
2016 年 5 月 5 日
启动DS18B20进行12位高精度环境温度采集
利用12864LCD屏/数码管显示数据
具有温度上限声光报警器
可以通过键盘设定报警上限值(选)
通过DS18B20进行小数12位温度转换、采集,通过单片机读取DS18B20采集到的12位温度值进行二进制到十六进制的转换,利用ZLG7290进行八位数码管显示;利用键盘进入中断来设定报警上限,当温度高于上限时进入报警子程序。利用SW1进入中断来查看当前设置的温度报警上下限值,利用ZLG7290和数码管来显示。主程序不断循环采集温度比较,并可随时进入中断来修改温度上下限和查看温度值。
:用于测定温度,测量范围-55~+125,℃,数据格式为二进制补码形式。
:用于数码管动态显示驱动,键盘扫描管理。能够驱动8位共阴极结构的LED数码管或64位独立的LED,同时还能扫描管理多达64个按键的扫描识别,其中八个键可以作为功能键使用。接口采用I²C结构。
:这里用作报警,为无源蜂鸣器。
变量名称
内存单元
功能
TEMPER_L
36H
存放温度低四位
TEMPER_H
35H
存放温度高四位
TEMPER
34H
转换后的温度值
TEMPER_BCD
33H
BCD形式温度值
TEMPER_NUM
60H
温度值缓冲单元
WSLA_7290
70H
7290写控制单元
RSLA_7290
71H
7290读控制单元
20-27H
数码管显示缓冲区
28H
存放温度上限值
30-31H
存放温度BCD码个位十位
子程序名称
入口参数
出口参数
功能描述
GET_TEMPER
无
35H,36H
读取18B20的温度值
READ_18200
35H,36H
无
向18b20读控制字
TEMPER_COV
35H,36H
20H,21H
温度转换成十进制BCD码形式
CF
无
R3,R4
拆分子程序,拆分送数码管显示
INIT_1820
无
无
温度传感器初始化
BUZZER
无 无
无
蜂鸣器控制发声子程序
INT_7290
无
28H
读取按键外部中断子程序
RDKEY
无
A
读取键值子程序
DELAY
无
无
延时子程序
8. 程序清单(要求打印格式要规范、重要的语句要有必要的注释)
SDA BIT
SCL BIT
TEMPER_L EQU 36H
TEMPER_H EQU 35H
TEMPER EQU 34H ;转换后温度值
TEMPER_BCD EQU 33H ;BCD码温度值
TEMPER_NUM EQU 60H ;缓冲单元
WSLA_7290 EQU 70H
RSLA_7290 EQU 71H
FLAG1 BIT 00H
DQ BIT ;总线控制单元
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT_7290
ORG 0100H
MAIN: MOV SP,#70H
;ZLG7290复位
CLR
LCALL DELAY
SETB
MOV 28H,#1EH ;温度上限初始值30度
MOV TMOD,#01H ;模式一,16位计数器
SETB EA ;允许INTO中断
MODE: JB ,SETTMP ;拨码为0时采集温度
;温度采集
TMP: CLR EX0
MOV 27H,#1FH ;t
LP1: LCALL GET_TEMPER
LCALL TEMPER_COV
;7290显示
MOV R7,#08H
MOV R0,#20H
MOV R2,#10H
MOV R3,#WSLA_7290