当前位置:文档之家› 电子系统设计与实践课程设计——多点温度测量(汇编语言+C语言版)

电子系统设计与实践课程设计——多点温度测量(汇编语言+C语言版)

《电子系统设计与实践》课程设计报告课程设计题目:多点温度测量系统设计专业班级:2012级电子信息科学与技术学生姓名:罗滨志(120802010051)张倩(120802010020)冯礼哲(120802010001)吴道林(120802010006)朱栖安(120802010039)指导老师:刘万松老师成绩:2015 年6 月27日目录摘要 (4)1 总体设计 (4)1.1 功能要求 (5)1.2 总体方案及工作原理 (5)2 系统硬件设计 (6)2.1 器件选择 (6)2.1.1主要器件的型号 (6)2.1.2 AT89C51 (7)2.1.3智能温度传感器DS18B20 (9)2.1.4晶振电路方案 (9)2.1.5 LED液晶显示器 (10)2.1.6复位电路方案 (10)2.2 硬件原理图 (11)3 系统软件设计 (11)3.1基本原理 (11)3.1.1主程序 (11)3.1.2读ROM地址程序 (12)3.1.3显示ROM地址程序 (13)3.1.4读选中DS18B20温度的程序 (13)3.1.5显示温度程序 (14)3.2软件清单 (15)3.2.1汇编语言程序 (15)3.2.2 C语言程序 (24)4实验步骤 (29)4.1汇编语言程序调试 (29)4.2 C语言程序调试 (30)4.3实验仿真 (31)5设计总结 (32)6参考文献: (33)摘要温度是我们生活中非常重要的物理量。

随着科学技术的不断进步与发展,温度测量在工业控制、电子测温计、医疗仪器,家用电器等各种控制系统中广泛应用。

温度测量通常可以使用两种方式来实现:一种是用热敏电阻之类的器件,由于感温效应,热敏电阻的阻值能够随温度发生变化,当热敏电阻接入电路时,则流过它的电流或其两端的电压就会随温度发生相应的变化,再将随温度变化的电压或者电流采集过来,进行A/D转换后,发送到单片机进行数据处理,通过显示电路,就可以将被测温度显示出来。

这种设计需要用到A/D转换电路,其测温电路比较麻烦。

第二种方法是用温度传感器芯片,温度传感器芯片能把温度信号转换成数字信号,直接发送给单片机,转换后通过显示电路显示即可。

这种方法电路比较简单,设计方便,现在使用非常广泛。

关键词:多点温度测量单片机温度传感器1 总体设计多路温度测量系统的总体结构如图1所示,根据要求,整个系统包含以下几个部分:51单片机、时钟电路、复位电路组成的51单片机小系统;多块测温模块;显示温度值的显示模块和按键模块。

测温模块由温度传感器组成,温度传感器采用美国Dallas半导体公司推出的智能温度传感器DS18B20,温度测量范围为-55 -- +125,可编程为9到12位的A/D转换精度,测温分辨率可达0.0625C,完全能够满足系统要求。

DS18B20采用单总线结构,只需要一根数据线DQ即可与单片机通信,多个DS18B20可同时连接在一根数据线上与单片机通信。

显示器可采用LCD液晶显示器,显示信息量大、效果好、使用方便。

图1 多路温度测量系统的总体结构系统处理时,由51单片机控制从各个测温模块测量出温度数字量,存入缓冲区;然后通过按键控制,从缓冲区取出,根据数字量和温度的关系计算出温度值,依次送LCD显示器显示。

1.1 功能要求多点温度测量系统的功能要求如下:(1)能够测量多点温度;(2)精度0.1C;(3)能够通过显示器显示测量点编号和温度值;(4)可轮流显示各测量点或指定显示某个测量点。

1.2 总体方案及工作原理单片机系统由AT89C51单片机,复位电路和时钟电路组成,时钟采用12MHZ 的晶振,温度模块由4块温度传感器DS18B20组成,单总线结构,所有的DS18B20的DQ连接在一起与单片机的P3.0相连,通过上拉电阻连接电源,每一个DS18B20都有一个唯一的64位ROM地址,只要发送相应的ROM地址,就能够访问该器件,要访问某个DS18B20,就必须知道它的64位ROM地址,可以通过程序读出它的ROM地址,由于读ROM地址时,一次只能接入一个DS18B20,因此,4个DS18B20的数据线DQ通过开关连接到AT89C51的P3.0.另外,所有DS18B20的VDD引脚接+5V电源,GND接地;显示器采用LCD1602(LM016L),其数据线与AT89C51的P2口相连,RS与P1.7相连,R/W与P1,6相连,E端与P1.5相连。

