文档库 最新最全的文档下载
当前位置:文档库 › 基于STC89C52单片机的国旗自动升降系统设计

基于STC89C52单片机的国旗自动升降系统设计

目录

1 引言 (1)

1.1 国旗自动升降系统国内外发展状况 (1)

1.2选题目的和意义 (2)

2 整体设计方案与理论分析 (3)

2.1 系统装置理论分析 (3)

2.2 电机的选择可以有两种方案 (3)

2.3 电机驱动选择方案 (4)

2.4 语音部分方案的选择与论证 (4)

2.5 单片机选择方案 (5)

2.6 LCD显示选择方案 (5)

2.7 按键的选择方案 (6)

3 系统硬件设计 (7)

3.1 STC89C52单片机及相关电路 (7)

3.1.1STC89C52单片机概述 (7)

3.1.2晶振电路 (9)

3.1.3复位电路 (10)

3.2电机驱动模块 (10)

3.3步进电机控制方法 (11)

3.4升降旗按键与指示灯电路设计 (13)

3.5液晶显示电路 (13)

3.6语音模块电路设计 (16)

4 系统的软件设计 (17)

5 结论 (19)

致谢 (20)

参考文献 (21)

附录一元件清单 (22)

附录二系统原理图和PCB (23)

附录三实物图 (25)

附录四国旗自动升降控制系统源程序 (26)

1 引言

升国旗代表了国家的主权和独立的象征,对于一个国家的尊严和国威具有重大意义。举行升旗仪式是对每个公民进行爱国主义教育、国旗意识教育、团体意识教育的重要途径;也是衡量一个公民是否心存国家观念、爱国、爱党的标志;同时也能衡量公民的素质。所以,升旗仪式绝对不可以理解为形式主义,而是一项十分庄严、严肃的团体活动。升旗仪式应该严格按照《中华人民共和国国旗法》的规定升降国旗。

但是传统形式上的手动升降国旗或者单纯意义上的电机转动来升降,显现出了很多弊端,比如,升旗不能与国歌同步,不能接近开关检测防止误差等。有时一些错误的操作可能会出现一些尴尬局面,严重影响了庄严的升旗仪式。

随着现代科技的进步,自动控制系统已经逐渐广泛应用,尤其是单片机应用的普及,它以其极高的性价比,受到人们的重视和关注。单片机具有体积小、重量轻、功能强、抗干扰能力强、价格低廉、灵活性好、较易开发等优点。由于具备很多的优点,单片机已经被十分广泛的应用,小到电子生活用品,大到机器人、航天、医疗、工业电子设备等领域。

图1 .1 国旗升降装置原理图

1.1 国旗自动升降系统国内外发展状况

目前像有些学校、机关单位升旗大部分还停留在人工升旗的阶段,用最原始的办法人为地来一步步完成,在升旗的过程中不可避免的会出现升降国旗与国歌演奏时间不协调,为了解决这个难题,这就需要自动化的装置来完成这项工作,它把整个升降旗的过程作为一个可控的装置来运行,要求自动控制系统像神经系统一样,具备系统性、全面性、准确性。国内相关技术的发展为自动化控制产业的升级提供了技术的支持。所以研究与完善国旗升降系统很有必要。对于国外单片机自动化控制技术的发展,使国旗升降更加平稳和精确。自动控制升降旗系统主要用一个电机控制旗帜自动升降,所以系统的主要功能就是控制电机的运转,而国外步进电机最早是由英国人所开发的。后期晶体管的发明也逐渐应用在步进电机上,对于数字化的控制变得更为容易,后来发展到对步进电机的控制和驱动主要是采用专用芯片,结果大

大缩小了驱动器的体积,明显提高了升旗装置的性能。现在的装置则设计的的更为合理。

1.2选题目的和意义

随着电子技术日益发展,自动控制升降旗系统也在向前发展,然而传统的国旗升降存在着国歌的播放与国旗上升步调不一致现象,易受环境因素影响等弊端。为了解决国旗升降中的众多问题,提高升旗的质量和效率,可以使用自动控制升降系统来完成国旗的升、降控制,使升降旗速度与国歌演奏时间准确配合,从而避免了人为升降国旗与国歌演奏时间不协调而出现的尴尬场面发生,保证了国旗升、降仪式的顺利进行。并且由于实际的需要,对它的精度和功能要求也越来越高,这样不仅可以规范升旗过程,使升旗更加方便更加实用,而且可以通过不同的设置满足不同的需求。另外减少了人力资源的使用,大大减少资金的投入。系统最主要的是控制电机的转动,目前应用最多的是步进电机。由于步进电机系统控制精度高,控制形式较为简单,易于实现数字化控制等特点使得步进电机的应用范围非常广泛,成为目前不可缺少的电机组件。通过单片机控制的步进电机使得设计更加简单。在技术的不断进步下,越来越多的保护和监控系统的出现,以及安全可靠性的提高和对室外环境的适应范围扩大,使现代升降系统总的发展趋势从自动化变得更加智能化和柔韧灵活性。让单片机用于升降系统中,使控制技术和单片机技术相结合,从而可实现机电一体化控制,提高升降系统的自动化程度及运行可靠性和稳定性。

