1、1芜湖职业技术学院毕 业 论 文自动控制升降旗系统题 目 院系名称: 信息工程系 专业班级: 计算机应用三班 学生姓名: 屠兵兵 学 号: 100401326 指导教师: 黄河老师 2012 年 11 月 20 日2摘 要本系统采用单片机 AT89S52 作为自动控制升降旗系统的检测和控制核心,采用由单片机控制的步进电机带动国旗升降,实现对国旗升降的自动控制。该电路主要分为电机驱动控制模块、键盘与显示模块、语音模块及无线遥控电路模块等几个部分。电机驱动控制模块采用集成驱动芯片 L298,控制与显示部分分别采用键盘作为控制和液晶 RT1602C 作为显示,语音电路采用语音芯片 ISD2560,无
2、线遥控部分采用 SP 多用途无线数据收发模块,同时还采用了接近开关 LMF2-3005NA,防止旗帜在最高点或最低点误动作,从而实现了双重保险的作用。基于这些完备而可靠的硬件设计,使用了一套完善的软件编程,实现了自动升降旗的基本功能及发挥部分的一些功能。关键字:步进电机 自动控制 语音 遥控 液晶显示 接近开关0目 录第一章 基本设计方法1.1 绪论11.1.1 基本要求31.1.2 发挥部分31.1.3 创新部分31.2 系统设计方案51.2.1 模块电路方案的论证与择61.2.2 电机的选择与论证71.2.3 电机驱动方案的选择与论证81.2.4 显示部分方案的选择与论证91.2.5 键盘
3、模块101.2.6 语音部分方案的选择与论证121.2.7 音频放大电路模块13第二章 电路框图设计2.1.1 电源部分142.1.2 步进电机驱动模块142.1.3 显示模块162.1.4 键盘模块172.1.5 音频放大电路182.1.6 内存扩展电路192.2.1 总体框图设计202.2.2 整体程序流程图212.2.3 各部分程序流程图212.2.4 步进电机控制子程序流程图21第三章 程序代码第四章 测试数据及测试结果分析4.1.1检测升降是否符合4.1.2 降旗时间和位置测试14.1.3 高度调整测试4.1.4 时间调整测试4.1.5 半旗的时间和位置测试.4.1.6 软件设计特点
4、24第五章 分析总结245.1.1 基本部分255.1.2 发挥部分25结论 Y致谢 Y参考文献Y2第一章 绪论近些年来,随着奥运会及各种大型国际赛事的开展,升旗仪式已成为一个必备的环节。以往的手动升国旗,无论升旗手有多么熟练,都难免出错,比如在国歌刚刚奏完时,旗子升到顶端。升半旗时,也很难目测到是否到了旗杆的 2/3 处。随着电子技术的飞速发展,市面上已陆续出现许多自动控制升降旗的产品。1.1.1 基本要求1)按下上升按键后,国旗匀速上升,同时流畅地演奏国歌;上升到最高端时自动停止上升,国歌停奏;按下下降按键后,国旗匀速下降,降旗的时间不放国歌,下降到最低端时自动停止。2)能在指定的位置上自
5、动停止。3)为避免误动作,国旗在最高端时,按上升键不起作用;国旗在最低端时,按下降键不起作用。4)升降旗时间均为 43 秒钟,与国歌的演奏时间相等,同时,旗从旗杆的最下端上升到顶端。降旗不演奏国歌,同时,旗从旗杆的最上端下降到低端。5)数字即时显示旗帜所在的高度,以厘米为单位,误差不大于 2 厘米。1.1.2 发挥部分增设一个开关,由开关控制是否是半旗状态,该状态由一个发光二极管显示。1)半旗状态(根据国际法 ) 。升旗时,按上升键,奏国歌,国旗从最低端上升到最高端之后,国歌停奏,然后自动下降到总高度的 2/3 高度处停止;降旗时,按下降键,国旗先从 2/3 处最高端,再自动从最高端下降到底之
6、后自动停止,国歌停奏。2)不论旗帜是在顶端还是在底端,关段电源之后重新合上电源,旗帜所在的高度数据显示不变。3)要求升降旗的速度可调整,旗杆高度不变的情况下,升降旗时间的调整范围是 30120 秒钟,步进一秒。此时国歌停奏。34) 具有无线遥控升、降旗及停止功能。说明:旗帜用大于 100 克的重物代替。1.1.3 创新部分1)可以用语音控制国旗的升降。2)国旗在任意时刻断电以后再次上电,旗帜所在的高度数据显示不变。3)存储多首国家的国歌并通过按键选择国家。4)在液晶屏幕上模拟显示国旗的升降过程1.2 系统总体设计方案根据题目要求,系统为了实现国旗的升降,国歌的同步播放,国旗高度的即时显示,键盘
7、控制,语音控制,无线电控制等功能,我们决定采用模块的方式构成整个系统。系统整体设计方案如图 1 :1.2.1 模块电路方案的论证与选择主控制器模块从控制器模块键盘输入控制模块步进电机电源模块步进电机驱动模块语音播放功能模块 音频放大电路模块显示模块内存扩展模块无线电控制模块4根据题目的设计要求,本系统的设计可以划分为以下几个部分,下面对每个设计方案分别进行论证与比较:1.2.2 电机的选择与论证方案一:采用普通的直流电机。普通直流电动机具有优良的调速特性,调速平滑、方便,调整范围广,过载能力强,能承受频繁的冲击负载,可实现频繁的无级快速启动、制动和反转。方案二:采用步进电机。步进电机的一个显著
8、特点是具有快速的启停能力,如果负荷不超过步进电机所能提供的动态转矩值,就能够立即使步进电机启动或反转。另一个显著特点是转换精度高,正转反转控制灵活。因为在本系统中需要精确的转换速度和转换时间且启停要迅速,所以在本设计中我们选择方案二1.2.3 电机驱动方案的选择与论证方案一:采用继电器对电动机的开或关进行控制,通过控制开关的切换速度实现对电机的运行速度进行调整。这个电路的优点是电路结构简单,其缺点是继电器的响应时间长,易损环,寿命短,可靠性不是很高。方案二:采用由达林顿管组成的H桥型PWM电路。用单片机控制达林顿管使之工作在占空比可调的开关状态,可精确调整电动机的运动状态(前进,后退,左转,右
9、转) 。这种电路由于工作在管子的饱和截至模式下,效率很高。H桥电路保证了可以简单的实现转速和方向的控制,但不能很精确的控制步距和速度。方案三:采用集成驱动芯片L298。L298是恒压恒流双H桥集成电机芯片,利用该芯片是实现驱动步进电机的一种简单方法, 可时控制四相电机,且输出电流可达到2A,可精确控制步距和速度,利用该方法设计的步进电机驱动系统具有硬件结构简单、软件编程容易的特点.所以综上所述我们采用方案三。1.2.4 显示部分方案的选择与论证方案一:采用LED数码管显示旗帜所在的高度以及升降旗所用的时间。在本系统中需要用到6只LED数码管进行动态显示才可以达到要求。采用LED的优点是亮度高,
10、醒目,价格便宜,寿命长;缺点是只能显示09的数字和一些简单的字符,电路复杂,占用资源较多且信息量小。5方案二:用LCD(RT1602C)液晶显示,其优点是能显示更多的字符,工作电流比LED小几个数量级,故其功耗低,且有着良好的人机界面,体积小,功耗极低。基于上述考虑,所以我们选择方案二1.2.5 键盘模块方案 1::在单片机控制系统中,当其控制对象比较少时,往往只需要几个功能按键,因此用相互独立的键盘接口方法,及每个按键接一根输入线,各工作状态互不影响。此方法线路简单,程序编写较容易,易于实现。方案 2:采用 44 矩阵键盘。由于 61A 单片机内有下拉电阻,所以 IO 可以直接接 44 键盘
11、,单片机扫描读取。优点是电路简单,接口方便,但占用了较多IO 口,而且必须编写去抖程序,容易误码。方案 3::采用 44 矩阵键盘,并且使用数码管驱动及键盘控制芯片CH451,CH451 是一个整合了数码管显示驱动和键盘扫描控制以及 P 监控的多功能外围芯片。CH451 内置 RC 振荡电路,可以进行 64 键的键盘扫描;CH451 通过可以级联的串行接口与单片机等交换数据;并且提供上电复位和看门狗等监控功能。方案 4 :采用并行键盘控制芯片 8279。8279 是总线型数码管和键盘管理芯片,对于 61 单片机来说编程比较麻烦,而且是并行工作方式,占用相当多的 IO 口,这是最大的缺点。本题中
12、除了需要用到较少的按键之外,还需要尽量减少 IO 口的使用,综上所述,我们采用方案三。1.2.6 语音部分方案的选择与论证方案一:采用语音芯片ISD1420。该芯片采用CMOS技术,内含震荡器、话筒前置放大、自动增益控制、防混肴滤波器、平滑滤波器、扬声器驱动及EEPROM,一个最小的录放系统仅由一个麦克风、一个喇叭、两个按扭、电源及少数电阻电容即可,结构非常简单,且它的音质好、功耗低,但其录放音时间短,只有8到20秒。方案二:采用语音芯片ISD2560,它具有抗断电、音质好,使用方便,无须专用的开发系统等优点。录音时间为60 s,能重复录放达10万次。芯片采用多电平6直接模拟量存储专利技术,省
13、去了A/D、D/A转换器。每个采样值直接存储在片内单个EEPROM 单元中,因此能够非常真实、自然地再现语音、音乐、音调和效果声,避免了一般固体录音电路因量化和压缩造成的量化噪声和“金属声” ,该器件的采样频率为8.0KHz 。综上所述,因为在本系统国歌的的演奏时间需要43秒钟,所以在此选用方案二1.2.7 音频放大电路模块方案 1:利用 LM386 芯片。LM386 是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之中。方案 2:利用 BA532 芯片.BA532 芯片输出功率高达 5.8W.常用于汽车录音机,收音机
14、,磁带之中。由于 LM386 芯片电路简单,自身功耗低,本身稳定,我们最终选择方案一。7第二章 电路框图设计2.1.1 电源部分单片机需要在+5V的电压下工作,我们采用目前比较流行的稳压管技术,利用7805,7812等稳压管获得+5V, 12V的电压,从而满足单片机以及其他电路的供电要求。另外,我们采用了电流扩大电路,利用TIP32C芯片,稳定的电路很好的解决了给步进电机供应足够电流以达到相应功率的要求。电源电路图如图4:8图 4 电源电路图2.1.2 步进电机驱动模块为了减轻主CPU的负担,我们设计了具有自行执行命令的步进电机驱动电路单元。由5V电源通过该模块来实现对驱动电压更大的步进电机的
15、驱动。步进电机驱动模块电路图如图5:图 5 步进电机驱动模块电路图2.1.3 显示模块考虑到要显示的内容和种类较多,所以我们选择了字符型液晶显示。为了节省 IO 口,我们采用串行传输。LCD 电路图如图 6:9图 6 LCD 电路图GND1VDD2VO3RS(CS)4R/W(STD)5E(SCLK)6DB0 7DB1 8DB2 9DB3 10DB4 11DB5 12DB6 13DB7 14PSB15NC16RST17NC18LEDA 19LEDK 20ULCD5V5VIO4IO5IO6图 7 串行传输的 LCD 设计2.1.4 键盘模块键盘设计较为独特,采用了编码和扫描相结合的方式,利用CH4
16、51的特性,在和扫描方式需要几乎相同数量的IO的情况下,获得相同的按键数目,同时却大大的节省了CPU时间。键盘电路如图8:10图 8 键盘电路2.1.5 音频放大电路音频放大电路采用LM386芯片,20倍放大的功能可以有效的弥补凌阳单片机音量不足的缺陷。音频放大电路如图9:图 9 音频放大电路2.1.6 内存扩展电路11内存扩展采用SPR4096芯片。扩展电路如图10:图10 内存扩展电路2.2.1 总体框图设计根据设计要求,本系统可由图2-1-1所示的几个部分组成: LCD12图2-1-1 总体电路框图根据设计要求,可得本系统的程序主流程图如图2-2-1所示:本系统的控制器采用ATMEL公司
17、的AT89S52,因为考虑到编写的繁简程度,所以在此使用C语言进行软件编写,这样可以大大提高程序编写时的效率。2.2.2 整体程序流程图整个系统的主要任务是执行升降旗、半旗、时间调整、高度调整四种运动,这样系统软件设计就可以分块完成。主程序部分,主要是查键盘,通过查键,检测应该做什么运动,键值不同调用不同的子程序。子程序包括上、下运动、半旗运动、时间调整和高度调整等。下面就按照各模块的功能写出程序流程图如下所示。13YN2.2.3 各部分程序流程图各程序流程图分别为如下所示:14图 3-2-1 主程序流程图15Y NY N图3-2-2 升旗处理子程序流程图 图3-2-2 升旗处理子程序流程图2
18、.2.4 步进电机控制子程序流程图16是确定参数电机初始化外部控制执行驱动计算高度并存储判断是否到达预定值电机校正完成 完成否17第三章 程序代码# include#include “lcd1602.h“#define uchar unsigned char#define uint unsigned intUchar codeFFW=0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09;/正转Uchar codeREV=0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01;/反转sbit P00 = P00; /控制上红灯sbit P37 =
19、 P37; /控制下红灯sbit K1 = P20; /暂停sbit K2 = P21; /正转sbit K3 = P22; /反转uchar countb = 0;bit zz = 0,fz = 0,zt = 0; /zz=1表正转 fz=1表 zt=1表暂停bit ds=0; /表43s到bit zzb=0,fzb=0,ztb=0;/ 分别表正转标志,表反转标志,表暂停标志bit zzbz=0,fzbz=0,t=0;uint count=0;18void Delay(uint ms) /延时uint i;while(ms-)for(i = 0;i =800) /当执行暂停后 加中段标志ds
20、 一次判断是否到顶or底 zt = 1;zz = 0;fz = 0;count = 0;ds=1;t=1;2425第四章 测试数据及测试结果分析由于在读数时,人眼不可一、升旗时间和位置测试4.1.1 检测升降是否符合检测升旗运动时,是不是匀速运动,其实际位置和理论位置是否对应,升旗43s到达180cm的位置和时间是否精确。其记录数据如表5-1所示。表5-1 升旗时间和位置测试数据记录表(位置以cm为单位,时间以s为单位)实际位置 180 180 180 180 180 180所测位置实际时间 43 43 43 43 43 43实测时间4.1.2 降旗时间和位置测试检测降旗运动时,是不是匀速运动
21、,其实际位置和理论位置是否对应,降旗43s到达0cm的位置和时间是否精确。其记录数据如表5-2所示。表5-2 降旗时间和位置测试数据记录表(位置以cm为单位,时间以s为单位)实际位置 0 0 0 0 0 0所测位置实际时间 43 43 43 43 43 43实测时间4.1.3 高度调整测试26设定不同的高度,检测所到达位置是否精确,时间是否是在按比例(即以43s经过180cm的比例计算)所算得的时间到达。 (以升旗为例)如表5-3所示表5-3 高度调整数据记录表(位置以cm为单位,时间以s为单位)实际位置 30 60 100 150 170 179所测位置理论时间 7.16 14.333 23
22、.89 35.833 40.611 42.761实测时间4.1.4 时间调整测试设定不同的时间,检测到达顶点位置(以180cm为准)的时间是否精确。 (以升旗为例) ,其测试数据如表5-4所示。表5-4 时间调整数据记录表(位置以cm为单位,时间以s为单位)实际时间 30 50 60 80 100 120实测时间实际位置 180 180 180 180 180 180实测位置4.1.5 半旗的时间和位置测试检测半旗运动时,是不是匀速运动,其实际位置和理论位置是否对应,实际所需时间和理论时间是否对应。其记录数据如表5-5所示。表5-5 时间调整数据记录表(位置以cm为单位,时间以s为单位)实际位
23、置 120 120 120 120 120 12027实测位置理论时间 57.33 57.33 57.33 57.33 57.33 57.33实测时间上述的各项运动测试中,都存在着一定的误差,现在我们就从以下几个方面对误差产生的原因进行分析:(1)固定绳子的轴的直径为2.5cm,理论上固定绳子的轴的直径为2.5cm,但实际上由于线一圈一圈的绕上去,其实际用于计算的直径就会有一定的变化,不可避免地为后面地计算带来误差。(2)机械制作工艺上的其他部分除了上述分析的因素外,还有诸如电机安装时的位置不合理,电机绕线时的斜绕的问题,叠绕的问题等,都会引起最后物体运动定位精度不够的结果。(3)人为引起的误差能很精确的读出所量得的距离,以及用秒表测试时,不能很精确的与电机的起停时间同步。4.1.6 软件设计特点1.软件设计采用模块化设计方法,每一个模块对应一个文件,各模块之间耦合度较小,比较容易修改维护。2.为了防止误操作的发生,通过软件设置国旗升降时间.可以控制其输入范围.。3 画面具有向导提示,便于明确操作。4.其他功能的设计与实现(1)有语音播报功能(2)控制液晶模拟国旗升降,直观形象。(3)能够语音控制国旗升降。