1、毕业设计:基于51单片机与PC机的远程温度监控系统设计(完整版)资料(可以直接使用,可编辑 优秀版资料,欢迎下载) 毕业设计(论文)专 业: 班级: 设计题目: 远程温度监控系统 学生姓名: 学号: 起止日期: (共 周)设计地点: 指导教师: 2011年 05月 13 日 1、摘要单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。DS18B20是美国DALLAS公司生产的数字温度传感器芯片,具有结构简单、体积
2、小、功耗小、抗干扰能力强、使用方便等优点。本文设计的一种温度控制系统,用STC89C52单片机作为温控器,选用DS18B20数字温度传感器,可任意设置上下限报警温度,采用数码管实时显示温度,通过串口利用单片机与上位机的通信,对库房温度采集并进行控制。关键词:STC89C52单片机、串口通信、上下限报警、数码管显示温度2、引论随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术。温度是工业生产中主要的被控参数之一,与之相关的跟中温度控制是工业生产过程中经常遇到的过过程控制,有些工艺过程对其温度的控制效果直接影响着产品的质量。用单片机做成的产品外围元
3、件很少,能实现的功能却很广,广泛应用于工业,农业等。兼于此,特用单片机设计此电路。温度控制在实际生产中有着广泛的应用。例如:在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。因而设计一种较为理想的温度控制系统是非常有价值的。在国内外温度控制成了一科广泛应用于很多领域的技术。具体如空调、冰箱、茶叶烘烤、粮仓温度控制、等等。粮食温度检测是储备库中防止粮食霉烂、保质存放的重要环节。对于一个农业大国来讲,粮食生产、需求与储备量都很大。大量粮食在储备的过程中常因粮食湿度过大而升温发热,导致粮食大量腐烂变质,给郭
4、建带来巨大损失。本论文正是以此为出发点,对单片机控制的远程温度控制作了较详尽的介绍。单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。DS18B20是美国DALLAS公司生产的数字温度传感器芯片,具有结构简单、体积小、功耗小、抗干扰能力强、使用方便等优点。本文设计的一种温度控制系统,用STC89C52单片机作为温控器,选用DS18B20数字温度传感器,可任意设置上下限报警温度,采用数码管实时显示温度,通过串口利
5、用单片机与上位机的通信,对温度进行采集、数据处理和控制。 3、目录 1、摘要.22、引论.33、目录.44、正文.54.1、设计目的.54.2、具体内容及要求.54.3、系统总体方案设计.64.4、系统各个模块设计.8、单片机最小系统8、显示部分11、键盘输入12、报警电路12、测温电路13、单片机与上位机串口电路154.5、系统软件设计.19、单片机软件设计19、上位机软件设计225、结论.246、致谢.247、参考文献.25附录1、.26附录2、.27附录3、.33 4、正文4.1. 设计目的 (1)了解电子系统的设计方法,巩固和提高学过的基础理论和专业知识; (2)学习DS18B20数字
6、温度传感器的测温原理,提高运用所学专业知识进行独立思考和综合分析、解决实际问题的能力; (3) 掌握串口通信协议及其编程方法,掌握正确的思维方法和利用软件和硬件解决实际问题的基本技能; (4)增强对单片机的认识,掌握分析处理问题的方法,进行调试、计算等基本技能的训练,达到具有一定程度的实际工作能力。(5) 学会用PROTEL99SE进行电路原理图和PCB图的绘制。 (6) 学习用PSPICE、 MULTISIM 8等仿真软件进行电路设计和仿真。 (7)通过参与实际工作,能够了解单片机行业的具体工作。 4.2. 具体内容及要求1. 内容及要求:研究基于单片机的远程温度监控系统,可以在PC机端实时
7、监控系统温度,并根据当前的温度值对单片机系统进行控制。利用VB/VC/DELPHI编制PC示例程序。2. 主要技术指标:(1)、温度测量范围0-70;(2)、可以设置温度报警的上、下限;(3)、提供PC机通讯接口;(4)、PC机软件实现对温度数据分析、统计和处理; 4.3、系统总体方案设计、设计方案论证方案一由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,其中还涉及到电阻与温度的对应值的计算,感温电路比较麻烦。而且在对采
8、集的信号进行放大时容易受温度的影响出现较大的偏差。方案二 进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,电路简单,精度高,软硬件都以实现,而且使用单片机的接口便于系统的再扩展,满足设计要求。从以上两种方案,很容易看出,采用方案二,电路比较简单,费用较低,可靠性高,软件设计也比较简单,故采用了方案二。、系统总体构成图如下:89C52MAX232电平转换PC机键盘电路DS18B20温度传感器数码管显示蜂鸣器报警晶振电路下限LED灯上限LED灯、硬件设计:控制部分的选
9、择较多,但是作为温度计,在成本上最合适的是单片机,对于题目要求的控制能力也能胜任,利用STC89S52自身强大的功能和优异的可扩展性,配上电路实验箱、四位一体数码管和按键等少量外围电路,就能搭建合适本次实验的小系统。从而大大缩短设计流程,把设计的重点放在温度探测单元,串行通信协议两个部分。现在PC机提供的COM1、COM2是采用RS-232借口标准的。而RS-232是用正负电压来表示逻辑状态,与TTL以高低电平来表示逻辑状态的规定不同。因此,为了能够同计算机借口或终端的TTL器件(如单片机)连接,必须在RS-232与TTL电路之间进行电平和逻辑关系的变换,变换电路选用有德州仪器公司(TL)推出
10、的一款兼容RS-232标准的芯片MAX232.该器件包含2个驱动器、2个接收器和一个电压发生器电路提供TIA/EIA-232-F电平转换成5V TTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。4.3.4、软件设计单片机软件设计单片机程序由主程序和中断子程序组成的。主程序负责对来自上位机的命令进行解析并执行读温度值、存储温度值、输出控制等等,中断服务程序只负责单片机和上位机之间的数据发送与接收。上位机程序设计由单片机采集的各个库房实时温度,通过MAX232传输到上位机PC,利用在VISUAL BASIC 6.0的通信控件MSCOMM 属性设置和事件响
11、应的基础上,实现与单片机串行通信,在上位机中,完成报警温度设置、温度传感器64位激光ROM读取并显示、实时温度数据显示、数据存储、曲线绘制、历史数据查询等。4.4、系统各个模块设计:单片机最小系统1、STC89C52单片机管脚图如下:2、各引脚功能:(1) XTAL1(19脚);XTAL2(18脚)-外接时钟引脚。XTAL1为片内振荡电路的输入电源和时钟引脚.VCC(40脚)GND(20脚)常压为+5V,低压为+3.3V。(2) 端。 XTAL2为片内振荡电路的输出端,8051的时钟有两种方式,一种是片内振荡方式,需要在这两个引脚接石英晶体和振荡电容, 振荡电容的值一般选择为10P30P。另一
12、种外部时钟方式即XTAL1接地,外部时钟信号从XTAL2脚输入。(3) RST(9脚)-单片机的复位引脚。P0口(39脚32脚)双向8位I/O口,每个口可以独立控制。51单片机PO口内部没有上拉电阻,为高阻状态,所以不能正常的输出高低电平,因此该组I/O口在使用的时候务必要接上拉电阻,一般我们采用接入10K的上拉电阻。P1口(1脚8脚)-准双向8位I/O口。每个口可以独立操作控制,内带上拉电阻,这种接口输出没有高阻状态,输入也不能锁存,固然不是真正的双向I/O口,之所以称它为” 准双向”是因为该口在作为输入使用前要先向该口进行写一操作,然后单片机内部才可以正确读出外部信号,也就是要使其先要有个
13、准备过程,所以才称准双向口。对52单片机的P1.0引脚的第二功能为T2定时器的外部输入,P1.1引脚的第二功能为T2EX捕捉,重装触发,即T2的外部控制器。P2口(21脚28脚)-准双向8位I/O口,每个口都可以独立操作控制,内带上拉电阻,与P1口相似。P3口(10脚17脚)-准双向8位I/O口,每个口可以独立操作控制,内带上拉电阻,作为第一功能使用时就当作普通I/O口,与P1口相似。作为第二功能使用时,各引脚的定义如表:值得强调的是,P3口的每一个引脚均可以独立定义为第一功能的输入/输出或第二功能P3口引脚第二功能定义标号引脚第二功能说明P3.010RXD串行输入口P3.111TXD串行输出
14、口P3.212/INTO外部中断0P3.313/INT1外部中断1P3.414T0定时器/计数器0外部输入口P3.515T1定时器/计数器1外部输入口P3.616/WE外部数据存储器写脉冲P3.717/RD外部数据存储器读脉冲3、单片机最小系统其中:A、复位电路单片机上电时,当振荡器正在运行时,只要持续给出RST引脚连个机器周期的高电平,便可完成系统复位。外部复位电路是为内部复位电路提供两个机器周期以上的电平而设计的。系统采用上电自动复位,上电瞬间电容器上的电压不能突变,RST上的电压是VCC上的电压与电容器上的电压之差,因而RST上的电压与VCC上的电压相同。随着充电的进行,电容器上的电压不
15、断上升,RST上的 电压就随着下降,RST脚上只要保持10MS以上高电平,系统就会有效复位。电容C可取1033UF,电阻R可取1.210K。在本系统设计中,C取10UF,R取10K。B、振荡电路XTAL1脚和XTAL2脚分别构成片内振荡器的反相放大器的输入和输出端,外接石英晶振或陶瓷晶振以及补偿电容C1、C2选47UF构成并联谐振电路。当外接石英晶振时,电容C1、C2选30PF10PF;当外接陶瓷振荡器时,电容C1、C2选47UF10UF。系统中,外接电C1、C2的大小会影响振荡器频率的稳定度、起振时间及温度稳定性。在设计电路板时,晶振和电容应靠近单片机芯片,以便减少寄生电容,保证振荡器稳定可
16、靠工作。在本硬件系统设计中,为保证串行通行波特率的误差,选择了11.0592MHZ的标准石英晶振,电容C1、C2为30PF。C、接高电平,选用片内程序存储器。、显示部分:本系统采用三极管驱动四位一体共阳数码管显示温度,数码管有两种显示方式,即静态显示和动态显示。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高;动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动
17、态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。本设计数码管采用动态显示。如下图:.、键盘输入如图:本设计采用三个键,可任意调整上下限报警温度,简单实用。其中,键为设置键,按第下,上限温度调整;按第下,下限温度调整;按第下,显示实际温度。+键为每按一次设置温度加。-键为每按一次设置温度减。.、报警电路本设计中采用三极管驱动蜂鸣器报警,其中,和分别模拟制热器和制冷器。当温度高于上限温度时,蜂鸣器报警,灯亮,模拟启动制冷器;当温度低于下限温度
18、时,蜂鸣器报警,灯亮,模拟启动制热器。其中,与蜂鸣器相连的轻触开关断开时,蜂鸣器停止报警,实现手动解除报警。如图:.、测温电路本设计采用温度传感器测量温度。DS18B20简介其两种封装如图:温度传感器的种类众多,在应用与高精度、高可靠性的场合时DALLAS(达拉斯)公司生产的DS18B20温度传感器当仁不让。超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得DS18B20更受欢迎。对于我们普通的电子爱好者来说,DS18B20的优势更是我们学习单片机技术和开发温度相关的小产品的不二选择。了解其工作原理和应用可以拓宽您对单片机开发的思路。DS18B20的主要特征:1. 全数字温度转
19、换及输出。2. 先进的单总线数据通信。3. 最高12位分辨率,精度可达土0.5摄氏度。4. 12位分辨率时的最大工作周期为750毫秒。5. 可选择寄生工作方式。6. 检测温度范围为55C +125C (67F +257F)7. 内置EEPROM,限温报警功能。8. 64位光刻ROM,内置产品序列号,方便多机挂接。9. 多样封装形式,适应不同硬件系统。DS18B20芯片封装结构:DS18B20引脚功能:GND 电压地 DQ 单数据总线 VDD 电源电压 NC 空引脚DS18B20工作原理及应用:DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个
20、部分,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解18B20的内部存储器资源。18B20共有三种形态的存储器资源,它们分别是:ROM 只读存储器,用于存放DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。数据在出产时设置不由用户更改。DS18B20共64位ROM。RAM 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM(常用于温度报警值储存)的镜像。在上
21、电复位时其值将被刷新。第5个字节则是用户第3个EEPROM的镜像。第6、7、8个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第9个字节为前8个字节的CRC码。EEPROM 非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像,以方便用户操作。电路图如下:.、单片机与上位机串口电路在现代业控制中,串口通信的应用越来越广泛。单片机和PC机之间的串口通信在进行数据交换时经常被使用。在串行通信时,要求通信双方都采用一个标准接口,RS232C接口是单片机利PC机进行通信最常用的
22、一种接口。单片机与PC机进行串口通信最简单的二线制法,即接收数据针脚(RXD)与发送数据针脚(TXD)相连,彼此交叉,信号地(GND)对应相接。但是,串口还不能直接和单片机相连,可以选用MAX232和MAX485进行电平转换。MAX232用于RS232C标准;MAX485用于RS485标准。RS232C标准规定在码元畸变小于4的情况下,传输电缆长度最大约为L5米,最高传输速率为20KBITS。RS485标准最人传输距离约为1219米,最大传输速率约为L0MBITS。MAX232芯片简介MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5V单电源供电。 引
23、脚介绍:第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12V和-12V两个电源,提供给RS-232串口电平的需要。 第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。 其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。 8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。 TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成
24、TTL/CMOS数据后从R1OUT、R2OUT输出。 第三部分是供电。15脚GND、16脚VCC(+5V)。由于串口用的是TTL电平,和RS232电平不同,因此,单片机和PC通信时需要进行电平转换,常用的IC是MAX232,连接图如下图所示,其中MAX232供电脚为5V。采用了三线制连接串口,也就是说和计算机的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对我们来说已经足够使用了。RS232引脚图串口电路连接图如下:收、发端的数据信号是相对于信号地,如从DTE设备发出的数据在使用DB25连接器时是2脚相对7脚(信号地)的电平,DB25各引
25、脚定义参见图2-9。典型的RS-232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平在+5+15V,负电平在-5-15V电平。当无数据传输时,线上为TTL,从开始传送数据到结束,线上电平从TTL电平到RS-232电平再返回TTL电平。接收器典型的工作电平在+3+12V与-3-12V。由于发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20KB/S。RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为37K。所以RS-232适合本地设备之间的通信。上位机和下位机的接线方法如图上位机和
26、下位机的接线方法MCS-51内部含有一个可编程全双工串行通信接口,具有UART的全部功能。该接口电路不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。 在进行异步通信时,数据的发送和接收分别在各自的时钟(TCLK和RCLK)控制下进行的,但都必须与字符位数的波特率保持一致。MCS-51串行口的发送和接收时钟可由两种方式产生,一种是由主机频率FOSC经分频后产生,另一种方式是由内部定时器T1或T2的溢出率经16分频后提供。发送和接收的过程如下:串行口的发送过程由指令MOV SBUF,A启动,即CPU由一条写发送缓冲器的指令把数据(字符)写入串行口的发送缓冲器SBUF(发)中,再由硬
27、件电路自动在字符的始、末加上起始位(低电平)、停止位(高电平)及其它控制位(如奇偶位等),然后在移位脉冲SHIFT的控制下,低位在前,高位在后,从TXD端(方式0除外)一位位地向外发送。串行口的接收与否受制于允许接收位REN的状态,当REN被软件置“1”后,允许接收器接收。接收端RXD一位位地接收数据,直到收到一个完整的字符数据后,控制电路进行最后一次移位,自动去掉启始位,使接收中断标志RI置“1”,并向CPU申请中断。CPU响应中断,用一条指令(MOV A,SBUF)把接收缓冲器SBUF(收)的内容读入累加器。TI和RI是由硬件置位的,但需要用软件复位。.、系统软件设计.、单片机软件设计:(
28、1)主程序:主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1S进行一次。这样可以在一秒之内测量一次被测温度,其程序流程如下所示: 主程序流程图(2)读温度子程序:先让DS18B20复位,然后发跳过ROM匹配命令,再发出温度转换命令,让DS18B20进行温度转换,延时等待转换完毕后,再将已转换的温度值一一地从各个DS18B20取出,转换成ASCALL码后再发送到PC机上,如此循环。程序框图如下:读温度程序框图(3)温度比较报警子程序此程序是将实际温度与设置的报警上下限比较,决定是否发出报警信号。由于T为实际温度的绝对值,TH、TL也是温度的绝对值,因
29、此判断大小关系时要通过其正负符号来确定。温度比较报警子程序4.5.2.上位机软件设计PC机程序中包括串口通信模块,绘图模块,命令按妞模块,温度显示模块等。一、串口通信模块在本设计中,采用MSCOMM控件进行串口的通讯,MSCOMM控件串口具有完善的串口数据的发送和接收功能。通过此控件,PC机可以利用串行口与其它设备实现轻松连接,简单高效地实现设备之间的通讯。此控件的事件响应有两种处理方式,事件驱动方式:由MSCOMM控件的ONCOMM事件捕获并处理通讯错误及事件;查询方式:通过检查COMMEVENT属性的值来判断事件和错误。 二、绘图模块在VB中,绘图可以利用LINE和CIRCLE方法绘制几何
30、图形11,还可以利用MSCHART控件绘制各种图表。而本设计就采用MSCHART控件进形绘制温度变化曲线图。MSCHART控件在绘制直方图(条形图)、折线图、饼图、标记图、填充区域图等各种常用的数据分析图形方面有很大的优势,我们只要将需按图形表示的数据装入数组中,然后将数组数据赋值给MSCHART控件,再进行一些简单的图形标题、背景、图例、注脚方面的定义,就可以得到所期望的数据分析图形。MSCHART控件的系统默认名是:MSCHART1、MSCHART2等。由于MSCHART控件不是VB内建的基本控件,因此在使用前必须用工程菜单中的“部件”,添加MSCHART控件。添加MSCHART控件的选项
31、是“MICROSOFT CHART CONTROL 6.0(OLEDB)”。三、命令按钮11模块大多数应用程序中都有命令按钮COMMANDBUTTON控件,用户可以单击按钮执行某项操作。在本设计统中要让下位机执行相应操作,就是通过命令按钮给下位机下发命令实现该功能。命令按钮是VB应用程序中经常使用的对象,程序运行中要执行一条或一组命令,通常通过用鼠标单击命令按钮来实现,当然具体产生何种动作要通过执行相应的事件过程中的程序代码来决定。四、温度显示模块在本设计中显示由文本框和标签控件完成。完成后的VB界面如下:5.结论 本温控系统通过STC89C52单片机采集从DS18B20温度传感器所测得的温度
32、数据,并通过串口实时传送到上位机。单片机系统完成对温度信号的采集、设定上下限报警等功能,并通过串口通信与PC机进行通信,在PC机上进行显示及一些操作,从而使系统更加直观,使用更加方便。本设计主要解决了以下几个问题:1.系统的硬件采用以单片机为核心的硬件电路,所用元器件也很少,体积小,重量轻,抗干扰能力强,对环境要求不高,价格低廉。2.实现单片机与PC机的通信功能,实现远距离的进行监控.当然本设讲也存在着一些不足:(1)电路设计技术还不够成熟(2)本设计通信采用RS232,如果采用RS485通信距离将会大大增加这个系统本身或通过扩展可应用于智能家居、工业控制、智能农业、环境监测等各个领域的温度采
33、集以及数据分析控制。相信,随着单片机与PC应用的不断推广和不断成熟,基于单片机与PC机的温度控制系统将会得到广泛的应用。6.致谢值此论文完成之际,谨向我的导师表示衷心的感谢!在毕业设计期间,督促我的工作,给予悉心的关怀、鼓励与指导,尽心尽力,我能顺利完成,与老师的帮助密不可分。 期间,还有许多同学给了我帮助,没有他们,我的学习和生活不会那么顺利,在此,我对所有关心过我、帮助过我的人表示最衷心的谢意!是大家的无私帮助为我的毕业设计能够顺利的完成。在这几个月里,最大的收获是心智的成熟,期间遇到过不少困难,感谢老师和同学对我的关心、鼓励和帮助,让我用于面对困难,不断前进。7.参考文献: 1 陈大钦主
34、编 电子技术基础实验 高等教育出版社 2004年2 余锡存 曹国华.单片机原理及接口技术M.陕西:西安电子科技大学出版社3 苏家健. 单片机原理及应用技术 .高等教育出版社,2004.114 周航慈. 单片机程序设计基础 . 北京航空航天大学出版社,2003.075 李仁发、肖玲、吴强.数字逻辑设计(第四版). 人民邮电出版社,2006.058单片机C语言应用程序设计第四版,马忠梅主编,北京航空航天大学出版社9单片机开发与典型工程项目实例详解,边海龙、孙永奎编著,电子工业出版社1051单片机C语言教程-入门、提高、开发、拓展全攻略,郭天祥 编著, 电子工业出版社,202111 吴黎明主编 单片
35、机原理及应用技术 科学出版社 2003年12 刘乐善主编 微型计算机接口技术及应用 华中科技大学出版社 2004年13 J.A.CONNELLEY. ANALOG INTEGRATED CIRCUITS. JOHN WILEY &SONS14 吴洪潭,肖艳萍,赵伟国.单片机原理及应用系统设计M.北京:国防工业出版社,200515 陈梓城主编 电子技术实训 机械工业出版社 2003年16 李伯成.基于MCS-51单片机的嵌入式系统的设计M.北京:电子工业出版社,2004.17 李学海主编 标准80C51单片机基础教程 北京航空航天大学出版社 2006年18 刘乐善主编 微型计算机接口技术及应用
36、华中科技大学出版社 2004年19 先锋工作室. 单片机程序实例M.北京:清华大学出版社,2002.20 付家才. 单片机控制工程实践技术M. 北京:化学工业出版社,2004.521 ATMEL MICROCONTROLLER HANDBOOK,2001 22 STC MICROCONTROLLER HANDBOOK,2007 23 JOHN F. WAKERLYM DIGITAL DESIGN 北京:高等教育出版社 2021附录1. 总体电路图本设计中设定报警上限温度30,报警下限温度20。图中分别是温度超过30和低于20时LED灯模拟制冷和制热系统开启,并且蜂鸣器报警。附录2:单片机程序#
37、include#define uchar unsigned char#define uint unsigned intsbit d1=P22;sbit d2=P21;sbit d3=P20;sbit d4=P23;sbit key1=P13;sbit key2=P14;sbit key3=P15;sbit led1=P10;sbit led2=P11;sbit baojing=P16;sbit DS=P12;sbit ACC_7=ACC7;uint count=300,alarm=200; /最初温度上下限值:30度、20度uchar shu;uchar shi,fen,ri,yue,nian
38、,xq,miao,ss; uint temp; / 定义温度变量uchar flag;uchar code tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /共阳数码管不带小数点的09编码uchar code tab1=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10; /带小数点的09编码void send_int(void) TMOD = 0x21;/ 定时器1工作于8位自动重载模式, 用于产生波特率TH1 = 0xfd;/ 波特率9600TL1 = 0xfd; TH0=0xD8
39、; /定时器0定时10ms TL0=0xF0; ET0=1; /允许定时器0中断 ES=1; /允许串口中断 EA=1; /开中断SCON = 0xd8;/ 设定串行口工作方式PCON = 0x00;/ 波特率不倍增void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=120;y0;y-);void dsreset() /复位 uint i;DS=0;i=103;while(i0)i-;DS=1;i=4;while(i0)i-;uchar tmpread() /读取一字节uchar j,k,dat;uint i; for(j=1;j0)i-;dat=(k
40、1);/读出的数据最低位在最前面存一个字节在DAT里 return(dat);void tmpwritebyte(uchar dat) /写一个字节 uint i; uchar j; bit testb; for(j=1;j1; if(testb) /写 1 DS=0; i+;i+; DS=1; i=8;while(i0)i-; else DS=0; /写 0i=8;while(i0)i-;DS=1;i+;i+; void tmpchange() /DS18B20温度变换dsreset();delay(1);tmpwritebyte(0xcc); /跳过读取内存romtmpwritebyte(0x44); /开始转换uint tmp() /读取温度float tt;uchar a,b;dsreset();delay(1);tmpwritebyte(0xcc);tmpwritebyte(0xbe);a=tmpread(); /a为低字节8位b=tmpread(); /b为高字节8位temp=b; /temp为温度值UINT 16bittemp127)flag=1;