智能塔吊设计说明书(1)

更新时间:2024-04-23 22:57:01 阅读量: 综合文库 文档下载

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

全 国 大 学 生 物联 网 应 用 软件创新大赛作品设计说明书

设计题目:智能高效塔吊

设 计 者: 指导教师:

目录

摘要………………………………………………………………………………1

第一章 绪论………………………………………………………………………1 1.1塔吊现状………………………………………………………………1 1.2智能塔吊研究意义…………………………………………………………2 第二章 设计方案……………………………………………………………………2 2.1整体设计思路……………………………………………………………2 2.2整体设计框架………………………………………………………………3 第三章 辅助设计………………………………………………………………4 3.1 AT89C51单片机控制芯片…………………………………………………4 3.2 电机驱动芯片………………………………………………………………5

3.3 A/D模数转换芯片………………………………………………………6

第四章 硬件设计………………………………………………………………8 4.1驱动直流电机…………………………………………………………………8 设计心得……………………………………………………………………………10 参考文献……………………………………………………………………………11 附录…………………………………………………………………………………12

智能塔吊设计说明书

摘要

智能塔吊控制器为针对塔吊在工地实际施工中的安全隐患而研制。控制器内部有单片机最小系统、实时时钟等集成电路组成,为了提高塔吊控制的可靠性与精确度,在塔吊上方安装了视频监控系统,可进行远程控制。微型控制器主要完成塔吊在施工过程中的升降以及旋转。拉力传感系统用于力矩实时监测、超限报警和保护等功能,为塔吊的安全施工提供保护措施,可广泛应用于各种塔吊控制场合。

关键词:AT89C51单片机 塔吊控制器 3G网络

第一章 绪论

在当今的信息时代,物联网有着巨大无比的发展潜力,十二五规划又给物联网的发展注入了鲜活的生命力,发展的物联网给人类带来了惊人的里程碑,物联网的发展给信息化的世界改革浪潮。它不仅节省时间,空间等,提高了工作效率,而且可以减少劳动强度。

1.1塔吊现状

塔吊,是目前在建筑工地上使用得非常普遍的大型垂直吊装起重运输机械设备。在日常的使用中,如果塔吊司机不知道最大能吊起多重的货物,也不知道正在吊的货物有多重,所以塔吊存在发生塔身翻侧、折断和塔吊吊臂折断等事故的危险。由于塔吊体型庞大,一旦发生事故就必然是大事故或者是特大事故,不但造成人员的伤亡,往往还伴随着巨大的经济损失;而导致事故的原因大部分都是因为塔吊在起吊货物时超重。因此,如何知道塔吊当前所起吊货物的重量是否超重至关重要,本文介绍的塔吊起重性监控系统及智能配重系统就是为解决这个问题而研制。

1.2智能塔吊研究意义

在事故多发的建筑行业,保证施工人员的人身安全,工地的建筑材料、及施工质量、设备等财产安全是施工单位管理者关心的头等大事。建筑工地属于环境复杂,人员复杂的区域。考虑到设备及人员的安全,一套有效的现场及远程视频监控系统对于管理者来说是非常有必要的。通过视频监控系统,管理者可以了解

到现场的施工进度,可以远程监控现场的生产操作过程,和现场材料的安全。塔式起重机安全监控设备的使用,一方面由于准确地记录了其运行情况,为监督部门提供了加大管理力度、严格执法的依据。进而督促操作和指挥人员提高安全意识减少或杜绝安全事故隐患。另一方面其塔吊监控器及时报警功能要能及时提醒操作人员预防突发的安全隐患。唯一不利的是需要增加部分研发资金,但这与事关人民安全相比是非常值得的。为此,相关专业部门提出了有关塔吊监控器的事项。

第二章 设计方案

2.1整体设计思路

塔式起重机起重性能监控器的主板主要用于传感器信号的检测、处理。本设计采用AT89C51作为主板的控制核心,AT89C51是一种低功耗,高性能CMOS 8位单片机,,采用了AEMEL公司的高密度、非易失性存储技术制造,它有较小的精简I/O端口,体积很小。此外,AT89C51设计和配置了震荡频率可为0HZ并通过软件设置省电模式。AT89C51在空闲模式下,CPU暂停工作,而RAM、定时/计数器、串行口和外中断系统可继续工作,掉电模式冻结振荡器并保存RAM数据,停止芯片其它功能直至硬件复位,所以AT89C51非常适用做应用系统的处理器。

