资源描述
山 东 科 技 大 学
课程设计报告
课程名称: 单片机原理及应用 _
题 目: 现场温度测控系统设计
学 院 名 称: 电气信息系
专业班级: 计算机科学与技术2023级7班
学生姓名: 巩珊珊
学 号:
指 导 教 师 : 吕英俊
填表时间: 2023年7月15日
指导教师评语
《单片机原理及应用》课程设计指导书(三)
设计题目:现场温度智能测控系统的设计
l 课程设计报告书写说明及注意事项
1.本设计报告内容涉及指导教师评语、目录(自动生成)、设计报告重要内容(程序流程图包含在软件设计中)、总结、致谢辞、附录等部分。
2.课程设计教学大纲由指导教师提供,放在附录中。
3.将设计过程中专题部分的源程序、图表放在附录中。所有程序清单只提供电子文档,不规定打印
4.本报告打印用A4纸张,页面设立:上:2.5厘米,下:2.5厘米,左:2.5厘米,右:2.5厘米。
5.本报告除标题采用三号加粗宋体外,正文部分采用小四宋体,段落为1.5倍行距。
6.相关的图表要增长编号。
7.学生应认真书写课程设计报告,设计报告重要内容字数不少于15页,附录内容不计算在内。
8.每位学生要同时提供电子和纸质两种媒质报告,电子文档经指导教师审核允许后才干打印。电子文档规定规定提供两个文献:设计报告(学号姓名.RTF)和程序清单(专题名称.c)。
9.评语和成绩由指导教师根据设计报告质量和学生设计过程中的具体表现给出。
10.本报告应充足体现学生本人在实习过程中的亲身体会和心得,不允许出现抄袭和大面积内容类同现象,一旦发现抄袭者和被抄袭者均按不及格解决。
现场温度智能测控系统的设计(三)
一、课程设计目的
通过该设计使学生纯熟掌握单片机最小应用系统:模拟量数据采集、解决、控制和相关的人机接口(键盘、显示)单元的设计方法,并培养学生工程设计的一般方法和技巧。
二、技术规定:
1.系统组成
系统选用AT89C51单片机作为微解决器,外部扩展键盘和LED显示器件,温度测量采用温度传感器进行采样,通过继电器控制外部加热装置,通过蜂鸣器报警。
2.实现功能:
1) 基本规定:温度测量范围:-50℃-110℃,测量精度误差小于0.5℃,LED直读显示实时温度值和设定值。
2) 按键功能:通过按键设立温度设定值和温度高、低限报警值。
3) 通信功能:系统连续采集10个数据,然后把采集的数据经数字滤波、解决后保存、并在显示器上显示其温度值,同时经串行接口传至上位机。
4) 通信约定:① 系统发送采用查询方式,上位机接受采用中断方式,波特率为9600bps,帧格式位8个数据位,1个停止位,无校验位;②传送数据格式为:实时值、设定值。
5) 控制和报警功能:当现场温度低于设定值2℃时闭合继电器控制加热器加热,高于设定值2℃时断开继电器停止加热;温度低于低限报警值或高于高限报警值时通过蜂鸣器发声报警。
3.整个系统建议分为以下模块:
1) AT89C51单片机最小应用系统(含键盘、显示人机接口);
2) 温度采集、控制模块;
3) 上位机和下位机通信模块。
三、一周时间安排:
星期一:布置设计任务,收集相关资料;
星期二:拟定设计方案,软、硬件的总体设计;
星期三、四:上机调试;
星期五:完毕设计报告。
摘 要
单片机系统的应用给现代工业测控领域带来了一次新的技术革命,自动化、智能化均离不开单片机的开发和使用。本论文介绍了“基于单片机的温度控制系统”的设计及其相关内容。设计的重要内容是温度检测与控制系统中控制算法及输出驱动电路的实现。系统的组成涉及:温度检测与解决系统、A/D转换电路、单片机系统电路、键盘和显示电路以及输出驱动电路的实现。本文重点对测控硬件、软件的组成进行了分项、模块化逐步分析设计。对各部分的电路逐个进行了介绍,实现了该系统的硬件电路。
用AT89C51单片机为主控芯片。本次设计的温度控制系统重要是由中央控制器、温度检测器、显示器等模块组成。温度检测部分采用DS1620温度传感器,用LED数码管做显示器。温度传感器DS1620采集温度信号送给单片机,单片机对信号进行相应解决,并把温度数据送LED显示,从而实现对温度控制的目的。
温度采集与控制系统的设计对自动化专业的学生而言是经典的、涵盖知识面广的题目。是单片机系统应用、高精度检测以及控制算法的程序实现的集合。
关键词:AT89C51单片机 DS1620 LED显示器
目 录
l
第1章 绪 论 1
1.1课题的背景 1
1.2 课题的来源 2
1.3设计目的 2
1.4 课题内容及规定 3
l 第2章 基于单片机的温度系统设计 4
2.1 系统整体设计模型 4
l 第3章 硬件设计 5
3.1 AT89C51简介 5
3.2 8255A简介 8
3.3 8255A的控制字 9
3.4 8255A的工作方式 10
3.5 DS1620简介 11
3.6 4*4矩阵键盘简介 13
3.7 LED工作原理 15
3.8 实验所用实验板电路图 16
l 第4章 软件设计 18
4.1程序设计 18
4.2部分代码 19
l 第5章 设计总结 24
l 致谢 25
l 参考文献 26
l 第1章 绪 论
1.1课题的背景
单片机自1976年由Intel公司推出MCS-48开始,迄今已有三十数年了。由于单片机集成度高、功能强、可靠性高、体积小、功耗低、使用方便、价格低廉等一系列优点,目前已经渗入到人们工作和生活的方方面面,几乎“无处不在,无所不为”。单片机的应用领域已从面向工业控制、通讯、交通、智能仪表等迅速发展到家用消费产品、办公自动化、汽车电子、PC机外围以及网络通讯等广大领域,对各个行业的技术改造和产品更新换代起着重要的推动作用。
单片机有两种基本结构形式:一种是在通用微型计算机中广泛采用的,将程序存储器和数据存储器合用一个存储器空间的结构,称为普林斯顿结构。另一种是将程序存储器和数据存储器截然分开,分别寻址的结构,一般需要较大的程序存储器。目前的单片机以采用程序存储器和数据存储器截然分开的结构为多。
本设计讨论的单片机多功能定期器的核心是目前应用极为广泛的51系列单片机,配置了外围设备,构成了一个可编程的计时定期系统,具有体积小,可靠性高,功能强等特点。不仅能满足所需规定并且尚有很多功能可供开发,有着广泛的应用领域。
20世纪80年代中期以后,Intel公司以专利转让的形式把8051内核技术转让给许多半导体芯片生产厂家,如ATMEL、PHILIPS、ANALOG、DEVICES、DALLAS等。这些厂家生产的芯片是MCS-51系列的兼容产品,准确地说是与MCS-51指令系统兼容的单片机。这些兼容机与8051的系统结构(重要是指令系统)相同,采用CMOS工艺,因而,常用80C51系列来称呼所有具有8051指令系统的单片机,它们对8051单片机一般都作了一些扩充,使其更有特点。其功能和市场竞争力更强,其实不该把它们直接称呼为MCS-51系列单片机,由于MCS只是Intel公司专用的单片机系列型号。MCS-51系列及80C51单片机有多种品种。它们的引脚及指令系统互相兼容,重要在内部结构上有些区别。目前使用的MCS-51系列单片机及其兼容产品通常提成以下几类:基本型、增强型、低功耗型、专用型、超8位型、片内闪烁存储器型。其中ATMEL公司的标准型AT89单片机因其与MCS-51的完全兼容性、优良的工作性能、使用的灵活性以及较高的性能价格比,成为AT89系列单片机的主流机型,在嵌入式控制系统中获得广泛应用。
1.2 课题的来源
众所周知,环境温度一直是生物能否较适宜生存的一个重要因素,而人们对环境温度的感知也从单纯的身体感官的感受发展到用各种温度计来对环境温度进行准确的测量。但是受限于技术等因素,温度计通常都有体积较大,精度不高等各种缺陷。而数字温度测量芯片的出现则解决了这些问题,其中的一款芯片DS1620是DALLAS公司生产的1-Wire,即单总线器件,具有线路简朴,体积小的特点。因此,用它来组成一个测温系统,具有线路简朴,在一根通信线上可以挂载很多这样的数字温度芯片,十分方便。
美国Dallas半导体公司的数字化温度传感器DS1620[2]是世界上第一片支持 “一线总线”接口的温度传感器,在其内部使用了在板(ON-B0ARD)专利技术。所有传感元件及转换电路集成在形如一只三极管的集成电路内。“一线总线”独特并且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。现在,新一代的DS1620体积更小、更经济、更灵活。使你可以充足发挥“一线总线”的优点。 同DS1620同样,DS1620也支持“一线总线”接口,测量温度范围为-55~+125°C,在0~+70°C范围内,精度为±0.5°C。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持2.7V~5.0V的电压范围,使系统设计更灵活、方便。并且新一代产品更便宜,体积更小,这就为用最低的成本制作出用途更广,精度更高的便携带的数字温度计提供了也许。
目前,国际上新型温度传感器正从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展。
1.3设计目的
本次设计的重要思绪是运用51系列单片机,数字温度传感器DS1620和LED数码显示器,构成实现温度检测与显示的单片机控制系统,即数字温度计。通过对单片机编写相应的程序,达成可以实时检测周边温度的目的。
1.4 课题内容及规定
本次设计的重要思绪是运用51系列单片机,数字温度传感器DS1620和LED数码显示器,构成实现温度检测与显示的单片机控制系统,即数字温度计。通过对单片机编写相应的程序,达成可以实时检测周边温度的目的。
通过对本课题的设计可以熟悉数字温度计的工作原理及过程,了解各功能器件(单片机、DS1620、LED)的基本原理与应用,掌握各部分电路的硬件连线与程序编写,最终完毕对数字温度计的总体设计。其具体的规定如下:
1.系统组成
系统选用AT89C51单片机作为微解决器,外部扩展键盘和LED显示器件,温度测量采用温度传感器进行采样,通过继电器控制外部加热装置,通过蜂鸣器报警。
2.实现功能:
1)基本规定:温度测量范围:-50℃-110℃,测量精度误差小于0.5℃,LED直读显示实时温度值和设定值。
2)按键功能:通过按键设立温度设定值和温度高、低限报警值。(未实现)
3)通信功能:系统连续采集10个数据,然后把采集的数据经数字滤波、解决后保存、并在显示器上显示其温度值,同时经串行接口传至上位机。
4)通信约定:① 系统发送采用查询方式,上位机接受采用中断方式,波特率为9600bps,帧格式位8个数据位,1个停止位,无校验位;②传送数据格式为:实时值、设定值。
5)控制和报警功能:当现场温度低于设定值2℃时闭合继电器控制加热器加热,高于设定值2℃时断开继电器停止加热;温度低于低限报警值或高于高限报警值时通过蜂鸣器发声报警。
l 第2章 基于单片机的温度系统设计
2.1 系统整体设计模型
2.1.1 系统方案
运用DS1620集成温度传感器及其接口电路完毕温度的测量并转换成模拟电压信号,经由模数转换器转换成单片机可以解决的数字信号,然后送到单片机AT89C51中进行解决变换,最后将温度值显示在D4、D3、D2、D1共4位七段码LED显示器上。
系统以AT89C51单片机为控制核心,加上DS1620测温电路、8255A扩展LED电路、模数转换电路、4位温度数据显示电路以及外围电源、时钟电路等组成。系统组成框图如图2.1-1所示。
图2.1-1 系统组成框图
l 第3章 硬件设计
3.1 AT89C51简介
对于单片机的选择,可以考虑使用8031与8051系列,由于8031没有内部RAM,系统又需要大量内存存储数据,因而不合用。AT89S51 是美国 ATMEL 公司生产的低功耗,高性能 CMOS8 位单片机,片内含 4kbytes 的可编程的 Flash 只读程序存储器,兼容标准 8051 指令系统及引脚。它集 Flash 程序存储器既可在线编程(ISP),也可用传统方法进行编程,所以低价位 AT89S51单片机可为提供许多高性价比的应用场合,可灵活应用于各种控制领域,对于简朴的测温系统已经足够。单片机AT89S51 具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。重要特性如下:
1 与MCS-51 兼容
2 4K字节可编程闪烁存储器
3 寿命:1000写/擦循环
4 数据保存时间:2023
5 全静态工作:0Hz-24Hz
6 三级程序存储器锁定
7 128*8位内部RAM
8 32可编程I/O线
9 两个16位定期器/计数器
10 5个中断源
11 可编程串行通道
12 低功耗的闲置和掉电模式
13 片内振荡器和时钟电路
芯片AT89C51的引脚排列和逻辑符号如图3.1-1所示:
图3.1-1 芯片AT89C51的引脚和逻辑符号
AT89C51引脚功能介绍:
单片机芯片AT89C51 为40 引脚双列直插式封装。 各引脚功能简朴介绍如下:
●VCC:供电电压
●GND:接地
●P0口:P0口为一个8位漏级开路双向I/O口,每个管脚可吸取8TTL门电流。当P1口的管脚写“1”时,被定义为高阻输入。P0可以用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部电位必须被拉高。
●P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接受输出4TTL门电流。P1口管脚写入“1”后,电位被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接受。
●P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接受,输出4个TTL门电流,当P2口被写“1”时,其管脚电位被内部上拉电阻拉高,且作为输入。作为输入时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它运用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接受高八位地址信号和控制信号。
●P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接受输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入时,由于外部下拉为低电平,P3口将输出电流(ILL),也是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口:
P3.0 RXD(串行输入口)
l P3.1 TXD(串行输出口)
l P3.2 INT0(外部中断0)
l P3.3 INT1(外部中断1)
l P3.4 T0(记时器0外部输入)
l P3.5 T1(记时器1外部输入)
l P3.6 WR (外部数据存储器写选通)
l P3.7 RD (外部数据存储器读选通)
同时P3口同时为闪烁编程和编程校验接受一些控制信号。
●RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
●ALE / PROG :当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定期目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想严禁ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令时ALE才起作用。此外,该引脚被略微拉高。假如微解决器在外部执行状态ALE严禁,置位无效。
●PSEN:外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期PSEN两次有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。
●EA/VPP:当EA保持低电平时,访问外部ROM;注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,访问内部ROM。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
●XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
●XTAL2:来自反向振荡器的输出。
3.2 8255A简介
3.2.1 8255A的内部结构
8255A它由如下几部分组成:
1) 数据总线缓冲器
2) 读写控制逻辑
3) A组和B组控制
A口及C口的高4位构成A组,B口及C口的低4位构成B组。
4) 数据口A、B、C
3.2.2 8255A的引脚
8255A引脚结构如图3.2-1所示:
图3.2-1 8255A引脚结构
关于A1、A0的说明:
A1、A0:端口选择线,8255A需占用4个连续的端口地址,分别用于寻址A、B、C三个数据口及一个控制寄存器端口。
A1A0=00选择A口,A1A0=01选择B口,A1A0=10选择C口,A1A0=11选择控制口。
在8088系统中,A1A0直接接到系统地址总线的A1A0即可。在8086系统中存在奇偶地址的问题,一般将8255A的数据线与系统的低8位数据总线相连,8255A的A1A0与系统地址总线的A2A1连接,而用系统地址总线的A0=0作为该8255A的片选条件之一。
这样,仍可满足8255A占4个连续地址的规定,但它事实上是占据了CPU的4个连续的偶地址。
3.3 8255A的控制字
3.3.1 C口按位置位/复位控制字
(1) 仅C口可按位置位/复位,且只对C口的输出状态进行控制(对输入无作用)。
(2) 一次只能设立C口的1位的状态。
(3) 这个控制字应写入控制口,而不是C口。
3.4 8255A的工作方式
3.4.1 方式0
在方式0下,A、B、C三个端口均作为输入/输出用,这种输入/输出只是简朴的输入/输出,无联络信号。如图3.4-1所示:
图3.4-1 方式0,A、B、C三个端口均作为输入/输出
3.4.2 方式1
1.方式1的输入
当A设定为方式1的输入时,A口所用的三条信号联络线是C口的PC3、PC4、PC5,B口则用了C口的PC0、PC1、PC2作为联络信号。各联络线的定义如下:
IBF:8255A送外设的输入缓冲器满信号,高电平有效。
INTR:8255A送到CPU或系统总线的中断请求信号,高电平有效。该信号此外受INTE控制。
STB非:外设送来的输入选通信号,低电平有效。
INTE:中断允许信号。
2.方式1的输出
当A口与B口设立为方式1的输出时,也分别指定C口的三条线为联络信号,A口所用三条联络信号线是C口的PC3、PC6、PC7,B口则用了PC0、PC1、PC2。各联络线定义如下:
INTR:中断请求信号,高电平有效。该信号另受INTE控制。
INTE:它的功能与输入方式同样。
OBF非:送外设的输出缓冲器满信号,低电平有效。
ACK非:外设送来的响应信号,低电平有效。
3.4.3 方式2:带选通的双向输入/输出
方式2是一种双向选通输入/输出方式,只合用于A口,方式2下的各联络信号定义如下:
INTR:中断请求信号,高电平有效。
OBF非:输出缓冲器满,低电平有效。
ACK非:来自外设的响应信号,低电平有效。
INTE1:A口输出中断允许。
STB非:来自外设的选通输入,低电平有效。
IBF:输入缓冲器满,高电平有效。
INTE2:A口输入中断允许。
3.5 DS1620简介
DS1620是Dallas公司推出的数字温度测控器件。 2.7~ 5.0V供电电压,测量温度范围为-55~+125℃,9位数字量表达温度值,分辨率为0.5℃。在0~+70℃精确度为0.5℃, -40~0℃和+70~+85℃精确度为1℃,-55~-40℃和+85~ +125℃精确度为2℃。TH和TL寄存器中的温度报警限设定值存放在非易失性存储器中,掉电后不会丢失。通过三线串行接口,完毕温度值的读取和TH、TL的设定。
DS1620的温度值为9位数字量,数据用补码表达,最低位表达0.5℃。几个典型温度的数字量如表2所列。通过三线传送数据时,低位在前,高位在后。DS1620读出或写入的温度数据值可以是9位的字(在第9位后将置为低电平),也可以作为两个8位字节的16位字。这时高7位为无关位。这种方式在8位单片机中解决是比较方便的。
3.5.1 DS1620的内部结构
DS1620的内部框图,它重要涉及寄生电源、温度传感器、64位激光ROM单线接口、存放中间数据的高速暂存器(内含便笺式RAM),用于存储用户设定的温度上下限值的TH和TL触发器存储与控制逻辑、8位循环冗余校验码(CRC)发生器等七部分。
其内部结构图如图3.5-1所示:
图3.5-1 DS1620的内部结构
3.5.2 DS1620的引脚如图3.5-2所示:
图3.5-2 DS1620的引脚
3.5.3 DS1620的工作原理
DS1620的测温原理如图3.5-3所示:
图3.5-3 DS1620的测温原理
3.6 4*4矩阵键盘简介
3.6.1 矩阵式键盘接口设计
矩阵键盘的按键排列成n行m列,每个按键占据行列的一个交叉点,需要的输入输出线为n+m,最大按键数为n*m。显然,在按键较多的应用场合,矩阵键盘可以减少与微机系统接口的连线,是一般微机常用的键盘结构。
4*4矩阵键盘结构如图3.6-1所示:
图3.6-1 4*4矩阵键盘结构
键盘响应流程图如图3.6-2所示:
图3.6-2 键盘响应流程图
3.6.2 键盘工作方式:
单片及应用系统中,键盘扫描只是CPU的工作内容之一。CPU忙于各项任务时,如何兼顾键盘的输入,取决于键盘的工作方式。考虑仪表系统中CPU任务的份量,来拟定键盘的工作方式。
键盘的工作方式选取的原则是:既要保证能及时响应按键的操作,又但是多的占用CPU的工作时间。
键盘的工作方式有:查询方式(编程扫描,定期扫描方式)、中断扫描方式。3.6.3 矩阵键盘工作原理
矩阵键盘工作原理:行线通过上拉电阻接到+5V上。无按键,行线处在高电平状态,有键按下,行线电平状态将由与此行线相连的列线电平决定。列线电平为低,则行线电平为低;列线电平为高,则行线电平为高。
3.7 LED工作原理
发光二极管内部是具有发光特性的PN结。当PN结导通时,依靠少数载流子的注入以及随后的复合而辐射发光。普通发光二极管的外形、符号及伏安特性如图1 所示。LED正向伏安特性曲线比较陡,在正向导通之前几乎有电流。当电压超过启动电压时,电流就急剧上升。因此,LED属于电流控制型半导体器件,其发光亮度L(单位cd/m2,读作坎德拉每平方米)与正向电流IF近似成正双,有公式
L =K IFm
式中,K为比例系数,在小电流范围内(IF=1~10mA),m=1.3~1.5。当IF>10mA时,m=1,式(5.10.1)简化成
L =K IF
即亮度与正向电流成正比。以磷砷化镓黄色LED为例,相对发光强度与正向电流的关系如图2所示。LED的正向电压则与正向电流以及管芯的半导体材料有关。使用时应根据所规定的显示亮度来选取合适的IF值(一般选10mA左右,对于高亮度LED可选1~2mA),既保证亮度适中,也不会损坏LED。若电流过大,会烧毁LED的PN结。此外,LED的使用寿命将缩短。
由于发光二极管的功耗低、体积小,色彩鲜艳、响应速度快、寿命长,所以常用作收录机、收音机和电子仪器的电平指示器、调谐指示器、电源指示器等。发光二极管在正向导通时有一定稳压作用,还可作直流稳压器中的稳压二极管,提供基准电压,兼作电源指示灯。目前市场上尚有一种带反射腔及固定装置的发光二要管(例如BT104-B2、BT102-F),很容易固定在仪器面板上。
LED的输出光谱决定其发光颜色及光辐射纯度,也反映出半导体材料的特性。常见管芯材料有磷化镓(GaP)、砷化镓(GaAsP)、磷砷化镓(GaAlAs)、砷铝化镓(GaN)氮化镓可发蓝光。
3.8 实验所用实验板电路图
实验所用键盘输入及8255A扩展LED的1号实验板电路图如图3.8-1所示:
图3.8-1 键盘输入及8255A扩展LED的1号实验板电路图
实验所用温控设定报警及显示2号板电路图如图3.8-2所示:
图3.8-2 温控设定报警及显示2号板电路图
l 第4章 软件设计
4.1程序设计
总流程图如图4.1-1所示:
图4.1-1 程序设计总流程图
4.2部分代码
#include <REG51.h>
#include <intrins.h>
#include <absacc.h>
#define COM XBYTE[0X8003]
#define PA XBYTE[0X8000]
#define PB XBYTE[0X8001]
#define PC XBYTE[0X8002]
#define uchar unsigned char
#define uint unsigned int
uchar xdata LED_1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar xdata LED_2[]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF};
sbit DQ = P1^5;
sbit CLK_CONV = P1^6;
sbit RST = P1^7;
sbit SETSWT = P2^0;
sbit SETSWT1 = P2^1;
uint data temp1;
uchar data val,flag,temp2;
float data cc,cd;
void delay(unsigned int time)
{
unsigned int j=0;
for(;time>0;time--)
for(j=0;j<125;j++);
}
void write_byte(uchar val) //写字节子程序
{
uchar i;
uchar b;
b=1;
for(i=0;i<8;i++)
{
CLK_CONV=0;
DQ=(val&b);
CLK_CONV=1;
b<<=1;
}
}
uchar read_byte(void) //读字节子程序
{
uchar i;
uchar value,b;
value=0;
b=1;
for(i=0;i<8;i++)
{
DQ=1;
CLK_CONV=0;
if (DQ)
value|=b;
CLK_CONV=1;
b<<=1;
}
return(value);
}
uchar DS1620startConv(void) //DS1620 开始转换
{
RST=1;
write_byte(0xEE);
RST=0;
return 0x00;
}
uchar DS1620ReadConf(void) //DS1620读配置 返回值为配置寄存器内容
{
uchar tmp;
RST=1;
write_byte(0xAC);
tmp=read_byte();
RST=0;
return tmp;
}
//DS1620 写配置,入回参数为配置寄存器新配置内容
uchar DS1620SetConf(uchar val)
{
uchar tmp;
RST=1;
write_byte(0x0C);
write_byte(val);
RST=0;
return tmp;
}
//DS1620 读温度转换数据,在返回值的低9位
uint DS1620read(void)
{
uchar hbyte,lbyte;
uint temp;
RST=1;
write_byte(0xAA);
lbyte=read_byte();
hbyte=read_byte();
RST=0;
temp=hbyte;
temp<<=8;
temp|=lbyte;
return temp;
}
//读高温报警
uint readhsettmp(void)
{
uchar htmp;
uint temp;
RST=1;
write_byte(0xA1);
htmp=read_byte();
RST=0;
temp=htmp;
return temp;
}
//读低温报警
uint readlsettmp(void)
{
uchar ltmp;
uint temp;
RST=1;
write_byte(0xA2);
ltmp=read_byte();
RST=0;
temp=ltmp;
return temp;
}
//LED输出函数
int show(char x,int y)
{
PB=x;
if(PB==0x02||PB==0X08)
PA=LED_1[y];
if(PB==0x01)
PA=LED_2[y];
delay(1);
}
void main() //主程序
{
int shi,dian,wo;
uint temp;
COM=0X80;
while(1)
{
if(SETSWT)
{
flag=0;
val=0x0a;
DS1620SetConf(val);
val=DS1620ReadConf();
DS1620startConv();
temp1=DS1620read(); //把温度值放入变量temp1中。
temp1=temp1&0x01ff; //保存数值有用部分,9位
if (temp1>0xff) {
flag=1;
temp2=temp1-256;
temp2=~temp2+1;
temp1=temp2;
}
cc=(float)temp1/2.0; //计算出温度值
shi=(int)cc/10;
cd=cc*10.0;
dian=(int)cd%100;
dian=dian%10;
wo=(int)cc%10;
show(0x02,shi);
show(0x01,wo);
show(0x08,dian);
}
else
{
if(SETSWT1)
{
temp=readhsettmp();
temp=temp/2;
shi=temp/10;
wo=temp%10;
show(0x02,shi);
show(0x01,wo);
}
else
{
temp=readlsettmp();
temp=temp/2;
shi=temp/10;
wo=temp%10;
show(0x02,shi);
show(0x01,wo);
}
}
}
}
l 第5章 设计总结
本设计运用89C51 芯片控制温度传感器DS1620,再辅之以部分外围电路实现对环境温度的测控,性能稳定,精度教高,并且扩展性能很强大。
通过将近一周的单片机课程设计,终于完毕了现场温度测控系统的设计,在大家的通力合作下,已基本达成设计规定,实现了测试温度并通过8255A扩展3个LED输出、通过按键来设立最高温和最低温、高温报警和低温报警,虽然键盘的输入输出没有实现,但也已编写出部分代码。
通过本次课程设计,巩固了本学期所学知识,提高了自己的动手能力,并使我意识届时间的重要性。在此后的学习过程中,不仅要通过学习理论知识拓展自己的知识范围,还要通过亲自实践来增长知识深度,从横向和纵向两方面来发展自己。
l 致谢
通过一周的紧张忙碌,我的课程设计也已经接近尾声,借此表达我的感激之情。
一方面,感谢学校、系为我提供的实验环境,让我能顺利完毕这次课程设计。
另一方面,感谢本次设计过程中向我提供无私帮助和关心的老师和同学,是你们让我通过这次课程设计提高了自己。
最后,感谢在百忙之中抽时间来对我的课程设计论文进行审阅、评议的吕英俊老师,感谢吕老师在本学期对我的指导和帮助。
l 参考文献
[1]孙育才.单片微型计算机及其应用.东南大学出版社.2023
[2]沈德金 陈粤初.单片机接口电路与应用程序实例.北京航天航空大学出版社.1990.
[3]潘新民 王燕芳.微型计算机控制技术.电子工业出版社2023
[4]李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,1998
[5]李广弟.单片机基础[M].北京:北京航空航天大学出版社,1994
[6]阎石.数字电子技术基础(第三版). 北京:高等教育
展开阅读全文