单片机的应用,使得许多领域和自动化得以提高,也使生产效率得到有效提升。由于电子电源的集成化、模块化、智能化的发展、功率集成技术已模糊了整机与器件的界限。自单片机问世以来,在升旗装置上的应用也日益完善,现如今的自控升降集成了越来越多的功能,结构更加合理、美观、实用,越更具有开阔的市场前景;步进电机的出现,在结合了单片机后让自动升降国旗系统变得更加精准和便捷。

因此在升降国旗的问题上,自控系统也能与之高效的结合,采用单片机可以实现国旗的自动升降,解决了传统升降国旗方式遇到的不便,以保证升旗仪式的庄重和严肃性。采用单片机为控制核心的国旗自动升降系统,不仅实现了演奏国歌与升旗同步,由按键控制步进电机的正反转,来操作国旗的升降,采用的接近开关能够防止误触操作,与此同时LCD能够实时显示国旗的位置,在国旗到达顶部后能自动打开鼓风机对国旗吹风使其飘扬。

2 整体设计方案与理论分析

2.1 系统装置理论分析

本文在实际应用的国旗自动升降系统的原理上,以STC89C52单片机为控制核心,设计了一套模拟装置,实现国旗自动升降的主要功能。该控制系统由单片机STC89C52作为升降旗系统的控制和检测核心,通过键盘控制、液晶显示及语音等几个部分,实现国旗的自动升降。该系统主要包括电机驱动模块、键盘与显示模块、语音模块等几个部分。系统方案的整体思路是:设置上升高度为1m,按键对单片机执行命令,然后单片机对步进电机进行控制实现国旗升降动作,LCD能够显示国旗的当前状态。当按下升旗按键后,电机正转,升旗LED 指示灯亮,LCD显示国旗高度,语音芯片是播放国歌且升旗的动作同步,当国旗升到顶部时国歌刚好演唱完毕;当按下降旗按键,语言模块静音,降旗LED指示灯亮,步进电机反转,LCD显示国旗高度,国旗自动下降到底部。图2.1为本设计的整体框图。

图2.1 系统整体框图

本问设计的系统的控制器采用STC公司的STC89C52,因为考虑到编写的繁简程度,所以在此使用C语言进行软件编写,这样可以大大提高程序编写时的效率。

2.2 电机的选择可以有两种方案

方案1:采用直流减速电机。上电即转动,掉电后惯性较大,停机时还会转动一定的角度后才会停下来;转矩小,无抱死功能,如要求准确停在一个位置,其闭环算法复杂。

方案2:采用交流电动机。交流电动机具有结构简单、运行可靠、成本低廉等优点;但对交流电动机进行调速需要比较高的技术和成本

方案3:采用步进电动机。步进电动机是纯粹的数字控制电动机,它将电脉冲信号转变为角位移,即给一个脉冲,步进电机就转一个角度,因此非常合适单片机控制,在轻载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,累积误差小,控制精度高。

方案4:采用普通的直流电机。普通直流电动机具有优良的启动特性和调速性能,调速平滑、方便,调整范围广,过载能力强,热动和制动转矩较大,能承受频繁的冲击负载,可实现频繁的无级快速启动、制动和反转。这也是交流电机无法取代的直流电动机的原因。直流电机只要加上合适的电压就会转,因此在某些大型设备,比如轧钢机上都采用直流电动机拖动。但它也存在着一个严重的问题, 就是换向困难,还会产生火花、寿命短、结构复杂、要经常维护、价格也贵,并且维护检修不方便,转的圈数难以精确控制。

因为步进电机属于脉冲电动机,是靠脉冲信号变换工作,相比较而言步进电机节能,更适合精密仪器或小型产品,在本系统中需要精确的转换速度和转换时间且启停要迅速,基于上述理论上的分析,本设计采用方案3的步进电机控制国旗升降运动。

根据任务书的要求,选用四相步进电动机,因为步进电动机是纯粹的数字控制电动机,有很好的控制精度,易于起停、正反转及变速。电动机的驱动方法我们比较了以下几种方案:方案一:采用继电器对电动机的开或关进行控制,通过控制开关的切换速度实现对电机的运行速度进行调整。这个电路的优点是电路结构简单,其缺点是继电器的响应时间长,易损环,寿命短,可靠性不是很高。

方案二:采用由达林顿管组成的H桥型PWM电路。用单片机控制达林顿管使之工作在占空比可调的开关状态,可精确调整电动机的运动状态(前进,后退,左转,右转)。这种电路由于工作在管子的饱和截至模式下,效率很高。H桥电路保证了可以简单的实现转速和方向的控制,但不能很精确的控制步距和速度。

