F甲1036自动控制升降旗系统

更新时间:2024-05-21 01:33:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

自动控制升降旗系统 设计书 (F题)

作品编号:F甲 1036

设计者: 邓行俊 白连仁 李津 赛前辅导教师: 万鹏 姚福安

参赛学校: 山东大学控制科学与工程学院 专业: 物流工程

- 1 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

目录

摘要........................................................................................................................... - 3 - Abstract: .................................................................................................................. - 3 - 1.方案论证与比较.................................................................................................... - 4 -

1.1设计要求 ........................................................................................................................ - 4 -

1.1.1基本部分 ............................................................................................................. - 4 - 1.1.2发挥部分 ............................................................................................................. - 5 - 1.2设计基本方案 ................................................................................................................ - 5 -

1.2.1控制器部分 ......................................................................................................... - 5 - 1.2.2步进电机 ............................................................................................................. - 6 - 1.2.3步进电机驱动电路 ............................................................................................. - 6 - 1.2.4语音电路 ............................................................................................................. - 6 - 1.2.5人机交互界面 ..................................................................................................... - 7 - 1.2.6无线收发模块 ..................................................................................................... - 8 -

2.硬件设计与实现.................................................................................................... - 8 -

2.1硬件总体设计思想: .................................................................................................... - 8 - 2.2各模块工作原理的分析 : ........................................................................................ - 10 -

2.2.1基于AT89S52的主控电路图 .......................................................................... - 10 - 2.2.2步进电机控制及驱动电路设计 ....................................................................... - 10 - 2.2.3语音模块 ......................................................................................................... - 13 - 2.2.4人机界面 ........................................................................................................... - 14 - 2.2.5无线收发系统 ................................................................................................... - 16 -

3.理论计算及参数计算.......................................................................................... - 18 -

3.1升降旗高度控制 .......................................................................................................... - 18 - 3.2升降旗时间控制 .......................................................................................................... - 19 - 3.3高度显示控制 .............................................................................................................. - 21 -

4.系统软件设计及流程图...................................................................................... - 22 -

4.1主程序流程图 .............................................................................................................. - 22 - 4.2升旗子程序: .............................................................................................................. - 23 - 4.3降旗子程序: .............................................................................................................. - 23 - 4.4升半旗子程序: .......................................................................................................... - 25 - 4.5降半旗子程序: .......................................................................................................... - 25 -

5.系统测试.............................................................................................................. - 26 -

5.1装置测试 ...................................................................................................................... - 26 -

5.1.1旗杆水平放置: ............................................................................................... - 26 - 5.1.2旗杆垂直放置: ............................................................................................... - 26 - 5.2高度可调测试 .............................................................................................................. - 26 - 5.3时间可调测试 .............................................................................................................. - 27 - 5.4系统完成的功能 .......................................................................................................... - 28 - 5.5结论 .............................................................................................................................. - 28 -

6.总结...................................................................................................................... - 28 - 7.参考文献 ............................................................................................................. - 29 - 8.附录 ..................................................................................................................... - 29 -

- 2 -

?2006年山东省大学生电子设计竞赛——自动控制升降旗系统

摘 要

本系统采用单片机AT89S52为控制核心,实现自动升降国旗同时奏国歌的基本功能。系统的硬件部分包括最小系统板、人机交互界面、语音集成电路、步进电机控制系统、无线收发模块五大部分。最小系统部分主要是扩展了外部数据存储器,人机界面部分为键盘输入 ,12864点阵式液晶显示,可以直观的显示中文,使用方便。语音集成电路以ISD2560为核心,60秒的录放音长度,完全可以实现国歌的播放功能。步进电机控制旗帜的升降及精确定位。无线收发模块完成升降旗的遥控功能。

软件部分应用单片机C语言实现了本设计的全部控制功能,包括升旗、降旗、半旗的功能,同时控制国歌的播放;可以设置旗杆的高度和升旗时间,具有较好的适应性。

关键词 :

AT89S52单片机,最小系统版,步进电动机,液晶显示屏,ISD2560,语音集成电路,SC-2262/2272,无线收发模块

Flag Raising Control System

Abstract:

The system uses single chip AT89S52 as core control, realized the basic

functions of automatic movements of flag with national anthem being played. The hardware of the system is made up of five parts ,including a minimum

- 3 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

system board, the human-machine interface, voice integrated circuits, stepper motor control system, and the wireless transceiver module. The Minimum System mainly expanded the external data memory. The keyboard inputs managed the human-machine interface. 128*64 dot-matrix LCD, which can be used very conveniently and display Chinese easily. ISD2560 is the core of integrated circuits for voice, 60 seconds’ recording and playing, long enough to broadcast the national anthem. Stepper motor controls the movements and precise positioning of the flag. Wireless transceiver module realizes the remote control of flag raising.

The software part of the system achieves all the control function by using the computer language of C, including the functional of flag-raising, landing down and half-mast, controlling the national anthem broadcast at the same time; the flag height and flag raising time can be set, resulting in good adaptability.

Key words:

AT89S52 single chip, minimum system board, stepper motor, LCD screen, ISD2560 ,voice IC,SC-2262/2272, wireless transceiver module

1.方案论证与比较 1.1设计要求 1.1.1基本部分

1.按下上升按键后,国旗匀速上升,同时流畅地演奏国歌;上升到最高端时自动停止上升,国歌停奏;按下下降按键后,国旗匀速下降,降旗的时间不放国歌,下降到最低端时自动停止。 2.能在指定的位置上自动停止。

3.为避免误动作,国旗在最高端时,按上升键不起作用;国旗在最低端时,按下降键不起作用。

4.升降旗的时间均为43秒钟,与国歌的演奏时间相等,同时,旗从旗杆的最下端上升到顶端。降旗不演奏国歌,同时,旗从旗杆的最上端下降到底端。 5.数字即时显示旗帜所在的高度,以厘米为单位,误差不大于2厘米。

- 4 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

1.1.2发挥部分

增设一个开关,由开关控制是否是半旗状态,该状态由一发光二极管显示。 1. 半旗状态(根据《国旗法》)。升旗时,按上升键,奏国歌,国旗从最低端上

