内蒙古科技大学毕业设计说明书(毕业论文)
4.3.3 存取车流程
开始读取IC卡信息否存车吗?是调用IC卡读程序读取IC卡信息否自动检测空车位有无该车信息是确定空车位及转向和车位数确定转向和移动车位数调用IC卡写程序写入存车车位控制电机转动否控制电机转动车位旋转到位?是用户入库取车车位旋转到位?是开车入库存车否检测车辆是否取走?是否返回
图4.3车辆存取流程
存取车流程如图所示。在存车时,先判断00H(20H.0)位的值。若该位值为1,表示车库无空位,停车已满,不能再存车;若其值为0,表示车库有空位,可以存车。
找到满足条件的空车位后,可根据程序循环移位次数判定电机运转方向和托架移过
内蒙古科技大学毕业设计说明书(毕业论文)
的车位数即循环车位数。设程序循环移位次数为Rl,机械系统循环移过的车位数为R2。若循环移位次数Rl>4则反转,旋转车位数R2=8-Rl;若循环移位次数R1≤4,则正转,循环车位数R2=R1。
在控制系统中,用光电开关检测托架转过的车位数。光电开关与单片机外部中断0输入端相连。光电开关每输入一个脉冲,内部的程序进行计算,自动加1。计数时在计数初值的基础上以加法计数,并能在计数过程中从全“1”变为全“0”时自动产生计数。根据循环车位数设定计数的初值,按正反转判定结果控制电机运转,由光电开关输入的脉冲对托架转过的车位数计数,直至计数结束,控制电机停车,完成存车过程。
取车时,按照上述方法,即可完成取车过程。
4.4 IC卡读写程序
关于车辆的信息,如编号、车库号等控制参数是存放在EEPROM 24C02中的,凡是涉及到控制参数的,都需要对24C02进行读写。
根据芯片写数据的时序,对24C02的写子程序流程如图4-2所示:
内蒙古科技大学毕业设计说明书(毕业论文)
启动操作写入芯片地址A0H等待芯片ACK信号写入数据存放地址等待芯片ACK信号写入车位信息等待芯片ACK信号停止操作 图4.4IC卡写程序流程图
流程图中的启动和停止操作是根据图4-3中的芯片启动和停止时序编写的,图中的ACK信号是芯片每收到一字节后将SDA电平拉低,作为应答。启动操作过程如下: (1)将SCL置低 (2)将SDA置高 (3)将SCL置高 (4)将SDA置低 (5)将S CL置低 停止操作如下: (1) 将SCL置低 (2) 将SDA置低 (3) 将SCL置高
内蒙古科技大学毕业设计说明书(毕业论文)
(4) 将SDA置高 (5) 将SCL置低
其中,以上每步之间都要加入一个空操作。
SDASCL开始停止
图4-3 I2C总线起始及停止状态定义
从图中可以看出在SCL为高电平时,SDA有下降沿到来,高电平时,SDA有上升沿到来,则芯片停止。将一个字节的数据写入24C02的操作过程如图4.4:
将SCL置低将SDA置为要写入位的电平否将SCL置高一个字节是否写完?是将SCL置低将SCL置高SDA是低电平?是将SCL置低否
图4.5字节写操作过程
内蒙古科技大学毕业设计说明书(毕业论文)
芯片读数据的时序可分为两种情况:读当前地址内容(当前地址指上次读写地址加1)的时序;读数据块的时序。其相应的程序流程如图4.5所示。
启动操作启动操作写入芯片地址A0H写入芯片地址A1H等待芯片ACK信号等待芯片ACK信号写入数据地址读取信息等待芯片ACK信号等待芯片ACK信号停止操作
图4.6芯片读程序流程图
4.5 LED显示程序
首先判断有几个空位,通过下面的流程来实现。首先对每一车位进行检测,然后将检测状态送入m,通过m的计数来得到所要显示的数值。