方案三:采用集成驱动芯片ULN2003。ULN2003 是高耐压、大电流达林顿陈列,由七个硅NPN 达林顿管组成。用单片机控制达林顿管使之输出合适的脉冲信号,可精确调整电动机的运动状态(正转、反转和停止等动作)。这种电路工作效率高,电机的转动精度可以由机械设计与单片机的程序来保证。由于该芯片在5V的工作电压下与TTL和CMOS电路直接相连,可以保证负载电流的供给,同时也减少其它驱动芯片被烧毁的事故。利用该芯片是实现驱动步进电机的一种简单方法, 可时控制四相电机,且输出电流可达到2A,可精确控制步距和速度,利用该方法设计的步进电机驱动系统具有硬件结构简单、软件编程容易的特点。

所以综上所述本设计采用方案三。

2.4 语音部分方案的选择与论证

方案一:采用语音芯片ISD1420。该芯片采用CMOS技术,内含震荡器、话筒前置放大、自动增益控制、防混肴滤波器、平滑滤波器、扬声器驱动及EEPROM,一个最小的录放系统仅由一个麦克风、一个喇叭、两个按扭、电源及少数电阻电容即可,结构非常简单,且它的音质好、功耗低,但其录放音时间短,只有8到20秒。

方案二:采用语音芯片WT588D,它具有抗断电、音质好,使用方便,无须专用的开发系统等优点。WTW-16P采用WT588D-20SS做为核心控制电路,WTW-16P内部包含了WT588D-20SS外围所需的SPI-FLASH、震荡电路、复位电路。外部只需要接上电源、控制端以及扬声器(或者功放)就能正常工作。

方案三:采用YF1600系列录音IC模块,它是单片机中最简单的录音芯片,可以替代其它录音模块。YF1600系列录音IC是根据录音产品市场而成功开发的录音IC系列产品,采用主控IC和外挂FLASH的方式实现10秒~780秒可擦写单段录音和掉电存储功能。由于录音采样频率高,音质好,音量大,负载能够直推动外接扬声器,并且不需要太多的外围元件,成本低、便于生产、应用灵活。主要功能特点表现在同一颗主控IC中实现录音键和播放键的不同组合应用。

方案四:ISD系列语音芯片是Winbond公司推出的产品。该芯片采用多电平直接模拟存储专利技术,声音不需要A/D转换和压缩,模拟信号直接存储在片内的闪烁存储器中,没有A/D 转换误差,因此能够真实、自然地再现语音、音乐及效果声。避免了传统录音电路量化和压缩造成的量化噪声和金属声。

ISD4004系列语音芯片的所有操作由微控制器控制,操作命令通过串行通信接口(SPI 或Microwire)送入。录音采样频率可为4.0Hz、5.3Hz、6.4Hz、8.0Hz,录放时间可为8min、10min、12min、16min。采样频率越低,录放时间越长,但音质则有所下降。片内信息存于闪烁存储器中,可在断电情况下保存100年,反复录音10万次(典型值)。器件工作电压为3V,工作电流为15~25mA,维持电流为1μA。适用于移动电话机及其它便携式电子产品中。

综上所述,因为在本系统国歌的的演奏时间需要43秒钟,所以在此选用方案四。

STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

STC89C52具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。

STC89C52参数特性:

1)增强型8051单片机,6 时钟/机器周期和12 时钟/机器周期可以任意选择,指令代码完全兼容传统8051.[1]

2)工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V 单片机)

3.工作频率范围:0~40MHz,相当于普通8051 的0~80MHz,实际工作频率可达48MHz

4)用户应用程序空间为8K字节

5)片上集成512 字节RAM

6)通用I/O 口(32 个),复位后为:P0/P1/P2/P3 是准双向口/弱上拉, P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻。

7)ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片8)具有EEPROM 功能

9)共3 个16 位定时器/计数器。即定时器T0、T1、T2

10)外部中断4 路,下降沿中断或低电平触发电路,Power Down 模式可由外部中断低电平触发中断方式唤醒

11)通用异步串行口(UART),还可用定时器软件实现多个UART

12)工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)

13)PDIP封装

2.6 LCD显示选择方案

显示屏幕分为动态和静态显示。

1)静态显示:显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后就不再作用,直到下一次需要更新数据时再传送新数据,静态显示方法比较简单,只将显示段码送至段码口,并把位控字送至位控口即可。静态显示虽然简单,但实际应用却受到限制。因为在同一时刻只显示一种字符的场合是不多的,大多数情况下,需要显示的是不同字符,这就要采用动态显示方法。静态显示编程容易、管理简单、显示亮度高、显示数据稳定、占用很少的CPU时间,但是引线较多,线路复杂,有时占用太多的I\O口,硬件成本较高。

2)动态显示:动态显示需要CPU时刻对显示器件进行数据刷新,显示数据会有闪烁感,占用的CPU时间多,但使用的硬件少,能节省线路板空间。

方案一:采用LED数码管显示旗帜所在的高度以及升降旗所用的时间。在本系统中需要用到6只LED数码管进行动态显示才可以达到要求。采用LED的优点是亮度高,醒目,价格便宜,寿命长;缺点是只能显示0~9的数字和一些简单的字符,电路复杂,占用资源较多

且信息量小。