升到最高端之后,国歌停奏,然后自动下降到总高度的2/3高度处停止;降旗时,按下降键,国旗先从2/3高度处上升到最高端,再自动从最高端下降到底之后自动停止,国歌停奏。

2. 不论旗帜是在顶端还是在底端,关断电源之后重新合上电源,旗帜所在的高

度数据显示不变。

3. 要求升降旗的速度可调整,旗杆高度不变的情况下,升降旗时间的调整范围

是30—120秒钟,步进1秒。此时国歌停奏。 4. 具有无线遥控升、降旗及停止功能。

1.2设计基本方案 1.2.1控制器部分

方案一: 用纯硬件电路,可以实现简单的国旗升降,播放国歌的功能。

但是,播放国歌与升旗需要手动控制,其同步性不易控制,也不可实时显示旗帜的当前高度等信息,掉电保持也很难做到。由于速度不可变,旗杆高度改变后,要改变整个电路才能配合音乐实现升旗功能。

方案二:采用51系列单片机,可以方便实现系统所需的键盘输入,控

制液晶显示当前旗帜高度,改变升旗高度、速度、时间等信息。容易控制升旗和音乐播放的同步性,使整个系统操作简单,准确度高。

由于系统没有其它高标准的要求,我们最终选择了AT89S52通用的比较普通单片机来实现系统设计。内部带有8KB的程序存储器,在外面扩展了32K数据存储器,以满足系统要求。另外还扩展了具有带电保持功能的EEPROM芯片AT24C02,以满足系统对断电保持旗帜高度的要求,在软件配合下,使液晶能在上电后即显示当前旗帜高度信息。

- 5 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

1.2.2步进电机

方案一:采用直流电动机。直流电动机较易控制,但其实现精确定位则

必须引入闭环控制,实现起来较为复杂。本系统对升降旗的速度要求可调,对精度的要求也较高。采用此方案,电路的设计复杂,短时间内调试困难。

方案二:采用步进电动机。步进电动机不需要A/D转换,具有结构简单、

可靠性高和成本低的特点。如果通过单片机按顺序给绕组施加有序的脉冲电流,就可以控制电机的转动,从而实现数字与角度的转换。转动的角度大小与施加的脉冲数成正比,转动的速度与脉冲频率成正比,而转动方向则与脉冲的顺序有关。可以通过控制脉冲的个数来控制电机的角位移量,从而达到精确定位的目的;同时还可以通过控制脉冲频率来控制电动机转动的速度和加速度,从而达到调速的目的。

因为题目对升降精度要求高,要求速度可调,所用电动机要有较高的定位性能,所以采用方案二。

1.2.3步进电机驱动电路

方案一:采用专用步进电机驱动装置,电路调试简单,工作可靠,节省

时间。但是对步进电机的驱动的原理了解不深。

方案二: 采用三极管、场效应管自己设计驱动电路。此方案需要自己

设计电路、刻板、调试,虽然与方案一比较,该方案实现起来稍微复杂,但是通过自己设计制作电路,对步进电机的驱动电路可以有更好的认识学习,理解更加深刻,调整也很方便。通过测试,我们制作的电路完全可以满足电机的驱动要求。

在满足电机驱动要求的前提下,为了得到更多的锻炼,我们最终选择了方案二。

1.2.4语音电路

方案一:传统语音组合电路,通过A/D转换器、单片机、存储器、D/A

- 6 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

转换器实现声音信号的采样、处理、存储和重现。首先将声音信号放大,通过A/D转换器采样将声音模拟信号转换成数字信号,并由单片机控制和处理存放到存储器中,实现录音操作。放音时,由单片机控制D/A转换器,将存储器中的数据转化生声音信号,播放出来。此方案安装调试复杂,语音录制及软件编制工作量巨大,而且组合出来的语音效果也不甚理想,集成度低。

方案二:采用ISD2500系列芯片录音,该语音芯片用5V单电源供电,

声音不需要A/D转换和压缩,具有抗断电、音质好,使用方便等许多优点。其最大特点在于片内EEPROM容量为480KB,可以满足不同时间的录音要求。

根据国歌的时间长度(约45秒),我们选择录音时间为60秒的ISD2560芯片作为录音电路核心。该电路易于与单片机结合,控制声音的录放;电路可以直接驱动扬声器,实现国歌的播放。我们选择了上海奔流公司生产的基于ISD2500系列芯片的ISD2560单段录放板。

1.2.5人机交互界面

1.2.5.1键盘输入

键盘输入是人机交互界面中最重要的组成部分,它是系统接受用户指令的直接途径。

方案一:用主控单片机I/O直接扫描n×n键盘,此种方案硬件制作简

单,系统成本有所降低,但是软件的编写要考虑软件去抖等,会比较复杂而且占用大量的CPU资源。

方案二:采用周立功单片机的数码管显示驱动及键盘扫描管理芯片

ZLG7289A 。ZLG7289是周立功单片机公司设计的串行输入输出可编程键盘/显示芯片。该芯片具有SPI串行接口功能可同时驱动8位共阴式数码管(或64只独立LED)的智能显示芯片,该芯片同时可连接多达64键的键盘矩阵,单片即可完成LED显示﹑键盘接口的全部功能。ZLG7289B内部含有译码电路,可直接接受BCD码或16进制码,并同时具有2种译码方式,此外,还具有多种控制指令,如消隐﹑闪烁﹑(循环)左移﹑(循环)右移﹑段寻址等。ZLG7289B具有片选信号,可方便地实现多于8位的显示或多于64键的键盘接口且内含去抖动电路。

- 7 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

我们选择功能更好的ZLG7289作为键盘扫描显示芯片,键盘与单片机的连接更加简单方便。

1.2.5.2显示输出

此模块用来旗帜所处状态等信息。

方案一:采用LED显示。尽管本设计中采用了ZLG7289B芯片来控制键盘

扫描及LED显示,但显然这只能显示非常有限的符号和数字,不可显示中文提示,显示内容单一。