首先从传感器的形变量所转换的电压入口,由于外在的因素是非电量的变化,所以通过传感器通过外在压力的变化不失真地转换成相应的电量,并且经过转换的模拟电压很小,只有几十或者几百mV,要想该电压能够体现出所要表达的物理量,必须经过运放电路放大,把较小的信号放大得到约0~5V之间的电压,以便符合单片机芯片工作的正常共工作电压范围。单片机处理的是数字信号,之前还应需把放大的模拟信号经过A/D转换器转换成数字信号。因此主板芯片通过电压的大小可以传感器所感受的压力大小。在运行情况状态下,如果检测到超重或者计算后的力矩超限,则会提示闪光报警。但是在实际使用中,为了消除起动等情况下的重量冲击信号,需要提供延时保护程序。延时时间为10ms为单位,因此可设定的延迟时间为0ms~255ms。当重量或者力矩超限时间大于本参数值乘以10ms时,才能提示闪光报警。

处理过的信号通过单片机要通过数码管显示出来,数码管显示七段数码管连接单片机的P0口,驱动数码管选择三极管操作简单可行,实际电路也简单,电机的运行通过驱动芯片进行。有信号发生时,附着在电机上运动的磁钢,每经过霍尔元件,霍尔

元件会相应地输出一个脉冲,通过时间和脉冲的大小,进而可以计算得到塔吊吊物高度和钢丝绳所运动的距离,通过霍尔提供的脉冲信号通过单片机输出到电机驱动芯片,从而控制电机的运行状况。进一步可以测出吊钩的高度和小车的位移,两个电机所控制不同对象,一个电机控制小车来回的位移,用来控制吊物与塔吊垂直的距离大小,另外一个电机用来起动吊物。

报警电路就是让相关责任人提早发现非正常运行时所出现的问题,便于及时采取措施面对,消除隐患所带来的事故。然而本设计电机运行的同时,随着重物的加大,当重量值大于重量预警值时,控制器就会驱动发光二极管进行闪光报警,鉴于本设计是实验操作模型设计,选择闪光报警以显示其功能的可行性,不能应用于实际操作中,不易于被人们察觉。然而在实际建筑工地上,塔吊正常运行工作时,当吊物超过一定报警预警值,发出相关声光报警,使人们对声光报警产生的信号更为敏感,采取相应的措施应对,避免事故的发生。

2.2 整体设计框图

通过整体思路的设计,该设计是以AT89C51单片机芯片为核心主板的设计,外围扩展电

路通过单片机对数字信号的处理实现对应的功能。其中,主要有几个单元模块组成电机的驱动电路、霍尔传感器电路、数码管显示电路、压力传感器信号放大模拟转换电路和和闪光报警电路组成,通过他们之间的关联,从而确定出对应的总体设计框图:

平衡装置(后)

长臂转动转动装置 主控制系 统 长臂小车传动装置 铁钩收拉装置

无线遥控装置

第三章 辅助设计

3.1 AT89C51 单片机控制芯片

AT89C51(图三)L公司生产的低电压,高性能CMOS8位单片机,片内含有4k bytes 的可反复擦写的只读程序存储器和128 bytes 的随机存取数据存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C51可为你提供许多高性价比的应用场合,可灵活应用于各种控制领域。

主要性能参数:与MCS-51产品指令完全兼容; 4k字节可重擦写Flash闪速存储器;1000次擦写周期;全静态操作;三级加密程序存储器;128*8字节内部RAM;32个可编程I/O口线;2个16位定时/计数器;6个中断源;可编程串行UART通道;低功耗空闲和掉电模式。

功能特性概述:AT89C51提供以下标准功能:4k字节Flash闪存存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串口通信,片内振荡器及时钟电路。同时,AT89C51可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通讯口及中断系统继续工作。掉电方式保护RAM中的内容,但晶振停止工作并禁止其他所有部件工作直到下一个硬件复位。

3.2 电机驱动芯

L298是STC公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15脚主要特点是:工作电压高,最高工作电压可达46V输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;额定功率25W。内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。使用L298N芯片驱动电机。

