多路数据采集系统设计
摘 要
在日常科研和生活中,出于安全、方便等方面的需要,在很多工程及研究
领域都需要用到数据采集器的产品。多路数据采集器是集计算机技术、电子技术一体化高科技产品,具有安全性高,使用方便等优点。经过不断的发展,单片机以其体积小、功能强和价格低廉的优点,广泛地应用于家电、工业过程控制、仪器仪表、智能武器、航空和空间飞行器等领域。本文以单片机的功能、特性和使用方法为基础,介绍了多路数据采集系统的工作原理和特点,硬件电路设计,软件的设计和调试,以及PCB 板的具体制作。本文从经济实用的角度出发,以
ATMEL 公司所生产的89 系列单片机AT89S52为核心设计多路数据采集系统。
该系统包含系统硬件和软件两大部分。硬件部分包含单片机主控电路、模数转换电路、显示电路。系统软件设计包含多路数据采集主程序、温度采集子程序。在程序设计时使用单片机C 语言,并用Keil C51 软件进行编译和软硬件仿真。在硬件电路制作过程中,使用Protel 99SE 设计制作PCB 板,然后分别对各部分电路焊接,再进行性能和功能测试。该数据采集系统具有数据采集、数据处理、数据显示等功能,其结构简单、成本低,具有一定的市场前景。
关键词: 主控电路;温度采集;电压采集;显示电路;制作调制
Abstract
In daily scientific research and life,Stemming from safe, is convenient and so on
the aspect need,All need to use in very many projects and the research area to the data acquisition product 。The multichannel data acquisition is collection computer technology, the electronic technology integration high tech product,Has the security to be high,Merit and so on easy to operate。After unceasing development,The monolithic integrated circuit by its volume small, the function is strong and the price inexpensive merit ,Widely applies in the electrical appliances, domain and so on commercial run control, instrument measuring appliance, intelligent weapon, aviation and spatial flight vehicle 。Widely applies in the electrical appliances, domain and so on commercial run control, instrument measuring appliance, intelligent weapon, aviation and spatial flight vehicle ,Introduced the multichannel data acquisition system principle of work and the characteristic,Hardware circuit design,Software design and debugging ,As well as PCB board concrete manufacture。This article embarks from the economical practical angle ,89 series monolithic integrated circuits AT89S52 produces which by ATMEL Corporation is the core design multichannel data acquisition system. This system contains the system hardware and the software two major part. The hardware partially contains the monolithic integrated circuit host to control the electric circuit, the a/d conversion electric circuit, the display circuit. The system software design contains the multichannel data acquisition master routine, the temperature gathering subroutine。When programming uses the monolithic integrated circuit C language ,And software carries on the translation and the software and hardware simulation with Keil the C51。In hardware electric circuit manufacture process,Uses Protel the 99SE design to manufacture the PCB board,Then separately to each part of electric circuits welding ,Again carries on the performance and the function test。This data acquisition system has function and so on data acquisition, data processing, data display ,Its structure simple, the cost is low,Has the certain market prospect
Key words: The host controls the electric circuit;emperature gathering; voltage
gathering,Display circuit;Manufacture modulation
目 录
引言………………………………………………………………………1 1 系统总体设计 ………………………………………………………1
1.1 单片机系统简介 ………………………………………………………1
1.2 系统总体设计…………………………………………………………2
1.2.1系统总体指标 ………………………………………………………2
1.2.2 系统方案 ………………………………………………………2
2 硬件系统设计 ………………………………………………………3
2.1硬件系统的电路构成 …………………………………………………4
2.1.1 主控电路……………………………………………………………4
2.1.2 温度采集电路 ………………………………………………………8
2.1.3 电压采集电路 ……………………………………………………13
2.1.4 显示电路 …………………………………………………………15 3 系统软件设计………………………………………………………16
3.1编程语言的选择………………………………………………………16
3.2工作流程图 …………………………………………………………18 4 电路设计、制作、调制……………………………………………18
4.1 Protel99se 简介………………………………………………………18
4.2 设计原理图和PCB 图 …………………………………………………19
4.3 焊接和调制 …………………………………………………………22 5 结果分析……………………………………………………………23 6 结论…………………………………………………………………23 谢辞 ……………………………………………………………………25 参考文献 ………………………………………………………………26 附录 ……………………………………………………………………27
引言
单片机(Single Chip Microcomputer)以其体积小、功能强和价格低廉的优点,广泛地应用于家电、工业过程控制、仪器仪表、智能武器、航空和空间飞行器等领域。近30年来,世界上各大电气厂商、测控技术企业和机电行业都竞相把单片机作为其产品更新、智能化的重要工具。目前世界上单片机年产量已达十多亿片,通常是当年微处理器产量的4~5倍以上。其数量之大和应用面之广,是其它任何类型的计其机所无法比拟的。单片机是应工业测控需要而诞生的。它把计算机最基本的功能电路,如CPU 、程序存储器、数据存储器、I/0接口、定时器/计数器、中断系统等集成到一块芯片上,形成单片形态的计算机。单片机通常以最小系统运行,在家用电器中和常用的智能仪器仪表中常常可以“单片”工作。而在工业测控的系统中,目前还需要在单片机的基础上外扩存储器、I/O接口以及一些外围电路,形成功能更强、更完善的系统。单片机在目前的发展形势下,表现出几大趋势:
(1)可靠性及应用水平越来越高,和互联网连接已是一种明显的走向;
(2)所集成的部件越来越多;NS(美国国家半导体) 公司的单片机已把语音、图像部也集成到单片机中,也就是说,单片机的意义只是在于单片集成电路,而不在于其功能了;如果从功能上讲它可以讲是万用机。原因是其内部已集成了各种应用电路;
(3)功耗越来越低;
(4)与模拟电路的结合越来越多;
1 系统的总体设计
1.1 单片机系统简介
要用增加硬件的办法减轻软件的负担。因此,设计应用系统的时候,要对硬件和软件都要有足够单片机要组成一个完整的工业调控系统,通常有两个内容,即单片机的系统扩展与系统配置。系统扩展是指单片机内部的基本单元不能满足应用系统的要求时,必须在片外扩展相应的电路或器件。大多数的单片机都有可供外部扩展的三总线结构(DB,AB ,CB) 。51 系列单片机由P0 口构成8 位数据总线,P2、P0 口构成16 位地址总线,可供外部扩展成64KB 程序存储器和64KB 数据存储器。系统配置是指为了满足系统功能要求而配置的各种接口电路。例如,要构成数据采集系统时,必须配置传感器接口。它需要根据对象的不同选用不同的信号放大、A /D 转换、脉冲整形放大、信号滤波等等电路。而要构成伺服系统时则必须配置伺服控制接口。当然,通常还必须有人机接口,有时还要有网络接口等。系统配置与控制对象和操作者密切相关。要用单片机构成一个满足对象测控要求的用户系统.在硬件系统设计上有两个层次的任务:即由单片机最小系统通过系统扩展构成能满足测控对象要求的计算机系统,称为单片机系统;根据
用户及对象的技术要求,通过系统配置各种接口电路,以构成与对象相关的系统,则称为单片机应用系统。事实上,单片机应用系统组成包含硬件设计和软件设计两部分。而硬件和软件之间的相互关系既密切又制约。设计应用系统很关键的阶段就是确定它们之间的相互关系。有时,我们可以对软件提出一些要求而简化硬件的投入,但有时有的知识,并且对所控制的对象有深刻的认识。要从总体上权衡硬件和软件的可以和可能,合理划分其负担,以得到一个最佳的方案,综上所述本次设计可按以下发方案进行。
1.2 系统总体设计
1.2.1 系统总体指标
设计课题要求利用所学的单片机和数字模拟电路知识制作一个由单片机实现的多路数据采集系统,一路实现0—5V 直流电压采集、处理、存储、显示:一路实现温度、采集、处理、存储、显示。采用开关控制输出通道号。
1.2.2 系统方案
基于以上的具体设计要求考虑,本项目就利用单片机和相应的一些数字模拟电路来实现这些构想,完成一个基于单片机,构成具有上述具体功能的多路数据采集系统。
电压采集:
把“单片机系统板”区域中的P0端口的P0.0-P0.7用8芯排线连接到“动态数码显示”区域中的A B C D E F G DP端口上,作为数码管的驱动。把“单片机系统板”区域中的P2端口的P2.0-P2.3用8芯排线连接到“动态数码显示”区域中的T1 T2 T3 T4端口上作为数码管的位段选择。把“单片机系统板”区域中的P1端口的P1.0-P1.7用8芯排线连接到“模数转换模块”区域中的D0 D1 D2 D3 D4 D5 D6 D7端口上,A/D转换完毕的数据输入到单片机的P1端口 把“模数转换模块”区域中的VREF 端子用导线连接到“电源块”区域中的VCC 端子上;把“模数转换模块”区域中的A2 A1 A0端子用导线连接地端;把“模数转换模块”区域中的ST 端用导线连接到“单片机系统”区域中的P3.0端;把“模数转换模块”区域中的OE 端用导线连接到“单片机系统”区域中的P3.1端;把“模数转换模块”区域中的EOC 端用导线连接到“单片机系统”区域中的P3.2端;把“模数转换模块”区域中的CLK 端子用导线连接到“单片机系统”区域中的P3.3端,把“模数转换模块”区域中的IN0端用导线连接到“1路可调压模块”区域中的RP1端;ALE 为地址锁存允许输入线,高电平有效。当ALE 线为高电平时,地址锁存与译码器将A ,B ,C 三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A ,B 和C 为地址输入线,用于选通IN0-IN7上的一路模拟量输入。ST 为转换启动信号。当ST 上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST 应保持低电平。EOC 为转换结束信号。当EOC 为高
电平时,表明转换结束;否则,表明正在进行A/D转换。OE 为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE =1,输出转换得到的数据;OE =0,输出数据线呈高阻状态。D7-D0为数字量输出线。 CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由AT89S52提供,通常使用频率为500KHZ.
温度采集
本方案是由DS18B20芯片实现温度的采集和模拟量与数据量的转变,这样一个DS18B20就实现了热电阻和ADC0809的功能,采集后的数据经过模数转换后通过一个单总线传送到单片机AT89S52的.P3.6口上,经过单片机的处理,先把一位位的数据经过软件的汇成一个个字节,在通过对DS18S20写到AT89S52里面,最后通过单片机的P0端口P0端口的P0.0-P0.7输出数据量和P2端的P2.0-P2.3控制四合一高亮动态数码管显示。这就可以充分的利用了AT89S52 的FLASH 的特性,随时根据用户的选择安装相应的控制软件。
基于以上的设计思路,初步确定硬件系统的系统框图如图1--1 所示。
图1—1 系统框图 2 硬件系统设计
根据以上系统设计构思的具体要求,开始着手对硬件系统进行设计。硬件和软件是单片机控制系统的两个重要方面,硬件是基础,软件是关键,但两者又是可以相互转化的。为了提高系统的可靠性,应在满足系统精度和速度要求基础上进可能把硬件功能改。用软件来实现。对于硬件系统的设计,涉及单片机最小应用系统方面的知识,单片机最小应用系统是指仅使用单片机内部资源辅以必须的
外围电路所构建的简单的应用系统。它包括两方面的内容:单片机的选择和单片机最小应用系统的设计。通过单片机的选择,最大限度满足应用系统对硬件资源的要求。最小应用系统设计则是指单片机最基本的、最通常的外围电路设计,如时钟电路、复位电路等。任何一个复杂的应用系统都是以最小应用系统为基础,通过“搭接”外部功能模块的方法实现的。
下面先介绍基于单片机的多路数据采集系统的硬件系统。
2.1 硬件系统的电路构成
硬件系统的电路由单片机主控电路、温度采集电路、电压采集电路、LED 驱动驱动电路、显示电路等这几个主要部分构成。见附录一
2.1.1 主控电路
由单片机AT89S51、振荡电路、复位电路等构成。见附录一
(1)单片机的选择
考虑到硬件电路的简单化和成本,以及选材和调试的方便性等因素,本次设计选用ATMEL 公司的AT89S052 单片机作为微处理器。ATMEL 公司创建于1984 年,总部位于美国加利福尼亚州圣何塞市,在北美及欧洲都拥有制造工厂。ATMEL 公司在全世界范围内设计、制造并推出基于先进逻辑的混合信号永久性存储器及射频(RF )半导体,同时也是使用CMOS 、BiCMOS 、SiGe 及高压BCDMOS 工艺的系统级整合半导体解决。方案的主要供应商。同时,ATMEL 拥有广泛的基于80S51 结构的微控制器,包括可在线编程的FLASH 版本,OTP 版本以及ROM 版本。同时还提供先进的片上外设功能,如CAN 总线控制器,USB 控制器,MP3 解码器,以及智能卡接口。
本次设计所用到的AT89S52单片机内含4KB 快闪程序存储器,其编程和擦除完全用电实现,而且4KB 的容量完全能够满足本次设计所用的编程,免去了对存贮器及IO 口扩展的麻烦;AT89S52 单片机的时钟频率为0~24kHz,并且其价格低廉,大批量采购的价格在10 元以内。因此,用AT89S52 加上相应的时钟和复位电路就组成了,本次设计所需的单片机最小系统。以下结合本次设计的具体内容,简单介绍AT89S52
单片机的主要功能特性及其管脚说明:
① 主要功能特性
与MCS-51单片机产品兼容
8K 字节在系统可编程Flash 存储器
1000次擦写周期
全静态操作:0Hz ~33Hz
三级加密程序存储器
32个可编程I/O口线
三个16位定时器/计数器
八个中断源
全双工UART 串行通道
低功耗空闲和掉电模式
掉电后中断可唤醒
看门狗定时器
双数据指针
掉电标识符
② 管脚说明:
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash 允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash ,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k 字节Flash ,256字节RAM ,32 位I/O 口线,看门狗定时器,2个数据指针,三个16 位定时器/计数器,个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM 定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到复位为止。
P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL 逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash 编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。
P1口:P1口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL )。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如表1--1所示。在flash 编程和校验时,P1口接收低8位地址字节。
P2口:P2口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL )。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)
时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用
8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。 在flash 编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:P3口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4
TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL )。P3口亦作为AT89S52特殊功能(第二功能)使用,如表1--2所示。 在flash 编程和校验时,P3口也接收一些控制信号。
位。看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。特殊寄存器AUXR(地址8EH) 上的DISRTO 位可以使此功能无效。DISRTO 默认状态下,复位高电平有效。
ALE/PROG:地址锁存控制信号(ALE )是访问外部程序存储器时,锁存低8 位
地址
的输出脉冲。在flash 编程时,此引脚(PROG )也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE 脉冲将会跳过。如果需要,通过将地址为8EH 的SFR 的第0位置 “1”,ALE 操作将无效。这一位置 “1”,ALE 仅在执行MOVX 或MOVC 指令时有效。否则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH 的SFR 的第0位)的设置对微控制器处于外部执行模式下无效。
PSEN :外部程序存储器选通信号(PSEN )是外部程序存储器选通信号。
当AT89S52从外部程序存储器执行外部代码时,PSEN 在每个机器周期被激活两次,而
在访问外部数据存储器时,PSEN 将不被激活。
EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH 的外部程序存储器读取指令,EA 必须接GND 。为了执行内部程序指令,EA 应该接VCC 。在flash 编程期间,EA 也接收12伏VPP 电压。
XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:振荡器反相放大器的输出端。
(2)时钟电路
时钟电路如图2—1所示
时钟电路是计算机的心脏,它控制着计算机的工作节奏。单片机AT89S52 的时钟信号可以由两种方式产生:一种是内部方式,利用芯片内部的振荡电路,产生时钟信号;另一种为外部方式,时钟信号由外部引入。考虑到本次设计对时间的要求不是很高,所以选用内部方式产生时钟脉冲。AT89S52 内部有一个用于构成振荡器的高增益反相放大器,引脚X1 和X2 分别为放大器的输入端和输出端。该放大器与作为反馈元件的片外晶体或陶瓷谐振器(简称晶振) 一起构成自激振荡器。89S52 单片机虽然有内部振荡电路,但要形成时钟,必须外接元件,如电路图所示。外接晶振以及电容C2 和C3 构成并联谐振电路,这种方式就是内部时钟方式。如果振荡器已起振,则在X2 引脚上输出3v 左右的正弦波。振荡频率f 取决于晶振的频率。不同型号的产品,可选择的频率范围有所不同,一般在0.5-12MHz 之间。常用的晶振有6MHz 、12MHz 和11.0592MHz 。电容C8 和C9 主要作用是帮助起振(谐振) ,称其为谐振电容,其值的大小对振荡频率也有影响。因此常用调节C2 或C3 的容量大小对频率进行微调,电容容量通常在20~100pF 之间选择,当时钟频率为12MHz 时典型值为30pF 。本次设计的电路就是选择12MHz 的时钟频率。
(3) 复位电路
复位电路如图2--2所示
而对于AT89C2051 单片机的复位电路有两种,上电自动复位和人工复位,人工复
位方式只是将一个按键并联在上电自动复位电路上,根据系统的需要这里选择人工复位
方式。在电路中,时间常数RC 越大,上电时RST 端保持高电平的时间越长,当振荡频
率f =12MHz 时,典型值C =4.7uF ,R =10k 。想要复位时,只要按一下开关就会在RST
端出现一段时间的高电平,使单片机复位。
AT89S52 的复位输入引脚RST 提供了初始化的手段,使程序从指定位置开始执行,即程序从程序存储器的0000H 单元处开始执行。在89S52 单片机时钟电路工作之后,只要在RST 引脚上出现2 个机器周期以上的高电平,就能确保单片机可靠复位。若RST 保持高电平,AT89S52 维持复位状态,只有当RST 由高电平变为低电平以后,AT89S52 才会退出复位状态,程序从0000H 地址单元开始执行。对于单片机的复位电路,如图2.1.2 所示,只要在RST 复位端接一个电容至VCC 和一个电阻至地即可。很多电子产品中,电容器都是必不可少的电子元器件,它在电子设备中充当整流器的平滑滤波、电源和退耦、交流信号的旁路、交直流电路的交流耦合等。进一步了解电容可使电容在电路中发挥更好的作用。在加电瞬间,RST 端出现一定时间的高电平,只要高电平保持时间足够长,就可以使单片机有效地复位。电容器应用在高压场合时,必须注意电晕的影响。电晕是由于在介质/电极层之间存在空隙而产生的,它除了可以产生损坏设备的寄生信号外,还会导致电容器介质击穿。在交流或脉动条件下,电晕特别容易发生。对于所有的电容器,在使用中应保证直流电压与交流峰值电压之和不的超过直流电压额定值。RST 端在加电时应保持的高电平时间包括VCC 的上升时间和振荡器起振的时间。VCC 的上升时间约为10us ,振荡器起振时间和频率有关,频率为12MHz 时约为1us 。频率为1MHz 时约为10us ,所以一般为了可靠地复位,RST 在上电时保持20us 以上高电平即可。
图2—1 复位电路 图2—2 时钟外电路 2.1.2 温度采集电路
温度采集电路如图2--3所示
本方案是由DS18B20芯片实现温度的采集和模拟量与数据量的转变,这样一
个芯片
DS18B20就实现了热电阻和ADC0809的功能,采集后的数据经过模数转换后通过一个单总线传送到单片机AT89S52的.P3.6口上,经过单片机的处理,先把一位位的数据经过软件的汇成一个个字节,在通过对DS18S20写到AT89S52里面,最后通过单片机的P0端口P0端口的P0.0-P0.7输出数据量和P2端的P2.0-P2.3控制四合一高亮动态数码管显示。这就可以充分的利用了AT89S52 的FLASH 的特性,随时根据用户的选择安装相应的控制软件。
图2--3 温度采集电路 (1) DS18B20芯片介绍
DS18B20是DALLAS 公司生产单总线数字温度计,DS1820 数字温度计提供9 位温度读数, 指示器件的温度信息经过单线接口送入DS1820 或从DS1820 送出因此从中央处理器到DS1820 仅需连接一条线和地读写和完成温度变换所需的电源可以由数据线本身提供而不需要外部电源因为每一DS1820 有唯一的系列号silicon serial number 因此多个DS1820 可以存在于同一条单线总线上这允许
在许多不同的地方放置温度灵敏器件此特性的应用范围包括HVAC 环境控制建筑物设备或机械内的温度检测以及过程监视和控制中的温度检测
DS1820 的主要部件DS1820 有三个主要的数据部件1 64 位激光
laseredROM;2 温度灵敏元件和3 非易失性温度告警触发器TH 和TL 器件从单线的通信线取得其电源在信号线为高电平的时间周期内把能量贮存在内部的电容器中在单信号线为低电平的时间期内断开此电源直到信号线变为高电平重新接上寄生电容电源为止作为另一种可供选择的方法DS1820 也可用外部5V 电源供电
与DS1820 的通信经过一个单线接口在单线接口情况下在ROM 操作未定建立之前不能使用存贮器和控制操作主机必须首先提供五种ROM 操作命令之一1 Read ROM(读ROM) 2 Match ROM(符合ROM),3)Search ROM(搜索ROM),4)Skip ROM(跳过ROM), 或5 Alarm Search(告警搜索) 这些命令对每一器件的64 位激光ROM 部分进行操作如果在单线上有许多器件那么可以挑选出一个特定的器件并给总线上的主机指示存在多少器件及其类型在成功地执行了ROM 操作序列之后可使用存贮器和控制操作然后主机可以提供六种存贮器和控制操作命令之一
一个控制操作命令指示DS1820 完成温度测量该测量的结果将放入DS1820 的高速暂存便笺式存贮器Scratchpad memory 通过发出读暂存存储器内容的存储器操作命令可以读出此结果每一温度告警触发器TH 和TL 构成一个字节的EEPROM 如果不对DS1820 施加告警搜索命令这些寄存器可用作通用用户存储器使用存储器操作命令可以写TH 和TL 对这些寄存器的读访问通过便笺存储器所有数据均以最低有效位在前的方式被读
① DS18B20特点
独特的单线接口只需1 个接口引脚即可通信 多点multidrop 能力使分布式温度检测应用得以简化 不需要外部元件 可用数据线供电 不需备份电源
测量范围从-55 至+125 增量值为0.5 等效的华氏温度范围是-67 F 至257 F
增量值为0.9 F
以12 位数字值方式读出温度 在1 秒典型值内把温度变换为数字 用户可定义的非易失性的温度告警设置
告警搜索命令识别和寻址温度在编定的极限之外的器件温度告警情况
应用范围包括恒温控制工业系统消费类产品温度计或任何热敏系统 ②DS18B20引脚介绍 如图2—4所示
图2—4 DS18B2管脚图
(2) DS18B20读时序
当从DS1820 读数据时主机产生读时间片当主机把数据线从逻辑高电平拉至低电平时产生读时间片数据线必须保持在低逻辑电平至少1 微秒来自DS1820 的输出数据在读时间片下降沿之后15 微秒有效因此为了读出从读时间片开始算起15 微秒的状态主机必须停止把I/O 引脚驱动至低电平见图12 在读时间片结束时I/O 引脚经过外部的上拉电阻拉回至高电平所有读时间片的最短持续期限为60 微秒各个读时间片之间必须有最短为1 微秒的恢复时间图12 指出TINRT,TRC 和TSAMPLE 之和必须小于15 s 如图2--5说明通过使TINRT 和TRC 尽可能小且把主机采样时间定在15 s 期间的末尾系统时序关系就有最大的余地
(2)DS18B20写时序
当主机把数据线从高逻辑电平拉至低逻辑电平时产生写时间片有两种类型的写时间片写1 时间片和写0 时间片所有时间片必须有最短为60 微秒的持续期在各写周期之间必须有最短为1 微秒的恢复时间在I/O 线由高电平变为低电平之后DS1820 在15 s 至60 s 的窗口之间对I/O 线采样如果线为高电平写1 就发生如果线为低电平便发生写0 见图2--6 对于主机产生写1 时间片的情况数据线必须先被拉至逻辑低电平然后就被释放使数据线。在
图2—5 读时序图
图2—6 写时序图
写时间片开始之后的15 微秒之内拉至高电平对于主机产生写0 时间片的情况数据线必须被拉至逻辑低电平且至少保持低电平60 2.1.3 电压采集电路
电压采集电路如图2--7所示
图2—7 电压采集电路
电压采集电路只要是由ADC0809和单片机组成 (1) ADC0809芯片介绍
① ADC0809结构 如图2--8所示
ADC0809是CMOS 的8位A/D转换器,采用逐次逼近式进行A/D转换。芯片内有一个8路模拟开关,一个比较器,一个带有树状模拟开关的256R 分压器和一个逐次逼近的寄存器等等。因而ADC0809有8路模拟量输入通道。ALE 为地址锁存信号,高电平有效时,ADDC 、ADDB 、ADDA 被锁存,从而可通过对ADDC 、ADDB 、ADDA 三端输入的地址译码,选通8路模拟量输入(IN1~IN8)的任意一路进入片内进行A/D转换。
② ADC0809引脚及功能 ADC0809外部引脚如图2--9所示
IN0—IN7:8路模拟量输入端,在多路开关控制下,任一时刻只能有一路模拟量
实现A/D转换。
A 、B 、C :多路开关地址选择输入端,当取植000—111时与A/D转换对应的通道为IN0—IN7
ALE :地址锁存输入线,该信号上升沿可将地址选择信号A 、B 、C 锁入地址寄存器。
START :启动转换输入线,其上升沿用以清楚A/D内部寄存器,其下降沿用以启
动内部控制逻辑开始A/D转换工作。
EOC :转换完毕输出线,其上出现高电平是表示A/D转换完毕。 2-1—2-8(D7—D0):为8位数据输出端,可直接接入微型机的数据端。 OE :允许输出控制端,高电平有效。底电平时,数据输出端为高阻态;高电平时,
将A/D转换后的8位数据送出。
CLOCK :转换定时脉冲输入端。它的频率决定了A/D转换器的转换速度,使用频
率小于等于640KH Z ,对应转换速度大于等于100US 。
Ref(+),Ref(-)(VREF (+))和(VREF (-)):是内部A/D转换器的参考电压输入端。 V cc 为+5V,GND 为地。
图2—8 ADC0809结构 2.1.4 显示电路
显示电路包刮LED 驱动电路和四位数码管,如图2--10所示
显示电路只要又四个8050三极管和四位数码管组成,本电路所用于显示的数
码管为四合一共阳数码管入如图2--11所示,为选通的数码管,而单片机虽然能产生5V 的高电平,但是产生的电流很小,所以需要用到三极管的开关特性来增大驱动电流。
3 系统软件设计
合理的软件结构是设计出一个性能优良的单片机应用系统软件的基础,必须予以充
分重视。由系统的定义,可以把整个工作分解为几个相对独立的操作,根据这些操作的
图2—10 显示电路 图2—9 ADC0809外
部引脚
图2—11 四位数码管管脚图
相互联系和时间关系,设计出一个合理的软件结构。
在程序设计方法上,模块程序设计是单片机应用中最常用的程序设计技术。这种方
法的优点是:单个程序模块的设计和调试比较方便且容易完成,一个模块可以为多个程序共享;缺点是:各个模块的连接有时有一定难度。在实际设计中,不论是利用单片机进行数值运算,还是进行实时控制或数据处理,首先总是要把所要解决的问题编成程序,然后计算机才能根据所编的程序进行操作,所以学会编制程序是应用单片机的重要件。
在软件结构设计确定之后就可以进行程序设计。一般程序设计过程如下: 根据问题的定义,描述出各个输入变量和各个输出变量之间的数学关系,即建立数学模型。然后根据系统功能及操作过程,先列出程序简单功能流程框图(粗框图),再对粗框图进行扩充和具体化,即对存储器、寄存器、标志位等工作单元作具体的分配和说明。把功能流程图中每一个粗框图转变为对具体的存储单元、寄存器和I/O 口的操作,从而绘制出详细的程序流程图(细框图)。
在完成流程图设计以后,便可编写程序。单片机应用程序可以采用汇编语言,也可
以采用C 语言等高级语言。编写完后均需汇编成机器码,经调试正常运行后,再固化到
非易失性存储器中去,完成系统的设计。
在实际应用中,解决某一问题、实现某一功能的程序并不是唯一的。评价它们的质量好坏通常有以下几个标准: (1)程序的执行时间。 (2)程序所占用的内存字节数。 (3)程序的逻辑性、可读性。 (4)程序的兼容性、可扩展性。 (5)程序的可靠性。
一般来说,一个程序的执行时间越短,占用的内存单元越少,其质量也就越高。这
就是程序设计中的“时间”和“空间”的概念。程序设计的逻辑性强、层次分明、数据
结构合理、便于阅读也是衡量程序优劣的重要标准;同时还要保证程序在任何实际的工
作条件下、都能正常运行。另外,在较复杂的程序设计中,必须充分考虑程序的可读性
和可靠性。同时,程序的可扩展性、兼容性以及容错性等都是衡量与评价程序优劣的重
要标准。下面结合汇编语言和C 语言的各自特性及优势,对编程语言做出选择。 3.1 编程语言的选择
程序的编写涉及到程序语言的选择,下面就两种程序编写语言:汇编语言和C 语言 进行选择。
(1) C 语言的优势
单片机C 语言具有以下优越性:
在不需要完全了解单片机系统具体硬件的情况下,也能够编出符合硬件实际的专业 水平的程序;
不同函数的数据实行覆盖,有效利用片上有限的RAM 空间;
程序具有坚固性:数据被破坏是导致程序运行异常的重要因素。C 语言对数据进行
了许多专业性的处理,避免了运行中间非异步的破坏;
C 语言提供复杂的数据类型(数组、结构、联合、枚举、指针等),极大地增强了
程序处理能力和灵活性;
提供auto 、static 、const 等存储类型和专门针对8051 单片机的data 、idata 、pdata 、xdata 、code 等存储类型,自动为变量合理地分配地址;
提供small 、compact 、large 等编译模式,以适应片上存储器的大小;中断服务程序的现场保护和恢复,中断向量表的填写,是直接与单片机相关的,都由C 编译器代办;
提供常用的标准函数库,以供用户直接使用;头文件中定义宏、说明复杂数据类型和函数原型,有利于程序的移植和支持单片机的系列化产品的开发;
有严格的句法检查,错误很少,可容易地在高级语言的水平上迅速地被排除掉;
可方便地接受多种实用程序的服务:如片上资源的初始化有专门的实用程序自动生
成;再如,有实时多任务操作系统可调度多道任务,简化用户编程,提高运行的安全性 等等。
(2)汇编语言的优点
用助记符表示指令系统的语言称为符号语言或汇编语言,用汇编语言编写的程序称
为汇编语言程序。在单片机领域,汇编语言是目前最广泛使用的语言,它比机器语言前
进了一大步,汇编语言通俗易懂,不易出错,即使出错也容易发现和修改。这给编写、
阅读和修改程序带来了很大的方便。因此它是单片机编程所使用的主要语言之一。
采用汇编语言编程与采用高级语言编程相比具有以下优越性:
占用的内存单元和CPU 资源少,能直接对硬件进行控制;
程序简短执行速度快;
可直接调用单片机的全部资源,并可有效地利用单片机的专有特性;
能准确地掌握指令的执行时间,适用于实时控制系统;
通过对上述两种编程语言的特性及优点的了解,同时考虑到设计者本人对C 语言程序的理解和应用较为熟悉,本次设计中系统软件的设计编程采用C 语言进行编写。
3.2 工作流程图
工作流程如图3—1和3--2所示
4 电路的设计、制作和调试
4.1 Protel 99 SE 简介
Protel 99 是由一向注重为印刷板设计者们开发软件产品的PROTEL
TECHNOLOGY 公司研制。它提供拉一系列的电路设计工具,优秀的文件管理系统,以及真正的客户/服务器电路设计系统。Protel 使设计人员从繁琐的电路设计中解脱出来,只需一个鼠标便可完成原理图到最终的印刷电路板设计的全部过程,从而真正达到Windows 视窗软件风格。
Protel 99SE 采用数据库的管理方式。Protel 99SE 软件沿袭了Protel 以前版本方便
图3—1 主程序流程图
易学的特点,内部界面与Protel 99 大体相同,新增加了一些功能模块,功能更加强大。新增的层堆栈管理功能,可以设计32 个信号层,16 个地电层,16 个机械层新增的3D 功能让您在加工印制版之前可以看到板的三维效果。增强的打印功能,使您可以轻松修改打印设置控制打印结果。Protel 99SE 容易使用的特性还体现在“这是什么”帮助,按下右上角的小问号,然后输入所要的信息,可以很快地看到特性的功能,然后用到设计中,按下状态栏末端的按钮,使用自然语言帮助顾问。
下面就简单介绍一下用Protel 99SE 来制作本次设计的简单过程。
4.2 设计原理图和PCB 图
根据下列步骤可正确的作出本次设计的原理图和PCB 图。
图3—1 子主程序流程图
(1)选择好SCH ,PCB 等文件的名字(用英文,数字),加上扩展名。
(2)原理图:
先设计好删格大小,图纸大小,选择公制,加好库元件。按电路功能模块画原理好图,元件和线的画法应让人很容易看清楚原理,尽量均匀,美观,元件里面不要走线,注意不要在管脚中间走线。最好不要让两个元件管脚直接相连,画完后可以自动编号(特殊要求例外),然后加上对应标称值,最好把标称值改为红色,粗体,这样可以和标号区分开。最好把标号和标称值放在合适位置,一般左边为标号,右边为标称值,或上面为标号,下面没标称值。在设计过程中要注意习惯性保存!
首先保证原理图是完全正确的,进行ERC 检查无错,然后打印核对。其次最好能搞清楚电路原理,对高低压;大小电流;模拟,数字;大小信号;大小功率分块,以便在后面布局时方便。
(3)制作PCB 元件库:
对于标准库和自己的常用库里面没有的元件封装进行制作,要注意画俯视图,注意尺寸,焊盘大小,位置,号,内孔大小,方向。名字用英文,容易看为好,最好有标明对应的尺寸,以便下次用时查找(可以使用名字和对应尺寸对应的表格形式保存)。对于常用的二极管,三极管应该注意标号的表示方法,最好在自己库里面有常用系列的二极管,三极管封装,对发光二极管LED ,RAD0.1,RB.1/.2 等常用而标准库有的元件封装应该都在自己库里面有。像本次设计中所
用按键的元件封装都必须自制。
(4)生成网络表:
在原理图里面加好封装,保存,ERC 检查,生成元件清单检查。生成网络表。
(5)建立PCB :
选择好公制,捕获和可见删格大小,按要求设计好外框(向导或自己画),然后放好固定孔的位置,大小(3.0mm 的螺丝可以用3.5mm 的内孔焊盘,2.5 的
可以用3 的内孔),边缘的先改好焊盘,孔大小,位置固定。添加好需要用到的库。
(6)布局:
调用网络表,调入元件,修改部分焊盘大小,设置好布线规则,可以改变标号的大小,粗细,隐藏标称值。然后先把需要特殊位置的元件放好并琐定。然后根据功能模块布局,(可以用SCH 里面选择过度到PCB 里面选择的方式),一般不用X ,Y 进行元件的翻转,而是用空格旋转,或L 键,(因为有些元件是不能翻转的,如集成块,继电器等)。对于一个功能模块先放中心元件,或大元件,然后放旁边的小元件,(比如集成块先放,然后放直接和集成块两管脚直接相连的元件,再放和集成块一个管脚相连的元件,而且类似的元件尽量放在一起,比较美观也要考虑后面连线的方便性)。当然一些特殊关系的元件先放,比如一些滤波电容和晶振等需要靠近某些元件的先放好。还有会干扰的元件先整体考虑要离远点。高低压模块要间隔6.4mm 以上。要注意留出散热片,接插件,固定架的位置。一些不能布线的地方可以用FILL 。还要考虑散热,热敏元件。电阻,二极管的放置方式:分为平放与竖放两种:
①、平放:当电路元件数量不多,而且电路板尺寸较大的情况下时平放较好;对于1/4W以下的电阻平放时, 两个焊盘间的距离一般取4/10 英寸,1/2W 的电阻平放时,两焊盘的间距一般取5/10 英寸;二极管平放时,1N400X 系列整流管, 一般取3/10英寸;1N540X 系列整流管,一般取4~5/10 英寸。
②、竖放:当电路元件数较多,而且电路板尺寸不大的情况下,一般是采用竖放 ,竖
放时两个焊盘的间距一般取1~2/10 英寸。
(7)布线:
先设置好规则里面的内容,VCC ,GND 大功率等大电流的线可以设置的宽点(0.5mm-1.5mm ),一般1mm 可以通过1A 的电流。对于大电压的线间距可以设置大点,一般1mm 为1000V 。设置好了,先布VCC ,GND 等一些比较重要的线。注意各个模块的区分。对单面板最好可以加一些条线。加过孔,不一定横平竖直,集成块的焊盘间一般不走线,大电流的宽线可以在solder 层画上线,以便后面上锡;走线用45 度角。
(8)手工修改线:
修改一些线的宽度,转角,补泪地或包焊盘(单面板必须做),覆铜,处理地线。
(9)检查:
DRC ,EMC 等检查,然后可以打印检查,网络表对比。进行元件清单检查。
(10)加型号(一般在丝网成)。
(11)布线与布线注意的问题:
①、电位器的调节一般是顺时针为加大(电压,电流等)。
②、高频(>20MHz)一般是多点接地。小于10MHz 或者小于1MHz 单点接地。其余
为混合接地。
③、根据需要,不是所有器件都要按标准封装,可以是跨接或立接的焊接。 ④、在印制板布线时,应先确定元器件在板上的位置,然后布地线,电源线。在安排高速信号线时,最好考虑低速信号线。元气件的位置按电源电压,数字模拟,速度快慢,电流大小等分组。安全的条件下,电源线应尽量靠近地。减小差摸辐射的环面积,也有助于减小电路的交流干扰。
当需要在电路板上布置快速,中速,低速逻辑电路时,高速的应放在靠近边缘连接器范围内,而低速逻辑和存储器,应放在远离连接器范围内。这样对共阻抗偶合,辐射和交扰的减小都是有利的。同时也要注意接地的重要性。
最后把所有文件作个备份。
本次基于单片机的多路数据采集系统的原理图和PCB 印刷板图见附录页。
4.3 焊接和调制
(1)焊接
做出正确的PCB 图后,如用热转印法泡制电路板,则要用熨斗把PCB 图转印到单层印制铜板上,并用三氯化铁泡制好后,用打孔机把所需的插元器件的孔打好,再用焊锡把元器件焊接好才能完成电路板的基本制作。焊接电路板时应细心,并掌握好焊接要领,才不至于造成虚焊,把不该连的两线之间接上等错误。下面就简单介绍一下焊接过程中体会到的要领。
①、保持烙铁头的清洁。因为焊接时烙铁头长期处于高温状态,表面很容易氧化
而形成一层黑色杂质,使烙铁头失去加热作用。因此,要随时在烙铁架上蹭去杂质,或用棉丝把烙铁头上的氧化物擦干净。
②、烙铁头要要拿稳,不能抖动,最好将45 度左右的角度进行焊接,且以烙铁头一面
去接触焊点,这样传热面大,焊接快而好。焊接时不要只接触一个点,更不要将烙铁头在焊点上来回移动或用力下压。以免损坏元件和印刷线。
③、焊接时应扶稳焊件,特别是焊点凝固过程中不能晃动焊件,否则容易造成虚焊。
④、焊锡不要太多,能包住焊接头即可,每个焊点能一次焊成最好,如果需要再次焊接
时一定要等两次焊锡融化后方可移开烙铁头。
⑤、助焊剂。过量的松香将延长加热时间(松香融化,挥发需要带走热量而降低
焊工作效率,而加热时间不足时又容易夹杂到焊锡中形成“夹渣”缺陷。对使用松香芯的焊锡来说基本不用再涂松香。因为选用了发光二极管,所以制板时特别注意到以下几点事项:
首先要正确弯折管脚。弯折管脚应在焊馅之前进行、不能在焊到电路板上后再进行。而且要注意正确操作:用钳子夹住管脚根部。保持管脚根部固定不动,然后再将管脚弯成所需的形状。
然后要正确焊接。焊接条件要求:温度260 度,时间在3s 之内。焊接时应用镊子夹住管脚的根部以利散热。焊接点要远离管子的树脂包装根部,并勿使管子受力。禁忌焊接温度过高和焊接时间过长。
(2)调制
一个单片机应用系统经过方案论证、硬件设计、印制板的布图、加工和焊接包括软件的编制,通常不可能一次成功,不可避免的要出现一些错误,这就要靠调试来解决。调试的次序一般是先易后难,后面的调试应尽可能采用以前调好的电路,各单元电路(或称作单元模块)都调好以后,再进行系统总调。对于本设计电路,其硬件电路可以按如下步骤进行。
①、硬件电路总体检查
在一块电路试验板上,焊接好电路,按实际电路图插好元器件,连好线。在接上电源之前,用万用表粗略检查电路的正确性,尤其是要检查电源和地之间的电阻。对于本次设计来说。确保电源和地无故障之后,再通电,然后检查各电源+5V 电压数值的正确性。排除可能出现的故障后,再进行各单元电路调试。 ②、单元电路调试
单片机系统调试:
首先按照前面设计的单片机系统和电源,焊接并插上相应的元器件,连好线,检查无误后,接上电源,用示波器测试单片机的时钟波形。若时钟波形和频率正确,则进行
下一步检查。
然后切断电源,空出单片机AT89S52的位置,并在此位置上插入仿真器的20 芯仿真头。连好相应线,检查正确无误后,接上电源,然后启动仿真器,检查复位等电路的正确性。
5 结果分析
本系统经过调试后可以实现对电压、环境温度的采集和显示。
温度采集调制情况,当用一个热源(例如电烙铁,人体等)或冷源(例如冰
块等)贴近温度传感器件时,LCD 的显示值就会发生上升或下降。温度采集数据如表5—1所示
表5—1 温度采集数据 单位:0
分析上表得到的误差值在0.01-0.040C 之间,但是由于所设计的显示电路精
°度有限,程序使用了16×4的数组,LED 显示的温度值呈现0.00625C 的上升或下
降,DS18B20测温范围是-550C --+1250C ,DS18B20在出厂时默认为12位转换精确度,DS18B20工作在9位、10位、11位和12位模式时温度分辨率依次分别为0.50C 、0.250C 、0.1250C 、0.06250C 。可用下述方法获得更高的分辨力。首先,读取温
°度值,将0.5C (LSB )从读取的值中截去,这个值叫做TEMP_READ。然后读取计
数器中剩余的值,这个值是门周期结束后保留下的值(COUNT_REMAIN)。最后,将用到在这个温度下每度的计数值(COUNT_PER_C)。于是可以用下面的公式计算实际温度值:
TEMPERATURE=TEMP_READ-0.25=(COUNT_PER_C-COUNT_REMAIN)
COUNT_PER_C
温度采集系统的分辨率可以精确到0.040C ,满足设计要求。LED 对输入信号的反应是很快的,响应时间在毫秒级范围,但是当温度改变时,LED 的显示会有一定时间的延迟,这是因为在软件程序设计中时序处理上的问题,由于环境和电路的限制,DS18B20以及LED 的延迟在500ms 左右。
电压采集调制情况,电压采集数据如表5—2所示
表5--2 电压采集数据 单
成误差。
现所对存在误差分析如下:
一个 n 位A/D转换器的模数转换表达式是
V -V B =IN R -⨯2n (5-1) V R +-V R - 式中 n —— n位A/D转换器;
VR+、VR- ——基准电压源的正、负输入;
VIN——要转换的输入模拟量;
B——转换后的输出数字量。
即当基准电压源确定之后,n 位A/D转换器的输出数字量B 与要转换的输入模拟量VIN 呈正比。
例如:一个8位A/D转换器,设V R+ = 5.02 V, V R - = 0 V,计算当V IN 分别为0 V、2.5 V、5 V时所对应的转换数字量。
解:把已知数代入公式(5-1)
分析上表得到电压显示误差在0.01-0.03V ,由于环境和电路的限制等因素造V IN -V R -V IN -0n 8⨯2=⨯2 V R +-V R -5. 02-0
0 V、2.5 V、5 V时所对应的转换数字量分别为00H 、80H 、FFH 。 B =
此种A/D转换器的常用品种有普通型8位单路ADC0801~ADC0805、8位8路ADC0808/0809、8位16路ADC0816/0817等,混合集成高速型12位单路AD574A 、ADC803等。
(1)分辨率
分辨率是指A/D转换器对微小输入信号变化的敏感程度。分辨率越高,转换时对输入量微小变化的反应越灵敏。通常用数字量的位数来表示,如8位、10位、12位等。分辨率为n ,表示它可以对满刻度的1/2n 的变化量作出反应。即: 分辨率 = 满刻度值/2n
(2)A/D转换器的转换精度可以用绝对误差和相对误差来表示
所谓绝对误差,是指对应于一个给定数字量A/D转换器的误差,其误差的大小由实际模拟量输入值和理论值之差来度量。绝对误差包括增益误差,零点误差和非线性误差等。
相对误差是指绝对误差与满刻度值之比,一般用百分数来表示,对A/D转换器常用最低有效值的位数LSB (Least Significant Bit))来表示,1LSB = 1/ 2n 。
例如,对于一个8位0-5V 的A/D转换器,如果其相对误差为±1LSB ,则其绝对误差为±19.5 mV ,相对百分误差为0.39%。一般来说,位数n 越大,其相对误差(或绝对误差)越小。
6 结论
在这几个月的毕业设计中,通过理论和实践的相结合,我学到了许多新的知识和理论, 为以后在实际工作中的应用打下坚实的基础。
首先自己通过查阅和翻译有关方面的书籍、资料和设计、制作、调试电路板,使我在总结大学四年所学的许多基础和专业知识的基础上,很好地锻炼了自己的动手能力和实践能力, 进一步巩固了对电子电路分析和设计的基本方法。这其中包括:根据设计任务和指标查找有关资料,初选电路;通过调查研究,设计计算,确定硬件电路方案;设计电路的整个过程中,在硬件电路方面我更加熟悉了三极管和单片机的使用。选择元件,安装电路,用合适的程序语言编写相关程序并进行调试,分析实验结果,根据实验调试结果做出相应的改进,写出毕业设计总结报告。
其次,对单片机的具体应用有了更加深入的了解,特别是在结合课堂上所学的有关单片机的理论知识,通过自己实际动手操作,对AT89S52的性能及其工作原理有了进一步的了解。
软件方面,在充分熟悉AT89S52 的工作原理的情况下,利用C 语言,写出了符合此次设计要求的程序。在设计中,通过对多种软件的应用,加深了对Keil C 及Protel 99SE 的认识使用和对C 语言编程的进一步了解。
通过这次设计,也掌握了不少Protel 99 SE 的应用技巧,用Protel 99 SE 制作电路板的过程中,我有以下几点体会:
(1)在元器件的布局方面,应该把相互有关的元件尽量放得靠近一些,例如,时钟发生器、晶振、CPU 的时钟输入端都易产生噪声,在放置的时候应把它们靠近些。对于那些易产生噪声的器件、小电流电路、大电流电路开关电路等,应尽量使其远离单片机的逻辑控制电路和存储电路(ROM 、RAM ),如果可能的话,可以将这些电路另外制成电路板,这样有利于抗干扰,提高电路工作的可靠性。
(2)尽量在关键元件,如ROM 、RAM 等芯片旁边安装去耦电容。实际上,印制电路板走线、引脚连线和接线等都可能含有较大的电感效应。大的电感可能会在Vcc 走线上引起严重的开关噪声尖峰。防止Vcc 走线上开关噪声尖峰的唯一方法,是在Vcc 与电源地之间安放一个0.1uF 的电子去耦电容。如果电路板上使用的是表面贴装元件,可以用片状电容直接紧靠着元件,在Vcc 引脚上固定。最好是使用瓷片电容,这是因为这种电容具有较低的静电损耗(ESL )和高频阻抗,另外这种电容温度和时间上的介质稳定性
也很不错。
在调试电路的时候,遇到的问题最多,从电路的最前面一点一点测试芯片管脚的电压值,每一部分电路都应实现自己的功能,才能得出最终的结果,达到目标。我认为调试电路不但要熟悉基础电路知识,还要有相当的调试经验,但电路出现问题的时候应该大胆的做尝试,在这方面我比较欠缺,我会在以后的工组学习中尽量弥补自己的弱点。
由于我是第一次使用单片机进行设计,本设计就是采用了AT89S52单片机的最小应用设计。通过不断调试,掌握了一些电路调试的一般规律。实验中出现一般故障,能通过“观察,判断,试验,再判断”的基本方法去解决;能对实验结果独立地进行分析,评价。掌握常用电子仪器和专用电路实验箱的使用方法和测试技能等等总的来说,我觉得本设计还没有完全符合实际使用的功能,虽然能够进行温度、电压采集和显示,这还需要进一步完善,进行5路以上的数据采集,采用无线发射和接受数据,我也这方面进行过制作,但是没有成功,只要原因是面自己掌握的知识也有很限。
谢 辞
本次毕业设计从开题到方案的设计和具体电路试验的实施始终是在导师徐
亚宁精心指导和周密安排下进行的,徐亚宁老师对系统的方案设计特别是相应软件的编写提出了很好的建议,起到了至关重要的作用。在本次设计目标的实现过程中,周跃军同学给了很大的帮助。另外在本次毕业设计中,系领导,学校本次毕业设计表示了极大的关心和支持; 在此,我谨向徐亚宁老师以及所有给予我关心和帮助的老师和同学们表示衷心感谢!
在桂林电子科技大学学习的四年时间里,我得到了许多老师和同学们的关心和助,使我掌握了许多科学文化知识和专业技能。感谢老师对我多年来的培养,毕业在即,谨向所有老师、同学们致以崇高的敬意和衷心的感谢!
参考文献
[1] 何立民. 单片机应用系统设计[M].北京:北京航空航天大学出版社,2003.
[2] 谢自美. 电子线路设计·实验·测试[M].武汉:华中科技大学出版社,2002.
[3] 李群芳,黄建. 单片微型计算机与接口技术[M].北京:高等教育出版社,2002.
[4] 黄冰,覃伟年,黄知超. 微机原理及应用[M].重庆:重庆大学出版社,2003.
[5] 康杰. 电子元气件简明手册[M].地震出版社,1998.
[6] 江国强. 现代数字逻辑电路[M].北京:电子工业出版社,2002.
[7] 吴炳胜.80C51 单片机原理与应用[M].北京:冶金出版社,2003.
[8] 赵子婴, 赵辉, 王洪君等. 单片机原理及应用[M].济南:山东大学出版社,2003.
[9] 谭家玉, 郑大宇等. 单片机原理及接口技术[M].哈尔滨:哈尔滨工业大学出版社,2003.
[10] Stanley G.Burns Paul R.Bond .PRINCIPLES OF ELECTRONIC CIRCUITS[M] .北京:机械工业出
版社,2001.
[11] 王卫东. 模拟电子电路基础[M].西安:西安电子科技大学出版社,2003.
[12] Philip E Allen, Douglas R Holberg .CMOS Analog Circuit Design[M] .New York:
Publishing House
of Electronics Industry,1980:170~203.
附 录 一
原理图
附 录 二
PCB 图
主程序(电压采集)
#include
#include
#define ST P3_0
#define OE P3_1
#define EOC P3_2
#define CLK P3_3 附 录 三 插入8051单片机的预定义文件 插入DS18B20单片机的预定义文件
unsigned char code dispbitcode[]={0xf8,0xf4,0xf2,0xf1 };
unsigned char code
dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc1}; unsigned char dispbuf[]={10,0,0,0};
unsigned char dispcount;
unsigned char getdata;
unsigned int temp;
unsigned char i;
void main(void)
{
ST = 0;
OE = 0;
TMOD = 0x12;
TH0 = 216;
TL0 = 216;
TH1 = (65536-4000)/256;
TL1 = (65536-4000)%256;
TR0 = 1;
TR1 = 1;
ET0 = 1;
ET1 = 1;
EA = 1;
ST = 1;
ST = 0;
while(1)
{
if(EOC==1)
{
OE=1;
getdata=P1;
OE=0;
temp=getdata*252;
temp=temp/128;
i=1;
while(temp/10)
{
dispbuf[i]=temp%10;
temp=temp/10;
i++;
}
dispbuf[i]=temp;
ST=1;
ST=0;
}
if(P3_7==0)
{
P0=0x00;
P2=0x00;
EA=0;
ds18b20();
}
}
}
void time1(void) interrupt 3 using 0
{
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
P0=dispcode[dispbuf[dispcount]];
P2=dispbitcode[dispcount];
if(dispcount==3)
{
P0=P0 & 0x7f;
}
dispcount++;
if(dispcount==4)
{
dispcount=0;
}
}
void t0(void) interrupt 1 using 0
{
CLK=~CLK;
}
附 录 四
子程序温度采集
#define TMDT p3-6
typedef unsigned char uchar;
char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; char table1[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; void dmsec (unsigned int count)
{unsigned int i;
while(count--){
for(i=0;i
}
}
void tmreset(void){
unsigned int i;
TMDT = 0;
i=103;while(i>0) i--;
TMDT = 1;
i=4; while(i>0) i--;
}
bit tmrbit(void){
unsigned int i;
bit dat;
TMDT=0; i++;
TMDT=1; i++;i++;
dat=TMDT;
i=8; while(i>0) i--;
return(dat);
}
unsigned char tmrbyte(void){
unsigned char i,j,dat;
dat = 0;
for(i=1;i
j = tmrbit();
dat = (j>1);
}
return (dat);
}
void tmwbyte(unsigned char dat){
unsigned int i;
unsigned char j;
bit testb;
for(j=1;j
testb = dat & 0x01;
dat = dat >> 1;
if(testb){
TMDT = 0;
i++;i++;
TMDT = 1;
i=8;while(i>0) i--;
}
else {
TMDT = 0;
i=8;while(i>0) i--;
TMDT = 1;
i++;i++;
}}}
void tmstart(void){
tmreset();
//tmpre();
dmsec(1);
tmwbyte(0xcc);
tmwbyte(0x44);
}
unsigned char tmrtemp(void){
unsigned char a,b;
unsigned long t,k,y3;
tmreset();
//tmpre();
dmsec(1);
tmwbyte(0xcc);
tmwbyte(0xbe);
a = tmrbyte();
b = tmrbyte();
t=b;
k=a;
t = t
y3 = t|k;
y3=y3*10;
return(y3);
}
void delay(int k)
{
int i,j;
for(i=0;i
for(j=0;j
{;}}
}
void ds18b20(void)
{
unsigned char i,a,b,y1,y2;
unsigned int a2,a3,a4,last2;
unsigned char last;
while(1){
dmsec(1);
tmstart();
dmsec(1);
tmreset();
//tmpre();
dmsec(1);
tmwbyte(0xcc);
tmwbyte(0xbe);
a = tmrbyte();
b = tmrbyte();
y1=a>>4;
y2=b
last=y1|y2;
last2=(a&0x0f)*5/8;
a4 = last/10;
a3 = last%10;
a2 = last2;
//while(1)
for(i=0;i
P0=table[a4];P2=0xf1;delay(1);
P0=table1[a3];P2=0xf2;delay(1);
P0=table[a2];P2=0xf4;delay(1);
P0=0xc6;P2=0xf8;delay(1);
桂林电子科技大学毕业设计(论文)报告用纸 第41 页 共41页
}
}
}