单片机课程设计温度控制器的设计.doc
目录目录1摘要2关键词:3第一章 引言3第二章 硬件系统设置52.1系统原理图52.2模块硬件电路图52.2.1电源模块52.2.2DS18B20模块62.2.3排针模块62.2.4 LED显示模块72.2.5 ISD1420语音模块72.3芯片资料介绍82.3.1 89C52单片机82.3.2 DS18B20芯片102.3.3 ISD1420芯片132.3.4 LED数码管152.3.5 74HC273芯片172.3.6 74HC32芯片17第三章 软件系统设置18程序流程图18主程序流程图18详细的整体程图19DS18B20温度采集模块19ISD1420语音模块流程图20LED显示模块流程图20java程序绘图流程图21参数信息21第四章 课程设计总结22人员分工22总结22软件延时与定时器计时22模块化及团队合作22关于本次课程设计23调试记录及结果分析23遇到的问题和解决:23心得体会23源程序清单24参考资料34摘要此文主要介绍以STC89C52单片机开发板为核心的温度控制器的设计。分为引言、硬件系统设置、软件系统设置和课程设计总结四个主体部分。引言部分简述了本次课程设计的主要内容。硬件系统设置主要详述了五个模块的总体框架图和硬件电路图,即8051数据处理模块、DS18B20温度采集模块、基于LED温度显示模块、ISD1420语音芯片模块、键盘输入模块,以及所用到的芯片的介绍。软件系统设置方面主要介绍了主程序和整体流程图及DS18B20温度采集模块、ISD1420语音模块、LED显示模块、JAVA程序绘图模块的流程图。课程设计总结部分主要包括人员分工,总结,心得体会,源程序清单和参考资料等内容。此次课程设计中借助了Protell99SE软件绘制电路图、keil软件编程、eclipse软件编写上位机程序、Visio绘制流程图。温度控制器实现了在数码管上显示当前温度,并且报当前温度,当温度超过警戒值时发出警告,java程序实现对串口发送的温度绘制温度变化曲线图的功能。研究结果表明,由于温度控制器的应用相当普遍,所以其设计的核心在于硬件成本的节约软件算法的优化,力求做到物美价廉,才能拥有更广阔的市场前景。关键词:STC89C52;DS18B20;ISD1420;74HC273;74HC32AP;LED;JAVAAbstractThis article mainly introduces to STC89C52 SCM development board as the core temperature controller design. Divided into the introduction, the hardware system Settings, software system Settings and course design summarize four main body part. Introduction of the course design paper the main content. Hardware system on the set up of the overall KuangJiaTu five module circuit diagram, namely 8051 hardware and data processing module, DS18B20 temperature gathering module, based on LED temperature display module, ISD1420 voice chip module, keyboard input module, and the introduction of use to chip. Software system concerning the establishment of the main program mainly introduces and whole flow chart and DS18B20 temperature gathering module, ISD1420 speech module, the LED display module, JAVA program flow chart of drawing module. Course design summary part mainly includes personnel division of Labour, summary, comments, the source program list and reference material, etc. The course design of Protell99SE software rendering of the circuit diagram, keil software programming, eclipse writing software PC program, Visio process flow diagram. The temperature controller realized in digital tube, and display the current temperature for the current temperature, when the temperature value more than alert warning, Java program realization in serial send temperature temperature change of the graph drawing function. The results of the study show that, because the temperature controller is fairly common, so the application of the design is the core of the hardware cost savings software algorithm, the optimization of to make the good and inexpensive, can have a broad market prospect.Key Words:STC89C52;DS18B20;ISD1420;74HC273;74HC32AP;LED;JAVA第一章 引言单片机的产品在我们日常生活中随处可见。所谓单片机就是利用大规模集成电路技术把中央处理单元CPU和数据存储器RAM、程序存储器ROM及其他I/O通信口集成在一块芯片上,构成一个最小的计算机系统,而现代的单片机则加上了中断单元,定时单元及A/D转换等更复杂、更完善的电路,使得单片机的功能越来越强大,应用更广泛。世界上各大芯片制造公司都推出了自己的单片机。纵观单片机的发展过程,单片机的发展趋势大致有:低功耗CMOS化微型单片化主流与多品种共存。现在虽然单片机的品种繁多,各具特色,但仍以80C51为核心的单片机占主流,兼容其结构和指令系统的有PHILIPS公司的产品,ATMEL公司的产品和中国台湾的Winbond系列单片机。本次课程设计我们就是用的基于STC89C52单片机开发板的温度控制器。温度控制器在现代大多工业控制系统中使用很普遍,本次课程设计中用到了语言报温、语音报警,就可以发挥听觉的优势,弥补完全用视觉信号传递信息的不足。实现了工业仪表中人机联系的一个友好界面。如把非常熟练的操作者的经验、或者是领域专家对此问题的评判及处理措施,用语音对现行操作者以提示、指导,使该系统具有一定的智能,具备这种功能的温度控制器将会在现代工业测控系统中应用愈来愈广泛。本次课程设计,我们小组主要以STC89C52单片机开发板,结合ISD1420语音芯片进行温度控制器的设计,下面将从硬件系统设置、软件系统设置、课设总结(包括汇编源代码、硬件系统设置原理图,参考文献)几方面介绍本次课设的主要成果。此次主要是利用STC89C52单片机开发板作为课程设计的平台进行数据处理。硬件方面主要利用DS18B20进行温度采集,利用LED进行温度显示,使用ISD1420语音芯片实现录音,报温和报警功能。软件方面借助了Protell99绘制电路图,在keil开发环境下编程,同时通过在eclipse环境下编写java程序实现对串口发来的温度绘制温度变化曲线等功能。第一章为引言,粗略地介绍此次课设的主要内容。第二章为硬件系统设置,在此章中主要从各个模块的硬件电路图以及基本芯片入手,介绍STC89C52单片机、DS18B20语言芯片、ISD1420温度控制芯片、LED数码管以及74HC273和74HC32A等的内部结构功能、工作方式以及编程工作环境等几个方面进行了简要的介绍,以便读者更容易了解此次课设的基本思路及整理概览,对硬件原理有逐步深入的了解。第三章为软件系统设置,在此章中主要包括主程序流程图和详细的整体流程图,DS18B20温度采集模块流程图、ISD1420模块流程图、LED显示模块流程图以及java程序绘图流程图。第四章为课程设计总结。此部分主要包括人员分工、总结、心得体会、源程序清单和参考资料等方面。在此次课程设计中,在课程设计刚开始的硬件检测,还有程序调试过程中出现的问题特别是语音芯片ISD1420的使用方法中遇到问题,都得到了指导老师精心的指点,使我们受益匪浅,在此表示感谢!第二章 硬件系统设置2.1系统原理图2.2模块硬件电路图主要接线:P1口接74HC273,然后连接到语音芯片ISD1420上面,P0口接的数码管,用于显示接收到的温度,DS18B20接的P2.2口,录音键REC接的P2.3,放音键PLAYE接的P2.4,WR接的P2.5.2.2.1电源模块2.2.2DS18B20模块2.2.3排针模块2.2.4 LED显示模块2.2.5 ISD1420语音模块2.3芯片资料介绍2.3.189C52单片机2.3.1.1课程设计中主要用途本次课程设计我们小组使用的是STC89C52开发板,主要用到了开发板上的单片机部分,LED数码管显示部分,DS18B20部分及键盘部分。我们用P1口接74HC273,然后连接到语音芯片ISD1420上面,P0口接的数码管,用于显示接收到的温度,DS18B20接的P2.2口,录音键REC接的P2.3,放音键PLAYE接的P2.4,WR接的P2.5.2.3.1.2内部结构和引脚图 89C52是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C52是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。2.3.1.3管脚说明:VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,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)这是由于上拉的缘故。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 2.3.1.4串口通讯 SBUF 数据缓冲寄存器是一个可以直接寻址的串行口专用寄存器。实际上SBUF 包含了两个独立的寄存器,一个是发送寄存,另一个是接收寄存器,但它们都共同使用同一个寻址地址99H。CPU 在读SBUF 时会指到接收寄存器,在写时会指到发送寄存器,而且接收寄存器是双缓冲寄存器,这样可以避免接收中断没有及时的被响应,数据没有被取走,下一帧数据已到来,而造成的数据重叠问题。发送器则不需要用到双缓冲,一般情况下我们在写发送程序时也不必用到发送中断去外理发送数据。操作SBUF寄存器的方法则很简单,只要把这个99H 地址用关键字sfr定义为一个变量就可以对其进行读写操作了。SCON 串行口控制寄存器通常在芯片或设备中为了监视或控制接口状态,都会引用到接口控制寄存器。SCON 就是51 芯片的串行口控制寄存器。它的寻址地址是98H,是一个可以位寻址的寄存器,作用就是监视和控制51 芯片串行口的工作状态。51 芯片的串口可以工作在几个不同的工作模式下,其工作模式的设置就是使用SCON 寄存器。它的各个位的具体定义如下:SM0 SM1 SM2 REN TB8 RB8 TI RI 。 SM0、SM1 为串行口工作模式设置位,这样两位可以对应进行四种模式的设置。串行口工作模式设置如下: SM0SM1模式功能波特率000同步移位寄存器 fosc/120118位UART 可变1029位UART fosc/32或fosc/641139位UART 可变SM2 在模式2、模式3 中为多处理机通信使能位。在模式0 中要求该位为0。 波特率在使用串口做通讯时,一个很重要的参数就是波特率,只有上下位机的波特率一样时才可以进行正常通讯。波特率是指串行端口每秒内可以传输的波特位数。51 芯片的串口工作模式0的波特率是固定的,为fosc/12,以一个12M 的晶振来计算,那么它的波特率可以达到1M。模式2 的波特率是固定在fosc/64 或fosc/32,具体用那一种就取决于PCON 寄存器中的SMOD位,如SMOD 为0,波特率为focs/64,SMOD 为1,波特率为focs/32。模式1 和模式3 的波特率是可变的,取决于定时器1 或2(52 芯片)的溢出速率。2.3.2DS18B20芯片2.3.2.1课程设计中主要用途在本次课程设计中的作用是采集温度为温度控制器提供温度的数据。通过DS18B20采集温度,然后在LED数码管上显示当前温度,同时将采集到的温度信息通过串口发送给上位机从而输出温度曲线。ISD1420芯片也是根据DS18B20提供的温度报温和发出警报。它是数字式温度传感器,具有测量精度高,电路连接简单特点。此类传感器仅需要一条数据线进行数据传输,使用2.2口与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,GND接地。独特的一线接口,只需要一条口线通信多点能力,简化了分布式温度传感应用无需外部元件可用数据总线供电,电压范围为3.0V至5.5V无需备用电源 测量温度范围为-55度至+125度。2.3.2.2内部结构和引脚图引脚图 内部结构图2.3.2.3 DS18B20暂存寄存器分布 高速暂存存储器由9个字节组成,其分配如表5所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在 高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如表1所示。对应的温度计算: 当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。表 2是对应的一部分温度值。第九个字节是 冗余检验字节。 温度LSB1字节温度MSB2字节TH用户字节13字节TL用户字节24字节配置寄存器5字节保留6字节保留7字节保留8字节CRC9字节2.3.2.4 ROM及RAM指令表 本次课程设计中根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行 复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后 释放,当DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。ROM及RAM指令表如下: 指 令 约定代码功 能读ROM33H读DS1820温度传感器ROM中的编码(即64位地址) 符合 ROM 55H发出此命令之后,接着发出 64 位 ROM 编码,访问单总线上与该编码相对应的 DS1820 使之作出响应,为下一步对该 DS1820 的读写作准备。 搜索 ROM 0FOH用于确定挂接在同一总线上 DS1820 的个数和识别 64 位 ROM 地址。为操作各器件作好准备。 跳过 ROM 0CCH忽略 64 位 ROM 地址,直接向 DS1820 发温度变换命令。适用于单片工作。 告警搜索命令 0ECH执行后只有温度超过设定值上限或下限的片子才做出响应。 指 令 约定代码功 能温度变换44H启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中。 读暂存器 0BEH 读内部RAM中9字节的内容 写暂存器 4EH 发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。 复制暂存器 48H 将RAM中第3 、4字节的内容复制到EEPROM中。 重调 EEPROM 0B8H 将EEPROM中内容恢复到RAM中的第3 、4字节。 读供电方式 0B4H 读DS1820的供电模式。寄生供电时DS1820发送“ 0 ”,外接电源供电 DS1820发送“ 1 ”。 2.3.2.5 DS18B20的应用电路DS18B20测温系统具有测温系统简单、测温精度高、连接方便、占用口线少等优点。本次课程设计中DS18B20和单片机的P2.2口连接,直接通过P2.2口对其进行控制,还有2个脚一个接GND,一个接VCC.连接图如下: 2.3.2.6时序图本次课程设计通过按照数据手册上的时序,然后经过修改,使程序得到了实现,具体方法见代码清单。初始化时序读/写时序2.3.3 ISD1420芯片2.3.3.1课程设计中主要用途本次课程设计中使用ISD1420芯片,其通过P1口接74HC273,然后连接到语音芯片ISD1420,录音键REC接的P2.3,放音键PLAYE接的P2.4,WR接的P2.5。我们小组先通过ISD1420录音1,2,3,4,5,6,7,8,9,10,点,度,当前温度,温度过高。然后后面通过组合播放对应的信息。当按键显示温度时,ISD1420开始播放当前温度,当温度超过警戒值,发出警报。2.3.3.2内部结构和引脚图本设计使用DIP28封装的芯片,其封装与实物图 如下图所示 2.3.3.3时序图RECORD时序图:PLAY时序图:2.3.3.4单片机对1420的分段放音控制:用微处理器对ISD芯片的分段录放音控制时,才算是发挥了芯片的优势。ISD1420地址输入端具有双重功能,根据地址中的A6、A7的电平状态决定A0A7的功能。如果A6、A7有一个低电平,A0A7输入全解释为地址位,作为起始地址用,此时地址线仅作为输入端,在操作过程中不能输出内部地址信息。根据PLAYE、PLAYL或REC的下降沿信号,地址输入被锁定。如果A6、7同为高电平时,它们即为模式位。在这里我们只用到地址功能来分段控制,所以我们需要保证A6、A7不可同时为1,这里我们可以用软件进行保护。地址输入端A0A7有效值范围为0000000010011111,这表明最多可被划分为160个存贮单元,可录放多达160段语音信息。由A0A7决定每段语音的起始地址,而起始地址又直接反映了录放的起始时间。其关系见公式:TQ=0.125s×(128A7+64A6+32A5+16A4+8A3+4A2+2A1+0)我们小组是将要播放的内容事先录入芯片内,语音芯片的地址端与单片机的P2口对应连接起来,REC和单片机的P2.3脚相连,PLAYE与单片机的P2.4脚相连(具体连接方式见原理图)。就可以控制1420在什么时间播放什么地址的内容:播放地址由P3口提出,播放起始时间及终止时间出P2.3脚控制。本次课程设计各语音所对应的地址及持续时间语音十六进制地址持续时间( S )00x000510x080520x160530x240540x320550x400560x480570x5605 8 0x6405 9 0x720510 0x8005点 0x8805度 0x9605当前温度 0x104 20温度过高 0x112 202.3.4 LED数码管2.3.4.1课程设计中的作用 本次课程设计中LED的作用主要是用来显示DS18B20芯片采集到的温度,我们用的是通过中断来对LED进行动态扫描,同时这一操作是在中断中完成的,刚开始数码管虽然能够显示温度,但是抖动也很厉害,后来通过调试,修改扫描的时间解决了这个问题。 2.3.4.2内部结构及引脚图led数码管是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。led数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。位数有半位,1,2,3,4,5,6,8,10位等等,led数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。共阴和共阳极数码管的内部电路不同,它们的发光原理是一样的,只是它们的电源极性不同而已。颜色有红,绿,蓝,黄等几种。led数码管广泛用于仪表,时钟,车站,家电等场合。下面介绍常用LED数码管内部引脚图: 每一笔划都是对应一个字母表示 DP是小数点. LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。 2.3.4.3显示方式A、静态显示驱动: 静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O埠进行驱动,或者使用如BCD码二-十进位*器*进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O埠多,如驱动5个数码管静态显示则需要5×8=40根I/O埠来驱动,要知道一个89S51单片机可用的I/O口才32个呢。故实际应用时必须增加*驱动器进行驱动,增加了硬体电路的复杂性。 B、动态显示驱动: 数码管动态显示介面是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp "的同名端连在一起,另外为每个数码管的公共极COM增加位元选通控制电路,位元选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位元选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。 透过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位元数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O口,而且功耗更低。2.3.5 74HC273芯片2.3.5.1课程设计中的作用本次课程设计中74HC273是和74HC32P芯片结合配合语音芯片ISD1420使用的,起到锁存作用。74HC273是一款高速CMOS器件,74HC273引脚兼容低功耗肖特基TTL(LSTTL)系列。74HC273具有八路边沿触发,D 型触发器,带独立的D输入和Q输出。74HC273的公共时钟(CP)和主复位(MR)端可同时读取和复位(清零)所有触发器。每个D输入的状态将在时钟脉冲上升沿之前的一段就绪时间内被传输到触发器对应的输出(Qn)上。一旦MR输入电平为低,则所有输出将被强制置为低,而不依赖于时钟或者数据输入。74HC273适用于要求原码输出或者所有存储元件共用时钟和主复位的应用。此芯片在课程设计中用来锁存。2.3.5.2内部结构和引脚图引脚图2.3.5.3功能说明74HC273的主要功能说明如下:2.3.6 74HC32芯片2.3.6.1课程设计中的作用本次课程设计中74HC32P是和74HC273芯片结合配合语音芯片ISD1420使用的,起到锁存作用。2.3.6.2内部结构和引脚图2.3.6.3功能说明74HC32的主要功能说明如下:第三章 软件系统设置程序流程图此部分包括主程序流程图和详细的整体流程图,DS18B20温度采集模块流程图,ISD1420语音模块流程图,LED显示模块流程图及java程序绘图流程图。主程序流程图详细的整体程图DS18B20温度采集模块ISD1420语音模块流程图LED显示模块流程图java程序绘图流程图参数信息sbit ds18b20_io=P22; 定义ds18b20_io口sbit wela=P27; 定义位选口sbit dula=P26; 定义段选口sbit lu=P24; 定义语言芯片录音sbit play=P23; 定义语言芯片播放sbit wr=P25; 定义读写口sbit key1=P37; 定义键盘口uchar temperature_low,temperature_high; 定义最高最低温度uchar num=500; 定义delay温度常数uint temperature; 定义温度参数bit flagtemper=0; 定义标志位bit flag_500=0; 定义500S标志位bit flag_1500=0; 定义1500S标志位uint danyuan=0,8,16,24,32,40,48,56,64,72,80,88,96,104,120; 定义录音放音地址unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d, 定义0-9 0x7d, 0x07,0x7f,0x6f;unsigned char code table1=0xbf,0x86,0xdb,0xcf,0xe6,0xed, 定义数字加.的0-90xfd, 0x87,0xff,0xef;第四章 课程设计总结人员分工ISD1420语言模块:蔡俊钰DS18B20温度模块:钟鹏上位机java绘图模块:陈忠岗硬件电路图:沈霞系统总体设计:吴边总结 软件延时与定时器计时课程开始时,我们尝试过用软件延时,发现软件延时虽然设计简单,使用方便,但是无法进行精确计时,会出现延迟时间不确定,数码管显示出现抖动和录音时序出现错误等诸多问题。所以我们在课程设计中利用定时器0进行计时,利用标志位来判断时间是否到了我们所需的时间,这样就使得连线看起来更清晰,同样的可以精确的达到要求,使课程设计更加完美。模块化及团队合作在项目开发中,团队合作是非常重要的,在对设计进行模块划分、统一变量之后,分别设计不同设计然后进行整合,这样进行开发是非常快速简单的。同时将程序模块化也是非常重要的,通过将程序模块化使思路更清晰,我们就是先做了温度采集DS18B20模块,之后做数码管显示模块,接着是ISD1420语音模块,然后又用JAVA程序实现了温度曲线绘制的模块,最后又加入了键盘模块;以便控制,这样感觉轻松多了。关于本次课程设计在本次设计中实现了利用DS18B20采集温度,在数码管上显示当前温度,并且通过ISD1420报当前温度,通过java程序中设置的警戒温度,当温度超过警戒值时发出警告声。程序中将采集到的温度发到上位机,通过java程序实现对采集到的温度绘制温度变化曲线的功能。在老师的指导下,我们做到了自主设计,自主编写代码在设计中掌握的单片机设计的基本方法、锻炼了团队合作的能力!调试记录及结果分析遇到的问题和解决:1通过串口发送温度给上位机,刚开始只能一位一位发,不能将一个温度3位连续的发出去。通过调试解决了这个问题。2.采集的温度是三位一位一位发给上位机,JAVA程序中设置的是3位一起接收然后显示,两者冲突,后来通过用调试程序在串口窗口printf一串三位温度,通过调试解决了这个问题。3.在主函数之前加一个delay(1000),防止程序还没有完全下载到单片机中,其中的串口中断程序就开始执行,造成程序错误。4.在做录音模块时发现录音地址问题,无论录几个音,放音总是放最后一个录的音,地址变化同样也不起作用。后来发现和ISD1420相连的74HC273和74HC32没有考虑到,所以地址一直是最后一个地址。后来通过WR进行地址锁存解决了这个问题。5数码管显示时一直存在着一个问题,就是3位数,最后一位一直比前面2位亮度大,没有得到解决,后来在询问韩老师得到了解决,通过没执行完一次将数码管关掉解决这个亮度不一样的问题。6.在进行DS18B20程序编写时,按照时序写,但但发现有许多延迟有问题,后来通过逐步修改,使程序得到了实现。心得体会本次微机接口课程设计所作的课题是温度控制器,从总体上是对89C52单片机、以及对DS18B20、ISD1420、LED、74HC273、74HC32A等的应用。此次课程设计主要有DS18B20温度采集模块,语言芯片ISD1420的录音,报温模块,LED显示模块以及java程序绘图模块等。 温度控制器主要实现了利用DS18B20芯片采集当前温度,然后利用单片机数码管显示当前温度,并且通过用键盘控制并利用语音芯片ISD1420报温,通过在java程序上设置的警戒温度,当温度超过警戒值时发出警告“温度太高了”,最终将温度值通过串口传给上位机java程序实现对采集到的温度绘制温度变化曲线。课程设计中我主要负责DS18B20芯片模块程序的编写。由于本设计课程设计采用了集成温度传感器,这样不仅减少了硬件电路的设计与调试,并且此温度传感元件的集成性能比传统的元件要优越得多,这样简化了电路的设计难度还降低了产品的价格。DS18B20程序的主要思路是:先启动DS18B20温度采集的转换函数(包括初始化,等待响应脉冲,发跳过ROM命令,发启动DS18B20温度转换功能命令),然后读DS18B20温度值(包括初始化,等待响应脉冲,延迟,发跳过ROM命令,发读DS18B20温度值