3.3 A/D模数转换芯片

ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。芯片转换时间仅为32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI 数据输入端,可以轻易的实现通道功能的选择。

第四章 硬件设计

4.1 驱动直流电机

设计心得

通过这次产品制作,使我们收获很多。首先收获了许多课本以外的通过参加此次机很多知识,这种将知识运用于实践中的机会是非常难得的,它所带给我们的体验也是在书本中无法获得的。在设计过程中,我们将所学的知识重新提炼并运用到真正的实践中,明白学以致用的真谛,并掌握了机械设计技能和要求。尤其是那种一丝不苟的态度,在制作过程中差之毫厘将会谬之千里。同时我们也体会了设计者的艰辛,了解设计过程中遇到的种种困难,因为这也是我们设计过程中所遇到的,而在面对艰辛与困难,我们要做的不是逃避而是勇敢的去面对,有勇气做到坚持到底。我们还明白了何为团队精神,一个人的力量与精力是有限的只有很好的团结其他人,才能创作出好的作品。

拿本次设计的内容来说,塔吊监控的设计主要是从社会实践角度设计的,便于监控塔吊工作的状态情况,实施安全操作。在设计塔吊监控时,不仅要了解塔吊工作的原理,按照其工作状态时各种参数设计,还有其工作时的工作幅度,负荷百分比,外围环境的影响等等因素,无论每一个模块设计,对我们来说都要花相当一段时间了解,然后再综合起来,实现所需的功能。设计过程中花了很长时间在网络上查找相关资料,不仅要了解而且还会用,彻底的搞明白每一点。这样才能更好的设计出塔吊监控器。

不过在设计过程中可以发现的是自己知识的不足,许多基本的知识都已忘记,另外相当熟悉的知识也得不到有效利用,有点眼高手低的感觉,需要查阅资料,不能得到灵活掌握运用,可见自己对知识的学习的掌握还不够好,理应多在实践过程中发现自己的不足,对于以后自己工作时更要努力学习,只有在实践操作中,才能更好的了解自身的不足,激发自己学习的潜力。此外,还得出一个结论:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。毕业设计虽然是对大学知识的一个总结,也可以作为今后实践工作的一个起点。我们还应在社会中学到跟多的应用知识,在实践操作中把理论的知识升华,通过实践才能更好地发现不足,找到理论和实践操

作的差别。

参考文献

[1]江力.单片机原理与应用技术[M].清华大学出版社.2004(8).

[2]杨金岩.8051单片机数据传输接口扩展技术与应用[M].哈尔滨工业大学出版社.1998 [3]徐志良.单片机原理与控制技术[M].北京:机械工业出版社,2001. [4]王晓明.单片机的单片控制[M].北京:北京航空大学出版社,2002.

附 件一 原理图

2060电子秤70无线路由模块50第一位置传感器

第二位置传感器30单片机第一伺服电机第二伺服电机1080摄像头上位机9040 70—主板电路有无线发射、90—接收装置(如图90)、80—监控摄像装置、30—控制装置、10—驱动装置、20—断电自锁装置、50—平衡装置、60—重量检测装置

附 件二 元器件清单

表四 名称 位置 规格 数量 备注

附 件三 应用程序

单片机控制程序:

include #include\#include\sbit beed=P2^7; //电机控制端 //sbit EN1=P1^0; sbit IN1=P1^1; sbit IN2=P1^2;

sbit EN2=P1^3; sbit IN3=P1^4; sbit IN4=P1^5;

sbit nled1=P1^0; sbit nled2=P3^7; sbit nled3=P3^3; sbit nled4=P3^4; sbit nled5=P2^0; sbit nled6=P2^1; sbit nled7=P2^5; sbit nled8=P2^6;

#define sensor_IROA P3//跟上面定义一样,取P3^3-P3^5 //PWM

sbit SPWM1=P1^6;

//控制摄像头左右活动

sbit SPWM2=P1^7; //控制摄像头上下活动 unsigned long PWM_cnt=0;//

unsigned int PWM_G1=33; //初始化中心值 unsigned int PWM_G2=33; // int speed_R=0; int speed_L=0; int pre_RS=0; int pre_LS=0; int set_RS=0;

//包含STC12C5A系列单片机的头文件

//定义两个电机的速度,有正负之分,为正是,正转。(范围-100~100)

int set_LS=0;