方案二:采用带有中文字库的液晶显示器。液晶显示屏轻薄短小,耗电

量低,无辐射危险,显示效果好,抗干扰能力强。液晶显示屏带有中文字库可以显示丰富内容,更清晰的显示旗帜的状态、步骤提示等信息,更有利于我们的设人性化,智能化。可以选择金鹏公司的128×64点阵式LCD—OCM4X8C。

我们决定选择方案二,不需要很复杂的电路就可以实现并实现很好的显示功能。

1.2.6无线收发模块

我们采用了由固定码编码专用集成电路SC2262/2272为核心的无线收发模块。芯片采用CMOS工艺制造,配对使用,最大拥有12 位的三态地址管脚,极大的减少了码的冲突和非法对编码进行扫描以使之匹配的可能性;而且非常简单,只要直接连接即可,因为是专用编码芯片,所以效果很好,传输距离也较远,使用非常灵活。与单片机相连时,需要电平式脉冲,我们选用了SC2272-M4来接收信息。

2.硬件设计与实现 2.1硬件总体设计思想:

根据题目设计要求,设计以89S52单片机为控制核心的自动升降旗系统。

- 8 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

主要硬件电路设计包括主控制器89S52最小系统及外围电路,步进电机及其驱动电路,ZLG7289A键盘电路,液晶显示电路,语音模块,无线收发电路。下面就依次介绍各部分的电路设计。图2.1为系统总体模块方框图。

键盘输入

语音模块 MCU 89S52 步进电机 步进电机驱动 图 2.1 系统基本模块方框图 无线收发控制 LCD显示 - 9 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

2.2各模块工作原理的分析 :

2.2.1基于AT89S52的主控电路图

图2.2.1 89S52最小系统电路

主控制单片机最小系统电路如图所示。单片机接受键盘输入升旗高度,经过计算输出控制脉冲控制步进电机的转速及所转圈数,完成升旗、播放音乐及显示功能。

2.2.2步进电机控制及驱动电路设计

a.步进电机原理

步进电动机是一种自动化执行部件,和数字系统结合可以直接把数字脉冲信号转化成为角位移,实现其正转、反转、手动(点动)和自动控制。

- 10 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

步进电机由脉冲驱动,驱动控制信号由单片机扩展I/O口产生。脉冲控制信号决定电动机的运行方式、方向及转速。我们所用的四相电动机有4对电极,每个电机上均有绕组,四相电动机有A、B、C、D四相绕组,当四相定子绕组轮流接通驱动脉冲信号时,在4对电极上就轮流产生磁场,吸引转子转动。一相绕组每通电一次称为一拍,相应转动的角度称为步距。如图2.2.2.1,所示的就是步进电机绕组示意图。

A B C D 正转 A

D C B 反转 图 2.2.2.1 步进电动机绕组 图2.2.2.2 步进电机正转反转绕组通电顺序

给四相绕组通电的常用方式为单四拍。控制四相绕组通电的次序,就能使电动机正转或反转,控制通电信号的频率,就能控制电动机的转速。

① 控制换相顺序。通电换相这一过程称为脉冲分配。四相步进电动机的单四拍工作方式:正转时,其各相通电顺序为A-B-C-D。通电控制脉冲必须严格按照这一顺序分别控制A、B、C、D相的通断。

② 控制步进电动机的转向。如果给定工作方式为正序换相通电,则步进电动机正转,如果反序通电换相,则电动机就反转。步进电动机四相四拍工作方式下,电动机正转时,绕组通电次序为A-B-C-D;反转时,绕组通电的次序为A-D-C-B。如图2.2.2.2所示。

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

步进电机工作原理图如图2.2.2.3所示:

- 11 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

A B C D

图 2.2.2.3

b.步进电机驱动电路

我们自己设计的步进电机驱动电路如图2.2.2.4:

图 2.2.2.4 步进电机驱动电路

步进电机的A、B、C、D四个绕组通过驱动电路分别接单片机的P0.0——P0.3四个口。通过依次分别向P0.0——P0.3发出脉冲信号,从而驱动步进电机。

- 12 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

2.2.3语音模块

语音模块完成音乐的录放功能。 语音电路原理如图2.2.3.1

拾音器 放大器 带通滤波器 A/D转换器 微处理器与存储器 耳机 放大器 带通滤波器 A/D转换器 图 2.2.3.1 语音电路原理

我们所用的是美国ISD公司的ISD2560芯片。 ISD2500系列芯片内部包含了放大电路、带通滤波电路及A/D转换电路、D/A转换电路。以ISD2560芯片为核心,再配以话筒、按钮、发光指示灯等外围电路,在单片机控制下,就可以方便的实现声音的录放和重复播放。表1是ISD2560芯片的引线及功能。图2.2.3.2为ISD2500系列芯片引脚图。

表 1 2560芯片引线及功能

引线端 名称 地址 地址 辅助输入 数字和模拟地 扬声器输出 功能 1-7 A0/M0 ~A6/M6 8-10 A7 ~A9 11 AUX IN 12,13 VSSD、VSSA 14,15 17,18 SP+、SP- MIC、MIC REF 16,28 VCCA 、VCCD 模拟、数字信号电源正极 麦克风输入和输入参考端 19 AGC 自动增益控制 20,21 ANA IN、OUT 22 OVF\\ 23 CE\\ 24 PD 25 EOM\\ 26 XCLK 27 P / R\\ 模拟信号输入和输出 溢出 片选(低电平允许芯片工作) 芯片低功耗状态控制 录放音结束信号输出 外部时钟 录/放控制选择 A0/M0 1A1/M1 2A2/M2 3A3/M3 4A4/M4 5A5/M5 6A6/M6 7A7 8A8 9A910Aux In11VSSD 12VSSA 13 SP+14ISD250028VCCD27P/R26XCLK25EOM24PD23CE22OVF21Ana Out20Ana In19AGC18Mic Ref17Mic16VCCA15SP-

图2.2.3.2 2500引脚图

- 13 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

