收藏 分销(赏)

基于单片机保温箱课程设计.doc

上传人:快乐****生活 文档编号:4362339 上传时间:2024-09-13 格式:DOC 页数:24 大小:175.50KB
下载 相关 举报
基于单片机保温箱课程设计.doc_第1页
第1页 / 共24页
基于单片机保温箱课程设计.doc_第2页
第2页 / 共24页
点击查看更多>>
资源描述
1、前言 随着人们生活水平得不断提高,单片机控制无疑就是人们追求得目标之一,它所给人带来得方便也就是不可否定得,其中数字温度计就就是一个典型得例子,但人们对它得要求越来越高,要为现代人工作、科研、生活、提供更好得更方便得设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。本保温箱温控系统所介绍得与传统得温度计相比,具有读数方便,测温范围广,控制准确,负载广泛,有LED显示相应得工作方式,其输出温度采用数字显示,主要用于对测温比较准确得场所,或科研实验室使用,该设计控制器使用单片机 STC89C51,测温传感器使用 DS18B20,用四位一体共阳极 LED 数码管显示数据,用继电器驱动负载,用PNP三极管驱动。 2、系统概述 单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟得技术,本文将介绍一种基于单片机保温箱得温控系统研究,本恒温箱属于多功能多用途,可以设置上下控制温度,当温度不在设置范围内时,可以驱动相应得负载工作,同时声光报警。 随着现代工农业技术得发展及人们对生活环境要求得提高,人们也迫切需要检测与控制温度。本文通过采用继电器作为温度得主要控制元件,它可以直接驱动2500W功率得负载,可以应用于家庭、小型工厂等小电量用电设备,亦可以用继电器来控制交流接触器线圈等,就可以实现对大功率负载得控制,应用十分广泛。采用蜂鸣器作为电声元件得报警,LED发光指示相应得加热或制冷工作。这种保温箱得温控系统结构简单,可操作性强,应用广泛。工作时,温度控制范围为上下限之间,当前环境温度若超过设定得临界温度,由单片机发出控制与报警信号,从而负载控制温度得变化。 基于单片机保温箱得温控系统大部分使用就是在实验室、工业、医药、农业中。在实验室中特别就是生物实验室,我们为了得到更加准确得实验数据,对于恒温实验环境要求严格。所以针对实验室来说,恒温箱得作用显得相当重要。在工业生产过程中我们对于恒温箱得要求也相对更加严格,比如产品得热处理、冷处理等,直接影响着产品得质量。在医药方面医用恒温箱主要用于药品与试剂得储存、运输,疫苗、血液得冷藏保温,透析液得加温、生理盐水得加温等。 由以上我们可以明显得瞧出恒温箱得重要作用。在农业温室大棚中,温控系统对于农作物得生长至关重要,对于农业方面,以至于生活中得各个方面温控系统永远处于相当重要得地位。 关键词:STC89C51单片机 温度控制 恒温箱 DS18B20 3 设计要求与方案论证 首先明确设计要求,再整体讨论与确定方案,一一攻破设计得难点。 3、1 设计要求 基本范围0℃-99℃ ; 精度误差小于 0、1℃ ; 数码管直读显示; 可以温度控制; 扩展功能:可以任意设定温度得上下限控制及报警功能,可以驱动加热与制冷负载。 3、2 系统基本方案选择与论证 3、2、1 单片机芯片得选择方案与论证 由于单片机具有以下得很多优点,被我们选定为制作该作品得首选芯片 单片机特点: (1)高集成度,体积小,高可靠性 单片机将各功能部件集成在一块晶体芯片上,集成度很高,体积自然也就是最小得。芯片本身就是按工业测控环境要求设计得,内部布线很短,其抗工业噪音性能优于一般通用得CPU。单片机程序指令,常数及表格等固化在ROM中不易破坏,许多信号通道均在一个芯片内,故可靠性高。 (2)控制功能强 为了满足对对象得控制要求,单片机得指令系统均有极丰富得条件:分支转移能力,I/O口得逻辑操作及位处理能力,非常适用于专门得控制功能。 (3)低电压,低功耗,便于生产便携式产品 为了满足广泛使用于便携式系统,许多单片机内得最低工作电压仅为1、8V~3、6V,而工作电流仅为数百微安。 (4)易扩展 片内具有计算机正常运行所必需得部件。芯片外部有许多供扩展用得三总线及并行、串行输入/输出管脚,很容易构成各种规模得计算机应用系统。 (5)优异得性价比 单片机得性能极高。为了提高速度与运行效率,单片机已开始使用RISC流水线与DSP等技术。单片机得寻址能力也已突破64KB得限制,有得已可达到1MB与16MB,片内得ROM容量可达62MB,RAM容量则可达2MB。由于单片机得广泛使用,因而销量极大,各大公司得商业竞争更使其价格十分低廉,其性能价格比极高。 方案一: 采用STC89C51芯片作为硬件核心。STC89C51内部具有4KB ROM 存储空间,512字节数据存储空间,带有2K字节得EEPROM存储空间,与MCS-51系列单片机完全兼容,STC89C51可以通过串口下载。 方案二: 采用AT89S51。AT89S51片内具有4K字节程序存储空间,256字节得数据存储空间没有EEPROM存储空间,也与MCS-51系列单片机完全兼容,具有在线编程可擦除技术。 两种单片机都完全能够满足设计需要,STC89C51相对ATS89C51价格便宜,且下载简单方便。考虑到方便因素,因此选用STC89C51。 3、2、2 温度传感器设计方案论证 利用物质各种物理性质随温度变化得规律把温度转换为电量得传感器。这些呈现规律性变化得物理性质主要有体。温度传感器就是温度测量仪表得核心部分,品种繁多。按测量方式可分为接触式与非接触式两大类,按照传感器材料及电子元件特性分为热电阻与热电偶两类。 现代信息技术得三大基础就是信息采集(即传感器技术)、信息传输(通信技术)与信息处理(计算机技术)。温度传感器得发展大致经历了以下三个阶段;(1)传统得分立式温度传感器(含敏感元件);(2)模拟集成温度传感器/控制器;(3)智能温度传感器。国际上新型温度传感器正从模拟式向数字式、由集成化向智能化、网络化得方向发展。在20世纪90年代中期最早推出得智能温度传感器,采用得就是8位A/D转换器,其测温精度较低,分辨力只能达到1°C。国外已相继推出多种高精度、高分辨力得智能温度传感器,所用得就是9~12位A/D转换器,分辨力一般可达0、5~0、0625°C。由美国DALLAS半导体公司新研制得DS1624型高分辨力智能温度传感器,能输出13位二进制数据,其分辨力高达0、03125°C,测温精度为±0、2°C。为了提高多通道智能温度传感器得转换速率,也有得芯片采用高速逐次逼近式A/D转换器。目前,智能温度传感器得总线技术也实现了标准化、规范化,所采用得总线主要有单线(1-Wire)总线、I2C总线、SMBus总线与spI总线。温度传感器作为从机可通过专用总线接口与主机进行通信。 方案一: 由于本设计就是测温电路,可以使用热敏电阻之类得器件利用其感温效应,在将随被测温度变化 得电压或电流采集过来,进行 A/D 转换后,就可以用单片机进行数据得处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到 A/D 转换电路,感温电路比较麻烦。 方案二: 进而考虑到用温度传感器,在单片机电路设计中,大多都就是使用传感器,所以这就是非常容易想到得,所以可以采用一只温度传感器 DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。 从以上两种方案,两种都完全能够满足设计需要,很容易瞧出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。 3、2、3 显示模块方案论证 方案一:1602液晶模块 1602液晶也叫1602字符型液晶它就是一种专门用来显示字母、数字、符号等显示模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距得间隔每行之间也有间隔起到了字符间距与行间距得作用,正因为如此所以她不能显示图形 它得优点就是微功耗、体积小、显示内容丰富、超薄轻巧。 方案二:数码管显示 数码管就是一种半导体发光器件,其基本单元就是发光二极管。数码管按段数分为七段数码管与八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管:按发光二极管单元连接方式分为共阳极数码管与共阴极数码管。共阳数码管就是指将所有发光二极管得阳极接到一起形成公共阳极(COM)得数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管得阴极为低电平时,相应字段就点亮,当某一字段得阴极为高电平时,相应字段就不亮。共阴数码管就是指将所有发光二极管得阴极接到一起形成公共阴极(COM)得数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管得阳极为高电平时,相应字段就点亮,当某一字段得阳极为低电平时,相应字段就不亮。由于它得价格便宜使用简单在电器特别就是家电领域应用极为广泛。 综上所诉:LCD1602虽然显示较全;但数码管以完全能显示温度值,价格也差6倍之多,数码管更适合本设计,固本设计用数码管作为显示模块。 3、3 电路设计最终方案决定 综上各方案所述,对此次作品得方案选定:采用STC89C51单片机作为主控制系统;采用DS18B20为传感器;采用数码管作为显示器件。 4主要元件介绍 4、1 STC89C51介绍 STC89C51就是由宏晶科技公司生产得与工业标准MCS-51指令集与输出管脚相兼容得单片机。 (1)中央处理器(CPU) 中央处理器就是单片机得核心,完成运算与控制功能。8051得CPU能处理8位二进制数或代码。 (2)内部数据存储器(内部RAM) 8051芯片中共有256个RAM单元,但其中后128单元被专用寄存器占用,能作为寄存器供用户使用得只就是前128单元,用于存放可读写得数据。因此通常所说得内部数据存储器就就是指前128单元,简称内部RAM。 (3)内部程序存储器(内部ROM) 8051共有4KB掩膜ROM,用于存放程序、原始数据或表格,因此,称之为程序存储器,简称内部ROM。 (4)定时/计数器 8051共有两个16位得定时/计数器,以实现定时或计数功能,并以其定时或计数结果对计算机进行控制。 (5)并行I/O口 MCS-51共有4个8位得I/O口(P0、P1、P2、P3),以实现数据得并行输入/输出。 (6)串行口 8051单片机有一个全双工得串行口,以实现单片机与其它设备之间得串行数据传送。该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为同步移位器使用。 (7)中断控制系统 8051单片机得中断功能较强,以满足控制应用得需要。8051共有5个中断源,即外中断两个,定时/计数中断两个,串行中断一个。全部中断分为高级与低级共两个优先级别。 (8) 时钟电路 8051芯片得内部有时钟电路,但石英晶体与微调电容需外接。时钟电路为单片机产生时钟脉冲序列。系统允许得晶振频率一般为6 MHz与12 MHz。 从上述内容可以瞧出,MCS-51虽然就是一个单片机芯片,但作为计算机应该具有得基本部件它都包括,因此,实际上它已就是一个简单得微型计算机系统了。 4、1、1 STC89C51主要功能及PDIP封装 STC89C51主要功能如表1所示,其PDIP封装如图1所示 主要功能特性 兼容MCS51指令系统 8K可反复擦写Flash ROM 32个双向I/O口 256x8bit内部RAM 3个16位可编程定时/计数器中断 时钟频率0-24MHz 2个串行中断 可编程UART串行通道 2个外部中断源 共6个中断源 2个读写中断口线 3级加密位 低功耗空闲与掉电模式 软件设置睡眠与唤醒功能 表1:STC89C51主要功能 4、1、2 STC89C51引脚介绍 ① 主电源引脚(2根) VCC(Pin40):电源输入,接+5V电源 GND(Pin20):接地线 ②外接晶振引脚(2根) XTAL1(Pin19):片内振荡电路得输入端 XTAL2(Pin20):片内振荡电路得输出端 ③控制引脚(4根) RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期得高电平将使单片机复位。 ALE/PROG(Pin30):地址锁存允许信号 PSEN(Pin29):外部存储器读选通信号 EA/VPP(Pin31):程序存储器得内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。 ④可编程输入/输出引脚(32根) STC89C51单片机有4组8位得可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。 P0口(Pin39~Pin32):8位双向I/O口线,名称为P0、0~P0、7 P1口(Pin1~Pin8):8位准双向I/O口线,名称为P1、0~P1、7 P2口(Pin21~Pin28):8位准双向I/O口线,名称为P2、0~P2、7 P3口(Pin10~Pin17):8位准双向I/O口线,名称为P3、0~P3、7 图1:STC89C51封装图 4、1、3 单片机最小系统: 当在STC89C51单片机得RST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作,按键手动复位有电平方式与脉冲方式两种。其中电平复位就是通过RST端经过电阻与电源VCC接通而实现得。最小系统如图2所示。 图2 单片机最小系统电路 (1)内部方式时钟电路 在8051芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。而在芯片得外部,XTAL1与XTAL2之间跨接晶体振荡器与微调电容,从而构成一个稳定得自激振荡器,这就就是单片机得时钟电路,如图3-3所示。 时钟电路产生得振荡脉冲经过触发器进行二分频之后,才成为单片机得时钟脉冲信号。请读者特别注意时钟脉冲与振荡脉冲之间得二分频关系,否则会造成概念上得错误。一般地,电容C1与C2取30pF左右,晶体得振荡频率范围就是1、2~12MHz。晶体振荡频率高,则系统得时钟频率也高,单片机运行速度也就快。8051在通常应用情况下,使用振荡频率为6MHz或12MHz。 图 2-3 时钟振荡电路 (2)外部方式时钟电路 在由多片单片机组成得系统中,为了各单片机之间时钟信号得同步,应当引入惟一得公用外部脉冲信号作为各单片机得振荡脉冲。这时,外部得脉冲信号就是经XTAL2引脚注入,其连接如图3-4所示。 图 2-4 外部时钟源接法 (3) 时序 时序就是用定时单位来说明得。8051得时序定时单位共有4个,从小到大依次就是:节拍、状态、机器周期与指令周期。它们之间得关系如下: 1)一个振荡脉冲得周期为节拍; 2)一个状态就包含两个节拍; 3)一个机器周期得宽度为6个状态; 4)一条指令周期由若干个机器周期组成。 (4) 单片机得复位电路 单片机复位就是使CPU与系统中得其她功能部件都处在一个确定得初始状态,并从这个状态开始工作,复位后PC=0000H,使单片机从第一个单元取指令。单片机复位得条件就是:必须使RST/VPD 或RST引脚加上持续两个机器周期(即24个振荡周期)得高电平。若时钟频率为12 MHz,每机器周期为1 μs,则只需2μs以上时间得高电平,在RST引脚出现高电平后得第二个机器周期执行复位。 单片机复位期间不产生ALE与PSEN信号,即ALE=1与PSEN=1。这表明单片机复位期间不会有任何取指操作。复位后,内部各专用寄存器状态如下: PC: 0000H TMOD: 00H ACC: 00H TCON: 00H B: 00H TH0: 00H PSW: 00H TL0: 00H SP: 07H TH1: 00H DPTR: 0000H TL1: 00H P0~P3:FFH SCON: 00H IP: ***00000B SBUF: 不定 IE: 0**00000B PCON: 0***0000 其中,*表示无关位。注意: (1)复位后PC值为0000H,表明复位后程序从0000H 开始执行,这一点在实训中已介绍。 (2)SP值为07H,表明堆栈底部在07H。一般需重新设置SP值。 (3)P0~P3口值为FFH。P0~P3口用作输入口时,必须先写入“1”。单片机在复位后,已使P0~P3口每一端线为“1”,为这些端线用作输入口做好了准备。 电路以STC89C51单片机最小系统为控制核心,测温电路由DS18B20提供,输入部分采用三个独立式按键S1、S2、S3。数码管显示部分。具体电路连接,详见附录1。 4、2 DS18B20传感器介绍 4、2、1 DS18B20概述 在现代检测技术中,传感器占据着不可动摇得重要位置。主机对数据得处理能力已经相当得强,但就是对现实世界中得模拟量却无能为力。如果没有各种精确可靠得传感器对非电量与模拟信号进行检测并提供可靠得数据,那计算机也无法发挥她应有得作用。传感器把非电量转换为电量,经过放大处理后,转换为数字量输入计算机,由计算机对信号进行分析处理。从而传感器技术与计算机技术结合起来,对自动化与信息化起重要作用。 采用各种传感器与微处理技术可以对各种工业参数及工业产品进行测控及检验,准确测量产品性能,及时发现隐患。为提高产品质量、改进产品性能,防止事故发生提供必要得信息与更可靠得数据。由于系统得工作环境比较恶劣,且对测量要求比较高,所以选择合适得传感器很重要。目前,国际上新型温度传感器正从模拟式向数字式、从集成化向智能化与网络化得方向飞速发展。智能温度传感器DS18B20正就是朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器与网络传感器、研制单片测温系统等高科技得方向迅速发展。因此,智能温度传感器DS18B20作为温度测量装置已广泛应用于人民得日常生活与工农业生产中。 美国DALLAS公司生产得 DS18B20可组网数字温度传感器芯片外加不锈钢保护管封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温与控制领域。有独特得单线接口方式,DS1820在与微处理器连接时仅需要一条口线即可实现微处理器与DS1820得双向通讯;其测温范围 -55℃~+125℃,固有测温分辨率0、5℃;支持多点组网功能;多个DS1820可以并联在唯一得三线上,实现多点测温;工作电源为3~5V/DC;在使用中不需要任何外围元件。18B20共有三种形态得存储器资源,它们分别就是:ROM 只读存储器,用于存放DS18B20ID编码,其前8位就是单线系列编码(DS18B20得编码就是19H),后面48位就是芯片唯一得序列号,最后8位就是以上56位得CRC码(冗余校验)。数据在出产时设置不由用户更改。DS18B20共64位ROM。RAM 数据暂存器,用于内部计算与数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。第1、2个字节就是温度转换后得数据值信息,第3、4个字节就是用户EEPROM(常用于温度报警值储存)得镜像。在上电复位时其值将被刷新。第5个字节则就是用户第3个EEPROM得镜像。第6、7、8个字节为计数寄存器,就是为了让用户得到更高得温度分辨率而设计得,同样也就是内部温度转换、计算得暂存单元。第9个字节为前8个字节得CRC码。EEPROM 非易失性记忆体,用于存放长期需要保存得数据,上下限温度报警值与校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像,以方便用户操作。 DS18B20得性能特点如下: (1) 采用DALLAS公司独特得单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20得双向通讯; (2)在使用中不需要任何外围元件; (3)可用数据线供电,供电电压范围:+3、0V~+5、5V; (4)测温范围:-55~+125℃。固有测温分辨率为0、5℃。当在-10℃~+85℃范围内,可确保测量误差不超过0、5℃,在-55~+125℃范围内,测量误差也不超过2℃; (5)通过编程可实现9~12位得数字读数方式; (6)用户可自设定非易失性得报警上下限值; (7)支持多点得组网功能,多个DS18B20可以并联在唯一得三线上,实现多点测温 (8)负压特性,即具有电源反接保护电路。当电源电压得极性反接时,能保护DS18B20不会因发热而烧毁,但此时芯片无法正常工作; (9)DS18B20得转换速率比较高,进行9位得温度值转换只需93、75ms; (10)适配各种单片机或系统; (11)内含64位激光修正得只读存储ROM,扣除8位产品系列号与8位循环冗余校验码(CRC)之后,产品序号占48位。出厂前产品序号存入其ROM中。在构成大型温控系统时,允许在单线总线上挂接多片DS18B20。 4、2、2 DS18B20引脚介绍 图3:DS18B20引脚 各引脚功能为:I/O为数据输入/输出端(即单线总线),它属于漏极开路输出,外接上拉电阻后,常态下呈高电平。UDD就是可供选用得外部电源端,不用时接地,GND为地,NC空脚。 4、2、3 DS18B20得内部结构 DS18B20得内部结构主要包括7部分:寄生电源、温度传感器、64位激光(loser)ROM与单线接口、高速暂存器(即便筏式RAM,用于存放中间数据)、TH触发寄存器与TL触发寄存器,分别用来存储用户设定得温度上下限值、存储与控制逻辑、位循环冗余校验码(CRC)发生器。 图4:DS18B20内部结构 4、2、4 DS18B20得程序流程图 否 就是 发出温度转换命令 写入18B20 读温度前复位 显示测温点位置 18B20复位 开始 18B20存在? 延时 发出读温度命令 写入18B20 读入温度值数据 返回 延时 图5程序流程图 4、3数码管介绍 数码管就是一种半导体发光器件,其基本单元就是发光二极管。数码管按段数分为七段数码管与八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;   按发光二极管单元连接方式分为共阳极数码管与共阴极数码管。共阳数码管就是指将所有发光二极管得阳极接到一起形成公共阳极(COM)得数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管得阴极为低电平时,相应字段就点亮,当某一字段得阴极为高电平时,相应字段就不亮。共阴数码管就是指将所有发光二极管得阴极接到一起形成公共阴极(COM)得数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管得阳极为高电平时,相应字段就点亮,当某一字段得阳极为低电平时,相应字段就不亮。 图5:数码管 数码显示器就是一种由LED发光二极管组合显示字符得显示器件,它使用了8个Led发光二极管,其中七个用于显示字符,一个显示小数点,所以通称为七段发光二极管数码显示器。4位一体数码管,其内部段已连接好,引脚如图所示(数码管得正面朝自己,小数点在下方)。a、b、c、d、e、f、g、dp为段引脚,S1、S2、S3、S4分别表示四个数码管得位。 4、4继电器介绍 电磁继电器一般由铁芯、线圈、衔铁、触点簧片等组成得。只要在线圈两端加上一定得电压,线圈中就会流过一定得电流,从而产生电磁效应,衔铁就会在电磁力吸引得作用下克服返回弹簧得拉力吸向铁芯,从而带动衔铁得动触点与静触点(常开触点)吸合。当线圈断电后,电磁得吸力也随之消失,衔铁就会在弹簧得反作用力返回原来得位置,使动触点与原来得静触点(常闭触点)释放。这样吸合、释放,从而达到了在电路中得导通、切断得目得。对于继电器得“常开、常闭”触点,可以这样来区分:继电器线圈未通电时处于断开状态得静触点,称为“常开触点”;处于接通状态得静触点称为“常闭触点”。继电器一般有两股电路,为低压控制电路与高压工作电路。 图6:继电器剖析图 5程序流程图 开始 初始化 读取 当前 温度 显示当前温度 判断SET就是否按下 正常范围 否 就是 否 加减键就是否按下 当前温度与上下限位关系 小于下限 大于上限 就是 下限继电器工作,蜂鸣器闪响 上限继电器工作,蜂鸣器闪响 相应处理 上下限位 While循环返回 图7:程序流程图 6、结束语 通过对自己在大学两年时间里所学得知识得回顾,并充分发挥对所学知识得理解与对毕业设计得思考及书面表达能力,最终完成了本设计。为了更好地完成这个设计,我与同学一起买了这个设计需要用到得零件,并且与我得同学积极参加到实践之中,在焊接过程中,由于对焊接技术掌握得不好与对电路分析得不明确,导致自己焊接出得产品无法达到预期得效果。通过这次设计,使我深深地懂得了知识必须与实践相结合,只有掌握扎实得知识与丰富得实践经验,才能学好单片机。才能将知识更好地运用于现实生活中。 7参考文献 [1] 陈权昌,李兴富、单片机原理及应用[M]、广州:华南理工大学出版社,2007、84~102 [2] 李庆亮、C语言程序设计实用教程[M]、北京:机械工业出版社,2005、32~58 [3] 杨志忠、数字电子技术[M]、北京:高等教育出版社,2003、125~132 [4] 及力、Protel 99 SE原理图与PCB设计教程[M]、北京:电子工业出版社,2007、89~150 [5] 徐江海、单片机实用教程[M]、北京:机械工业出版社,2006、128~156 [6] 胡宴如、模拟电子技术[M]、北京:高等教育出版社,2008、60~104 [7] 汪文,陈林、单片机原理及应用[M]、湖北:华中科技大学出版社,2007、36~68 [8] 康华光、电子技术基础数字部分[M]、北京:高等教育出版社,2008、203~209 [9] 杨欣.电子设计从零开始[M]、北京:清华大学出版社,2005、28~102 8、附录1 C语言程序 #include <reg51、h> #define uint unsigned int #define uchar unsigned char //宏定义 sbit SET=P3^1; //定义调整键 sbit DEC=P3^2; //定义减少键 sbit ADD=P3^3; //定义增加键 sbit BEEP=P3^6; //定义蜂鸣器 sbit ALAM=P1^2; //定义灯光报警 sbit ALAM1=P1^4; sbit DQ=P3^7; //定义DS18B20总线I/O bit shanshuo_st; //闪烁间隔标志 bit beep_st; //蜂鸣器间隔标志 sbit DIAN = P0^5; //小数点 uchar x=0; //计数器 signed char m; //温度值全局变量 uchar n; //温度值全局变量 uchar set_st=0; //状态标志 signed char shangxian=38; //上限报警温度,默认值为38 signed char xiaxian=5; //下限报警温度,默认值为5 //uchar code LEDData[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff}; uchar code LEDData[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7,0xCF,0xDA,0x9B,0xDC,0x9B,0x8B}; //============================================================================================ //====================================DS18B20================================================= //============================================================================================ /*****延时子程序*****/ void Delay_DS18B20(int num) { while(num--) ; } /*****初始化DS18B20*****/ void Init_DS18B20(void) { unsigned char x=0; DQ = 1; //DQ复位 Delay_DS18B20(8); //稍做延时 DQ = 0; //单片机将DQ拉低 Delay_DS18B20(80); //精确延时,大于480us DQ = 1; //拉高总线 Delay_DS18B20(14); x = DQ; //稍做延时后,如果x=0则初始化成功,x=1则初始化失败 Delay_DS18B20(20); } /*****读一个字节*****/ unsigned char ReadOneChar(void) { unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--) { DQ = 0; // 给脉冲信号 dat>>=1; DQ = 1; // 给脉冲信号 if(DQ) dat|=0x80; Delay_DS18B20(4); } return(dat); } /*****写一个字节*****/ void WriteOneChar(unsigned char dat) { unsigned char i=0; for (i=8; i>0; i--) { DQ = 0; DQ = dat&0x01; Delay_DS18B20(5); DQ = 1; dat>>=1; } } /*****读取温度*****/ unsigned int ReadTemperature(void) { unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0; Init_DS18B20(); WriteOneChar(0xCC); //跳过读序号列号得操作 WriteOneChar(0x44); //启动温度转换 Init_DS18B20(); WriteOneChar(0xCC); //跳过读序号列号得操作 WriteOneChar(0xBE); //读取温度寄存器 a=ReadOneChar(); //读低8位 b=ReadOneChar(); //读高8位 t=b; t<<=8; t=t|a; tt=t*0、0625; t= tt*10+0、5; //放大10倍输出并四舍五入 return(t); } //===================================================================================== //===================================================================================== //===================================================================================== /*****延时子程序*****/ void Delay(uint num) { while( --num ); } /*****初始化定时器0*****/ void InitTimer(void) { TMOD=0x1; TH0=0x3c; TL0=0xb0; //50ms(晶振12M) } /*****读取温度*****/ void check_wendu(void) { uint a,b,c; c=ReadTemperature()-5; //获取温度值并减去DS18B20得温漂误差 a=c/100; //计算得到十位数字 b=c/10-a*10; //计算得到个位数字 m=c/10; //计算得到整数位 n=c-a*100-b*10; //计算得到小数位 if(m<0){m=0;n=0;} //设置温度显示上限 if(m>99){m=99;n=9;} //设置温度显示上限 } /*****显示开机初始化等待画面*****/ void Disp_init(void) { P0 = ~0x80; //显示---- P2 = 0x7F; Delay(200); P2 = 0xDF; Delay(200); P2 = 0xF7; Delay(200); P2 = 0xFD; Delay(200); P2 = 0xFF; //关闭显示 } /*****显示温度子程序*****/ void Disp_Temperature(void) //显示温度 { P0 = ~0x98; //显示C P2 = 0x7F; Delay(400); P0=~LEDData[n]; //显示个位 P2 = 0xDF; Delay(400); P0 =~LEDData[m%10]; //显示十位 DIAN = 0; //显示小数点 P2 = 0xF7; Delay(400); P0 =~LEDData[m/10]; //显示百位 P2 = 0xFD; Delay(400); P2 = 0xff; //关闭显示 } /*****显示报警温度子程序*****/ void Disp_alarm(uchar baojing) { P0 =~0x98; //显示C P2 = 0x7F; Delay(200); P0 =~LEDData[baojing%10]; //显示十位 P2 = 0xDF; Delay(200); P0 =~LEDData[baojing/10]; //显示百位 P2 = 0xF7; Delay(200); if(set_st==1)P0 =~0xCE; else if(set_st==2)P0 =~0x1A; //上限H、下限L标示
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服