int speed_A=0;

unsigned int cnt_s=0; //用于计数PWM的点空比0=100; unsigned long cnt_b=0;

unsigned long cnt_beed=0; //用于控制蜂鸣器 unsigned int flag_beed=1; unsigned int B_counter=0; unsigned char R_date[3]={0}; unsigned char RBuff_date[4]={0}; unsigned char pattern=0; //0:stop 1:start unsigned long cnt_ser=0; unsigned char flag_ser=0;

unsigned char flag_phone=0; //用于手机控制标记 unsigned char check_phone=0; unsigned char flag_PC=0; void boot1left() {

nled1=1; nled2=0; }

void boot1right() { nled1=0; nled2=1; }

void boot1stop() { nled1=1; nled2=1; }

void boot2left() { nled3=1; nled4=0; }

void boot2right() { nled3=0; nled4=1; }

void boot2stop()

//用于舵机直流电机控制

{ nled3=1; nled4=1; }

void boot3left() {

nled5=1; nled6=0; }

void boot3right() { nled5=0; nled6=1; }

void boot3stop() { nled5=1; nled6=1; }

void boot4left() { nled7=1; nled8=0; }

void boot4right() { nled7=0; nled8=1; }

void boot4stop() { nled7=1; nled8=1; }

void delay(unsigned long t) //软件延时带参数t { }

unsigned char sen_inp_IROA() {

unsigned int j,k; for(t;t>0;t--) for(j=20;j>0;j--) for(k=100;k>0;k--);

} { }

unsigned IROA_date; IROA_date=sensor_IROA; IROA_date=~IROA_date; IROA_date &=0x38; IROA_date>>=3; return(IROA_date);

void beed_ctrl(unsigned long time , unsigned int num)

beed=0;

cnt_beed=2*time; B_counter=2*num; beed=1; cnt_b=0;