为节省时间,提高录音的质量,我们选用了上海奔流公司的ISD2560单段录放音实验板。为了完成题目要求,我们将电路作了修改。将2560芯片的CE脚接单片机的P1.6引脚,这样可以实现键盘输入,单片机控制声音的播放,使声音与升旗同步,操作方便,工作稳定。

语音模块为一个相对独立的部分,接5V直流电源可独立完成录音操作。工作时,单片机适时发出信号后,该模块即可播放事先录制的国歌。这样电路分块完成、检测,功能更加明确。

录音时,将试验板上的REC短路,则P/R为高电平录音状态,保持板上按键按下(即保持CE引脚为高电平),则可用外接话筒录音。录完国歌后松开按键。

系统上电时,ISD2560的CE引脚为高电平,芯片处于未选中状态;当单片机给芯片输入0信号时,开始播放国歌。由于放音为下降沿有效,可以不必保持该引脚低电平的状态。

2.2.4人机界面

a.ZLG7289键盘控制

行列式键盘也即矩阵式键盘,它由I/O口组成行列结构。3×8行列式键盘可构成24个键的键盘。按键设置在行列线交点,行列线分别连接到按键开关的两端。当行线通过上拉电阻接5V时,被钳制在高电位。

键盘中有无按键按下是由列线送入全扫描字、行线读入行线状态来判断的。其方法是:将列线的所有I/O线均置成低电平,然后将行线电平状态读入累加器A中。如果有键按下,则总会有一根行线电平被拉至低电平,从而使行输入不全为一。

键盘中哪一个键按下是由列线逐列置低电平后检查行输入状态来判断的。其方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与0电平行线相交点的那个键上。

键盘上每个键都有一个键值。键值通过ZLG7289本身译码后传给单片机,然后由液晶显示。ZLG7289芯片引脚如图2.2.4.1所示。图2.2.4.2为键盘应用电路。

- 14 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统 1234567891011121314RTCCVCCNCGNDNC/CSCLKDIO/INTSG/KR0SF/KR1SE/KR2SD/KR3SC/KR4/RSTOSC1OSC2KC7/DIG7KC6/DIG6KC5/DIG5KC4/DIG4KC3/DIG3KC2/DIG2KC1/DIG1KC0/DIG0KR7/DPKR6/SAKR5/SB2827262524232221201918171615ZLG7289A图 2.2.4.1 ZLG7289芯片引脚图 图 2.2.4.2 键盘电路 b.LCD液晶显示器 液晶显示器(3LCD)具有显示信息丰富、功耗低、体积小、重量轻、超薄等4

- 15 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

许多其他显示器无法比拟的优点,广泛用于点片机控制的智能仪器、仪表和低功耗电子产品中。LCD分为段位式LCD,字符式LCD和点阵式LCD。其中,段位式LCD和字符式LCD只能用于字符和数字的简单显示,不能满足图形曲线的汉字显示的要求;而点阵式LCD不仅可以显示字符、数字,还可以显示各种图形、曲线及汉字,可以实现屏幕上下滚动、动画、分区开创、反转、闪烁灯功能,用途十分广泛。

我们所用的是金鹏公司的点阵式液晶显示器LCD—OCM4X8C。该中文显示模块可以显示字母、数字符号、中文字型及画图,可以提供串行、并行两种工作方式,另外,还有8位操作指令和4位操作指令。我们选用的是串行工作方式和8位操作指令。

主要参数:

1、工作电压(VDD):4.5~5.5V 2、逻辑电平:2.7~5.5V 3、驱动电压(V0):0~7V

2.2.5无线收发系统

SC2262/2272 是一种CMOS 工艺制造的低功耗低价位通用编解码电路, PT2262/2272 最多可有12 位(A0-A11)三态地址端管脚(悬空、接高电平、接低电平),任意组合可提供531441地址码,SC2262 最多可有6 位(D0-D5)数据端管脚,设定的地址码和数据码从17 脚串行输出,可用于无线遥控发射电路。

a.发射端

编码芯片SC2262 发出的编码信号由:地址码、数据码、同步码组成一个完整的码字(地址码+数据码总共12 个码位,同步码为5ms 的低电平),解码芯片SC2272 接收到信号后,其地址码经过两次比较核对后,VT 脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。当发射机没有按键按下时,SC2262 不接通电源,其17 脚为低电平,所以315MHz 的高频发射电路不工作,当有按键按下时,SC2262 得电工作,其第17 脚输出串行数据信号(如果是SC2262-IR 则其第17 脚输出的信号是已经调制在38KHz 载频上的的串行数据信号),当17 脚为高电平期间,315MHz 的高频发射电路起振并发射等幅高频信号,当17 脚为低电平期间315MHz 的高频发

- 16 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

射电路停止振荡,所以高频发射电路完全受控于SC2262 的17 脚输出的数字信号,从而对高频电路完成幅度键控(ASK 调制)相当于调制度为100%的调幅。 b.接受端

SC2272 解码芯片有不同的后缀,表示不同的功能,有L4/M4/L6/M6 之分,其中L 表示锁存输出,数据只要成功接收就能一直保持对应的电平状态,直到下次遥控数据发生变化时改变。M 表示非锁存输出,数据脚输出的电平是瞬时的而且和发射端是否发射相对应,可以用于类似点动的控制。根据需要,我们采用SC2272-M4完成对单片机的控制。

SC2262 和SC2272芯片引脚图如图2.2.5.1所示。

图 2.2.5.1 SC2262 SC2272引脚图

发射模块电路图如图2.2.5.2:

图 2.2.5.2 发射电路

- 17 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

接收部分电路图如图2.2.5.3:

图 2.2.5.3 接收电路

3.理论计算及参数计算 3.1升降旗高度控制

中心思想是用步进电机旋转的圈数确定旗帜当前高度。 (1) 用千分尺测定步进电机轴头滑轮的半径 r;

步进电机采用四相四拍工作方式,每通一个周期脉冲步进电机转过角度 φ=1.8°×4=7.2°,由上升子程序实现;步进电机轴头转一周需要调用上升子程序N=50次,旗帜升高L=2πr,即步进电机所连滑轮的周长;

(2) 以高度180cm为基准测定试验数据

