多路信号采集系统
四川工程职业技术学院
毕 业 设 计(论 文)
论文题目: 基于51单片机的多路数据采集系统设计
办学单位: 四川工程职业技术学院电气系
称:
号
专 业:电子信息工程技术
2014年 12月 30日
摘要
本论文主要阐述了具有AD 转换功能的STC12C5160S2单片机作为系统的控制中心,可以实现对多路模拟信号进行采集、处理及显示的多路数据采集系统。具有处理能力强、精度高、通用性强等特点。硬件部分主要包括单片机控制模块、模拟量采集接口模块、键盘扫描模块、LCD 显示模块、电源模块。
基于单片机的多路采集系统是一种对单片机性能要求中等,结构简单,实用性较强的低端电子产品,单片机作为核心器件,以其体积小、成本低、速度快、升级容易等优点具有很好的现实意义。
关键词 多路数据采集系统 单片机 模拟量
ABSTRACT
This design uses a single chip AD conversion function STC12C5A60S2 control center as the system can achieve 8-way analog signal collection, with processing power and high accuracy, versatility, etc. advantages. The hardware part of the control module include microcontroller, analog capture interface module, the keyboard input module, LCD display module, power module.
Based on SCM multiplexed multi-channel data acquisition system is a kind of single-chip processor requirements medium, the structure is simple, practical stronger low-end electronic product, the single chip microcomputer as the core device, with its small size, low cost, speed, upgrade easily and so on, have good practical significance.
KEY WORDS multi-channel data acquisition scm analog
目录
第一章 绪论
第一节 课题缘起
一、设计背景和目的
采用单片机实现的数据采集系统具有自动化和智能化,接口简单灵活且有较高的数据输率,能够对实时数据做出快速响应并及时分析和处理等特点,使得它们在许多应用场合得到了广泛的应用。工业领域的现场信息是各种各样的,既有模拟量,也有数字量。所以设计一种能够采集多种信息的数据采集系统具有很重要的意义和价值。可以提高获取大量动态信息的能力,从而为提高产品质量,降低成本提供信息和手段。
选择《多路数据采集系统设计》这个课题作为毕业设计,其主目的是想通过此次课程设计进一步学习和巩固模电、数电、单片机及其相关的知识,并能在设计过程中综合运用所学的知识内容,进一步熟悉掌握单片机的内部结构及其外围电路的设计,掌握基本专业软件的使用,掌握基本电路的运用,掌握收集资料、消化资料和综合资料的能力,提高综合运用所学知识解决相关问题的能力,为即进入社会参加工作打下坚实的基础。
二、性能指标
随着工业自动化、智能化的提高,人们对数据采集系统功能和性能都提出了越来越高的要求。为了较好的满足这些要求,本设计的多路数据采集系统通过单片机的A/D和I/O口,实现了多路模拟信号和数字信号的采集,具有以下的功能和性能指标:
(1)能够实现对多路模拟信号的采集;
(2)能够经单片机处理后在液晶上显示采集结果;
(3)当采集的信号变化时,液晶上的采集结果也相应的改变。
第二章 系统的硬件设计与实现
第一节 系统方案选择与论证
一、题目要求
以STC12C5A60S2单片机为核心,设计对多路模拟数据采集、处理,通过按键K1来切换数据通道,按键K2确定哪路数据输入,并在液晶上显示采集结果的电路。多路模拟数据分别是:
(1) 频率为200HZ-2KHZ ,幅值为+5V,测其有效值;
(2) 1V/3V直流电压信号;
(3) 温度信号(0-50℃),0.5℃精度;
(4) 采集频率,范围为20HZ-20KHZ ;
(5) -5V直流电压;
(6) 直流源10MA-20MA ;
(7) 湿度检测。
二、系统基本方案
根据题目要求系统模块可以划分为: 信号采集模块,单片机处理控制模块,显示模块,按键模块、电源模块。为实现各模块的功能,分别做了几种不同的设计方案并进行了论证。如图1所示的基本方框图:
图1
三、各模块电路的方案选择及论证
(一)有效值的采集
方案一:选用AD637, 它是一个高精度单片真有效值转换器,可以计算各种复杂波形的真有效值。使用简单,调整方便,稳定时间短,读数准确。
方案二:选用AD736,若要测量交流电流的真有效值,要在AD736之间加一个分流器。要想设计高精度真有效值RMS 时,还应考虑被测电压的波峰因素(被测信号的峰值和真有效值之比)的影响。测有效值电路复杂,调试困难。
综上所述,选择方案一。
(二)频率的采集
方案一:用单片机延时100ms, 频率即为10HZ ,在100ms 内计算脉冲个数;100ms 可用示波器进行标准延时;
方案二:用单片机的定时中断来计算脉冲个数,编写程序时就比较复杂一
点;
方案三:将频率转化为电压进行采集,硬件电路图就比较复杂;
综上所述,选择方案一。
(三)温度采集模块
方案一:利用AD590用温度补偿放大的硬件电路来采集温度;
方案二:利用AD590直接采集当前温度;
AD590是电流型器件,温度每变化1℃,其电流增加1uA 。其输出电流是以绝对温度零度(-273℃)为基准。假设温度为100℃,如果采用方案一,100℃时,Uo=373uA*10K=3.73V;0℃时,Uo=273uA*10K=2.73V;电压的变化范围为0V-1V 。如果采用方案二,温度被放大10倍后,电压的变化范围为0V-10V ,温度采集的精度变高了,所以选择方案二。
(四)运放的选择
由于温度、频率、电压等模拟信号的采集需要用到运放,那么有几种芯片可供选择。
方案一:选用NE5532,NE5532是一种双运放高性能低噪声运算放大器,相比较大多数标准运算放大器,它能显示出更好的噪声性能,提高输出驱动能力和相当高的小信号和电源带宽。
方案二:选用UA741,UA741(单运放)是高增益运算放大器,用于军事,工业和商业应用,这类单片硅集成电路器件提供输出短路保护和闭锁自由运作。除此之外,还具有广泛的共同模式,差模信号范围和低失调电压调零能力与使用适当的电位。
方案三:选用OP07,OP07芯片是一种低噪声,非斩波稳零的双极性运算放大器集成电路。由于OP07具有非常低的输入失调电压(对于OP07最大为25μV ),所以OP07在很多应用场合不需要额外的调零措施。OP07同时具有输入偏置电流低(OP07A 为±2nA )和开环增益高(对于OP07A 为300V/mV)的特点,这种低失调、高开环增益的特性使得OP07特别适用于高增益的测量设备和放大传感器的微弱信号等方面。
综上所述,选择方案一。
(五)显示模块
该模块在主控端,用于显示接收到的数据。
方案一:采用数码管显示,动态扫描显示的方式
方案二:采用12864液晶显示屏显示
对于方案一,该方案成本低廉,功耗低,显示驱动程序的编写也相对简单。不足之处是数码管可以显示的字符有限。不能满足设计多人机界面的需求。若不外接锁存器,数码管动态扫描回占用系统大量资源,对于方案二,液晶显示屏具有字符优美,不但能显示数字还能显示字符甚至图形的优点,人机界面好,这是数码管无法比拟的。
综上所述,选择方案二。
(六)电源模块
各芯片及单片机工作需要不同的供电电源,也有两种方案。
方案一:选择开关电源供电;
方案二:选择线性直流电源供电;
对于方案一,开关电源,电源效率较高,输出电流较大,但是相对来说电源纹波较大,对于方案二,采用多级稳压,稳压效果较好。在此我们并不要求效率,因此方案二能满足要求。
综上所述,选择方案二。
四、系统各模块的最终方案
根据以上方案,结合器件和实现条件等因素,确定如下方案:
(一)利用AD637来测交流信号的有效值;
(二)利用示波器标准延时100ms 采集频率;
(三)用补偿放大电路采集温度;
(四)运放选用NE5532。
(五)显示模块选用LCD12864液晶显示;
(六)电源模块选用线性直流电源供电;
第二节 多路信号的硬件设计与实现
一、温度信号的采集
温度信号的采集需要用到温度传感器AD590,它是电流型温度传感器,通过对电流的测量可得到所需要的温度值,直接输出与力学温度成比例的电流信号, 在输出端串联一个电阻则转换为电压信号。除此之外,AD590还具有测温不需要参考点、抗干扰能力强、互换性好等优点。它的工作原理如下:
AD590产生的电流与绝对温度成正比,它可接收的工作电压为4V ~30V ,检测的温度范围为-55℃~+150℃,它有非常好的线性输出性能,温度每增加1℃,其电流增加1uA 。其输出电流是以绝对温度零度(-273℃)为基准,每增加1℃,它会增加1μA 输出电流。AD590的输出电流I=(273+T)μA (T 为摄氏温度),因此测量的电压V 为(273+T)μA ×10K=(2.73+T/100)V 。为了将电压测量出来又务须使输出电流I 不分流出来,我们一般使用电压跟随器其输出电压V2等于输入电压V 。AD590的管脚图及元件符号如下图2所示:
图2
对温度的采集,都是测它的输出电压,那么先接个射随器NE5532,然后是温度补偿电路,这时的输出电压比较小,再用NE5532把电压进行放大,最后再接个电压跟随器把输出电压送给单片机,其电路原理如图3所示:
二、3V/1V直流电压的采集
直流电压采集是用可调电位器,可调电位器,是一种可调的电子元件,由一个体和一个转动或滑动系统组成。在裸露的电阻体上,紧压着一至两个可移金属触点,触点位置确定电阻体任一端与触点间的阻值。当电阻体的两个固定触点之间外加一个电压时,通过转动或滑动系统改变触点在电阻体上的位置,转动触点与固定触点之间便可得到一个与动触点位置成一定关系的电压,电位器基本上就是滑动变阻器,它的变动范围为0-5V 。其电路原理如图4所示:
图4
三、频率为200HZ-2KHZ ,幅值为+5V有效值的采集
有效值的采集采用的芯片是AD637,它是AD 公司生产的真有效值-直流转换芯片,它的功能是把外部输入的交流信号有效值变成直流信号输出,可以计算各种复杂波形的真有效值。可测量的输入信号有效值可高达7V, 对于1vRMS 的信号,它的3dB 带宽为8MHz, 并且可以对输入信号的电平以dB 形式指示,当输入电压为100mV 时,宽标值为600kHz ;输入电压为2V 时,带宽标称值为8MHz 。
另外,AD637通过片选(CS )管脚作用,可以使静态电流从2.2mA 降至350µA。因此,在数据采集和仪器仪表等场合,有很广泛的应用。AD637的管脚图如图5所示,
图5
如果单纯使用AD637的真有效值输出的这个功能,电路连接非常的简单,典型电路如图2所示。输入缓冲和输出偏移接到内部的模拟公共端,一起接地;dB 输出端悬空;缓冲悬空; 外部的输入信号如果是交流信号,需要在输入端串接一个无极性的耦合电容;电容C16的作用是调整输出的直流信号纹波大小。其电路原理图如图6示:
图6
四、频率在10HZ-20KHZ 范围的采集
频率的采集是用信号发生器来产生频率,用单片机标准延时100ms 计算脉冲个数,从而得出每个脉冲的周期,就可以知道每个脉冲的频率,因此需要把输入的交流信号转变成脉冲信号。当输入交流信号时,接个电压跟随器,再接个过零比较器,当电压大于零时,输出正的最大;小于零时,输出负的最大,因为单片机的工作电压为5V ,需要串联几个电阻分压,保证信号频率的幅值为5V ,然后接个二极管,去掉负半部分,再接个74HC14六反相斯密特触发器,其引脚功能如图7所示:
图7
斯密特触发器有一个重要的滞后特性,滞后特性是指当把输入端并接成非门时它们的输入、输出特性是:当输入电压V1上升到VT +电平时,触发器翻转,输出负跳变;过了一段时间输入电压回降到VT +电平时,输出并不回到初始状态而需输入V1继续下降到VT -电平时,输出才翻转至高电平(正跳变),用公式:VT +—VT -=△VT 表示,△VT 称为斯密特触发器的滞后电压。△VT 与IC 的电源电压有关,当电源电压提高时,△VT 略有增加,一般△VT 值在3V 左右。因斯密特触发器具有电压的滞后特性,常用它对脉冲波形整形,使波形的上升沿或下降沿变得陡直,它可将缓慢变化的输入信号转换成清晰、无抖动的输出信号,所以用它来对脉冲进行整形。其电路原理图如图8所示:
图8
五、-5V 直流电压的采集
-5V 直流电压的是先给-15V 的直流电压,接一个20K 的电阻和一个10K 的可调电位器,电位器两端并联一个稳压管,把电压稳压在-5V 左右,然后接一
个运放NE5532,从反相端输入,使放大倍数为1,就把-5V 的直流电压变成了+5V的电压送给单片机处理,其电路原理如图9所示:
图9
六、电流源10mA-20mA 的采集
电流源的采集是用三端可调节输出正电压稳压器LM317,在输出电压范围为1.2伏到37伏时能够提供超过1.5安的电流,此稳压器非常易于使用,只需要两个外部电阻来设置输出电压。此外还使用内部限流、热开关和安全工作区补偿使之基本能防止烧断保险丝。LM317服务于多种应用场合,包括局部稳压、卡上稳压,该器件还可以用来制作一种可编程的输出稳压器,或者,通过作一种精密稳流器。
LM317的可调端和输出端有一个基准电压1.25V, 在它们之间接一个固定电阻,就可以得到一个稳定的电流。利用这一点,在可调端和输出端接了一个50欧姆的电阻和一个可调电阻,就会得到一个恒定的电流。然后接了一个阻值为100欧姆,精度为0.1%的电阻,采集它的电压,再接一个射随器NE5532,这样就把电流转化为了电压,因为精密电阻的误差小,所以得到的结果比较准确。 其电路原理如图10所示:
图10
七、湿度的采集
用新型的智能集成湿度传感器DHT11实现湿度的检测,将湿度信号通过传感器进行信号的采集并转换成数字信号,再运用单片机STC89C52进行数据的分析和处理,并在LCD1602上显示当前温湿度。
DHT11数字温湿度传感器是一款含有已校准数字信号输出的湿度复合传感器。它应用专用的数字模块采集技术和湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC 测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP 内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为 4 针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。
DATA 用于微处理器与 DHT11之间的通讯和同步, 采用单总线数据格式, 一次通讯时间4ms 左右, 用户MCU 发送一次开始信号后,DHT11从低功耗模式转换到高速模式, 等待主机开始信号结束后,DHT11发送响应信号, 送出40bit 的数据, 并
触发一次信号采集, 用户可选择读取部分数据. 从模式下,DHT11接收到开始信号触发一次温湿度采集, 如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集. 采集数据后转换到低速模式。其电路如图11所示:
图11
第三节 STC12C5A60S2
一、STC12C5A60S2的基础知识
STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051, 但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。
各引脚功能简单介绍如下: VCC :供电电压; GND :接地;
P0口:P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL 门电流。当P1口的管脚写“1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH 编程时,P0口作为原码输入口,当FLASH 进行校验时,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),也是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口:
P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INT0(外部中断0) P3.3 INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 WR (外部数据存储器写选通) P3.7 RD (外部数据存储器读选通)
同时P3口同时为闪烁编程和编程校验接收一些控制信号;
RST :复位输入。当振荡器复位器件时,要保持RST 脚两个机器周期的高平时间;
ALE / PROG :当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE 脉冲。如想禁止ALE 的输出可在SFR8EH 地址上置0。此时,ALE 只有在执行MOVX ,MOVC 指令时ALE 才起作用。另外,该引脚被略微
拉高。如果微处理器在外部执行状态ALE 禁止,置位无效;
PSEN :外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期PSEN 两次有效。但在访问内部部数据存储器时,这两次有效的PSEN 信号将不出现;
EA/VPP:当EA 保持低电平时,访问外部ROM; 注意加密方式1时,EA 将内部锁定为RESET; 当EA 端保持高电平时,访问内部ROM 。在FLASH 编程期间,此引脚也用于施加12V 编程电源(VPP);
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入; XTAL2:来自反向振荡器的输出 其芯片引脚如图12所示:
图12
二、STC12C5A60S2单片机的A/D转换器的结构
STC12C5A60AD/S2系列带A/D转换的单片机的A/D转换口在P1口(P1.7-P1.0),有8路10位高速A/D转换器, 速度可达到250KHz 。8路电压输入
型A/D,可做温度检测、电压检测、按键扫描、频谱检测等。上电复位后P1口为弱上拉型I/O口,用户可以通过软件设置将8路中的任何一路设置为A/D转换,不需作为A/D使用的口可继续作为I/O口使用。 (一)P1口模拟功能控制寄存器PALSF
PALSF 控制寄存器其格式如表一:
表一:PALSF 控制寄存器
该寄存器是只写寄存器, 读无效,当P1口中的相应位作为A/D使用时, 要将P1ASF 中的相应位置1。 (二)ADC 控制寄存器ADC_CONTR
ADC_CONTR寄存器的格式如表二:
ADC_POWER:ADC 电源控制位。0:关闭A/D转换器电源;1:打开A/D转器电源。建议进入空闲模式前,将ADC 电源关闭,即ADC_POWER =0。启动A/D转换前一定要确认A/D电源已打开,A/D转换结束后关闭A/D电源可降低功耗,也可不关闭。初打开内部A/D转换模拟电源,需适当延时,等内部模拟电源稳定后,再启动A/D转换。
建议启动A/D转换后,在A/D转换结前,不改变任何I/O口的状态,有利于高精度A/D 换,若能将定时器/串行口/中断系统关闭更好。,若能将定时器/串行口/中断系统关闭更好。
ADC_FLAG:模数转换器转换结束标志位,当A/D转换完成后,ADC_FLAG=1,要由软件清0。 不管是A/D转换完成后由该位申请产生中断,还是由软件查询该标志位A/D转换是否结束,当A/D转换完成后,ADC_FLAG=1,一定要软件清0。
ADC_START:模数转换器(ADC)转换启动控制位,设置为“1”时,开始转换, 转换结束后为0
(三)A/D转换结果寄存器ADC_RES、ADC_RESL
特殊功能寄存器ADC_RES和ADC_RESL寄存器用于保存A/D转结果,其格式如表三:
表三:特殊功能寄存器ADC_RES和ADC_RESL寄存器
AUXR1寄存器的ADRJ 位是A/D转换结果寄存器(ADC_RES,ADC_RESL)的数据格式调整控制位。当ADRJ=0时,10位A/D转换结果的高8位存放在ADC_RES中,低2位存放在ADC_RESL的低2位中。当ADRJ=1时,10位A/D转换结果的高2位存放在ADC_RES的低2位中,低8位存放在ADC_RESL中。
三、时钟电路和复位电路
单片机的定时控制功能是用片内的时钟电路和定时电路来完成的,而片内的时钟产生有两种方式:内部时钟方式和外部时钟方式。采用内部时钟方式时,片内高增益反向放大器通过XTAL1、XTAL2外接作为反馈元件的晶体(呈感性)与电容组成的并联谐振回路构成一个自激振荡器向内部时钟电路提供振荡时钟。振荡器的频率主要取决于晶体的振荡频率,一般晶体可在1.2-12MHz 之间任选。电容的值有微调主作用,通常取30pF 左右。在正常工作的情况下可以采用更高频率的晶振,单片机最小晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。起振电容C7、C8一般采用20~33pF,并且电容里晶振越近越好,晶振离单片机越近越好。
为确保单片机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般单片机电路正常工作需要供电电源为5V+5%,即为4.75-5.25V 。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC 超过4.75V 低于5.25V 以及晶体振荡器稳定工作时,复位信号才被撤除,单片机电路开始工作。
手动按钮复位需要人为在复位输入端RST 上加入高电平,一般采用的办法是在RST 端和正电源Vcc 之间接一个按钮。当人为按下按钮时,则Vcc 的+5V电平就会直接加到RST 端。Vcc 上电时,C 充电,在10K 电阻上出现电压,使得单片机复位;几个毫秒后,C 充满,10K 电阻上电流降为0,电压也为0,使得单片机进入工作状态。工作期间,按下S ,C 放电。S 松手,C 又充电,在10K 电阻上出现电压,使得单片机复位。几个毫秒后,单片机进入工作状态。由于人的动作再快也会使按钮保持接通数十毫秒,所以,完全能够满足复位的时间要求。
第四节 液晶12864
一、基础知识
带中文字库的128X64 是一种具有4 位/8 位并行、2 线或3 线串行多种字符接口方式,内部含有国标一级、二级简体 中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192 个16*16 点汉字,和128 个16*8 点ASCII 字符 集. 利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4 行16×16 点 阵的汉字. 也可完成图形显示. 低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶 显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
主要技术参数和显示特性:
电源:VDD 3.3V~+5V(内置升压电路,无需负压) ; 显示内容:128列×64行 显示颜色:黄绿 显示角度:6:00钟直视
LCD 类型:STN 与MCU 接口:8位或4位并行/3位串行 配置LED 背光
多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等
二、使用前的准备及注意事项
先给模块加上工作电压,再按照下图的连接方法调节LCD 的对比度,使其显示出黑色的底影。此过程亦可以初步检测LCD 有无缺段现象。 注意事项:
(一)欲在某一个位置显示中文字符时,应先设定显示字符位置,即先设定显示地址,再写入中文字符编码。
(二)显示ASCII 字符过程与显示中文字符过程相同。不过在显示连续字符时,只须设定一次显示地址,由模块自动对地址加1指向下一个字符位置,否则,显示的字符中将会有一个空ASCII 字符位置。
(三)当字符编码为2字节时,应先写入高位字节,再写入低位字节。 (四)模块在接收指令前,向处理器必须先确认模块内部处于非忙状态,即读取BF 标志时BF 需为“0”,方可接受新的指令。如果在送出一个指令前不检查BF 标志,则在前一个指令和这个指令中间必须延迟一段较长的时间,即等待前一个指令确定执行完成。指令执行的时间请参考指令表中的指令执行时间说明。
液晶12864与单片机STC12C5A60S2及按键的接口电路如图13所示
图13
第五节 电源电路
电源是电路中很重要的部分,单片机和芯片要正常工作都需要给它们提供电压,单片机的工作电压是5V ,芯片的工作电压一般是15V ,我们就用78/79系列来设计电路。78/79系列三端稳压IC 来组成稳压电源所需的外围元件极少,7805三端稳压集成电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。该系列集成稳压IC 型号中的78或79后面的数字代表该三端集成稳压电路的输出电压,如7805表示输出电压为正5V ,7915表示输出电压为负9V 。78/79系列的引脚如图14所示:
图14
在实际应用中,应注意三端集成稳压电路上安装足够大的散热片,因为当稳压器温度过高时,稳压性能将变差,甚至损坏。电源的硬件电路如图15所示:
V
图15
第三章 系统的软件设计
本章介绍了该设计的软件方面,软件采用模块化方式进行编程,用到该模块时可直接调用,为了更好地理解程序模块的功能,各模块都给出了相应的流程图。
第一节 各部分程序设计
一、主程序
主程序是对单片机的初始化及各种子程序的调用,其中初始化包括液晶初始化,A/D初始化,子程序的调用包括数据采集、数据处理等的调用。主程序流程图如图16所示:
图16
二、频率部分如图17所示
图17 18
图
在频率的采集中我们主要采用了单片机的计数功能来得到最终的频率,通过对单片机延时一百个毫秒内得到的脉冲个数X ,最终转换成频率F=10X,软件程序如下:
uint measure(void) //频率的测量函数 {
uint a;
TMOD|=0x05; //定时器采用计数的功能 TR0=0; TH0=0x00; TL0=0x00; TR0=1;
delayms(100); //标准的一百个毫秒延时函数 TR0=0; a=TH0*256+TL0
a=a*10; //得到的最终频率 return a; }
在此次的测量中,由于程序是采用C 语言进行编写的,所以对延时100个毫秒不能通过计算指令时间来得到,最总考虑采用示波器来进行延时的测量,最后得到了一个比较接近的延时,但是误差任然纯在,在频率较低时,误差还是比较大的。
三、ADC 部分如图18
由于12单片机自带10位8路的内部ADC ,所以我们无需再外接AD 转换芯片。对于10位的AD ,但是我们的单片机是8位单片机,所以其最终是需要单片机的两个寄存器对其结果进行保存,分别是ADC_RES和ADC_RESL,其前者保存的是10位结果的高8位,后者则是保存的低2位数据。最后得到的10位数据转换成电压的计算公式为
Vin= (ADC_RES*4+ADC_RESL)*(5.00/1024) 其AD 转换程序如下
int GETAD(uchar channel) //AD准换函数 {
uchar AD_finished=0; int result;
ADC_CONTR|=channel; delayms(1); ADC_CONTR|=0x08; while(AD_finished==0) {
AD_finished=(ADC_CONTR&0X10); } }
result=ADC_RES*4+ADC_RESL; return(result);
第四章 系统的调试和故障分析
第一节 软硬件的调试
硬件调试主要是针对主控板中单片机模块和外部输入、输出模块进行调试。 这一部分硬件调试主要分成两大块:上电前的调试和上电后的调试。软件调试主要包括ADC 调试部分,频率采集调试部分,湿度单线总线调试部分。 一、上电前的调试
在上电前,必须确保电路中不存在断路或短路情况,这一工作是整个调试工作的第一步,也是非常重要的一个步骤。在这部分调试中主要使用的工具是万用表,用来完成检测电路中是否存在断路或者短路情况等。在买好所需元器件后, 我们把每一个不管大小元器件都认真的检测了一下, 在确保好的的情况下, 开始接电路。完成焊接后, 通过万用表的检测, 没有发现短路和断路的地方了,电路基本正常。
二、上电后的调试
在确保硬件电路正常,无异常情况(断路或短路) 方可上电调试,上电调试的目的是检验电路是否接错,同时还要检验电路原理是否正确。在本次毕业设计中,我们采集的是多路的模拟信号,所以是对各模块电路分别进行调试。上电调试主要是检测单片机部分与外部输入、输出电路是否接对。本次调试需要通过软硬件联调来实现。
第二节 故障分析
在调试过程中我们总会遇到很多问题,主要有以下一些问题:
(一)调试时,芯片NE5532经常被烧坏,因为我们设计的电源有四个,还有一个接地,就容易搞混淆,把电源接错,导致电压过大,烧坏元件。后来就贴了一个标签在电路板上。
(二)调试各个输出信号时,信号都不是很稳定。是因为输出接的导线比较长,对输出信号有干扰,我们就在输出端接了一个电容,滤除干扰信号。
(三)有些是焊接的问题,比如:短接、错焊、漏焊等问题。
一个真正的系统都是由个部分小的系统模块合并起来的,只有确保了各子模块无误的情况下才能进行整个系统的联体调试。焊接好的电路板并不能直接使用,可能存在很多的问题,比如说在焊接过程中出现虚焊、引脚的焊锡碰到了导线引起的短路等等。这些都需要细心的检测和调试以后才能使用,所以在调试之前要对板子上所有的元器件进行检查。
(四)单线总线的调试最为烦躁,在调试过程中,由于其对时序要求非常之高。但是搜得的资料全是标准51单片机的延时函数,所以对于我们的12系列单片机显然是不能采用的,因而在延时函数的处理上,通过示波器调的标注延时函数。问题才得以解决。
(五)ADC 程序调试过程中,由于初期标志位总是搞忘清零,导致了大量的时间去找错,这些低级的错误本该避免的。在此,前车之鉴。以后必须得小心小心再小心。
结束语
短暂的毕业设计已经结束了,这是对我年三来学习情况的一次综合性考核。历经一个多月的毕业设计,在最大程度上锻炼了我发现问题、分析问题、解决问题的能力,为我在即将到来的社会实践工作中有一个良好的开端奠定了坚实的基础。
在指导老师的帮助下,我们进行了“多路数据采集系统”的设计、调试以及最后的验收工作。在这次毕业设计中,我们小组分工合作,综合运用了以前所学的编程知识和基本的电子线路完成了此次设计,实现了7路模拟数据的采集。
同时,通过这次毕业设计,我在各方面的能力都有了很大的提高,尤其在理论联系实际方面得到了一次锻炼。先对每个模块的信号进行硬件调试,确定数据都合理后,再进行软件的模块化调试,最后进行整机调试, 证实了设计方案的可行性,同时也说明了设计的正确性。当然,由于各方面水平有限,电路设计中可能还有一些有待优化的地方。毕业设计任务的圆满完成,让我感受到了设计课题之外的累累硕果,研究过程不仅锻炼了我的自学能力、分析和解决问题的能力以及创新能力,而且与组员间的共同探讨与研究,使我在各方面都上升了一个新台阶。更是意识到了自己很多的不足,比如知识面的狭隘,以前所学知识的遗忘。但这些都会激励我在以后的工作和学习中更加努力的充实自己,拓展自己的知识面,更好的掌握所需要的各种知识。
谢辞
历经一个多月的毕业设计圆满完成了,当然,这离不开我们小组每个成员付出的辛勤努力。如果没有他们细心认真的焊接电路板,没有他们反复的对电路板进行调试,就不会顺利地完成毕业设计。我特别要感谢的是我们组的组长,从选题到完成,每一步都倾注了大量的心血,是他给了我很大的帮助,耐心的辅导与解惑,精益求精的工作作风让我钦佩。
在整个毕业设计中,我也得到了指导老师盛老师和钟老师的热心指导和帮助,在交流中,我知道了哪些地方还有不足,需要修改。学会了应该以何种态度去面对困难,懂得了如何查阅资料,总结了许多学习经验,这些经验将对我以后的工作生涯带来很大的帮助。
那些在毕业设计中帮助过我的同学和老师们,在此我一并表示衷心的感谢!
参考文献
[1]胡汉才. 单片机原理及系统设计. 北京:清华大学出版社,2002
[2]常铁原,王欣,陈文军. 多路数据采集系统的设计. 电子技术应用,2008,No.11
[3]杨居义. 单片机课程设计指导. 清华大学出版社,2009,135-141
[4]王琳,王学伟. 数据采集的发展及应用. 电测与仪表,2004,No.464
[5]刘刚,朱杰斌. 单片机原理及应用. 北京大学出版社,2006,76-98,134-155
[6]彭伟. 单片机C 语言程序设计实例100例. 电子工业出版社,2009,46-48,104-110
[7]元增民,张文希. 单片机原理与应用基础. 国防科技大学出版社,2006,205-266
[8] 周航慈. 单片机应用程序设计技术. 北京航空航犬大学出版社,2002
[9]李华. 系列单片机实用接口技术. 北京航空航天人学出版社,2002
[10]何立民. 单片机应用系统设计. 北京航空航犬大学出版社,1990
[11]李广军,王厚军. 实用接口技术. 电子科技大学出版社.1997
[12]夏路易. 电路原理与电路板设计教程. 北京希望电子出版社,2002
[13]宋浩,田丰. 单片机原理及应用. 清华大学出版社,2005
[14]严洁. 单片机原理及接口技术. 机械工业出版社,2010
[15] 李建忠.单片机原理及应用.陕西:西安电子大学出版社,2002
[16] 杨居义,杨晓琴,王益斌等. 单片机课程设计指导. 清华大学出版社,2009