void display_1602(unsigned int addr,unsigned char temp) {

unsigned int i,w[2]; w[0]=temp/16; w[1]=temp; for(i=0;i<2;i++) { }

switch(w[i]) { }

case 0: print(addr+i,\case 1: print(addr+i,\case 2: print(addr+i,\case 3: print(addr+i,\case 4: print(addr+i,\case 5: print(addr+i,\case 6: print(addr+i,\case 7: print(addr+i,\case 8: print(addr+i,\case 9: print(addr+i,\case 10: print(addr+i,\case 11: print(addr+i,\case 12: print(addr+i,\case 13: print(addr+i,\case 14: print(addr+i,\case 15: print(addr+i,\default: break;

}

void display_1602_10(unsigned int addr,unsigned char temp) { }

/*void cam_left() { }

void cam_right() { }

void cam_up() { }

PWM_G2--; if(PWM_G2<13) { }

PWM_G2=13; PWM_G1--; if(PWM_G1<13) { }

PWM_G1=13;

PWM_G1++; if(PWM_G1>53) { }

PWM_G1=53;

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

print2(addr+i,w[i]); }

unsigned int i,w[3]; w[0]=temp/100; w[1]=temp/10; w[2]=temp;

void cam_down() { }

void cam_mid() { }

/*************init To************/ void init_T0(void) { }

/************TO interrupt********/ void timer0(void) interrupt 1 { // //

TH0=0xff; TL0=0x49;

cnt_s++; //PWM占空比计数 0-100 if(cnt_s>=speed_R) { }

if(cnt_s>=speed_L) { }

if(cnt_s>=100) {

EN1=1; EN2=1; cnt_s=0; EN2=0; EN1=0;

TMOD|=0x01; //定时器工作在模式1

TH0=0xff; //定时初值TH0=0xff TL0=0x49 定时100uS TL0=0x49; TR0=1; ET0=1;

PWM_G1=Byte_Read(0x00);; PWM_G2=Byte_Read(0x01);; PWM_G2++; if(PWM_G2>53) { }

PWM_G2=53;

}

}

/*************motor control***************/ void motor( int m_R, m_L) {

//right motor if(m_R>0) { } else if { } else { }

//left motor if(m_L>0) { }

else if(m_L<0) { } else

IN3=1; IN4=0; m_L=-m_L; speed_L=m_L; IN3=0; IN4=1; speed_L=m_L; IN1=0; IN2=0; IN1=1; IN2=0; m_R=-m_R; speed_R=m_R;

(m_R<0) IN1=0; IN2=1; speed_R=m_R; pre_RS=m_R; pre_LS=m_L;

}

{ }

IN3=0; IN4=0;

/***********初始化系统所有的参数********************/ void init_system() { }

/****************速度记录****************************/ int Mark_Speed(int set) { }

/**********UART***************采用独立波特率发生器******/

if(set==0) {

s_temp=0; }

else if(set<0) { } { }

return s_temp;

s_temp=speed_A; else

s_temp=-speed_A; int s_temp; speed_A=0; for(i=0;i<3;i++) { }

R_date[i]=0; RBuff_date[i]=0; beed=1; unsigned int i; motor(0,0);

void initUart(void) {

SCON=0x50; PCON=0xB0; BRT=0xfa; AUXR=0x11; ES=1; }

//4800 波特率

void SCI_TX(unsigned char date) { }

void uart(void) interrupt 4 { //

if(RI) {

RI=0;

//add your code here. if(flag_phone==0) {

//判断是否是手机连接

if(check_phone==0x44 && RBuff_date[0]==0x44 && RBuff_date[1]==0x31 && { }

//PC控制

if(RBuff_date[0]==0x3C && RBuff_date[1]==0x31 && RBuff_date[2]==0x3E)

flag_phone=1; pattern=1; print(0x03,\beed_ctrl(1500,1); speed_A=100;

check_phone= RBuff_date[0]; RBuff_date[0]= RBuff_date[1]; RBuff_date[1]= RBuff_date[2]; RBuff_date[2]=SBUF;

SBUF=date; while(!TI); TI=0;

RBuff_date[2]==0x0a)

{ }

if(RBuff_date[0]==0x3C && RBuff_date[1]==0x30 && RBuff_date[2]==0x3E) { }

if(RBuff_date[0]==0x7B && RBuff_date[1]==0x31 && RBuff_date[2]==0x7D) { }

else if(RBuff_date[0]==0x7B && RBuff_date[1]==0x30 && RBuff_date[2]==0x7D) { }

else if( RBuff_date[0]==0x50 && RBuff_date[2]==0x00 ) { } else { } } else {

R_date[0]=RBuff_date[0]; R_date[1]=RBuff_date[1]; R_date[2]=RBuff_date[2]; speed_A=RBuff_date[1];

set_RS=Mark_Speed(pre_RS); set_LS=Mark_Speed(pre_LS); motor( set_LS, set_RS); pattern=0; print(0x4f,\init_system(); beed_ctrl(500,2); pattern=1; print(0x4f,\print(0xe3,\ \beed_ctrl(1500,1); pattern=1; print(0x4f,\beed_ctrl(1500,1); pattern=2; print(0x4f,\beed_ctrl(500,4);

}

} else

}

RBuff_date[0]= RBuff_date[1]; RBuff_date[1]= RBuff_date[2]; RBuff_date[2]= RBuff_date[3]; RBuff_date[3]=SBUF; R_date[0]=RBuff_date[0]; R_date[1]=RBuff_date[1]; R_date[2]=RBuff_date[2];

TI=0;

/**************interrupt T1***********/ void timer1(void) interrupt 3 {

cnt_b++; TH1=0xff; TL1=0xdc; PWM_cnt++;

if(PWM_cnt >=PWM_G1 ) { }

if(PWM_cnt >=PWM_G2 ) { }

if(PWM_cnt >= 500) { }

PWM_cnt=0; SPWM1=1; SPWM2=1; SPWM2=0; SPWM1=0;

//49:100us a5:50us

dc:20us ee:10us

//add your code here.

/* }

if(flag_beed==1) {

if(B_counter>0) { }

if(cnt_b>cnt_beed) { }

beed=!beed; cnt_b=0; B_counter--;

}

if(flag_ser==1) { }

cnt_ser++; if(cnt_ser>100) { }

EN1_S=0; flag_ser=0; cnt_ser=0;

*/

/**************init T1****************/ void init_T1(void) { }

/*************initServo****************/ void initServo() {

TMOD|=0x10; TH1=0xff; TL1=0x49; TR1=1; ET1=1;

}

PWM_G1=Byte_Read(0x00); PWM_G2=Byte_Read(0x01);

/************setServo*******************/ void setServo() { }

main(void) { // //

LED1=1; //高电平LED不亮 LED2=1; // P4SW=0xff; init_T0(); init_T1();

//定义ALE PSEN 。。三个引脚为P4.4 P4.5 P4.6 用于控制1602显

Sector_Erase(0x00);

Byte_Program(0x00,PWM_G1) ; Byte_Program(0x01,PWM_G2) ;

示屏

//初始化定时器。

CLK_DIV=0x01; //系统分频工作,速度太快,1602控制不了。 LCM2402_Init(); // 初如化1602显示屏

initUart(); initServo(); init_system(); EA=1;

beed_ctrl(800,3);

print(0x00,\在第一行第一位处从左向右打印\字符串 print(0x40,\print(0x0B,\print(0x4f,\while(1) {

display_1602_10(0x05,PWM_G1); display_1602_10(0x0D,speed_A); display_1602(0x43,RBuff_date[0]); display_1602(0x46,RBuff_date[1]); display_1602(0x49,RBuff_date[2]); display_1602(0x4c,sen_inp_IROA()); if(pattern==1)

{ {

case 0x44: switch(R_date[1]) {

case 0x4c:

switch(R_date[2]) { } break;

switch(R_date[2]) { }

case 0x31: motor(0,speed_A); break; case 0x32: motor(-speed_A,speed_A); break; case 0x33: motor(0,-speed_A); break; default: break;

switch(R_date[0])

case 0x44:

case 0x31: motor(speed_A,speed_A); break; case 0x32: motor(0,0); break;

case 0x33: motor(-speed_A,-speed_A); break; default: break;

break;

switch(R_date[2]) { }

case 0x31: motor(speed_A,0); break;

case 0x32: motor(speed_A,-speed_A); break; case 0x33: motor(-speed_A,0); break; default: break;

case 0x52:

break;

default: } break; case 0x46:

break;

switch(R_date[1]) {

控制第一个电机

控制第二个机械臂

控制第三个机械臂

控制第四个机械臂

case 0x46: // one FF

switch(R_date[2]) { case 0x31: boot1left(); break;

case 0x32:boot1right(); break; case 0x33:boot1stop();break; default: break;

}

break;

case 0x47: // TWO FG switch(R_date[2]) { case 0x31: boot2left(); break;

case 0x32:boot2right(); break; case 0x33:boot2stop();break; default: break;

}

break;

case 0x48: // FH switch(R_date[2]) { case 0x31:boot3left(); break;

case 0x32:boot3right(); break; case 0x33:boot3stop();break; default: break;

}

break;

case 0x49: // FI switch(R_date[2]) { case 0x31:boot4left(); break;

case 0x32:boot4right(); break;

case 0x33:boot4stop();break;

default:

//

//

//

//

}

break;

break;

case 0x4c: switch(R_date[2]) { // case 0x31:LED_F_on();

break;

// case 0x32:LED_F_off(); break; // case 0x33:Light_B=0; break;

// case 0x34:Light_B=1; break; default: break;

}

break;

case 0x42: //控制蜂鸣器 switch(R_date[2]) { case 0x31: beed=0; break; case 0x30: beed=1; break; default:

break;

} break;

}

break; default:

break;

} }

else if(pattern==2) { } else { ; }

if(pattern!=0) {

switch(R_date[0])

{

/

//

}

}

case 0x53:

switch(R_date[1]) { } break; break;

} }

case 0x53:

switch(R_date[2]) { } break;

if(R_date[2]==0x30) { }

if(R_date[2]==0x31) { } break; break;

setServo();

beed_ctrl(500,4); R_date[2]=0; cam_mid(); R_date[2]=0; case 0x31: cam_up();

R_date[2]=0; break;

case 0x32: cam_down(); R_date[2]=0; break; case 0x33: cam_left(); R_date[2]=0; break; case 0x34: cam_right(); R_date[2]=0; break; //增加四个边动方向 case 0x35: cam_up(); case 0x36: cam_up();

cam_left();

R_date[2]=0;

break;

cam_right(); R_date[2]=0; break;

R_date[2]=0;

case 0x37: cam_down(); cam_left();

break;

case 0x38: cam_down(); cam_right(); R_date[2]=0; break; default: break;

case 0x4d:

default:

default:

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

Top