理论上,将旗帜升到高度为180cm的旗杆顶,需要调用上升子程序次数为n0=h/L;

但是由于存在打滑、磨损、线的拉伸变形等因素,经多次实际运行,不断修

- 18 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

改n0值后,可得实际调用次数n1,满足旗帜自动升到180cm,误差为2mm;

用测得的n1再次修正L,修正后L1=180/n1; (3)改变旗杆高度,确定步进电机所转圈数

任意输入旗杆高度h0,该高度值与180cm差为Δh=180-h0,改变调用升旗子程序次数Δn,则,有以下等式成立:

ΔhΔn ?L1N 则对于任意高度h,需要调用升旗子程序次数为: n=n1-Δh×N / L1

程序调用n值就可以实现旗帜升到指定位置停止。

3.2升降旗时间控制

时间控制,中心思想是控制发给步进电机的脉冲的时间间隔。

方法是:利用SE-52万利仿真器单步执行升(降)旗程序中每个语句,得到各个语句的实际执行时间,根据设定时间最终计算得到步进电机正(反)转子程序所需时间t;步进电机采用四相四拍工作方式,则各相脉冲的时间间隔t0=t/4,调用延时程序最终实现时间可调。

我们单片机的晶振为12MHz,因此,把万利仿真器的频率也设定为12MHz。 下面我们所编的升旗程序来说明具体计算方法,程序语句后所标时间即是利用万利仿真器所得的执行时间:

⑴ void up(uint n0) //升旗子程序 4μs {

