基于单片机温度控制系统的设计本科学位论文.doc
摘 要随着微机测量和控制技术的迅速发展与广泛应用,以单片机为核心的温度采集与控制系统的研发与应用在很大程度上提高了生产生活中对温度的控制水平。本设计论述了一种以STC89C52单片机为主控制单元,以DS18B20为温度传感器的温度控制系统。该控制系统可以实时存储相关的温度数据并记录当前的时间。系统设计了相关的硬件电路和相关应用程序。硬件电路主要包括STC89C52单片机最小系统,测温电路、实时时钟电路、LCD液晶显示电路以及通讯模块电路等。系统程序主要包括主程序,读出温度子程序,计算温度子程序、按键处理程序、LCD显示程序以及数据存储程序等。关键词:STC89C52单片机;DS18B20;显示电路AbstractAlong with the computer measurement and control technology of the rapid development and wide application, based on singlechip temperature gathering and control system development and application greatly improve the production of temperature in life level of control. This design STC89C52 describes a kind of mainly by MCU control unit, for temperature sensor DS18B20 temperature control system. The control system can real-time storage temperature data and record related to the current time. System design related hardware circuit and related applications. STC89C52 microcontroller hardware circuit include temperature detection circuit smallest system, and real-time clock circuit, LCD display circuit, communication module circuit, etc. System programming mainly include main program, read temperature subroutine, the calculation of temperature subroutines, key processing procedures, LCD display procedures and data storage procedures, etc. Keywords: STC89C52 microcontroller; DS18B20; display circuit目 录第1章前言11.1 研究背景11.2 研究目的和意义11.3 未来发展1第2章系统的总体设计32.1 系统设计框架32.2 STC89C52单片机简介32.2.1 STC89C52单片机时序32.2.2 STC89C52单片机引脚介绍4第3章硬件系统设计73.1 单片机最小电路系统73.2 温度传感器电路73.2.1 系统的特性73.2.2 系统的成本83.2.3 系统的复杂度83.2.4 信号输入电路83.3 系统电源电路设计83.4 LCD显示电路93.5 串口通讯电路103.6 按键接口电路113.7 DS1302时钟电路113.8 存储器接口电路12第4章系统的软件设计134.1 系统程序流程图134.2 计算温度子程序134.3 按键处理子程序144.4 软件设计的特点154.5 显示数据刷新子程序16第5章总结17参考文献18致19附录2032 / 34第1章 前言1.1 研究背景工业控制是计算机的一个重要应用领域,计算机控制系统正是为了适应这一领域的需要而发展起来的一门专业技术,它主要研究如何将计算机技术、通过信息技术和自动控制理论应用于工业生产过程,并设计出所需要的计算机控制系统。随着微机测量和控制技术的迅速发展与广泛应用,以单片机为核心的温度采集与控制系统的研发与应用在很大程度上提高了生产生活中对温度的控制水平。本设计就是基于单片机STC89C52温度控制系统的设计,通过本次设计,我更加的明确了单片机的广泛用途和使用方法,以及其工作的原理。STC89C52单片机是单时钟/机器周期1T的兼容8051核单片机,STC89C52单片机常用于控制的芯片,在智能仪器仪表、工业检测控制、机电一体化等方面取得了令人瞩目的成果,是高速/低功耗的新一代8051 单片机,用其作为温度控制系统的实例也很多。使用STC89C52单片机能够实现温度全程的自动控制,而且易于学习,掌握,性价比高。使用STC89C52型单片机设计温度控制系统,可以及时、精确的反映室的温度的变化。完成诸如升温到特定温度、降温到特定温度、在温度上下限围保持恒温等多种控制方式。1.2 研究目的和意义随着社会的发展,温度的测量及控制变得越来越重要。本设计采用单片机STC89C52设计了温度实时测量及控制系统。单片机STC89C52能够根据温度传感器DS18B20所采集的温度在液晶屏上实时显示,通过控制从而把温度控制在设定的围之。所有温度数据均通过液晶显示器LDC显示出来。系统可以根据时钟存储相关的数据。通过该设计的学习使我对计算机控制系统有一个全面的了解、掌握常规控制算法的使用方法、掌握简单微型计算机应用系统软硬的设计方法,进一步锻炼微型计算机应用方面的实际工作能力。1.3 未来发展90年代后期至今单片机的发展可以说是进入了一个新的阶段,单片机正朝着高性能和多品种方向发展,发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路装化等几个方面发展。其发展趋势主要有以下几个方面:1CMOS化:近年,由于CHMOS技术的进步,大促进了单片机的CMOS化。CMOS芯片除了低功耗特性之外,还具有功耗的可控性,使单片机可以工作在功耗精细管理状态,这也是今后以80C51取代8051为标准MCU芯片的原因。因为单片机芯片多数是采用CMOS金属栅氧化物半导体工艺生产。CMOS电路的特点是低功耗、高密度、低速度、低价格。采用双极型半导体工艺的TTL电路速度快,但功耗和芯片面积较大。随着技术和工艺水平的提高,又出现了HMOS高密度、高速度MOS和CHMOS工艺,CMOS和HMOS工艺的结合。目前生产的CHMOS电路已达到LSTTL的速度,传输延迟时间小于2ns,它的综合优势已在于TTL电路。因而,在单片机领域CMOS正在逐渐取代TTL电路。2低功耗:单片机的功耗已到mA级,甚至到1uA以下,使用电压在36V之间,完全适应电池工作。低功耗化的效应不仅是功耗低,而且带来了产品的高可靠性、高抗干扰能力以及产品的便携化、低电压化。几乎所有的单片机都有WAIT、STOP等省电运行方式。允许使用的电压围越来越宽,一般在36V围工作。低电压供电的单片机电源下限已可达12V。目前0.8V供电的单片机已经问世。低噪声与高可靠性为提高单片机的抗电磁干扰能力,使产品能适应恶劣的工作环境,满足电磁兼容性方面更高标准的要求,各单片机厂家在单片机部电路中都采用了新的技术措施。3大容量化:传统的单片机片程序存储器一般为1K8K,片数据存储器为256字节以下。在某些复杂的应用上,片不论是程序存储器还是数据存储器都是容量不够,必须采用外接方式进行扩充。而新型单片机例如PHILIPSP89C66x片程序存储器可达64K,片数据存储器可达8K。今后,随着工艺技术的不断发展,单片机片存储器容量将进一步扩大。4单片机的高性能化:主要是指进一步提高CPU的性能,加快指令运算速度,并加强了位处理功能、中断、定时功能。其主频从4MHz12MHz向0MHz全静态40MHz以上发展。同时采用流水线结构,让指令以队列形式出现在CPU中,从而进一步提高运算速度。有的单片机基本采用了多流水线结构,这类单片机的运算速度要比标准的单片机高出10倍以上。5外围电路装化:这也是单片机发展的一个主流方面。随着集成度的不断提高,使将各种功能器件集成在片成为可能。除了一般必须具有的CPU、ROM、RAM、定时器计数器等外,片还可以根据需要集成如串行口,AD、DA、EEPROM、PWM、看门狗WatchDog、液晶显示LCD驱动器等多种功能部件。6增强IO口功能:为了减少外部驱动芯片,进一步增加单片机并行口的驱动能力,现在有的单片机可直接输出较大电流20mA和高电压,以便直接驱动显示器。为进一步加快IO的传输速度,有的单片机设置了高速IO口,能以最快的速度捕捉外部数据的变化,同时以最快的速度向片外输出数据。以适合数据高速改变的场合。随着集成工艺的不断发展,单片机一方面向集成度更高、体积更小、功能更强、功耗更低方向发展,另一方面向32位以上及双CPU方向发展。 第2章 系统的总体设计2.1 系统设计框架本课题设计的是一种以STC89C52单片机为主控制单元,以DS18B20为温度传感器的温度控制系统。该控制系统可以实时存储相关的温度数据并记录当前的时间。其主要包括:电源模块、温度采集模块、按键处理模块、实时时钟模块、数据存储模块、LCD显示模块、通讯模块以及单片机最小系统。LCD显示模块数据存储模块通讯模块电源模块温度采集模块实时时钟模块按键处理模块STC89C52单片机图2-1 系统设计框架2.2 STC89C52单片机简介目前,51系列单片机在工业检测领域中得到了广泛的应用,因此我们可以在许多单片机应用领域中,配接各种类型的语音接口,构成具有合成语音输出能力的综合应用系统,以增强人机对话的功能。STC89C52单片机是宏晶科技生产的一种单片机,在一小块芯片上集成了一个微型计算机的各个组成部分。每一个单片机包括:一个8位的微型处理器CPU;一个512K的片数据存储器RAM;4K片程序存储器;四个8位并行的I/O接口P0-P3,每个接口既可以输入,也可以输出;两个定时器/记数器;五个中断源的中断控制系统;一个全双工UART的串行I/O口;片振荡器和时钟产生电路,但石英晶体和微调电容需要外接。最高允许振荡频率是12MHZ。以上各个部分通过部总线相连接1。2.2.1 STC89C52单片机时序STC89C52单片机的一个执器周期由6个状态s1-s6组成,每个状态又持续2个震荡周期,分为P1和P2两个节拍。这样,一个机器周期由12个振荡周期组成。若采用12MHz的晶体振荡器,则每个机器周期为1us,每个状态周期为16us;在一数情况下,算术和逻辑操作发生在N期间,而部寄存器到寄存器的传输发生在P2期间。对于单周期指令,当指令操作码读人指令寄存器时,使从S1P2开始执行指令。如果是双字节指令,则在同一机器周期的s4读人第二字节。若为单字节指令,则在51期间仍进行读,但所读入的字节操作码被忽略,且程序计数据也不加1。在加结束时完成指令操作。多数STC89C52指令周期为1-2个机器周期,只有乘法和除法指令需要两个以上机器周期的指令,它们需4个机器周期。对于双字节单机器指令,通常是在一个机器周期从程序存储器中读人两个字节,但Movx指令例外,Movx指令是访问外部数据存储器的单字节双机器周期指令,在执行Movx指令期间,外部数据存储器被访问且被选通时跳过两次取指操作2。2.2.2 STC89C52单片机引脚介绍STC89C52单片机的40个引脚中有2个专用于主电源引脚,2个外接晶振的引脚,4个控制或与其它电源复用的引脚,以及32条输入输出I/O引脚。下面按引脚功能分为4个部分叙述个引脚的功能。电源引脚Vcc和VssVcc40脚:接+5V电源正端;Vss20脚:接+5V电源正端。外接晶振引脚XTAL1和XTAL2:XTAL119脚:接外部石英晶体的一端。在单片机部,它是一个反相放大器的输入端,这个放大器构成采用外部时钟时,对于HMOS单片机,该引脚接地;对于CHOMS单片机,该引脚作为外部振荡信号的输入端。XTAL218脚:接外部晶体的另一端。在单片机部,接至片振荡器的反相放大器的输出端。当采用外部时钟时,对于HMOS单片机,该引脚作为外部振荡信号的输入端。对于CHMOS芯片,该引脚悬空不接。控制信号或与其它电源复用引脚有RST/VPD、ALE/P、PSEN和EA/VPP等4种形式。RST/VPD9脚:RST即为RESET,VPD为备用电源,所以该引脚为单片机的上电复位或掉电保护端。当单片机振荡器工作时,该引脚上出现持续两个机器周期的高电平,就可实现复位操作,使单片机复位到初始状态。当VCC发生故障,降低到低电平规定值或掉电时,该引脚可接上备用电源VPD+5V为部RAM供电,以保证RAM中的数据不丢失。ALE/ P30脚:当访问外部存储器时,ALE允许地址锁存信号以每机器周期两次的信号输出,用于锁存出现在P0口的低。PSEN29脚:片外程序存储器读选通输出端,低电平有效。当从外部程序存储器读取指令或常数期间,每个机器周期PESN两次有效,以通过数据总线口读回指令或常数。当访问外部数据存储器期间,PESN信号将不出现。EA/Vpp31脚:EA为访问外部程序储器控制信号,低电平有效。当EA端保持高电平时,单片机访问片程序存储器4KBMS-52子系列为8KB。若超出该围时,自动转去执行外部程序存储器的程序。当EA端保持低电平时,无论片有无程序存储器,均只访问外部程序存储器。对于片含有EPROM的单片机,在EPROM编程期间,该引脚用于接21V的编程电源Vpp。输入/输出I/O引脚P0口、P1口、P2口及P3口:P0口39脚22脚:P0.0P0.7统称为P0口。当不接外部存储器与不扩展I/O接口时,它可作为准双向8位输入/输出接口。当接有外部程序存储器或扩展I/O口时,P0口为地址/数据分时复用口。它分时提供8位双向数据总线。对于片含有EPROM的单片机,当EPROM编程时,从P0口输入指令字节,而当检验程序时,则输出指令字节。P1口1脚8脚:P1.0P1.7统称为P1口,可作为准双向I/O接口使用。对于MCS-52子系列单片机,P1.0和P1.1还有第2功能:P1.0口用作定时器/计数器2的计数脉冲输入端T2;P1.1用作定时器/计数器2的外部控制端T2EX。对于EPROM编程和进行程序校验时,P0口接收输入的低8位地址。P2口21脚28脚:P2.0P2.7统称为P2口,一般可作为准双向I/O接口。当接有外部程序存储器或扩展I/O接口且寻址围超过256个字节时,P2口用于高8位地址总线送出高8位地址。对于EPROM编程和进行程序校验时,P2口接收输入的8位地址。P3口10脚17脚:P3.0P3.7统称为P3口。它为双功能口,可以作为一般的准双向I/O接口,也可以将每1位用于第2功能,而且P3口的每一条引脚均可独立定义为第1功能的输入输出或第2功能。P3口的第2功能见下表:表2-1 单片机P3.0管脚含义引脚第2功能P3.0RXD串行口输入端0P3.1TXD串行口输出端P3.2INT0部中断0请求输入端,低电平有效P3.3INT1中断1请求输入端,低电平有效P3.4T0时器/计数器0计数脉冲端P3.5T1时器/计数器1数脉冲端P3.6WR部数据存储器写选通信号输出端,低电平有效P3.7RD部数据存储器读选通信号输出端,低电平有效综上所述,MCS-51系列单片机的引脚作用可归纳为以下两点:单片机功能多,引脚数少,因而许多引脚具有第2功能。单片机对外呈3总线形式,由P2、P0口组成16位地址总线,由P0口分时复用作为数据总线3。第3章 硬件系统设计3.1 单片机最小电路系统在本设计的温度控制系统设计中,控制核心是STC89C52单片机,该单片机为51系列增强型8位单片机,它有32个I/O口,片含4K FLASH工艺的程序存储器,便于用电的方式瞬间擦除和改写,而且价格便宜,其外部晶振为12MHz,一个指令周期为1S。使用该单片机完全可以完成设计任务,其最小系统主要包括:复位电路、震荡电路以及存储器选择模式4EA脚的高低电平选择,电路如下图3-1所示:图3-1 单片机最小系统图3.2 温度传感器电路采用一线制数字温度传感器DS18B20来作为本课题的温度传感器。DS18B20温度传感器是美国达拉斯DALLAS半导体公司推出的应用单总线技术的数字温度传感器。该器件将半导体温敏器件、A/D转换器、存储器等做在一个很小的集成电路芯片上。本设计中温度传感器之所以选择单线数字器件DS18B20,是在经过多方面比较和考虑后决定的,主要有以下几方面的原因:3.2.1 系统的特性测温围为-55+125 ,测温精度为士0.5;温度转换精度912位可变,能够直接将温度转换值以16位二进制数码的方式串行输出;12位精度转换的最大时间为750ms;可以通过数据线供电,具有超低功耗工作方式。3.2.2 系统的成本由于计算机技术和微电子技术的发展,新型大规模集成电路功能越来越强大,体积越来越小,而价格也越来越低。一支DS18B20的体积与普通三极管相差无几,价格只有十元人民币左右。3.2.3 系统的复杂度由于DS18B20是单总线器件,微处理器与其接口时仅需占用1个I/O端口且一条总线上可以挂接几十个DS18B20,测温时无需任何外部元件。因此,与模拟传感器相比,可以大大减少接线的数量,降低系统的复杂度,减少工程的施工量。3.2.4 信号输入电路由于引线的减少,使得系统接口大为简化,给系统的调试带来方便。同时因为DS18B20是全数字元器件,故障率很低,抗干扰性强。因此,减少了系统的日常维护工作。DS18B20温度传感器只有三根外引线:单线数据传输总线端口DQ,外供电源线VDD,共用地线GND。DS18B20有两种供电方式:一种为数据线供电方式,此时VDD接地,它是通过部电容在空闲时从数据线获取能量,来完成温度转换,相应的完成温度转换的时间较长。这种情况下,用单片机的一个I/O口来完成对DS18B20总线的上拉。另一种是外部供电方式VDD接+5V,相应的完成温度测量的时间较短。在本设计中采用外部供电方式实现DS18B20传感器与单片机的连接,传感器输出信号进4.7K的上拉电阻直接接到单片机的P1.0引脚上。其接口电路如图3-2所示:图3-2 温度传感器接口3.3 系统电源电路设计本系统采用电源稳压芯片是LM2596,该开关电压调节器是降压型电源管理单片集成电路,能够输出3A的驱动电流,输入电压是+5v,输入电压是+24v,同时具有很好的线性和负载调节特性。该器件部集成频率补偿和固定频率发生器,开关频率为150KHz,与低频开关调节器相比较,可以使用更小规格的滤波元件。该器件还有其他一些特点:在特定的输入电压和输出负载的条件下,输出电压的误差可以保证在±4%的围,振荡频率误差在±15%的围;可以用仅80A的待机电流,实现外部断电;具有自我保护电路一个两级降频限流保护和一个在异常情况下断电的过温完全保护电路。在该温度控制系统中,其电源电路设计如下图3-3所示:图3-3 系统电源模块3.4 LCD显示电路液晶显示屏LCD用于数字型钟表和许多便携式计算机的一种显示器类型。LCD显示使用了两片极化材料,在它们之间是液体水晶溶液。电流通过该液体时会使水晶重新排列,以使光线无法透过它们。因此,每个水晶就像百叶窗,既能允许光线穿过又能挡住光线。本设计的温度控制系统是采用液晶屏128*64作为显示模块,其接口原理图如下图3-4所示:图3-4 液晶显示接口电路3.5 串口通讯电路由于CPU与接口之间按并行方式传输,接口与外设之间按串行方式传输。因此,在串行接口中,必须要有"接收移位寄存器"串并和"发送移位寄存器"并串。在数据输入过程中,数据1位1位地从外设进入接口的"接收移位寄存器",当"接收移位寄存器"中已接收完1个字符的各位后,数据就从"接收移位寄存器"进入"数据输入寄存器"。CPU从"数据输入寄存器"中读取接收到的字符。并行读取,即D7D0同时被读至累加器中。"接收移位寄存器"的移位速度由"接收时钟"确定。在数据输出过程中,CPU把要输出的字符并行地送入"数据输出寄存器","数据输出寄存器"的容传输到"发送移位寄存器",然后由"发送移位寄存器"移位,把数据1位1位地送到外设。"发送移位寄存器"的移位速度由"发送时钟"确定。接口中的"控制寄存器"用来容纳CPU送给此接口的各种控制信息,这些控制信息决定接口的工作方式。"状态寄存器"的各位称为"状态位",每一个状态位都可以用来指示数据传输过程中的状态或某种错误。例如,用状态寄存器的D5位为"1"表示"数据输出寄存器"空,用D0位表示"数据输入寄存器满",用D2位表示"奇偶检验错"等。本设计的通讯采用的是常见的串口通讯,协议转换芯片是采用MAX232A,其接口原理图如下图3-5所示:图3-5 串口通讯接口电路3.6 按键接口电路本设计采用的键盘模块,其接口原理图如下图3-6所示:图3-6 键盘模块电路3.7 DS1302时钟电路本设计的时钟是采用时钟芯片DS1302,DS1302工作时为了对任何数据传送进行初始化,需要将复位脚RST置为高电平且将8位地址和命令信息装入移位寄存器。数据在时钟SCLK的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输出数据。时钟脉冲的个数在单字节方式下为8+88位地址+8位数据,在多字节方式下为8加最多可达248的数据。其接口原理图如下图3-7所示:图3-7 时钟接口电路3.8 存储器接口电路本设计的存储器采用的是AT24C256,起始停止信号的主器件控制的CAT24WC256是作为从器件被操作的。主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据发送或接收的模式,管脚描述SCL串行时钟CAT24WC256串行时钟输入管脚,用于产生器件所有数据发送或接收的时钟。这是一个输入管脚SDA串行数据地址双向串行数据,地址管脚用于器件所有数据的发送或接收SDA,是一个开漏输出管脚,可与其它开漏输出或集电极开路输出进行线或wire-ORWP写保护。当WP脚连接到VCC所有存变成写保护只能读,当WP引脚连接到VSS或悬空允许器件进行读。写操作A0-A1器件地址输入,这些管脚为硬连线或者不连接对于单总线系统最多可寻址4个。CAT24WC256器件参阅器件寻址当这些引脚没有连接时其默认值05,其接口原理图如下图3-8所示:图3-8 存储器电路第4章 系统的软件设计4.1 系统程序流程图系统的软件主要是采用汇编语言,对单片机进行变成实现各项功能。主程序对模块进行初始化,而后调用读温度、处理温度、显示、键盘等模块。用的是循环查询方式,来显示和控制温度,主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值并负责调用各子程序,其程序流程如图4-1系统程序流程图:启动DB18B20LCD显示开始初始化计算温度读温度图4-1 系统程序流程图4.2 计算温度子程序读出温度子程序的主要功能包括初始化,判断DS18B20是否存在,若存在则进行一系列的读操,作若不存在则返回。其程序流程图如图4-2所示:初始化开始DSB2180存在读取温度值存储操作命令ROM操作命令返回否是图4-2 读温度流程图4.3 按键处理子程序按键处理子程序主要是负责参数的设置,主程序每循环一次都要对按键进行扫描,判断是否有输入键按下则进行一系列的按键输入操作。其程序流程框图如图4-3所示:否是是开始ENTER键是否按下DISPLAY显示退出子程序RET返回主程序ENTERFLAG为1由ENTER键按下有UP按下有DOWN按下ENTER子程序flag=1UP子程序DOWN子程序否否否是是否是图4-3 温度转换流程图4.4 软件设计的特点计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图4-4所示:开始温度零下?温度值取补码置""标志计算小数位温度BCD值计算整数位温度BCD值结束置"+"标志否是图4-4 计算温度子程序4.5 显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位6。程序流程图如图4-5:温度数据移入显示寄存器十位数0?百位数0?十位数显示符号百位数不显示百位数显示数据不显示符号结束否否是是图4-5 数据刷新子程序第5章 总结通过此次毕业论文的设计,我熟悉了单片机在控制系统中的运用,并且在所学知识的基础上,将我原来所学的知识系统化、理论化、实用化。对如何使用已有的知识及获取相关资料方面的能力也有了提高。并学会了如何去思考整个控制系统的软硬件设计。实践过程中我们遇到了一些困难,但在解决问题的过程中,我学会了团队合作精神和怎样发现问题、分析问题,进而解决问题。此次设计不仅增强了我对学习专业课的兴趣,而且给了我们勇气和信心,更重要的是它为我们以后的学习指明了方向。参考文献1 广弟, 朱月秀, 王秀山. 单片机基础M. : 航空航天大学, 2001: 10-14 .2 蔡美琴, 为民. MCS-51系列单片机系统及其应用M. : 高等教育. 2004: 20-22.3 毅刚, 等. MCS-51单片机应用设计M.: 工业大学. 1997: 59-65.4 瑞星, 胡健, 等. Protel DXP 实用教程M.: 机械工业. 2003: 47-70.5 于海生. 计算机控制技术M.: 机械工业. 2007: 90-102.6 康华光. 电子技术基础 模拟部分M.: 高等教育. 1998: 70-83. 7 志军, 王振波, 等. 单片机应用系统设计M.: 机械工业. 2005: 35-38. 8 何小艇. 电子系统设计M.: 大学. 2004: 20-27.9 William Stallings. Data and Computer Communications M.: 高等教育. 2001: 127-144.10 吴京文, 世忠, 泰廷奎. 温度传感器控制系统J. 电信技术, 2008, 16<7>: 21-26.11 胡义彪, 剑刚. Protel DXP 应用技术J. 通信电源, 2005, 27<10>: 64-80.致通过这次毕业设计使我明白了自己原来知识比较欠缺,自己要学习的东西太多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。通过这次课程设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。最后,我要感国荣老师对我这次毕业设计的悉心指导,使我不仅在知识方面有了更深一步的了解,并且在我设计东西的思路与逻辑方面有更深刻的影响,使我知道了设计思路与逻辑的重要性,让我获益匪浅。附录系统程序TEMPERATURE_L DATA 31H ;DS18B20低8位BufferTEMPERATURE_H DATA 30H ;DS18B20高8位BufferTEMPERATURE_HC DATA 32H ;计算后的百位和十位的BCD码存放BufferTEMPERATURE_LC DATA 33H ;计算后的个位和小数位的BCD码存放BufferTEMPERATURE_ZH DATA 34H ;计算后十位和个位HEX码的存放BufferDIS_BUF_X DATA 35H ;数码管小数位BufferDIS_BUF_G DATA 36H ;数码管个位BufferDIS_BUF_S DATA 37H ;数码管十位BufferDIS_BUF_B DATA 38H ;数码管百位BufferKEY_BUF_G DATA 39H ;键盘输入后,的个位值KEY_BUF_S DATA 49H ;键盘输入后,的十位值KEY_BUF_B DATA 41H ;键盘输入后,的百位值K_UP EQU P1.1 ;上调按钮K_DOWN EQU P1.2 ;下调按钮K_ENTER EQU P1.0 ;输入数据确认按钮P_DS18B20 EQU P3.0 ;读取DS18B20的输入端口P_SWITCH EQU P3.1 ;可控硅控制 FLAG EQU 20H.0 ;标志位,确定是否存在DS18B20ENTER_FLAG EQU 20H.1 ;键盘输入的标志位,ORG 0000HLJMP MAINORG 0100HMAIN: MOV SP,#60H ;初始化 MOV KEY_BUF_G,#00H ;由于KEY_BUF是由用户输入的,所以先赋值初始化 MOV KEY_BUF_S,#00H MOV KEY_BUF_B,#00HNEXT:LCALL READ_TEMP ;调用读温度子程序 FLAG,NORMAL ;判断是否有DS18B20的存在 CALL ERR ;不存在时显示错误信息 AJMP NEXTNORMAL: LCALL DATA_DEA ;处理从DS18B20得到的数据 LCALL SET_DIS_BUF ;赋值给DIS_BUF_X,G,S,B LCALL DISPLAY ;调用数码管显示子程序 LCALL SCAN_KEY ;扫描键盘 LCALL SWITCH ;处理可控硅 AJMP NEXT;程序名称:ERR;功能:程序出错处理,显示四个8,即8888;入口参数:无;出口参数:DIS_BUF_X,DIS_BUF_G, DIS_BUF_S, DIS_BUF_BERR: MOV DIS_BUF_X,#08H ;如果没有找到DS18B20,那么就显示错误,错误;显示为888MOV DIS_BUF_G,#08H MOV DIS_BUF_S,#08HMOV DIS_BUF_B,#08HLCALL DISPLAYRET程序名称:DATA_DEAL;功能:处理采集后的的数据;入口参数:TEMPERATURE_L;出口参数:DIS_BUF_G, DIS_BUF_S, DIS_BUF_DATA_DEAL:MOV A,TEMPERATURE_H ;判温度是否零下ANL A,#80HJZ TEMPC1 ;A为0,说明是正数,如果是负数,则;对低8为进行补码处理CLR CMOV A,TEMPERATURE_L ;二进制数求补双字节CPL A ;取反加1ADD A,#01HMOV TEMPERATURE_L,A MOV A,TEMPERATURE_HCPL AADDC A,#00H MOV TEMPERATURE_H,A ;写回TEMPERATURE_HMOV TEMPERATURE_HC,#0BHSJMP TEMPC11TEMPC1: MOV TEMPERATURE_HC,#0AH TEMPC11: MOV A,TEMPERATURE_HC SWAP A MOV TEMPERATURE_HC,A MOV A,TEMPERATURE_L ANL A,#0FH MOV DPTR,#TEMPDOTTAB MOVC A,A+DPTR ;查表 MOV TEMPERATURE_LC,A ;TEMPERATURE_LC LOW=小数部分 BCD MOV DIS_BUF_X,A ;小数位的BCD码送入显示buffer中 MOV A,TEMPERATURE_L ;整数部分 ANL A,#0F0H ;得到个位单个数值 SWAP A ;SWAP后就得到个位真正的个位 MOV TEMPERATURE_L,A MOV A,TEMPERATURE_H ANL A,#0FH SWAP A ORL A,TEMPERATURE_L MOV TEMPERATURE_ZH,A ;组合后的值存入TEMPERATURE_ZH CALL HtoB ;转换HEx值成为BCD码 MOV TEMPERATURE_L,A ANL A,#0F0HSWAP AORL A,TEMPERATURE_HC ;TEMPERATUR