设定了两个按键,K0为功能键,与AT89C51的P1.0相连,当K0输入低电平时,读入DS18B20的ROM地址,当K0键输入高电平时,显示选中DS18B20的温度值;K1为测量点选中键,与AT89C51的P1.1相连,用于测量点选择,每按一次,测量点号加1,读入下一个DS18B20的ROM地址或显示下一个DS18B20的相应温度值。

2 系统硬件设计2.1 器件选择2.1.1主要器件的型号2.1.2 AT89C51AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM-FALSH PROGRAMMABLE AND ERASABLE READ ONLY MEORY)的低电压,高性能CMOS8位微处理器,俗称单片机。

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的单片机,单片机的可擦除只读存储器可以反复擦除100次。

该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容,AT89C51单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线。

其基本结构如图2图 2 AT89C51单片机的基本结构AT89C51 是一个低电压,高性能CMOS 8 位单片机,片内含8kB 的可反复擦写的Flash 只读程序存储器和256B 的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51 指令系统及8052 产品引脚兼容,片内置有通用8 位中央处理器(CPU)和Flash 存储单元。

图3 AT89C51单片机的引脚VCC/GND:供电电源。

P0口:可以被定义为数据/地址的低八位,能够用于外部程序/数据存储器。

在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:标准输入输出I/O口,P1口管脚写入1后,被内部上拉为高,可用作输入。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:既可用于标准输入输出I/O,也可用于外部程序存储器或数据存储器访问时的高八位地址。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:既可以作标准输入输出I/O,也可作为AT89C51的一些特殊功能口,管脚备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通)RST:复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

PSEN:外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

EA / VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

2.1.3智能温度传感器DS18B20电路四个DS18B20分别接一个按钮开关,便于分别控制温度,DS18B20的VCC接口接入同一总线且与显示器VDD接口相连,DQ接口与AT89C51的P3.0接口相连,GND接地,如图4;图4 智能温度传感器原理图2.1.4晶振电路方案晶振电路的功能在于给单片机提供振荡时钟信号,使单片机正常工作。

本设计中采用了常用的晶振电路组成方案,具体如图5所示。

图5 晶振电路2.1.5 LED液晶显示器图6 液晶显示器2.1.6复位电路方案复位电路的功能在于对单片机进行复位从而达到对整个电路复位的功能。

要达到目的则要求在复位按键按下后在RST引脚上要出现一个维持2个机器周期高电平[4]。

考虑到可以利用电容的电压不能突变(需要一定的充放电时间),于是采用如下复位电路。

图7 复位电路2.2 硬件原理图图8 硬件原理图3 系统软件设计3.1基本原理多路温度测量系统的软件程序主要由主程序、读DS18B20模块ROM地址程序、显示DS18B20模块ROM地址、读DS18B20模块温度值程序、显示DS18B20模块温度值程序和LCD、DS18B20模块驱动程序等组成。

3.1.1主程序主程序的流程图如图9所示。

图9 主程序流程图在主程序中,首先对LCD初始化,其次通过检测按键,判断是读DS18B20模块的ROM地址还是读DS18B20模块的温度值,如果是读ROM地址,则依次调用读ROM程序和显示ROM程序;如果是读温度,则调用测量温度程序和显示温度程序,注意测量某个DS18B20模块之前,一定要读出该模块的ROM并保存到相应的存储单元。

3.1.2读ROM地址程序读ROM地址程序的流程如图10所示。

读ROM地址时,一次只能把一片DS18B20模块连接到单总线上,读ROM程序实现把当前连接到总线上的DS18B20的ROM 地址读出。

读ROM地址程序处理过程如下,先计算存放当前DS18B20模块ROM 地址的存储单元的偏移地址,然后依次是DS18B20初始化、发读ROM命令和读ROM地址到存储单元。

如图10 读ROM地址程序的流程3.1.3显示ROM地址程序显示ROM地址程序实现依次从当前存放ROM地址的缓冲区中取出地址显示,显示ROM地址程序的流程图如图11所示。

如图11 显示ROM地址程序的流程图3.1.4读选中DS18B20温度的程序读选中DS18B20温度的程序的流程图如图12所示。

读选中DS18B20模块温度值的处理过程分3个步骤,第一是向总线放启动温度转换命令,启动连接总线上的DS18B20模块温度转换,由于12位DS18B20温度转换时间比较长,所以启动转换后一定要调用延时程序等待转换完成后才能去读温度值;第二根据当前器件号取当前DS18B20器件的64位ROM地址,发送到总线匹配对应的DS18B20模块;第三向总线发读暂存器命令读匹配的DS18B20模块转换的温度值。

相关主题