⑵ double i=0.0; 5μs ⑶ show(0x88,\ 国旗正在上升 \ 12449μs ⑷ show(0x98,\当前高度000 厘米\ 12449μs ⑸ while(n

⑹ forward(); //步进电机正转程序 m1 ⑺ n++; 4μs ⑻ i=i+43.24/50.0; 194.5μs

- 19 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

⑼ if(i>=10.000) 77μs {

⑽ h=h+1; 4μs ⑾ i=i-10.000; 213μs

}

⑿ zhuanhuan(h); 113μs ⒀ show(0x9C,tab1); 3426μs ⒁ if(Bstop==1) 2μs ⒃ stop_down(); }//while }//up

进入升旗程序后,⑴——⑷句的初始化只执行一次,所需时间为:

t1=4+5+12449+12449=24907μs; ①

⑹——⑼,⑿——⒃句需要执行n0次,所需时间为:

t2=(7+m1+4+194.5+77+113+3426+2)×n0=(3823.5+m1) ×n0μs; ②

if语句为真时,⑽ ⑾执行h0(设定高度)次,所需时间为: t3=(4+213)×h0=217×h0μs; ③

设定标准时间为45s,即4.5×107μs;步进电机正转程序forward()执行一次时间为m1,有下式成立:

4.5×107= t1+ t2+ t3; ④

将①②③式代入④式,化简后可得:

m1=(4.5×107-t1-3823.5×n0-t3)/ n0; 注:m1为double型

- 20 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

步进电机采用四相四拍工作方式,正转程序forward()中脉冲时间间隔由函数delay(v)实现,则一个工作周期有4个delay(int v)。

经万利仿真器测定,设定标准值v=500时,forward() 执行时间为18092μs;函数delay(int v) 中v值每变化1,delay(int v) 的执行时间相应变化9μs,四个绕组共变化36μs,则可得任意设定时间时,参数v的变化值为m2=(18092- m1)/36;可得此时的v为:

v=(int)(500- m2)

无论m2是正是负,该式均适用。

3.3高度显示控制

设定i为高度增减标志量。

由3.1中高度控制可知,步进电机轴头转一周需要调用升旗子程序N=50次,旗帜升高L=2πr,即步进电机所连滑轮的周长。每调用一次升旗子程序,旗帜所上升的高度为L/50。i累加,i=i+ L/50,当i≥10.00mm时,旗帜实际升高高度≥1cm,液晶显示增加1cm,此时,标志i=i-10.00,继续累加,但保留上次相减的残差。直至升旗子程序执行完3.1中计算所得的执行次数。

- 21 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

4.系统软件设计及流程图 4.1主程序流程图

否 24c02读程序 液晶显示信息 旗帜当前高度是否为零 是 是否需要设置 是 是否设置时间 否 否 是否设置高度? 是 键盘输入 是 是否半旗 否 升半旗子程升旗子程序 是 设置时间 是 否 是否紧急停止 否 否 是否到达指定高度 是 24C02写程序 否 是否下降 是 是否半旗 否 降旗子程序 是 降半旗子程序 是否紧急停止 否 否 高度是否为零 是 24C02写程序 是 降旗子程序 等待 流程图4.1

- 22 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

4.2升旗子程序:

初始化 设置高度显示增加标志量i=0.0 调用步进电机正转子程序 旗帜升高 i=i+L1/50 i>10.00mm ? 是 液晶显示高度增加1cm 否 i=i-10.00标志量归零保留残差 否 已调用升高子程序次数?应调用次数? 是 返回

流程图4.2

4.3降旗子程序:

- 23 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

初始化 设置高度显示增加标志量i=0.0 调用步进电机反转子程序 旗帜降低 i=i+L1/50 i>10.00mm ? 是 液晶显示高度减少1cm 否 i=i-10.00标志量归零保留残差 否 已调用降低子程序次数?应调用次数? 是 返回

流程图4.3

- 24 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

4.4升半旗子程序:

根据高度计算步进电机正转次数n1 计算步进电机反转次数n2= n1×1/3 升旗子程序 降旗子程序 返回

流程图4.4

4.5降半旗子程序:

步进电机正转次数为n2 升旗子程序 步进电机反转次数n1 降旗子程序 返回

流程图4.5

- 25 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

5.系统测试

为了确定系统与题目要求的符合程度,我们对系统所实现的性能指标进行了实际测试。

测试所用仪器:秒表,5米卷尺,直尺,SE-52万利仿真器,RF-1800编程器

5.1装置测试

旗杆水平放置,使旗杆两边不受到重力作用,测定系统的误差,以便通过改变线的松紧减少误差。测试过程中时间不限。

5.1.1旗杆水平放置:

表5.1.1 水平升降旗距离测试:(单位:cm) 旗杆高度 升旗 降旗

140 139.1 -0.8 145 144.6 -0.5 150 149.8 -0.4 155 154.7 -0.4 160 159.6 -0.4 165 164.5 -0.3 170 169.7 -0.2 175 174.5 -0.4 180 179.7 -0.3 旗杆单侧挂重物(大于100克),使旗杆单侧受到重力作用,确定重力对系统的影响。测试过程中时间不限。

5.1.2旗杆垂直放置:

表5.1.2 垂直升降旗距离测试:(单位:cm) 旗杆高度 升旗 降旗 140 138.6 -2.5 145 143.5 -2.6 150 148.8 -2.7 155 153.9 -2.8 160 159.1 -2.9 165 164.2 -3.0 170 169.4 -3.2 175 174.5 -3.4 180 179.7 -3.6 结论:水平放置时,滑轮两边升降旗时的受力均衡,升降旗位置控制准确;垂直放置时,由于重力作用,下降时旗帜所停位置在起始位置以下,达不到题目所要求的精度。因此,我们在滑轮的对称侧挂了同样重量的重物,以减少重力对系统的影响。经测试,精度在±0.5cm,高于题目2cm的要求。

5.2高度可调测试

设定时间:45s

表5.2 表中数据单位:cm

- 26 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

设定旗杆高度 升旗 降旗 升半旗 降半旗 设定旗杆高度 升旗 降旗 升半旗 降半旗 150 150.5 0.2 101.3 0.1 152 152.5 0.2 102.5 0.1 155 155.4 0.1 104.4 0.1 158 158.3 0.1 106.2 0.0 160 160.2 0.0 107.4 0.0 165 165.0 0.0 110.8 0.0 170 169.9 -0.1 114.1 0.0 172 171.9 -0.1 115.3 0.0 173 172.9 -0.2 116.0 -0.1 175 174.8 -0.2 117.2 -0.2 177 169.7 -0.3 118.6 -0.3 178 177.7 -0.4 119.2 -0.3 179 179.7 -0.4 119.9 -0.4 180 179.6 -0.4 120.7 -0.4 5.3时间可调测试

表5.3 旗杆设定高度:180cm 设定 时间 升旗 降旗 设定 时间 升旗 降旗 设定 时间 升旗 降旗 115 115’30 115’26 110 110’26 110’35 115 115’30 115’23 116 116’24 116’19 117 117’30 117’31 118 118’34 118’25 119 119’30 119’23 120 120’18 120’31 70 71 72 73 74 75 80 90 100 110 110’26 110’35 30 30’35 30’26 31 31’32 31’30 32 32’27 32’33 33 33’34 33’25 34 34’36 34’27 35 35’29 35’31 40 40’33 40’24 50 50’22 50’19 60 60’30 60’24 70’29 71’28 72’32 73’28 74’35 75’32 80’24 90’21 100’19 70’20 71’35 72’27 73’34 74’23 75’21 80’35 90’34 100’27 分析:由于高度控制程序是按照步进电机转动次数控制,函数执行一次电机转动较小的角度,因此直线行走距离较小,实际测得高度调整的误差在1cm以内,达到了题目的要求。而时间控制程序是按照指令执行的实际时间计算的,精度很高。但是,由于在测试中,测试者按秒表需要有反应时间,因此,时间的测试值

- 27 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

与真实值有误差,在合理范围内,总体上说,我们实现了时间调整范围为30s——120s,步进1秒的要求。

5.4系统完成的功能

系统已实现的功能有:

1 旗杆高度为180cm时,键盘控制,自动升降旗,半旗控制,同时播放音乐;升旗过程中,液晶同步显示旗帜所在高度。

2 旗杆高度可键盘设定,实现1中的功能。 3 升旗时间可调,30s——120s,步进1s。

4 系统断电后,重新上电时,液晶显示旗帜当前高度 5 无线遥控升降旗、停止。

5.5结论

经过对系统功能的全面测试,本设计基本达到设计制作要求。

6.总结

本系统采用89S52单片机为控制核心,利用电子技术、步进电机控制技术、语音录播、遥控技术结合软件算法,实现了配合音乐自动升降旗、半旗控制,并实时显示旗帜所在高度,键盘设置高度并配合音乐升降旗,时间设置以及无线遥控等题目基础部分及发挥部分的所有功能。在设计过程中,力求硬件电路简单,在完成系统功能的前提下,自己设计制作电路,并运用熟悉的电路模块尽快完成设计制作。由于时间有限,软件以及遥控部分还有可以改进的地方。

在硬件部分的制作中,我们充分发挥想象,利用一切身边资源。如我们旗杆的底座就是用废旧的电脑桌改装的,固定旗杆的支架也是废物再利用,降低了制作的成本。

在设计中,我们遇到了很多困难,但凭借顽强的意志和坚定的毅力,查阅各种资料,不断的试验,终于完成了设计,很好地实现了系统的预期功能。通过这次设计制作过程,我们提高了分析问题解决问题的信心和能力,更充分体会了团队合作的重要性,是我们大学生活乃至人生中一次难忘的经历。

- 28 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

7.参考文献

1. 2. 3. 4. 5. 6.

《计算机控制系统》 李正军编著 机械工业出版社

《单片机的c语言应用程序设计》 马忠梅等编著 北京航空航天大学出版社 《电子电路设计与实践》 姚福安编著 山东科学技术出版社 《单片机高级语言C51应用程序设计》 徐爱钧、彭秀华编著 电子工业出版社 《新编电子控制电路300例》0 刘修文 机械工业出版社 《电子制作实例集锦》 傅劲松编著 福建科学技术出版社

8.附录

自动控制升降旗系统程序:

#include #include \

#define uint unsigned int #define uchar unsigned char #define x1 0x80 #define x2 0x88 #define y 0x80 #define comm 0 #define dat 1

//控制端口的定义

sbit cs = P1^2; //液晶屏片选信号 sbit std = P1^5; //液晶屏片选串行数据信号 sbit sclk = P1^7; //液晶屏时钟信号

sbit phase1=P0^0; //步进电机各相信号端口 sbit phase2=P0^1; sbit phase3=P0^2; sbit phase4=P0^3;

sbit Adown=P2^2; //无线遥控模块\下降\信号 sbit Bstop=P2^1; //无线遥控模块\停止\信号 sbit Cup=P2^0; //无线遥控模块\上升\信号

sbit banqi=P2^4; //半旗状态二极管显示信号

sbit CE=P1^6; //语音模块开始播放控制信号

uchar tab1[6];

uchar tab2[4]={%uchar t1[4]; uchar n1[5];

- 29 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

uchar n2[5]; uchar flag,k;

uint h,n,t0,h0=180,n0=2162,v=468; //默认的步进电机函数执行次数n0,延时时间v double m1,m2;

void wr_lcd (uchar dat_comm,uchar content); void down(uint n0);

void x24c02_write(uchar address,uchar info); uchar x24c02_read(uchar address);

void delay(uint us) //delay time //步进9us {

while(us--); }

void delay2(unsigned int t) //一个t延时10毫秒 { do{

TH0 = 0xDC; TL0 = 0x00; TR0 = 1;

while ( !TF0 ); TF0 = 0; TR0 = 0; } while (--t); }