方案二:用LCD(RT1602C)液晶显示,其优点是能显示更多的字符,工作电流比LED 小几个数量级,故其功耗低,且有着良好的人机界面,体积小,功耗极低。

基于上述考虑,这两种显示方式各有利弊,静态显示虽然数据稳定,占用很少的CPU 时间,但每个显示单元都需要单独的显示驱动电路,使用的硬件较多。动态显示虽然有闪烁感,占用的CPU时间多,但使用的硬件少,能节省线路板空间。本设计选择方案二。

2.7 按键的选择方案

在单片机应用系统中为了控制系统的工作状态,以及向系统输入数据,系统应设有按键或键盘,以实现简单的人机对话。通常的按键开关为弹性机械开关,由于机械触点的弹性作用,一个按键开关在闭合时并不会马上稳定地闭合,在断开时也不会马上断开,因而机械开关在闭合及断开瞬间均伴随有一连串的抖动。抖动的时间长短由按键开关的机械特性及按键的人为因素决定,一般为5ms~20ms时间,按键式的抖动如图2.2所示。

按键抖动如果处理不当会引起一次按键被误处理多次,为了确保CPU对键的一次闭合仅作一次处理,则必须消除按键抖动。在键闭合稳定时取键状态,一般是判断到键释放稳定后在作处理。消除键抖动可用硬件和软件两种方法。消除键抖动通常当键数较少时用硬件方法,键数较多时用软件方法。此处采用软件方法。消除键抖动的软件方法是当检测出键闭合后执行一个延时程序,产生5ms~20ms的延时,待前沿抖动消失后再次检测键的状态,如果键仍保持闭合状态则可确认为有按键按下。当检测到按键释放并执行延时程序,待后沿抖动消失后才转入该按键的处理程序。

按键通常是一种常开型按键开关,平时键的两个触点处于断开或开路状态,按下键时它们才闭合或短路。而键盘是一组按键的集合,从键盘的结构来看,独立式键盘的每个按键单独占用一个I/O接线口,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。缺点为按键多时将占用的I/O口数目较多,优点为电路设计简单,且编程相对方便。因电路需要的键盘较少,采用独立式键盘。

图2.2 按键时的抖动

3 系统硬件设计

本系统由单片机STC89C52作为升降旗系统的控制核心,实现键盘控制、液晶显示、语音以及无线遥控等几个部分,即该系统主要包括电机驱动模块、LED指示灯、键盘与显示模块、语音模块及无线遥控电路模块等几个部分。现分别对各模块进行分析。

3.1 STC89C52单片机及相关电路

3.1.1STC89C52单片机概述

51系列单片机最初是由Intel 公司开发设计的,但后来Intel 公司把51 核的设计方案卖给了几家大的电子设计生产商,譬如 SST、Philip、Atmel 等大公司。因此市面上出现了各式各样的均以51 为内核的单片机。这些各大电子生产商推出的单片机都兼容51 指令、并在51 的基础上扩展一些功能而内部结构是与51一致的。

STC89C52有40个引脚,4个8位并行I/O口,1个全双工异步串行口,同时内含5个中断源,2个优先级,2个16位定时/计数器。STC89C52的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(RAM)组成。

STC89C52单片机的基本组成框图见图3-1。

图3-1 STC89C52单片机结构图

1)一个8 位的微处理器(CPU)。

2)片内数据存储器RAM(128B),用以存放可以读/写的数据,如运算的中间结果、最终结果以及欲显示的数据等,SST89 系列单片机最多提供1K 的RAM。

3)片内程序存储器ROM(4KB),用以存放程序、一些原始数据和表格。但也有一些单片机内部不带ROM/EPROM,如8031,8032,80C31 等。目前单片机的发展趋势是将RAM 和ROM 都集成在单片机里面,这样既方便了用户进行设计又提高了系统的抗干扰性。SST 公司推出的89 系列单片机分别集成了16K、32K、64K Flash 存储器,可供用户根据需要选用。

4)四个8 位并行I/O 接口P0~P3,每个口既可以用作输入,也可以用作输出。

5)两个定时器/计数器,每个定时器/计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制。为方便设计串行通信,目前的52 系列单片机都会提供3 个16 位定时器/计数器。

6)五个中断源的中断控制系统。现在新推出的单片机都不只 5 个中断源,例如SST89E58RD 就有9 个中断源。

7)一个全双工UART(通用异步接收发送器)的串行I/O 口,用于实现单片机之间或单机与微机之间的串行通信。

8)片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。最高允许振荡频率为12MHz。SST89V58RD 最高允许振荡频率达40MHz,因而大大的提高了指令的执行速度。

图3-2 STC89C52单片机管脚图

部分引脚说明:

1)时钟电路引脚XTAL1 和XTAL2:

XTAL2(18 脚):接外部晶体和微调电容的一端;片内它是振荡电路反相放大器的输出端,振荡电路的频率就是晶体固有频率。若需采用外部时钟电路时,该引脚输入外部时钟脉冲。

要检查振荡电路是否正常工作,可用示波器查看XTAL2 端是否有脉冲信号输出。

