课程设计报告--电脑鼠走迷宫.doc_第1页
课程设计报告--电脑鼠走迷宫.doc_第2页
课程设计报告--电脑鼠走迷宫.doc_第3页
课程设计报告--电脑鼠走迷宫.doc_第4页
课程设计报告--电脑鼠走迷宫.doc_第5页
免费预览已结束,剩余31页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

天津职业技术师范大学Tianjin University of Technology and Education课 程 设 计专业班级:应电0814学生姓名:乔伟 09 李月 19 华焱建 43指导教师:刘新月系 别:电子工程学院目 录1电脑鼠走迷宫11.1电脑鼠技术指标11.2电脑鼠方案论证及选择11.2.1核心控制器11.2.2传感器11.2.3电动机11.2.4电源11.3电脑鼠总体电路图21.4电脑鼠系统组成框图21.5电脑鼠单元电路设计21.5.1传感器单元21.5.2步进电机驱动单元31.5.3电源单元41.6运动算法设计51.7迷宫坐标信息采集算法51.8迷宫算法71.9测试结果分析及改进81.10总结82智能电梯控制系统92.1主要技术指标922方案论证及选择92.3系统组成框图92.4单元电路设计102.4.1单片机最小系统模块102.4.2开关控制模块112.4.3电机驱动模块112.4.4液晶显示模块112.4.5报警模块122.4.6 电路总图132.5软件流程图以及任务描述132.6元件清单142.7 调试过程152.8总结15参考文献16附录1 电梯代码17附录2 个人总结28天津职业技术师范大学课程设计1 电脑鼠走迷宫1.1电脑鼠技术指标依据IEEE标准迷宫构建相应数据结构,结合数据结构进行迷宫搜索算法的设计;分析电脑鼠硬件需求进行产品选型,构建硬件平台;实现电脑鼠自动搜索迷宫,从中选出最佳路径进行冲刺的功能。1.2电脑鼠方案论证及选择1.2.1核心控制器基于所需完成任务要求我们知道,电脑鼠核心控制器需要有很快的信息处理速度。那么,普通的8位单片机不能满足快速处理的条件,不能胜任任务。为了实现高速信息处理,采用由Liminary公司生产的LM3S615控制器,该控制器是以ARM-Cortex-M3为内核的32位SOC系统,拥有50-MHz工作频率,可以胜任任务所要求的高速信息处理能力。1.2.2传感器传感器是电脑鼠的感觉器官,在运行过程中电脑鼠需要实时的检测迷宫墙壁信息,依据迷宫场地情况,因此采用收、发一体的红外线传感器作为电脑鼠的感觉器官。红外线传感器具有感知能力强、抗干扰能力强、价格低廉等优点,并且符合硬件需求。1.2.3电动机为了使电脑鼠在迷宫中稳定的运行,需要给其提供稳定的动力。为了更好的控制电脑鼠的行走情况,选用步进电动机来给电脑鼠提供动力。步进电动机能够迅速的启动和停止,具有良好的控制能力。1.2.4电源电脑鼠设计采取外接锂电池供电,系统设计需要三种不同的电压,分别用来驱动电机、给传感器供电和给微控制器供电。1.3电脑鼠总体电路图图1-1 MicroMouse615原理图1.4电脑鼠系统组成框图电脑鼠在迷宫运行当中,依据红外传感器获取的迷宫墙壁信息,传达给处理器进行相应的处理,再进行电机控制,并在显示模块显示电脑鼠所在迷宫的坐标信息。总体框体如图1-2所示。图1-2 电脑鼠系统框图1.5电脑鼠单元电路设计1.5.1传感器单元红外线传感器的工作电压为5V,在一般情况下可以把电池的输出电压经过稳压得到5V供电。但若电池电压较低或瞬间被拉低时,系统就不能为传感器提供稳定的电源,这将严重影响传感器的灵敏度。所以,我们将系统中已经较稳定的3.3V电压升到5V。升压芯片采用Exar公司的低静态电流、高效率的升压芯片SP6641A,升压电路如图1-4所示。图1-3 红外检测电路图1-4 5V升压电路1.5.2步进电机驱动单元电动机驱动电路如图1-5所示,其中BA6845FS是步进电机驱动芯片,该芯片包含两个H桥,它的最大驱动电流为1A,且在输入逻辑的控制下输出有三种模式:正向、反向和停止。BA6845FS输入控制与输出信号的关系见表1-1。图1-5 电动机驱动电路表1-1 BA6845FS真值表IN11/21IN12/22OUT11/21OUT12/22模式LHHK正向HHKH反向LL开路开路停止HL开路开路停止(2)两相四线制步进电机驱动时序驱动步进电机的时序主要有单步驱动、整步驱动、半步驱动和微步驱动。我们步进电机采用的是半步驱动。电机以一个恒定的加速度加速到指定的转速,之后匀速运行。加减速度实时算法的核心是使用定时器中断,当定时器发生溢出中断时,中断服务子函数推动电机走下一步。1.5.3电源单元电脑鼠设计采取外接锂电池供电,系统设计需要三种不同的电压,分别用来驱动电机、给传感器供电和给微控制器供电。LM3S615控制器需要3.3V供电,电路如图1-6所示,外接电源经过C36、C2滤波,然后通过SPX1117M-3.3将电源稳压至3.3V。SPX1117M-3.3是Exar公司生产的LDO芯片,其特点是输出电流大,输出电压精度高,稳定性高。其输入电压范围为4.7V到12V,输出电流可达800mA。在其输出端的C3、C4用来改善瞬态响应和稳定性。图1-6 3.3V电源电路1.6运动算法设计(1)直线运动经过我们实际测试,走迷宫中的一格步进电机需要向前走125步,在每次进行迷宫搜索时电脑鼠直线前进,直到遇到支路口。在直线运动过程中,步进电机先匀加速到所给的最大速度值,之后以该速度匀速运行。(2)转弯处理 90度转弯向左转90度和向右转90度实质是一样的,转弯有两种方式:一种是在前进中转弯,即连续转弯;一种是原地转弯,即一个轮正转,一个轮反转。基于实际测试情况,我们选择了连续转弯的方法实现90度转弯。 180度转弯要实现180度转弯,只需使一个轮正转一个轮反转就能够完成转弯。 1.7迷宫坐标信息采集算法(1)迷宫坐标和绝对方向的建立依据IEEE标准迷宫结构,由1616个格数组成,采用x、y坐标轴来存贮坐标值。迷宫坐标由绝对方向控制。根据坐标的定义和比赛规则可以知道,电脑鼠的起点可能在(0,0)点,也可能在(F,0)点。当电脑鼠第一次拐弯口是在它的右方,起点为(0,0);如果第一个检测的拐弯口在它的左方,则说明起点为(F,0)。(2)相对方向与绝对方向的转换相对方向:以电脑鼠当前行走方向为参照方向绝对方向:以迷宫绝对坐标平面为参照方向电脑鼠在运行中,经常会遇到相对方向与绝对方向的互换,本文以变量Dir记录电脑鼠前进方向上的绝对方向值,相对方向转换为绝对方向如表1-2所示。表1-2 相对方向转换为绝对方向相对方向绝对方向电脑鼠前方Dir电脑鼠右方(Dir + 1) % 4电脑鼠后方(Dir + 2) % 4电脑鼠左方(Dir + 3) % 4有时电脑鼠还需根据绝对方向求出相对方向,比如控制电脑鼠转向某一个绝对方向。首先根据目标的绝对方向(Dir_dst)和当前的绝对方向(Dir)求出方向偏差(Dir),计算公式为:Dir = ( Dir_dst + 4 Dir ) % 4,这时就可以根据方向偏差求出电脑鼠的相对方向,如表1-3所示。 表1-3 绝对方向转换为相对方向绝对方向差值(Dir)相对方向0电脑鼠前方1电脑鼠右方2电脑鼠后方3电脑鼠左方(3)坐标转换假设电脑鼠当前坐标为(x,y),那么就可以求出某绝对方向的相邻坐标值,如表1-4所示,该表是可逆的,既可以根据坐标值的变化求出绝对方向。表1-4 坐标转换绝对方向坐标当前位置(X,Y)上方(0)(X,Y+1)右方(1)(X+1,Y)下方(2)(X,Y-1)左方(3)(X-1,Y)(4)墙壁资料储存要想使电脑鼠具备智能选路的本领,必须使其具备记忆迷宫信息的能力,除此之外电脑鼠还需记忆当前所在迷宫格和前进方向的信息,这些信息将随着电脑鼠在迷宫格中行走而不断被刷新。坐标墙壁存储的值有1616的二位数组变量来保存。迷宫墙壁资料全部初始为0,凡是走过的迷宫至少有一方没有墙壁,即墙壁资料不为0,这样就可以根据墙壁资料是否为0来确定该单元格是否走过。墙壁资料有数组变量的低四位来表示,如表1-5所示。 1.8迷宫算法(1)迷宫搜索算法常见的迷宫搜索算法如下: 右手法则: 以右边为优先的前进方向,然后是直线方向、左边方向。表1-5 墙壁资料存储方式变量名代表的绝对方向备注bit0上方(0)1:有路,0:有墙壁bit1右方(1)1:有路,0:有墙壁bit2下方(2)1:有路,0:有墙壁bit3左方(3)1:有路,0:有墙壁bit7 bit4保留位 左手法则: 以左边为优先的前进方向,然后是直线方向、右边方向。 中左法则: 以直线为优先的前进方向,然后是左边方向、右边方向 中右法则: 以直线为优先的前进方向,然后是右边方向、左边方向 求心法则: 遇有交叉时,以指向迷宫中心的方向为优先的前进方向。 向点法则:以坐标起点为方向,向着起点行进软件设计中采用两种混合搜索策略,即启动电脑鼠搜索到终点采用向心法则,从终点搜索回起点采用向点法则。两种策略的结合使用,极大的缩短了迷宫搜索时间(2)寻找最优路径的方法电脑已经搜索完成整个迷宫或者只搜索了包含起点和终点的部分迷宫,且记录了已走过的每个迷宫的墙壁资料,那么它会根据等高图寻找出一条最优的路劲冲刺。等高图运用在迷宫地图上,可以使电脑鼠更灵敏,少走很多弯路。等高图制作的原理:首先开辟一块1616的二维数组空间,其中每一个元素代表迷宫中的一个方格,用以计算后储存各方格至起点的最短路径步数。当起点坐标处标识为1时,可以直接到达的相邻方格均为2,再远的方格的等高值依次递增。这样距离越远的地方等高值越大。1.9测试结果分析及改进 (1)电脑鼠迷宫运行把修改完的代码烧写进入电脑鼠,放入迷宫中运行。电脑鼠直线搜索比较稳定,转弯基本正常,但有时却出现少转了一些步数的情况。电脑鼠冲刺比较稳定,极少出现转弯不正的境况。在遇到一、两个格数坐标返回时,采用的档位控制功能能较好的处理转弯不正的问题。(2)改进措施电脑鼠转弯不正很有可能跟传感器有关系,经过多次调试,修改红外传感器灵敏度,使传感器达到一个最佳点。在软件上也进行一些修改,电脑鼠转弯的步数增加几步,也可纠正转弯不正的情况。1.10总结根据所改函数功能,电脑鼠搜索到终点附近时,直接进入4个中的一个终点的坐标,并且坐标显示正常。电脑鼠在返回搜索所走的路线虽不是最佳的路径,但却能根据起点判断函数快速回到起点,为冲刺寻找出一条路线。电脑鼠正前方传感器检测到有效的墙壁信息时,电脑鼠没有及时的停下来,为解决这问题,在电脑鼠的地盘白色托盘上粘贴胶布,增大电脑鼠与地面的摩擦力。15天津职业技术师范大学课程设计2 智能电梯控制系统本文采用单片AT89S52芯片进行电梯控制系统的设计方法,利用单片机编程实现功能,简洁而又多变的设计方法,缩短了研发周期,同时使电梯控制系统体积更小功能更强大。本设计实现了电梯控制系统所需的一些基本功能,能通过方向按键选择方向,能通过数字按键选择楼层,数码管显示实时楼层数,点阵显示实时方向,电机控制使电梯箱能上下运动。 2.1主要技术指标液晶采用1602能够直观明了显示电梯相关信息。电机采用定时器中断控制,两相四线制步进电机驱动。电机正转代表电梯上升,电机反转代表电梯下降,并实时通过液晶显示当前电梯状态以及按键响应。当电梯到达相应楼层时,相应楼层的LED灯会被点亮,离开当前楼层时,LED则会被熄灭。开门或者关门状态时,蜂鸣器蜂鸣和红灯闪烁以起到警示作用。按键实用IO口直接驱动。电梯总共有4个状态:停止、等待、上和下。22方案论证及选择方案一:采用可编程控制器(PLC)作为主要器件来控制电机的运动、内外按键的响应、按键后的电路显示等等。用PLC编程比较简单,电路也不复杂,但此方案的各个模块的费用都比较高,硬件设计也不灵活,故不采用此方案。方案二:MCU采用一个单片机控制所有的按键、数码管显示、电动机的转动、传感器的输出信号等等,并对以上所有信号进行处理。单片机技术目前较为成熟,自身资源丰富,硬件设计简单,成本低,可靠性高,结合软件完全可以实现电梯运行状况的简单模拟。故采用本方案。2.3系统组成框图根据层次化设计理论,该设计问题自顶向下可分为单片机最小系统模块、开关控制模块、电机驱动模块、报警模块,显示模块等。本次设计是采用开关控制实现上下到指定楼层,通过电机转动带动电梯箱上下运动,到达指定楼层。显示模块是显示电梯箱此时运动的楼层和所有呼叫的楼层,报警模块具有楼层到达的提示功能。框图如图2-1所示:单片机AT89S52开关控制电机驱动显示模块报警模块图2-1 智能电梯控制系统框图2.4单元电路设计2.4.1单片机最小系统模块单片机最小系统包括主芯片,复位电路和晶振脉冲产生电路。使用12MHz外部晶振,与30Pf电容并联,产生1/12us的脉冲信号作为单片机的“心脏”部分。复位电路是开关与10uf电容并联组成的上电自动复位电路,在RST端为高电平时单片机清零,也即开关按下会产生清零信号。最小系统模块如图2-2图2-2最小系统框图2.4.2开关控制模块开关控制模块,按键与I/O连接电梯,写键盘代码时运用按键扫描,确定任务,呼叫和所要到达的楼层及系统的控制。图2-3 按键模块2.4.3电机驱动模块电机驱动采用ULN2003A环形计数分配器驱动完成。本次设计采用步进电机,目的是方便智能控制,可实现调速功能。电机使用的是二相步进电机,由于仅用来实验,所以电机采用5V电源供电即可,实际中必须使用大电压来供电方能带动重物(人等)。图2-4 步进电机驱动模块2.4.4液晶显示模块由于点阵和双位数码管耗电流较大,不能直接连接单片机IO口驱动其正常工作,所以采用1602液晶显示。直接用IO口驱动液晶显示。其中使用P0口来驱动液晶显示输入输出。图2-5 液晶显示模块表2-1 1602液晶管脚说明管脚说明1VSS地电源2VDD5V正电源3显示器对比度调整端4RS为寄存器选择5RW为读写信号线6E端使能端714D0D7为8位双向数据线1516空脚(可接背光)2.4.5报警模块本设计采用9012三极管驱动蜂鸣器。因为三极管是PNP,当PO口送高电平时,三极管处于截止状态,三极管Vce电压约为VCC,蜂鸣器只有很少电流流过,没法驱动其发声。当PO口送低电平时,三极管处于饱和导通状态,三极管Vce约为0.3V,蜂鸣器有较大电流流过,能驱动其报警发声。图2-6 蜂鸣器报警模块2.4.6 电路总图图2-7 电路总图2.5软件流程图以及任务描述电梯总共有4个状态:停止、等待、上和下。电梯初始状态为停止状态。当停止/启动按键长按,电梯转为等待状态,响应相应电梯楼层数按键。若开门键先按,电梯开门,等待选择楼层数,不响应当前楼层数。电梯等待一定时间,自动关门。若长时间不选择楼层数,电梯将自动运行到1层。当电梯处于1层时,若停止/启动按键按下,电梯先开门,等待一定时间,再关门,电梯转为停止状态。电梯上下行任务处理,电梯处于等待或运行状态、 电梯处于等待状态。只有一个楼层数响应,不响应当前楼层按键。当电梯当前楼层数小于按键值,电梯转为上运行状态,否则转为下运行状态。运行当中,响应相应的电梯楼层按键,并锁存。电梯每运行一层,锁存值清零,更行电梯楼层数。、 电梯处于等待状态,电梯当前楼层上下层都有按键响应时,优先执行电梯当前状态任务,直到当前状态无响应按键,转为另一状态,并到达相应楼层。开始初始化电梯等待有无键按按键处理任务响应控制电机并显示楼层到达蜂鸣器动作显示YNYN图2-8 软件流程图2.6元件清单表2-2 元件清单元件名称元件属性数量89S52微控制器1晶振12MHz1液晶16021瓷片电容30pF1电解电容10uF1电阻10K1620011K7二极管LED1按键7蜂鸣器1三极管901212.7 调试过程在编程方面,主要面临的问题是电梯的逻辑,通过软件仿真能够快速方便地解决硬件调试问题。比如,智能电梯使用步进电机带动楼层运动,并通过LCD1602液晶显示电梯相应信息,所以电梯控制编程要与电机控制和电梯逻辑相符合。在进行电梯逻辑控制时,使用软件仿真,极大的简化了软件编程调试。在硬件方面,液晶和蜂鸣器供电没有接上拉电阻容易导致液晶显示紊乱。最主要的问题出现在电梯运行的逻辑方面。比如,电梯运行到三楼,同时一楼和四楼有人按下,电梯该往上还是往下运行。通过逐个击破,找出电梯逻辑运行问题。在步进电机的控制方面,刚开始使用四拍,我们发现步进电机转动非常慢,进而我们用八拍的做了改善,且使用定时器中断,让步进脉冲间隔减短,步进电机的速度才最终得到了提升。2.8总结软件仿真是完全理想的状态,在进行硬件调试中,发现电机转动慢以及蜂鸣器蜂鸣导致液晶显示乱码问题。针对问题,经过查询步进电机相关资料,采用半步八拍驱动时序,定时器中断时间减为毫秒级,增加步进脉冲,问题得以解决。对于液晶显示乱码,在软件调试过程中,发现只要蜂鸣器蜂鸣,液晶便开始乱码。蜂鸣器驱动电路采用三极管放大驱动蜂鸣,在进行蜂鸣的瞬间,电流激增,导致液晶控制端信号异常,从而显示乱码。商量之后,我们决定增加限流电阻。蜂鸣器蜂鸣声音稍微降低,液晶显示正常,问题得以解决。天津职业技术师范大学课程设计参考文献1 周立功.IEEE电脑鼠开发指南广州致远电子有限公司2 LM3S615 Datasheet3 ARM-Cortex-M3 Datasheet4 BA6845FS Datasheet5 IRM8601S Datasheet6 ZLG7289B Datasheet7 IAR使用指南广州周立功单片机发展有限公司8 张齐,杜群贵著.单片机应用系统设计技术.电力工业出版社,2007.9 王蔚林.电梯智能控制系统的研究.上海交通大学,2005.10 梁延东.电梯控制技术.中国建筑出版社,2007.11 史敬.步进电动机伺服控制技术.科学出版社,2007.12 肖红兵.跟我学用单片机.北京航空航天大学出版社,2002.13 何立民.单片机高级教程.北京航空航天大学出版社,2001.14 赵晓安.MCS-51单片机原理及应用.天津大学出版社,2001.附录1 电梯代码uint8 CurrentFloor=FLOOR1;uint16 SecCt=0;uint8 RunTask= 1;uint8 CallFloor= 0;uint16 ucPul = 0;uint16 ucPulC = 0;uint8 Check2=1;uint8 Check3=1;uint8 *liftstate=STOP,UP ,DOWN,WAIT ;uint8 *liftfloor=E,1,2,3,4;uint8 *DoorStat=C,O;uint8 data Line1=State:STOP ;uint8 data Line2=Floor:1 DOOR:C;uint8 LiftDir = LIFTUP;uint8 LiftS = LIFTSTOP;uint8 LiftF = FLOOR1;uint8 MotoS = MOTOSTOP;uint8 DoorFlag=0;uint8 code pic88=0x04,0x0e,0x15,0x04,0x04,0x04,0x04,0x00,0x00,0x04,0x04,0x04,0x04,0x15,0x0e,0x04,;void delay(uint8 k) uint8 i,j; for(i=0;ik;i+) for(j=0;j80;j+);void wait_unit_ready() LCD_RS=0; LCD_RW=1; LCD_data=0xff; LCD_EN=1; delay(20); while(LCD_data&0x80=0); LCD_EN=0;void LCD_write_cmd(uint8 cmd) wait_unit_ready(); LCD_RS=0; LCD_RW=0; LCD_data=cmd; LCD_EN=1; delay(1); LCD_EN=0; void LCD_write_data(uint8 S_L_data) wait_unit_ready(); LCD_RS=1; LCD_RW=0; LCD_data=S_L_data; LCD_EN=1; delay(1); LCD_EN=0;void LCD_string(int8 *s,uint8 x) LCD_write_cmd(x); for(;*s!=0;s+) LCD_write_data(*s);void LCD_write_pic(uint8 CGadd,uint8 *pic_num)uint8 i;CGadd=CGadd3;for(i=0;i= ucPul) MotoS = MOTOSTOP; ucPul = 0; ucPulC = 0;SecCt = 0; void Timer1delay(uint8 deytime)uint8 i,j; TR1=1;for(i=0;ideytime;i+)for(j=0;j50;j+)TH1 = (65536-1000)/256; TL1 = (65535-1000)%256;while(!TF1);TF1=0;TR1=0;TF1=0;void DisPlay()strcpy(Line1+6,liftstateLiftS);/strcpy(Line2+6,liftfloorCurrentFloor);Line26=*liftfloorCurrentFloor; LCD_string(Line1,0x82); LCD_string(Line2,0xc2);void DisPlayWait()Run_LED=1;strcpy(Line1+6,liftstate3); LCD_string(Line1,0x82);void GetKey(uint8 cK)if(CurrentFloor!=cK)|(MotoS=MOTORUN)LiftF=cK;CallFloor=1;SelectFloor(cK);LCD_write_cmd(0x8b+cK); LCD_write_data(*liftfloorcK);void FloorKey()delay(100);switch(P3)case 0x02:GetKey(1);break;case 0x04:GetKey(2);break;case 0x08:GetKey(3);break;case 0x10:GetKey(4);break;case 0x20:if(MotoS=MOTOSTOP)SecCt=0;break;case 0x40:S_LED=0;if(MotoS=MOTOSTOP)SecCt=1600; break;default:break;void UpdataFloor()if(LiftS=LIFTUP)CurrentFloor+;elseCurrentFloor-;switch(CurrentFloor)case 1:F1_LED=0;F2_LED=1;F3_LED=1;F4_LED=1;break;case 2:F1_LED=1;F2_LED=0;F3_LED=1;F4_LED=1;break;case 3:F1_LED=1;F2_LED=1;F3_LED=0;F4_LED=1;break;case 4:F1_LED=1;F2_LED=1;F3_LED=1;F4_LED=0;break;default:break;/StoreF &=(0x01(CurrentFloor-1); LCD_write_cmd(0xc8); LCD_write_data(*liftfloorCurrentFloor);void delayS(uint8 S)uint8 i;for(i=0;i= ONEFLOOR)ucPul -=ONEFLOOR;ucPulC -=ONEFLOOR;UpdataFloor(); UpdataFloor(); End:;void TaskRun()if(LiftS=LIFTUP)LCD_write_cmd(0x80); LCD_write_data(0);elseLCD_write_cmd(0xc0); LCD_write_data(1);Check2=1;Check3=1;while(RunTask!=CurrentFloor)LiftGo(RunTask);DisPlayWait();if(RunTask=CurrentFloor)break;OpenDoor();AutoClose(); DisPlayWait();LCD_write_cmd(0x80); LCD_write_data( );LCD_write_cmd(0xc0); LCD_write_data( );SecCt=0;void SelectFloor(uint8 Floor)StoreF=StoreF | (0x01 1000)CloseDoor();break;SecCt=0;/DoorFlag=0;void CloseDoor()DisDoorState(0);delayS(4);SecCt=0;DoorFlag=0;void OpenDoor()DisDoorState(1);DoorFlag=1;delayS(4);SecCt=0;void CleanTask()StoreF &=(0x01(CurrentFloor-1);LiftF=RunTask;LCD_write_cmd(0x8b+CurrentFloor); LCD_write_data( );void JudgeTask()/FloorKey();if(RunTask CurrentFloor)LiftS=LIFTUP;void DisDoorState(uint8 Door)LCD_write_cmd(0xc0+15); LCD_write_data(*DoorStatDoor);void ExecuteTast()if(CurrentFloor!=RunTask) TaskRun();CleanTask();DisDoorState(1);delayS(4);DoorFlag=2;void main() uint8 n; InitTimer(); LCD_init(); F1_LED=0; S_LED=0; LS=1; Run_LED=1; DisPlay(); while(1) switch(LiftS) case LIFTSTOP:if(ST_Button=0)Timer1delay(15);while(ST_Button=0)LiftS=WAIT;S_LED=1;SecCt=0;DisPlayWait();/break; break;case LIFTUP:if(StoreF&0x04)&(CurrentFloor3)RunTask=3;AutoClose();LiftS=RUN;break;else if(StoreF&0x08)&(CurrentFloor4)RunTask=4;AutoClose();LiftS=RUN;break;for(n=0;nCurrentFloor-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论