1、课程名称: 微机原理课程设计 题 目: 温度检测课程设计 摘要随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的温度检测仪。本设计使用简便,功能丰富。可以实现温度采集,温度报警,重设上下限温度值等功能。在现代化的工业生产中,需要对周围环境的温度进行检测和控制。本设计对温控报警问题展开思考,设计一个能根据需求设置低温到高温进行报警并通过数码管显示的系统。该系统使用 STC89C51 单片机,同时运用单线数字温度传感器 DS18B20,四位共阴数码管显示,按键控制等模块可实现温度的检测与设置。课题经过实验验证达到设计
2、要求,具有一定的使用价值和推广价值。本作品使用四位共阴数码管显示,可以清晰地显示当前的报警温度,一定程度避免使用者使用时出错,安全可靠,可使用于各种食品储存室,植物养殖所等地方,实用性很高。关键字:温度报警器 STC89C51 单片机 数码管 DS18B20目录一、课程设计目的和要求 .11.1 设计目的 .11.2 设计要求 .1二、总体设计方案 1三、硬件设计 23.1 DS18B20 传感器 .23.2 STC89C51 功能介绍 .53.3 时钟电路 .73.4 复位电路 .83.5 LED 显示系统电路 .83.6 按键控制电路 .103.7 蜂鸣器电路 .103.8 总体电路设计
3、.11四、软件设计 134.1 keil 软件 .134.2 系统主程序设计 .134.3 系统子程序设计 .14五、仿真与实现 165.1 PROTEUS 仿真软件 .165.2 STC-ISP 程序烧录软件 175.3 使用说明 .17六、总结 181一、课程设计目的和要求1.1 设计目的熟悉典型 51 单片机,加深对 51 单片机课程的全面认识和掌握,对 51 单片机及其接口的应用作进一步的了解,掌握基于 51 单片机的系统设计的一般流程、方法和技巧,为我们解决工程实际问题打下坚实的基础。同时课程设计也是让我们熟练掌握了课本上的一些理论知识,是一个学习新知识、巩固加深所学课本理论知识的过
4、程,它培养了我们综合运用知识、独立思考和解决问题的能力,加深了我们对单片机原理与应用课程的理解。所以此次设计目的具体如下: 掌握温度检测仪的设计、组装与调试方法; 熟悉集成电路 DS18B20 的使用方法,并掌握其工作原理;1.2 设计要求根据单片机原理及应用课程的要求,主要进行两个方面的设计,即单片机最小系统和外围电路扩展设计、接口技术应用设计。其中,单片机最小系统主要要求学生熟悉单片机的内部结构和引脚功能、引脚的使用、复位电路、时钟电路、4 个并行接口和一个串行接口的实际应用,从而可构成最小应用系统,并编程进行简单使用。在采集温度时,为了具有一种反应准确且显示方便的检测温度的装置,下面设计
5、了一种可调节的温度检测仪,也可称作温度报警器。设计要求如下: 完成温度进行测量,理论测量范围-55C+125C; 将温度测量值通过四位共阴数码管显示模块显示,显示精度为 0.5C; 可以通过按键进行对上下限报警温度,自行设定并实现功能;二、总体设计方案硬件电路设计由 7 个部分组成;DS18B20 传感器模块,STC89C51 单片机系统,LED显示系统、时钟电路、复位电路以及按键控制电路。其系统框图如下图 1 所示:时 钟 电 路按 键 控 制时 钟 电 路按 键 控 制复 位 电 路时 钟 电 路按 键 控 制 STC89C51DS18B20传 感 器温 度 采 集蜂 鸣 器 电 路显 示
6、 电 路图 1 系统框图2三、硬件设计3.1 DS18B20 传感器1) DS18B20 简介DS18B20 内部结构主要由四部分组成:64 位光刻 ROM、温度传感器、非挥发的温度报警触发器 TH 和 TL、配置寄存器。该装置信号线高的时候,内部电容器 储存能量通由1 线通信线路给片子供电,而且在低电平期间为片子供电直至下一个高电平的到来重新充电。 DS18B20 的电源也可以从外部 3V-5.5V 的电压得到。DS18B20 采用一线通信接口。因为一线通信接口,必须在先完成 ROM 设定,否则记忆和控制功能将无法使用。主要首先提供以下功能命令之一:1)读 ROM;2)ROM 匹配;3)搜索
7、 ROM; 4)跳过 ROM;5)报警检查。这些指令操作作用在没有一个器件的 64 位光刻 ROM 序列号,可以在挂在一线上多个器件选定某一个器件,同时,总线也可以知道总线上挂有有多少,什么样的设备。若指令成功地使 DS18B20 完成温度测量,数据存储在 DS18B20 的存储器。一个控制功能指挥指示 DS18B20 的演出测温。测量结果将被放置在 DS18B20 内存中,并可以让阅读发出记忆功能的指挥,阅读内容的片上存储器。温度报警触发器 TH 和 TL 都有一字节EEPROM 的数据。如果 DS18B20 不使用报警检查指令,这些寄存器可作为一般的用户记忆用途。在片上还载有配置字节以理想
8、的解决温度数字转换。写 TH,TL 指令以及配置字节利用一个记忆功能的指令完成。通过缓存器读寄存器。所有数据的读,写都是从最低位开始。采用 DALLAS 最新单线数字温度传感器 DS18B20。DS18B20“ 一线总线”数字化温度传感器也支持“一线总线” 接口,测量温度范围为-55C+125C,在-10+85C 范围内,精度为0.5C。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。DS18B20 的特性: DS18B20 可以程序设定 912 位的分辨率,精度为 0.5C。可选更小的封装方
9、式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在 EEPROM中,掉电后依然保存。2) DS18B20 主要特性独特的单线接口方式,DS18B20 在与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯;测温范围55 +125,固有测温误差 1;支持多点组网功能,多个 DS18B20 可以并联在唯一的三线上,最多只能并联 8 个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定;工作电源:35V/DC(可以数据线寄生电源) ;在使用中不需要任何外围元件;测量结果以 912 位数字量方式串行传送;不锈钢保护管直径 6;适用于 DN1
10、525,DN40DN250 各种介质工业管道和狭小空间设备测温;标准安装螺纹 M10X1,M12X1.5,G1/2”任选;PVC 电缆直接出线3或德式球型接线盒出线,便于与其它电器设备连接。3) DS18B20 芯片引脚说明DS18B20 只有三个引脚,如下图所示图 2 DS18B20 引脚DS18B20 有 3 个引脚,其每个引脚都有着特定的功能:GND (1 引脚)为电源地;DQ(2 引脚)为数字信号输入/ 输出端;VDD(3 引脚)为外接供电电源输入端(在寄生电源接线方式时接地) 。如图 2。左负右正,一旦接反就会立刻发热,有可能烧毁!接反是导致该传感器总是显示 85的原因。面对着扁平的
11、那一面,左负右正。如图 3 为寄生电源供电方式:图 3 DS18B20 寄生电源供电方式4) DS18B20 工作原理独特的单线接口方式使其工作是必须按照严格的时序才能进行。DS18B20 的所有通信都由由复位脉冲组成的初始化序列开始。该初始化序列由主机发出,后跟由 DS18B20 发出的存在脉冲(presence pulse)。当发出应答复位脉冲的存在脉冲后,DS18B20 通知主机它在总线上并且准备好操作了。在初始化步骤中,总线上的主机通过拉低单总线至少 480s来产生复位脉冲。然后总线主机释放总线并进入接收模式。主机将总线拉低最短 480us,之后释放总线。由于 5k 上拉电阻的作用,总
12、线恢复到高电平。DS18B20 检测到上升沿后4等待 15 到 60us,发出存在脉冲:拉低总线 60-240us。至此,初始化和存在时序完毕。其时序如下图所示:图 4 DS18B20 初始化时序主机在写时序向 DS18B20 写入数据,并在读时序从 DS18B20 读入数据。在单总线上每个时序只传送一位数据。写时序分为两种:写“0”时间隙和写 “1”时间隙。总线主机使用写“1” 时间隙向 DS18B20 写入逻辑 1,使用写“0”时间隙向 DS18B20 写入逻辑 0 所有的写时序必须有最少 60us 的持续时间,相邻两个写时序必须要有最少 1us 的恢复时间。两种写时序都通过主机拉低总线产
13、生。为产生写 1 时序,在拉低总线后主机必须在 15s 内释放总线。在总线被释放后,由于 5k 上拉电阻的作用,总线恢复为高电平。为产生写 0 时序,在拉低总线后主机必须继续拉低总线以满足时序持续时间的要求( 至少 60s)。在主机产生写时序后,DS18B20 会在其后的 15 到 60us 的一个时间窗口内采样单总线。在采样的时间窗口内,如果总线为高电平,主机会向 DS18B20 写入 1;如果总线为低电平,主机会向DS18B20 写入 0。写 0 时序和写 1 时序如图 5 所示:图 5 写“0”时序和写“1”时序DS18B20 只有在主机发出读时序后才会向主机发送数据。因此,在发出读暂存
14、器命令 BEh或读电源命令B4h 后,主机必须立即产生读时序以便 DS18B20 提供所需数据。另外,主机可在发出温度转换命令。所有的读时序必须至少有 60us 的持续时间。相邻两个读时序必须要有最少 1us 的恢复时间。所有的读时序都由拉低总线,持续至少 1us 后再释放总线(由于上拉电阻的作用,总线恢复为高电平)产生。在主机产生读时序后,DS18B20 开始发送 0 或 1 到总线上。DS18B20 让总线保持高电平的方式发送 1,以拉低总线的方式表示5发送 0 当发送 0 的时候,DS18B20 在读时序的末期将会释放总线,总线将会被上拉电阻拉回高电平(也是总线空闲的状态)。DS18B2
15、0 输出的数据在下降沿(下降沿产生读时序)产生后 15us 后有效。因此,主机释放总线和采样总线等动作要在 15s 内完成。图 6 为DS18B20 的读时序图:图 6 读“0”时序和读“1”时序表明了对于读时序,TINIT(下降沿后低电平持续时间),TRC (上升沿)和TSAMPLE(主机采样总线)的时间和要在 15s 以内。5) DS18B20 模块电路图本设计的 DS18B20 模块负责电路功能是温度采集与转化(DS18B20 芯片能自动将采集的温度模拟量转化为数字量) ,其具体连接电路如下图所示: GND3OUT2VC1S8BP.图 7 DS18B20 连接电路DS18B20 只有三个
16、引脚,因此硬件连线上较为简单。其单总线连接是单片机的 P1.1 口,因此在程序中可以通过控制 P1.1 口从而来控制 DS18B20 的功能。如上图所示,上图是DS18B20 在 proteus 中的元件图。该元件上有一个向上和向下箭头,它表示控制传感器的温度,并且温度在传感器能显示出来。这只是仿真上的一个形式,当然实际的元件不是这样的。并且此处为了连接采用的是外接电源的方式,没有使用寄生电源。若在实际工程使用中,如果连接线路更长,为防止电路受外界干扰,可在 DQ 这条线路上接一个 5k 的上拉电阻,这样即可使电路更加稳定。3.2 STC89C51 功能介绍1) 简单概述STC89C51 是一
17、种带 4K 字节闪存可编程可擦除只读存储器( FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能 CMOS8 位微处理器,俗称单片机。STC 89C51 是一种带 2K 字节闪存可编程可擦除只读存储器的单片机。单片机的6可擦除只读存储器可以反复擦除 1000 次。该器件采用高密度非易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中,STC 的 89C51 是一种高效微控制器。STC89C51 单片机为很多嵌入式控制系统提供了一种灵活性高
18、且价廉的方案。外形及仿真引脚排列如图 8 所示:P0.123457VCGNDXTRS9/IWALEOU单 片 机图 8 89C51 单片机引脚2) 主要功能特性带有增强型 1T 流水线/精简指令集结构 8051CPU;工作电压为 3.4V-5.5V(5V 单片机)或 2.0V-3.8V( 3V 单片机) ;工作频率范围是 0-35MHz,相当于普通 8051 的 0420MHz ,实际工作频率可达 48MHz;用户 应用程序空间有 12K/10K/8K/6K/4K/2K 字节等多种选择;片上集成 512 字节 RAM;通用 I/O 口(27/23 个) ,复位后为准双向口/弱上拉(普通 805
19、1传统 I/O 口) ;可设置成四种模式: 准双向口/弱上拉,推挽/ 强上拉,仅为输入/高阻,开漏;每个 I/O 口驱动能力均可达到 20mA,但整个芯片最大不得超过 55mA;ISP(在系统可编程)/IAP (在应用可编程) ,无需专用编程器;可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成;内部集成 MAX810 专用复位电路(外部晶体 20M 以下时,可省外部复位电路) ;时钟源特点是外部高精度晶体/时钟,内部 R/C 振荡器,用户在下载用户程序时,可选择是使用内部 R/C 振荡器还是外部晶体 /时钟。常温下内部 R/C 振荡器频率为:5.2MHz6.8MHz。精度要求不高
20、时,可选择使用内部时钟,因为有温漂,所一般选4MHz 8MHz;有 2 个 16 位 定时器/ 计数器;外部中断 2 路,下降沿中断或低电平触发中断,Power Down 模式可由外部中断低电平触发中断方式唤醒; PWM(4 路)/PCA (可编程计数器阵列) ,也可用来再实现 4 个定时器或 4 个外部中断(上升沿中断/下降沿中断均可支持);STC89C51 具有 ADC 功能。10 位精度 ADC,共 8 路;通用异步 串行口(UART) ,SPI 同步通信口,主模式/从模式工作温度范围 :0-75/-40-+85;封装类型有 PDIP-28,SOP-28,PDIP-20, SOP-20,
21、PLCC-32,TSSOP-20 等。3) STC89C51 引脚89C51 单片机多采用 40 只引脚的双列直插封装 (DIP)方式,下面分别简单介绍。首先电源引脚 VCC 是 40 引脚,单片机正是通过它接入+5V 工作电源。与之相对的是 GND(20引脚) ,它是接地端,有了 VCC 与 GND 整体电路才能形成回路。时钟引脚有两个,分别7是 XTAL1(19 引脚 )和 XTAL2(20 引脚),其中 XTAL1 是片内振荡器反相放大器和时钟发生器电路的输入端,而 XTAL2 是片内振荡器反相放大器的输出端;复位 RST(9 引脚)在振荡器运行时,当有两个机器周期(24 个振荡周期)以
22、上的高电平出现在此引脚时,将使单片机复位,只要这个引脚保持高电平,51 芯片便可循环复位;EA/Vpp(31 引脚) 为外部程序存储器访问允许控制端。当它为高电平时,单片机读片内程序存储器,在 PC 值超过 0FFFH后将自动转向外部程序存储器。当它为低电平时,只限定在外部程序存储器,地址为0000HFFFFH。Vpp 为该引脚的第二功能,为编程电压输入端;ALE/PROG(30 引脚)其中ALE 为低八位地址锁存允许信号。在系统扩展时,ALE 的负跳变沿 P0 口发出的第八位地址锁存在外接的地址锁存器,然后再作为数据端口。PROG 为该引脚的第二功能,在对片外存储器编程时,此引脚为编程脉冲输
23、入端;PSEN(29 引脚)为片外程序存储器的读选通信号端。在单片机读片外程序存储器时,此引脚输出脉冲的负跳变沿作为读片外程序存储器的选通信号;Pin39-Pin32 为 P0.0-P0.7 输入输出脚,P0 口是一个 8 位漏极开路型双向 I/O口,内部不带上拉电阻,当外接上拉电阻时,P0 口能以吸收电流的方式驱动八个 TTL 负载电路。通常在使用时外接上拉电阻,用来驱动多个数码管。在访问外部程序和外部数据存储器时,P0 口是分时转换的地址( 低 8 位)/数据总线,不需要外接上拉电阻;Pin1-Pin8为 P1.0-P1.7 输入输出脚是一个带内部上拉电阻的 8 位双向 I/0 口。P1
24、口能驱动 4 个 TTL负载;Pin21-Pin28 为 P2.0-P2.7 输入输出脚,P2 口是一个带内部上拉电阻的 8 位双向 I/O口,P2 口能驱动 4 个 TTL 负载。端口置 1 时,内部上拉电阻将端口拉到高电平,作输入用。对内部 Flash 程序存储器编程时,接收高 8 位地址和控制信息。在访问外部程序和 16位外部数据存储器时,P2 口送出高 8 位地址。而在访问 8 位地址的外部数据存储器时其引脚上的内容在此期间不会改变;Pin10-Pin17 为 P3.0-P3.7 输入输出脚,P3 口是一个内部带上拉电阻的 8 位双向 I/O 口, P3 口能驱动 4 个 TTL 负载
25、,这 8 个引脚还用于专门的第二功能。端口置 1 时,内部上拉电阻将端口拉到高电平,作输入用。对内部 Flash 程序存储器编程时,接控制信息。3.3 时钟电路单片机中 CPU 每执行一条指令,都必须在统一的时钟脉冲的控制下严格按时间节拍进行,而这个时钟脉冲是单片机控制中的时序电路发出的。CPU 执行一条指令的各个微操作所对应时间顺序称为单片机的时序。MCS-51 单片机芯片内部有一个高增益反相放大器,用于构成震荡器,XTAL1 为该放大器的输入端,XTAL2 为该放大器输出端,但形成时钟电路还需附加其他电路。本设计系统采用内部时钟方式,利用单片机内部的高增益反相放大器,外部电路简,只需要一个
26、晶振和 2 个电容即可,如图 9 所示:8GNDX21YTALpFC图 9 时钟电路电路中的器件选择可以通过计算和实验确定,也可以参考一些典型电路的参数,电路中,电容器 C1 和 C2 对震荡频率有微调作用,通常的取值范围是 3010pF,在这个系统中选择了 22pF;石英晶振选择范围最高可选 24MHz,它决定了单片机电路产生的时钟信号震荡频率,在本系统中选择的是 12MHz,因而时钟信号的震荡频率为 12MHz。3.4 复位电路单片机在启动运行时都需要复位,使 CPU 和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。MCS-51 单片机有一个复位引脚 RST,采用施密特触
27、发输入。当震荡器起振后,只要该引脚上出现 2 个机器周期以上的高电平即可确保时器件复位。复位完成后,如果 RST 端继续保持高电平,MCS-51 就一直处于复位状态,只要 RST 恢复低电平后,单片机才能进入其他工作状态。单片机的复位方式有上电自动复位和手动复位两种,图 10 是 51 系列单片机统常用的上电复位和手动复位组合电路,只要 Vcc 上升时间不超过 1ms,它们都能很好的工作。 0KRuSV图 10 复位电路3.5 LED 显示系统电路LED 是发光二极管显示器的缩写。LED 由于结构简单、价格便宜、与单片机接口方便等优点而得到广泛应用。LED 显示器是由若干个发光二极管组成显示字
28、段的显示器件。1) LED 基本结构在单片机中使用最多的是七段数码显示器。LED 七段数码显示器由 8 个发光二极管组成显示字段,其中 7 个长条形的发光二极管排列成“日”字形,另一个圆点形的发光二极管在显示器的右下角作为显示小数点用,其通过不同的组合可用来显示各种数字。LED 引脚排列如下图 11 所示:9图 11 LED 引脚2) LED 显示器的选择在应用系统中,设计要求不同,使用的 LED 显示器的位数也不同,因此就生产了位数,尺寸,型号不同的 LED 显示器供选择,在本设计中,选择 4 位一体的数码型 LED 显示器,简称“4-LED”。本系统中前一位显示电压的整数位,即个位,后两位
29、显示电压的小数位。4-LED 显示器引脚如图 11 所示,是一个共阴极接法的 4 位 LED 数码显示管,其中a,b,c,e,f ,g 为 4 位 LED 各段的公共输出端,1、2、3、4 分别是每一位的位选端,dp 是小数点引出端,4 位一体 LED 数码显示管的内部结构是由 4 个单独的 LED 显示器组成,每个 LED 显示器的段输出引脚在内部都并联后,引出到器件的外部。 四 位 共 阴 数 码 管P0.567dp8LED_图 12 四位 LED 引脚对于这种结构的 LED 显示器,它的体积和结构都符合设计要求,由于 4 位 LED 阴极的各段已经在内部连接在一起,所以必须使用动态扫描方
30、式(将所有数码管的段选线并联在一起,用一个 I/O 接口控制)显示。3) 数码管显示电路本设计采用的如图 12 所示的四位共阴极数码管,采用了动态扫描的方式让数码显示出输入通道的电压值。其连接如图 13 所示:10图 13 数码管显示电路图 13 中 P0 口接的上拉电阻是 1k 的排阻,关于排阻的介绍如下:常用排阻有 A 型和B 型的区别。A 型排阻的引脚总是奇数的。它的左端有一个公共端(用白色的圆点表示),常见的排阻有 4、7、8 个电阻,所以引脚共有 5 或 8 或 9 个。B 型排阻的引脚总是偶数的。它没有公共端,常见的排阻有 4 个电阻,所以引脚共有 8 个。排阻的阻值读法如下:“1
31、03”表示:10k,“510”表示:51。以此类推。排阻的阻值与内部电路结构通常可以从型号上识别出来。选用时要注意,有的排阻内有两种阻值的电阻,在其表面会标注这两种电阻值,如 220330,所以 SIP 排阻在应用时有方向性,使用时要小心。这里使用的排阻是A09-102 型号的排阻,它的读读数值方法是:1023 表示的是 10 的平方,10 乘以 10 的平方,该排阻阻值为 1k 欧。图 13 中数码管是四位共阴数码管 P2.4P2.7 分别接的是数码管的位选,P0.0P0.7 是数码管的段选,动态扫描时在程序中先打开第一位数码管的位选,再打开此位数码管段选,然后短暂延时(延时尽量不要超过 1
32、5ms,否则最终效果会使数码管闪烁)。3.6 按键控制电路本设计除了实现温度检测功能外,设计者也丰富了其功能,另外还设计了可调节温度上下限的模块,因为 DS1B820 内部可存储用上下限值,也可实现温度报警的功能。其按键控制电路连接如下图所示: K123P.6GND按键图 14 按键控制如图所示,K1,K2,K3,K4 实现的功能分别是增加温度数值,减少温度数值,确认,上下限警报切换。每按一次 K1 键,数码管显示的温度值加 1,按下确认键后,那么这个值就成了一个界限,每按一次 K2 键,数码管显示的温度值减 1,按下确认键后,那么这个值也成了一个界限,最终温度的允许范围只能在这两个界限内,一
33、旦超出或低于这两个界限,蜂鸣器报警电路将会发“嘟嘟嘟嘟”的响声。3.7 蜂鸣器电路蜂鸣器分为有源蜂鸣器和无源蜂鸣器,该电路中蜂鸣器用的是无源蜂鸣器,如图 15 蜂鸣器驱动模块:11buzer器213S90VCRKGNDP.蜂 鸣 器图 15 蜂鸣器模块电路有源蜂鸣器与无源蜂鸣器的区别:注意:这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会响,而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用 2K-5K 的方波去驱动它有源蜂鸣器往往比无源的贵,就是因为里面多个震荡电路 无源蜂鸣器的优点是:便宜,内部无振荡源,价格上相比更为便宜。声音频率可控,
34、可以做出“多来米发索拉西”的效果。在一些特例中,可以和 LED 复用一个控制口,因为它要求音频输入的信号才能发响。 有源蜂鸣器的优点是:程序控制方便。此处驱动蜂鸣器用的三极管采用的是 s9012(pnp)型号三极管,由于 PROTEUS 仿真中没有 s9012 这个三极管,所以选用了一个相似的 pnp 型号三极管,其中基极接的限流电阻大小和实物也不一样,实际接的是 1k 的限流电阻。但实际效果和仿真效果是一样的,如图所示,蜂鸣器接在了三极管的集电极,这里的三极管实际就是运用开关管的功能。关于三极管的引脚分辨方法如下:1) 判定基极,用万用表 R100 或 R1k 挡测量三极管三个电极中每两个极
35、之间的正、反向电阻值。当用第一根表笔接某一电极,而第二表笔先后接触另外两个电极均测得低阻值时,则第一根表笔所接的那个电极即为基极 b。这时,要注意万用表表笔的极性,如果红表笔接的是基极 b。黑表笔分别接在其他两极时,测得的阻值都较小,则可判定被测三极管为 PNP 型管;如果黑表笔接的是基极 b,红表笔分别接触其他两极时,测得的阻值较小,则被测三极管为 NPN 型管。2) 判定集电极 c 和发射极 e。(以 PNP 为例)将万用表置于 R100 或 R1k 挡,红表笔基极 b,用黑表笔分别接触另外两个管脚时,所测得的两个电阻值会是一个大一些,一个小一些。在阻值小的一次测量中,黑表笔所接管脚为集电
36、极;在阻值较大的一次测量中,黑表笔所接管脚为发射极。图 16 pnp 三极管引脚123.8 总体电路设计经过以上的设计过程,可设计出基于单片机的简易温度检测仪硬件电路原理图如图 17所示: buzer器213S90VCRKGNDFTP.4567XL电 源 模 块 四 位 共 阴 数 码 管IOU蓝 白 自 锁 开 关 口上 拉 电阻Had/WAE单 片 机 Y蜂 鸣 器 按键fgcp_B图 17 整体电路从图中可以看出整体电路是以 STC89C52 单片机为核心设计的。在数码管部分用的是网络标号与 P0 口连接,这样比较美观,避免了太多线的麻烦。8 按键全部整使用的 P1 口,因为其他的 P0
37、 都有扩展东西,所以利用 P1 口扩展按键将单片机的 I/O 口合理利用。整体电路的布局也更为合理,也方便了在实际焊接步骤。经过将近一周的单片机课程设计,终于完成了温度检测仪的设计,虽然没有完全达到设计要求,但还是收获良多。通过这次课程设计,使我更进一步地熟悉了单片机芯片的工作原理和其具体的使用方法。单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,这锻炼了自己独立思考问题的能力和通过查看相关资料来解决问题的习惯。还有了解了课程设计的一般步骤,和设计中应注意的问题,做这个设计我有了很多教训,首先在洞洞板的布线上面思考了很久,之前是比较随意的用软件将器件布在了洞洞板软件上,所以很多
38、的问题没有考虑周全,包括一些器件空间的大小,还有包括布局的合理安排等,一开始都做得不够好,在老师指导下,将器件重新布置一番,使得最终效果比以前看上去更工整,这样不仅外观看着更舒服,而且有利于后面出问题的检查与调试。13四、软件设计4.1 keil 软件1)Keil C51 是美国 Keil Software 公司出品的 51 系列兼容单片机 C 语言软件开发系统,与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil 提供了包括 C 编译器 、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision )将这
39、些部分组合在一起。运行Keil 软件需要 WIN98、NT、WIN2000 、WINXP 等操作系统。如果你使用 C 语言编程,那么 Keil 几乎就是你的不二之选,即使不使用 C 语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令人事半功倍。2)C51 工具包的整体结构, uVision 与 Ishell 分别是 C51 for Windows 和 for Dos 的集成开发环境(IDE) ,可以完成编辑、 编译、连接、调试、仿真等整个开发流程。开发人员可用 IDE 本身或其它编辑器编辑 C 或汇编源文件。然后分别由 C51 及 C51 编译器编译生成目标文件(.OB
40、J ) 。目标文件可由 LIB51 创建生成库文件,也可以与库文件一起经 L51 连接定位生成绝对目标文件(.ABS) 。ABS 文件由 OH51 转换成标准的 Hex 文件,以供调试器dScope51 或 tScope51 使用进行 源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如 EPROM 中。调试程序通过 Keil 软件编译,产生 HEX 文件如图 18 所示:图 18 keil 编译产生 HEX 文件4.2 系统主程序设计根据模块的划分原则,将该程序划分为初始化模块,按键控制模块,DS18B20 传感器模块,显示模块。当然还有一个蜂鸣器模块,其在主程序中
41、没标出,因为它是执行报警功能,其详细情况,可到蜂鸣器模块查。主程序流程如图 19 所示:初 始 化 模 块开 始读 取 温 度按 键 模 块显 示 温 度结 束图 19 主程序流程144.3 系统子程序设计1) 初始化程序所谓初始化,是对将要用到的 MCS-51 系列单片机内部部件或扩展芯片进行初始工作状态设定,初始化子程序的主要工作是设置定时器的工作模式,初值预置,开中断和打开定时器等。本设计程序中的初始化就有一些关于定时器的处理及初始操作,另外还加了一些开机 LOGO 程序,即刚上电时,该段程序会让数码管显示一些数字,蜂鸣器响一到两秒。2) 按键控制程序因为本设计中有四个控制按键,所以程序
42、中必然少不了按键扫描的程序,按键控制电路部分程序流程图如下图所示:开 始k1是 否按 下调 用 K1函 数功 能 是否数 码 管 相 应显 示返 回k2是 否按 下是调 用 K2函 数功 能数 码 管 相 应显 示返 回否k3是 否按 下执 行 相 应功 能返 回否k4是 否按 下执 行 相 应功 能返 回图 20 按键控制程序流程因本设计中所使用的四脚轻触卧式开关,所以在按键过程中,必然产生一些抖动干扰,因此在程序中必须对按键控制程序进行消抖处理,具体操作一般采用控制其发生,一般这种按键抖动在按下时会有 20ms 左右时间,在释放时也会存在 20ms 左右时间,因此,当检测到按键按下时,让其
43、延时 10ms 后再次检测是否按下,如果按下则进入下一段程序。通过这种方法可以达到去抖的作用。而且这也是比较通用的简便去抖方法。3) DS18B20 传感器模块程序此模块的程序主要功能是读取采集的温度,其流程图如下所示:开 始初 始 化DS18B20输 入 指 令读 取 温 度处 理 数 据返 回15图 21 读取温度流程3) 显示模块程序因本设计是一个温度检测仪,即要显示的是温度值,而且温度数值有正有负,因此本设计中对这些情况都有所考虑,具体流程如下图所示:开 始判 断 温 度是 否 大 于 0是否正 温 度 显 示送 数 码 管返 回负 温 度 显 示送 数 码 管图 22 显示模块流程因
44、显示模块使用的是四位共阴数码实现的,并且段选都是接一个 I/O 口上,所以,要让其显示不同的数字时,必须采用动态扫描的方式方能实现。在采用动态扫描时,要非常注意动态扫描的时间长度,一般来讲延时不要超过 20ms,因为超过 20ms 可能看上去会导致数码管闪烁造成显示效果不好。但延时也不能太短,太短会造成显示亮度太低甚致无显示等结果。所以,延时时间上要掌握好,一般来讲延时 10ms 左右就可以。4) 蜂鸣器模块程序此模块程序功能是执行报警提示。即当温度不在设定的上下限范围之内时,蜂鸣器便会发出“嘟嘟嘟 ”的响声。其具体流程如下图所示:开 始温 度 是 否在 范 围 之 内是否蜂 鸣 器 发 响执
45、 行 其 他相 关 操 作返 回图 23 蜂鸣器模块程序流程此处所用蜂鸣器为无源蜂鸣器,因此在程序编写中应注意,要将控制该 I/O 口的电平设成方波形式才能使蜂鸣器发响。16五、仿真与实现5.1 PROTEUS 仿真软件1)PROTEUS 软件是英国 Labcenter electronics 公司出版的 EDA 工具软件。它不仅具有其它 EDA 工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真 单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus 是世界上著名的 EDA工具( 仿真软
46、件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB 设计,真正实现了从概念到产品的完整设计。迄今为止是世界上唯一将电路仿真软件、PCB 设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR 、ARM、8086 和 MSP430 等,2010 年即将增加 Cortex 和 DSP 系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持 IAR、Keil 和 MATLAB 等多种编译2)在 PROTEUS 绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTE
47、US 的原理图中看到模拟的实物运行状态和过程。PROTEUS 是单片机课堂教学的先进助手。PROTEUS 不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。课程设计、毕业设计是学生走向就业的重要实践环节。由于 PROTEUS 提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚
48、拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台。随着科技的发展“计算机仿真技术”已成为许多设计部门重要的前期设计手段。它具有设计灵活,结果、过程的统一的特点。可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。相信在单片机开发应用中 PROTEUS 也能茯得愈来愈广泛的应用。通过 Proteus 进行仿真,如仿真结果所示:17图 24 启动时整体状态图 24 显示的是刚启动时的电路状态,从电路中可以看到,每个引旁边都有一些红色或者绿色的小方块,其中红色方块代表此处是高电平,绿色方块代表此处是低电平,在整个电路工作时,基上就可以很清晰地看出电路中每个引脚的电平变化情况。此时数
49、码显示的是一横亮的状态,这是开机时的一个 LOGO,在程序中有设定,并且刚开机时,蜂鸣器也会响一到两秒。5.2 STC-ISP 程序烧录软件STC-ISP 是一款单片机下载编程烧录软件,是针对 STC 系列单片机而设计的,可下载STC89 系列、12C2052 系列和 12C5410 等系列的 STC 单片机,使用非常简便,现在已被广泛使用。1) 其使用方法步骤如下: 打开 STC-ISP,在 MCU Type 栏目下选中单片机,如 STC89C52RC; 根据您的 9 针数据线连接情况选中 COM 端口,波特率一般保持默认,如果遇到下载问题,可以适当下调一些;2) 按图示选中各项: 先确认硬件连接正确,按如图点击“打开文件”并在对话框内找到您要下载的 HEX文件; 按下图选中两个条件项,这样可以使您在每次编译 KEIL 时 HEX 代码能自动加载到 STC-ISP,点击“Download/下载”; 手动按下电源开关便即可把可执行文件 HEX 写入到 单片机内,如图 25 是正在写入程序截图;如下图 25 是将温度检测仪程序成功烧录到单片机中的情况图 25 STC-ISP 程序烧录5.3 使用说明接上电源,按下电源键,即蓝白自锁开关,此时数码