XTAL1(19 脚):接外部晶体和微调电容的另一端;在片内它是振荡电路反相放大器的输入端。在采用外部时钟时,该引脚必须接地。

2)控制信号引脚RST,ALE,PSEN 和EA:

RST/VPD(9 脚):RST 是复位信号输入端,高电平有效。当此输入端保持备用电源的输入端。当主电源Vcc 发生故障,降低到低电平规定值时,将+5V 电源自动两个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。RST 引脚的第二功能是VPD,即接入RST 端,为RAM 提供备用电源,以保证存储在RAM 中的信息不丢失,从而合复位后能继续正常运行。

ALE/PROG(30 脚):地址锁存允许信号端。当8051 上电正常工作后,ALE 引脚不断向外输出正脉冲信号,此频率为振荡器频率fOSC 的1/6。CPU 访问片外存储器时,ALE 输出信号作为锁存低8 位地址的控制信号。

平时不访问片外存储器时,ALE 端也以振荡频率的1/6 固定输出正脉冲,因而ALE 信号可以用作对外输出时钟或定时信号。如果想确定8051/8031 芯片的好坏,可用示波器查看ALE端是否有脉冲信号输出。如有脉冲信号输出,则8051/8031 基本上是好的。

ALE 端的负载驱动能力为8 个LS 型TTL(低功耗甚高速TTL)负载。

此引脚的第二功能PROG 在对片内带有4KB EPROM 的8751 编程写入(固化程序)时,作为编程脉冲输入端。

PSEN(29 脚):程序存储允许输出信号端。在访问片外程序存储器时,此端定时输出负脉冲作为读片外存储器的选通信号。此引肢接EPROM 的OE 端(见后面几章任何一个小系统硬件图)。PSEN 端有效,即允许读出EPROM/ROM 中的指令码。PSEN 端同样可驱动8 个LS

型TTL 负载。要检查一个8051/8031 小系统上电后CPU 能否正常到EPROM/ROM 中读取指令码,也可用示波器看PSEN 端有无脉冲输出。如有则说明基本上工作正常。

EA/Vpp(31 脚):外部程序存储器地址允许输入端/固化编程电压输入端。当EA 引脚接高电平时,CPU只访问片内EPROM/ROM并执行内部程序存储器中的指令,但当PC(程序计数器)的值超过0FFFH(对8751/8051 为4K)时,将自动转去执行片外程序存储器内的程序。当输入信号EA 引脚接低电平(接地)时,CPU 只访问外部EPROM/ROM 并执行外部程序存储器中的指令,而不管是否有片内程序存储器。对于无片内ROM 的8031 或8032,需外扩EPROM,此时必须将EA 引脚接地。此引脚的第二功能是Vpp 是对8751 片内EPROM固化编程时,作为施加较高编程电压(一般12V~21V)的输入端。

3)输入/输出端口P0/P1/P2/P3:

P0口(P0.0~P0.7,39~32 脚):P0口是一个漏极开路的8 位准双向I/O口。作为漏极开路的输出端口,每位能驱动8 个LS 型TTL 负载。当P0 口作为输入口使用时,应先向口锁存器(地址80H)写入全1,此时P0 口的全部引脚浮空,可作为高阻抗输入。作输入口使用时要先写1,这就是准双向口的含义。在CPU 访问片外存储器时,P0口分时提供低8 位地址和8 位数据的复用总线。在此期间,P0口内部上拉电阻有效。

P1口(P1.0~P1.7,1~8 脚):P1口是一个带内部上拉电阻的8 位准双向I/O口。P1口每位能驱动4 个LS 型TTL 负载。在P1口作为输入口使用时,应先向P1口锁存地址(90H)写入全1,此时P1口引脚由内部上拉电阻拉成高电平。

P2口(P2.0~P2.7,21~28 脚):P2口是一个带内部上拉电阻的8 位准双向I/O口。P 口每位能驱动4个LS 型TTL 负载。在访问片外EPROM/RAM 时,它输出高8 位地址。

P3口(P3.0~P3.7,10~17 脚):P3口是一个带内部上拉电阻的8 位准双向I/O口。P3口每位能驱动4个LS型TTL负载。P3口与其它I/O 端口有很大的区别,它的每个引脚都有第二功能,如下:

P3.0:(RXD)串行数据接收。

P3.1:(RXD)串行数据发送。