void init_lcd (void) //液晶屏初始化函数 {

wr_lcd (comm,0x30); /*30---基本指令动作*/ wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/ delay(100);

wr_lcd (comm,0x06); /*光标的移动方向*/ wr_lcd (comm,0x0c); /*开显示,关游标*/ }

void clrram (void) //液晶屏清屏函数

- 30 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

{

wr_lcd (comm,0x30); wr_lcd (comm,0x01); delay(180); }

void wr_lcd (uchar dat_comm,uchar content) //液晶屏命令执行函数 {

uchar a,i,j; delay (50); a=content; cs=1; sclk=0; std=1;

for(i=0;i<5;i++) {

sclk=1; sclk=0; }

std=0; sclk=1; sclk=0;

if(dat_comm) std=1; //data else

std=0; //command sclk=1; sclk=0; std=0; sclk=1; sclk=0;

for(j=0;j<2;j++) {

for(i=0;i<4;i++) {

a=a<<1; std=CY; sclk=1; sclk=0; }

std=0;

for(i=0;i<4;i++) {

sclk=1;

- 31 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

sclk=0; } } }

void show(uchar position, uchar *chn) //液晶屏显示函数 { uchar i;

wr_lcd (comm,0x30); wr_lcd (comm,position); for (i=0;i<16;i++) {

if(chn[i]!=0x00) wr_lcd (dat,chn[i]); else i=16; } }

void zhuanhuan(uint h) { uint hh; hh=h;

tab1[2]=hh+48; hh=hh/10;

tab1[1]=hh+48; tab1[0]=hh/10+48; }

void zhuanhuan2(uint n) { uint nn; nn=n;

n1[3]=nn+48; nn=nn/10;

n1[2]=nn+48; nn=nn/10;

n1[1]=nn+48; n1[0]=nn/10+48; }

void zhuanhuan3(uint n) { uint nn; nn=n;

n2[3]=nn+48; nn=nn/10;

n2[2]=nn+48;

//uint值转换为uchar值,存放到3位数组中 //uint值转换为uchar值,存放到4位数组中 //uint值转换为uchar值,存放到4位数组中- 32 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

nn=nn/10;

n2[1]=nn+48; n2[0]=nn/10+48; }

void forward(void) //步进电机正转子程序 { phase1=phase2=phase3=phase4=1;

phase1=0; delay(v); phase1=1; phase4=0; delay(v); phase4=1; phase3=0; delay(v); phase3=1; phase2=0; delay(v); phase2=1; }

void backward(void) //步进电机反转子程序 { phase1=phase2=phase3=phase4=1;

phase1=0; delay(v); phase1=1; phase2=0; delay(v); phase2=1; phase3=0; delay(v); phase3=1; phase4=0; delay(v); phase4=1; }

void stop_down(void) //紧急停止子程序

- 33 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

