大连理工单片机课程设计.docx
文本预览下载声明
大连理工大学本科设计报告
题目:基于DS18B20、ZLG7290的温度 采集系统设计
课程名称: 单片机综合设计实验
学院(系): 信息与通信工程学院
专 业: 电子信息工程
班 级: 电子
学 号:
学生姓名:
成 绩:
20 16 年 5 月 6 日
题目:
1 设计要求
1.利用DS18B20实现现场环境温度的采集;
2.利用ZLG7290B实现温度数据证书的十进制显示;
3.默认一个上限温度的报警(蜂鸣器);
4.能够利用ZLG7290B的键盘操作修改“上限报警值”;
5.可以显示温度的小数位,以提高温度检测的分辨率;
6.程序中必须有中断环节。
2 设计分析及系统方案设计
利用P3.3口采集DS18B20的温度信息,采集后,通过I2C协议控制ZLG7290显示温度信息,并且将小数部分显示出来,通过P1.3连接一个拨码用来做模式控制,控制是温度显示状态模式或者设定温度上限模式,其中温度上限存放在28H单元中。
利用T0定时器控制蜂鸣器发声一段时间,超过温度上限报警声音提示,同时数码管进行闪烁以报警。
利用INT0外部中断读取按键值,用于设定上限温度并保存。
3 系统电路图
P1.3
P1.3
P1.2
5 主程序中主要变量说明
内存单元的定义、功能等。
变量名称内存单元功能TEMPER_L 36H存放温度低四位TEMPER_H 35H存放温度高四位TEMPER 34H转换后的温度值TEMPER_BCD 33HBCD形式温度值TEMPER_NUM 60H温度值缓冲单元WSLA_7290 70H7290写控制单元RSLA_7290 71H7290读控制单元20-27H数码管显示缓冲区28H存放温度上限值30-31H存放温度BCD码个位十位
6 系统软件中各个子程序的功能描述
子程序的名称、功能,以及入口、出口参数。
子程序名称功能 描述GET_TEMPER读取18B20的温度值WRITE_1820向18b20写控制字READ_18200向18b20读控制字TEMPER_COV温度转换成十进制BCD码形式CF拆分子程序,拆分送数码管显示INIT_1820温度传感器初始化BUZZER 蜂鸣器控制发声子程序 INT_7290:读取按键外部中断子程序RDKEY读取键值子程序DELAY延时子程序7 主程序程序流程图
8 程序清单(I2C库函数省略)
SDA BIT P1.0
SCL BIT P1.1
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 P3.3 ;总线控制单元
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT_7290
ORG 0100H
MAIN: MOV SP,#70H
;ZLG7290复位
CLR P1.7
LCALL DELAY
SETB P1.7
MOV 28H,#1EH ;温度上限初始值30度
MOV TMOD,#01H ;模式一,16位计数器
SETB EA ;允许中断
MODE: JB P1.3,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
LCALL
显示全部