P3.2:(INT0#)外部中断0输入。

P3.3:(INT1#)外部中断1输入。

P3.4:(T0)定时/计数器0的外部计数输入。

P3.5:(T1)定时/计数器1的外部计数输入。

P3.6:(WR#)外部数据存储器写选通。

P3.7:(RD#)外部数据存储器读选通。

3.1.2晶振电路

电路中的晶振即石英晶体震荡器。由于石英晶体震荡器具有非常好的频率稳定性和抗外界干扰的能力,所以,石英晶体震荡器是用来产生基准频率的。通过基准频率来控制电路中的频率的准确性。同时,它还可以产生振荡电流,向单片机发出时钟信号。

图3-3是单片机的晶振电路。片内电路与片外器件就构成一个时钟产生电路,CPU的所有操作均在时钟脉冲同步下进行。片内振荡器的振荡频率非常接近晶振频率,一般多在1.2MHz~24MHz之间选取。C1、C2是反馈电容,其值在20pF~100pF之间选取,典型值为30pF。本电路选用的电容为30pF,晶振频率为12MHz。

振荡周期=1/12μs;

机器周期S m=1μs

指令周期T=1~4μs

XTAL1接外部晶体的一个引脚,XTAL2接外晶体的另一端。在单片机内部,接至上述振荡器的反相放大器的输出端。采用外部振荡器时,对HMOS单片机,该引脚接外部振。在石英晶体的两个管脚加交变电场时,它将会产生一定频率的机械变形,而这种机械振动又会产

生交变电场,上述物理现象称为压电效应。一般情况下,无论是机械振动的振幅,还是交变电场的振幅都非常小。但是,当交变电场的频率为某一特定值时,振幅骤然增大,产生共振,称之为压电振荡。这一特定频率就是石英晶体的固有频率,也称谐振频率。石英晶振起振后要能在XTAL2线上输出一个3V左右的正弦波,以便使MCS-51片内的OSC电路按石英晶振相同频率自激振荡。通常,OSC的输出时钟频率fOSC为0.5MHz-16MHz,典型值为12MHz或者11.0592MHz。电容C1和C2可以帮助起振,典型值为30pF,调节它们可以达到微调fOSC的目的。

图3-3 单片机晶振电路图

3.1.3复位电路

在上电或复位过程中控制CPU的复位状态,这段时间内让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令,执行错误操作,也可以提高电磁兼容性能。无论使用哪种类型的单片机,总要涉及到单片机复位电路的设计。而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。

复位后,PC内容初始化为0000H,是单片机从0000H单元开始执行程序。单片机复位后不影响内部RAM的状态。89C52单片机复位信号的输入端是RESET引脚,高电平有效。其有效时间持续24个时钟周期以上。

单片机RESET端得外部复位电路有两种操作方式:上电自动复位和按键手动复位。

上电自动复位是利用电容储电来实现的,如图3-4所示。上电瞬间,RC电路充电,RESET 端出现正脉冲,随着充电电流的减少,RESET的电位逐渐下降。按键手动复位用电平方式。按键电平复位是相当于RESET通过电阻接高电平。按键为S1。

图3-4 复位电路图

3.2电机驱动模块

如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔越短,步进电机就转得越快。调整单片机发出的脉冲频率,就可以对步进电机进行调速。

步进电机步数及速度的确定方法如下:

要想使步进电机按一定的速度精确地到达指定位置(角度或位移),步进电机的步数N 和延时时间DALAYA是两个重要的参数。前者用来控制步进电机的精度,后者用来控制其步进的速率。

步进电机步数的确定:

本设计采用的步进电机的步距角φ为1.80,即电机转动一周实际“走”步数设为N, N=360/1.8=200(式3-1)实际测量得,绕线轴周长C为4cm。

确定电机要转动的实际里程Scm后,步进电机要“走”的实际步数,设为NSJ,

NSJ=(S/C)×200 (式3-2)附:转子齿数设为Z r,

由步距角

φ=3600/(M×Zr×C)(式3-3)C——状态系数,G——转子齿数,M——相数

Z r=3600/(φ×M×C)=3600/(1.80×2×1)=100(式3-4)步进电机实际要“走”的步数,即为接收到的来自控制模块的脉冲数?。

升降国旗所需的脉冲数:

升国旗一秒所走的距离:

SQ=H/T=180/43=4.186cm/s (式3-5)H——旗杆的高度,T——国歌的时间

1.80所走的路程:

L =(C-1.80)/3600 =0.02cm/s

升国旗一秒所需的脉冲数:

N= SQ/L=4.186/0.02=205 个

ULN2003 的每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。ULN2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出还可以在高负载电流并行运行。ULN2003 采用DIP—16 或SOP—16 塑料封装。因为在本设计中我们使用的是四相步进电机,所以ULN2003完全符合要求。其电路原理图如图3-5所示。

图3-5 电机驱动电路

3.3步进电机控制方法

当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,即步进角。通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。对于步进电机有以下特点:

①步进电机的力矩会随转速的升高而下降。当步进电机转动时,电机各相绕组的电感将形成一个反向电动势,频率越高,反向电动势越大。在它的作用下,电机相电流随频率或

速度增大而减小,从而导致力矩下降。

②步进电机低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声。步进电机有一个技术参数叫空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。在有负载的情况下,启动频率应更低。如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速)。

③步进电机的保持转矩是指通电但没有转动时,定子锁住转子的力矩。它是步进电机最重要的参数之一,通常步进电机在低速时的力矩接近保持转矩。由于步进电机的输出力矩随速度的增大而不断衰减,输出功率也随速度的增大而变化,所以保持转矩就成为了衡量步进电机最重要的参数之一。

④步进电机必须加驱动才可以运转,驱动信号必须为脉冲信号,没有脉冲的时候,步进电机静止,如果加入适当的脉冲信号,就会以一定的角度(称为步角)转动。转动的速度和脉冲的频率成正比。

⑤步进电机具有瞬间启动和急速停止的优越特性。

⑥改变脉冲的顺序,可以方便的改变转动的方向。因此,目前打印机,绘图仪,机器人等设备都以步进电机为动力核心。

只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。四相步进电机工作原理如图3-6所示。

图3-6 四相步进电机工作原理图

中间部分是转子,由一个永磁体组成,边上的是定子绕组。当定子的一个绕组通电时,将产生一个方向的电磁场,如果这个磁场的方向和转子磁场方向不在同一条直线上,那么定子和转子的磁场将产生一个扭力将定子扭转。依次改变绕组的磁场,就可以使步进电机正转或反转(比如通电次序为A->B->C->D正转,反之则反转)。而改变磁场切换的时间间隔,就可以控制步进电机的速度了,这就是步进电机的驱动原理。

四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。单四拍、双四拍与八拍工作电源通电时序与波形分别如图3-7所示。

单四拍双四拍八拍

图3-7 步进电机工作方式

此处采用步进电机28BYJ48型四相八拍电机,电压为DC 5V。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A…),双(双相绕组通电)四拍(AB-BC-CD-DA-AB…),八拍(A-AB-B-BC-C-CD-D-DA-A…)。

28BYJ48型电机是4相5线的步进电机,而且是减速步进电机,减速比为1:64,步进角为5.625/64 度。如果需要转动1圈,也就是旗杆滑轮的周长,则需要360/5.625*64=4096个脉冲信号,根据旗杆的高度和滑轮周长之间比例关系即可算出升旗所需要的全部脉冲。升旗的时间是43秒,用43除以脉冲个数即可算出控制速度。

3.4升降旗按键与指示灯电路设计

在本设计中使用了2个按键分别控制国旗的升降,相对应有两个升降旗的指示灯。当按下升旗按键时,红色LED灯亮,当按下降旗按键时,绿色LED指示灯亮。图3-8和图3-10889为按键和LED指示灯电路。

图3-10 按键电路

图3-9 指示灯设计

3.5液晶显示电路

液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在各种小系统中得到了更广泛的应用。本设计中使用的液晶显示模块是LCD1602。图3-10所示为本设计LCD1602的连接图。

图3-10 LCD1602连接图

LCD1602是一种用5x7点阵图形来显示字符的液晶显示器模块,它显示的容量为2行16个字。其实物如图3-11和图3-12所示,它的显示内容丰富、体积小、美观和易于控制都是本设计选择作为显示模块的原因。

图3-11 LCD1602正面图

图3-12 LCD1602反面图

工作原理:线段的显示.点阵图形式液晶由 M 行×N 列个显示单元组成,假设 LCD 显示屏有64行,每行有 128列,每 8列对应 1 个字节的 8 个位,即每行由 16 字节,共 16×8=128个点组成,屏上 64×16 个显示单元和显示 RAM 区 1024 个字节相对应,每一字节的内容和屏上相应位置的亮暗对应。例如屏的第一行的亮暗由 RAM 区的 000H~00FH 的 16 个字节的内容决定,当(000)=FFH 时,则屏的左上角显示一条短亮线,长度为8个点;当(3FFH=FFH 时,则屏的右下角显示一短亮线;当(000H)=FFH,(001H)=00H,(002H)=FFH,(003H)=00H,…(00EH)=FFH,(00FH)=00H 时,则在屏的顶部显示一条由 8 段亮线和8 条暗线组成的虚线。这就是 LCD 显示的基本意思。

字符的显示.当用 LCD 显示一个字符时就较复杂了,因为一个字符由 6×8 或 8×8点阵组成,即要找到和屏上某几个位置对应的显示 RAM区的 8 个字节,并且要使每个字节的不同的位为‘1’,其它的为‘0’,为‘1’的点亮,为‘0’的点暗,这样一来就组成某个

字符。但对于内带字符发生器的控制器(如 T6963C)来说,显示字符就比较简单了,可让控制器工作在文本方式,根据在LCD 上开始显示的行列号及每行的列数找出显示 RAM对应的地址,设立光标,在此送上该字符对应的代码即可。

汉字的显示.汉字的显示一般采用图形方式,事先从微机中提取要显示的汉字的点阵码,每个汉字占 32 字节,分左右两半部,各占 16 字节,左边为 1、3、5…,右边为 2、4、6…, 根据在 LCD 上开始显示的行列号及每行的列数可找出显示 RAM 对应的地址,设立光标,送上要显示的汉字的第一个字节,光标位置加 1,送第二字节,换行按列对齐,送第三字节…直到32字节显示完就可在 LCD 上得到一个完整的汉字。

带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。其中:

第1脚:VSS为地电源。

第2脚:VDD接5V正电源。

第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

第4脚:RS为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器。

第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS 为高电平RW为低电平时可以写入数据。

第6脚:E端为始能端,当E端由高电平变成低电平时,液晶模块执行命令。

第7~14脚:D0~D7为8位双向数据线。

第15~16脚:空脚。

第17脚:复位端,低电平有效。

第18脚:显示驱动电压输出端。

第19脚:VDD背光电源正端+5V。

第20脚:VDD背光电源负端。

1602液晶模块内部的控制器共有11 条控制指令,它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。指令如下:

指令1:清显示。指令码01H,光标复位到地址00H位置。

指令2:光标复位。光标返回到地址00H。

指令3:光标和现实模式设置I/D。光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或右移。高电平有效,低电平则无效。

指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。

指令5:光标或显示以为S/C。高电平时移动显示的文字,低电平时移动光标。

指令6:功能设置命令 DL。高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平双行显示。

指令7:字符发生器RAM地址设置。

指令8:DDRAM地址设置。

指令9:读忙信号和光标地址 BF。为忙标志,高电平表示忙,此时模块不能接受命令或者数据,如果为低电平表示不忙。

指令10:写数据。

指令11:读数据。

3.6语音模块电路设计

因为本设计要求演奏国歌,其时间为43秒钟,所以选用的语音芯片其录放时间应大于43秒钟,即在此选用语音芯片ISD400408,其录放时间为60秒,完全符合本设计的要求,我们把国歌音乐录制在ISD400408语音芯片中,然后用它的单次播放功能播放国歌,其电路原理图如图3-13所示。

图3-13 语音模块的电路原理图

ISD器件的地址不是通常意义上的字节地址单元,而是内部存储器的行地址。行是语音信息段的基本组成单位。以ISD4004-8MP为例,它内部的3840K闪烁存储器单元共分为1600行,每个地址单元指向其中的一行,即有1600个行地址单元。ISD4004-8MP的录放时间为八分钟,采样频率为8kHz,因此它的每行语音长度为200ms,即地址分辨率为200ms。

ISD器件可以进行多段录放操作,每一段称为一个语音信息段。一个语音信息段由其起始地址、记录的数据和信息结束标志EOM(表示一个语音信息段的结束)三部分组成。ISD器件出厂时,其内部存储器的一行已经设计有多个可能的EOM标志位置。ISD4004系列一行有八个,第一个位于行起始后的25ms处,第八个位于行结束处,剩下EOM标志间隔25ms均匀分布。录音停止后,向器件发送STOP命令,录音的进程不会马上停止,到了下一个最近的可能EOM标志位置时,用一个EOM标志写入器件来记录语音结束的位置。这样做可以使录音的进程在尽可能短的时间内停止。在实际应用中,一行最多只能有一个EOM标志说明语音信息段的结束,无论这个标志在哪里,下一条语音信息将从新的一行开始。所以一个语音信息段可以占用一行或多行存储空间,可以包括多个地址单元;一个地址单元最多只能作为一个独立的段。ISD4004最多可以分为1600个语音信息段。

4 系统的软件设计

单片机系统是整个自动控制升降旗系统的核心部分,它主要用于键盘按键、步进电机控制国旗的升降以及与国歌的同步、升降旗时间调整等。主要包括STC89C52单片机、步进电机、步进电机驱动器、液晶显示芯片LCD1602与集成语音芯片等器件组成。软件编程在Keil uVision4环境下,采用C语言进行编写。

软件主要包括:系统主程序、降旗子程序、升旗子程序。开始启动主程序,当按下按键后,对升旗或者降旗指令做出电机旋转方向会做出相应的反应,语言芯片选择是否播放,LCD 实时显示国旗的高度。

图4-1 系统主程序流程图

当升旗按键按下后步进电机开始正转,与此同时语音模块开始播放国歌,绿色LED指示灯亮,此时LCD实时显示国旗到达的高度,如果这期间没有其他命令响应,系统在运行了43S 后,国旗升到顶端且语音模块静音。当升旗按键按下降旗按键,此时跳转到降旗子程序,电机开始反转,国旗下降,与此同时LCD实时显示国旗下降的高度。

图4-2 升旗子程序流程图

当按下降旗按键后,步进电机开始反转,红色LED指示灯亮,此时语音模块静音,LCD 实时显示国旗运动的高度,直至国旗降到底部系统停止运行。当升旗按键按下降旗按键,此时跳转到降旗子程序,电机开始反转,国旗开始上升,语言播放器开始演奏国歌,与此同时LCD实时显示国旗上升的高度。

图4-3 降旗子程序流程图

本文以STC89C52为控制核心,设计并制作了一套国旗升降装置,实现了国旗升降的自动化,有效减小了人工升旗时出现故障或者误操作等尴尬局面的产生。该装置通过按键控制国旗的升降,升旗的同时伴随国歌演奏,实现了对升旗与国歌同步的精准控制,避免了人工升旗时与国歌不同步的难题,在升降国旗时分别对应不同的指示灯,同时还能在LCD显示屏上显示国旗升的实时高度。该装置具有体积小、维护方便、控制精准、成本低等优点。

相关文档
相关文档 最新文档