{ //clrram ();

show(0x90,\ 因故紧急停止 \ show(0x88,\请降旗后重新启动\ delay2(2000); for(;;) {

if(Adown==1)

{ show(0x88,\ \ down(0); } } }

void up(uint n0) //升旗子程序 {

double i=0.0;

show(0x88,\ 国旗正在上升 \ show(0x98,\当前高度000 厘米\ while(n

{ forward(); n++;

i=i+((43.24-1.38760407)/50.0);

if(i>=10.000) { h=h+1;

i=i-10.000;} zhuanhuan(h); show(0x9C,tab1); if(Bstop==1) stop_down(); }//while }//up

void down(uint n0) //降旗子程序 {

double i=0.0;

show(0x88,\ 国旗正在下降 \ show(0x98,\当前高度 厘米\ while(n>n0)

- 34 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

{ backward(); n--;

i=i+((43.24-1.38760407)/50.0); if(i>=10.000) { h=h-1;

i=i-10.000; } zhuanhuan(h); show(0x9C,tab1); if(Bstop==1) stop_down();

}//while

}//down

void updown(void) //升半旗子程序 { double p; up(n0);

delay2(500);

p=2162.0-(180-(h0*2.0/3.0))*10.0*50.0/43.24; down((int)p); }

void downup(void) //降半旗子程序 { up(n0); down(0); }

main()

{ while(1)

{ init_lcd (); //初时化液晶显示屏 wr_lcd (comm,0x30); //初时化数组 tab1[0]=tab1[1]=tab1[2]=' '; t1[0]=t1[1]=t1[2]=' ';

Adown=0; //初时化各控制端口 Bstop=0;

- 35 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

Cup=0; CE=1; banqi=0;

delay2(10);

tab2[0]=x24c02_read(0x00); //从24c02芯片读入当前高度值到数组中 delay2(10);

tab2[1]=x24c02_read(0x01); delay2(10);

tab2[2]=x24c02_read(0x02); delay2(100);

show(0x98,\当前高度000 厘米\

show(0x9C,tab2); //显示当前高度

if(!(tab2[0]==0x30&&tab2[1]==0x30&&tab2[2]==0x30))

//若高度不为0,需要先下降到0

{ h=(tab2[0]-48)*100+(tab2[1]-48)*10+(tab2[2]-48);

delay2(10);

n1[0]=x24c02_read(0x03); //读入步进电机上升时执行次数,以便下降到0 delay2(10);

n1[1]=x24c02_read(0x04); delay2(10);

n1[2]=x24c02_read(0x05); delay2(10);

n1[3]=x24c02_read(0x06); delay2(10);

n=(n1[0]-48)*1000+(n1[1]-48)*100+(n1[2]-48)*10+(n1[3]-48);

//由数组uchar值算出uint的n delay2(10);

flag=x24c02_read(0x07); //读入半旗标志位,以便执行降半旗子程序 delay2(10);

n2[0]=x24c02_read(0x08); //读入步进电机上升到指定顶部时函数执行次数 delay2(10); //使国旗在半旗状态下仍能先升到指定顶部后降到0 n2[1]=x24c02_read(0x09); delay2(10);

n2[2]=x24c02_read(0x0A); delay2(10);

n2[3]=x24c02_read(0x0B); delay2(100);

n0=(n2[0]-48)*1000+(n2[1]-48)*100+(n2[2]-48)*10+(n2[3]-48);

- 36 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

//由数组uchar值算出uint的n goto xiajiang; }

show(0x80,\默认杆高180 厘米\ show(0x90,\可以选择设置状态\ show(0x88,\按 '下一步' 跳过\ k=10;

for (;;) {

if ( ZLG7289_pinINT == 0 ) {

k = ZLG7289_Key(); while ( !ZLG7289_pinINT ); }

if(k==17||Bstop==1) { k=10;

goto start1; }

if(k==19)

{ show(0x80,\选择高度调整状态\ show(0x90,\ 或者 \ show(0x88,\选择时间调整状态\ break; }

}//for for (;;) {

if ( ZLG7289_pinINT == 0 ) {

k = ZLG7289_Key(); while ( !ZLG7289_pinINT ); }

if(k==20) {

show(0x80,\已选高度调整状态\ show(0x90,\设置高度 厘米\ show(0x88,\ \ break; }

if(k==21) {

show(0x80,\已选时间调整状态\

- 37 -

//按\高度调整\键输入自动停止的高度 //按\时间调整\键输入自动停止的时间

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

show(0x90,\设置时间 秒 \ show(0x88,\ \ goto shijian; } }//for

gaodu:

for (;;) //输入高度值的第一位,单位厘米 {

if ( ZLG7289_pinINT == 0 ) {

k = ZLG7289_Key(); while ( !ZLG7289_pinINT ); }

if(k<2)

{ h0=k*100; tab1[0]=k+48; show(0x94,tab1); k=10; break; } }

for (;;) {

if ( ZLG7289_pinINT == 0 ) {

k = ZLG7289_Key(); while ( !ZLG7289_pinINT ); }

if(k<10)

{ h0=k*10+h0; tab1[1]=k+48; show(0x94,tab1); k=10; break; } }

for (;;) {

if ( ZLG7289_pinINT == 0 ) {

k = ZLG7289_Key();

//输入高度值的第二位 //输入高度值的第三位 - 38 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

while ( !ZLG7289_pinINT ); }

if(k<10) { h0=k+h0; tab1[2]=k+48; show(0x94,tab1); k=10; if(h0>180)

{show(0x88,\输入高度超出范围\输入高度范围0~180厘米,否则重新输入 delay2(1000);

show(0x88,\ 重新输入高度 \ delay2(1000);

show(0x88,\ \ show(0x94,\ \

tab1[0]=tab1[1]=tab1[2]=' '; goto gaodu; }

n0=(int)(2162-(180-h0)*10*50/43.24); //根据输入高度计算出正反转执行次数n0 m1=(45000000-24954-3823.5*n0-217*h0)/n0; //根据输入高度计算出延时时间v, m2=(18092-m1)/36.0; //使国旗在指定位置停止时,国歌停奏 v=(int)(500-m2);

zhuanhuan3(n0); //将步进电机函数升到指定顶部的执行次数转换进数组n2 delay2(10);

x24c02_write(0x08,n2[0]); //保存升旗后的函数执行次数到24c02芯片, delay2(10); //防止断电后函数执行次数丢失

x24c02_write(0x09,n2[1]); //使国旗在半旗状态下仍能先升到指定顶部后降到0 delay2(10);

x24c02_write(0x0A,n2[2]); delay2(10);

x24c02_write(0x0B,n2[3]); delay2(1000); goto start1; } }//for

shijian:

for (;;) //输入时间值的第一位,单位秒,低于100秒时要输入0 {

if ( ZLG7289_pinINT == 0 ) {

k = ZLG7289_Key(); while ( !ZLG7289_pinINT ); }

- 39 -

2006年山东省大学生电子设计竞赛——自动控制升降旗系统

if(k<2)

{ t0=k*100; t1[0]=k+48; show(0x94,t1); k=10; break; } }

for (;;) //输入时间值的第二位 {

if ( ZLG7289_pinINT == 0 ) {

k = ZLG7289_Key(); while ( !ZLG7289_pinINT ); }

if(k<10)

{ t0=k*10+t0; t1[1]=k+48; show(0x94,t1); k=10; break; } }

for (;;) //输入时间值的第三位 {

if ( ZLG7289_pinINT == 0 ) {

k = ZLG7289_Key(); while ( !ZLG7289_pinINT ); }

if(k<10) { t0=k+t0; t1[2]=k+48; show(0x94,t1); k=10;

if(t0<30||t0>120)

{ show(0x88,\输入时间超出范围\输入时间范围30秒~120秒,否则重新输入 delay2(1000);

show(0x88,\ 重新输入时间 \ delay2(1000);

show(0x88,\ \ show(0x94,\ \

- 40 -

本文来源:https://www.bwwdw.com/article/ljd7.html

Top