12PWM机器人.docx

上传人:王** 文档编号:812792 上传时间:2024-01-18 格式:DOCX 页数:20 大小:171.09KB
下载 相关 举报
12PWM机器人.docx_第1页
第1页 / 共20页
12PWM机器人.docx_第2页
第2页 / 共20页
12PWM机器人.docx_第3页
第3页 / 共20页
12PWM机器人.docx_第4页
第4页 / 共20页
12PWM机器人.docx_第5页
第5页 / 共20页
12PWM机器人.docx_第6页
第6页 / 共20页
12PWM机器人.docx_第7页
第7页 / 共20页
12PWM机器人.docx_第8页
第8页 / 共20页
12PWM机器人.docx_第9页
第9页 / 共20页
12PWM机器人.docx_第10页
第10页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《12PWM机器人.docx》由会员分享,可在线阅读,更多相关《12PWM机器人.docx(20页珍藏版)》请在优知文库上搜索。

1、一种具有12路PWM直流电机的串口遥控机器人技术领域本实用新型涉及一种一种具有12路PWM直流电机的串口遥控机器人,尤其是一种可以用串口无线WIFI遥控的智能机器人。背景技术现有常规遥控机人按照无线电信号的遥控进行动作,也可以按照存储在寄存器里面的程序动作,但是动作电机较少,一般只有4路PWM直流电机,这对机器人的行动带来很大的不便。一种具有12路PWM直流电机的串口遥控机器人是一种具有12路PWM直流电机的机器人,操作者可以使用计算机串口WIFI信号对它的12路直流电机进行遥控,它也可以按照其控制电路中的24C04铁电存储器里面的数据,在STCl1F60单片机的控制下进行动作。实用新型内容为

2、了解决常规遥控机器人动作电机较少的缺点,一种具有12路PWM直流电机的串口遥控机器人提供了一种具有12路PWM直流电机进行串口WIFI信号遥控动作的机器人。它可以按照电路中的24C04铁电存储器里面的数据,在STCllF60单片机的控制下进行动作,也可以按照操作人员计算机串口WIFI信号的遥控进行动作。由于它具有12路PWM直流电机,所以它可以进行行走,抬手,伸手等多种动作。本实用新型解决其技术问题所采用的技术方案是:一种具有12路PWM直流电机的串口遥控机器人是一种可以被WIFI串口信号遥控的机器人。它依靠外壳下面装配的12路PWN直流电机在操作人员的计算机串口WIFI信号的遥控下进行的转动

3、进行各种动作,它可以在电机的转动下进行移动,行走,抬手等等动作。同时,它也可以按照控制电路中的24C04铁电存储器里面的数据,在STCIlF60单片机(1)的控制下进行电机的转动等动作。它的控制电路如图1所示。在图1中,STCIIF60单片机(1)的PI中的P1.0,Pl.1,Pl.2,Pl.3,Pl.4,Pl.5,Pl.6,PL7端口,P3中的P3.2,P3.5,P3.6,P3.7端口在定时器TIMEo产生12路PWM方波,上面总共12路IO口,每个IO产生一路PWM信号,总共12路PWM控制方波信号。WIFl模块(2)连接在单片机STCIlF60(1)的串口上面,它接收操作人员发出的数据,

4、然后单片机STCIlF60(1)按照程序减少或增加PwM方波的占空比。同时单片机(1)按照铁电存储器24C04(3)中的数据控制上面的PWM方波信号。单片机STCl1F60的控制程序是在keill4编译环境下,通过C语言编译并通过串口下载到单片机STCIlF60。程序代码如下:*程序思路说明:*1* 关于频率和占空比的确定,对于12M晶振,假定PWM输出频率为IKHZ,这样定时中断次数* 设定为C=IO,即0.OlMS中断一次,则THO=FF,TL0=F6;由于设定中断时间为0.Olms,这样可以设定占空比可从ITOO变化。即0.Olms*100=Ims*/includeinclude* de

5、fineucharunsignedcharincludedefineOP,READOxal/器件地址以及读取操作ttdefineOPJrRITEOxaO/器件地址以及写入操作defineMAX.ADDR0x7f/AT24C02最大地址2 *THO和TLO是计数器0的高8位和低8位计数器,计算办法:TLO=(65536-C)%256;*THO=(65536-C)/256,其中C为所要计数的次数即多长时间产生一次中断;TMOD是计数器*工作模式选择,0X01表示选用模式1,它有16位计数器,最大计数脉冲为65536,最长时*间为ImS*65536=65.536ms*/ttdefineV_THOOX

6、FFdefineV_TLO0XF6defineV_TMOD0X01defineV_TH1OXFFdefineV_TL10XF6ttdefineV_TH2OXFFSdefineV_TL20XF6unsignedcharcodedis_code=0x7e,Oxbd,Oxdb,0xe7,Oxdb,Oxbd,0x7e,Oxff);/写入到AT24C01的数据串sbitSDA=P34;sbitSCL=P3-3;voidstart();voidstop();unsignedcharshin();bitshout(unsignedcharwrite_data);unsignedcharread_random

7、(unsignedcharrandom_addr);voidwrite_byte(unsignedcharaddr,unsignedcharwrite_data);voidfi1l_byte(unsignedcharfill_data);voiddelayms(unsignedcharms);voidinit_sys(void);*系统初始化函数*/voidDelay5Ms(void);unsignedcharZKBl,ZKB2,ZKB3,ZKB4,ZKB5,ZKB6,ZKB7,ZKB8,ZKB9,ZKBlO,ZKBll,ZKB12,ZKB13,ZKB14,ZKB15,ZKB16,ZKB17,

8、ZKB18;unsignedcharZKB19,ZKB20,ZKB21,ZKB22,ZKB23,ZKB24,ZKB25,ZKB26,ZKB27,ZKB28,ZKB29,ZKB30,ZKB31,ZKB32;unsignedcharkey_s,key_v,tmp,tmpl;charcodestr=0x7e,Oxbd,Oxdb,0xe7,Oxdb,Oxbd,0x7e,Oxff,0x7e,Oxbd,Oxdb,0xe7,Oxdb,Oxbd,0x7e,Oxff,0x7e,Oxbd,Oxdb,0xe7,Oxdb,Oxbd,0x7e,Oxff);voidsend_str();bitscan_key();voi

9、dproc_key();voiddelayms(unsignedcharms);voidsend_char(unsignedchartxd);unsignedchari;unsignedcharp;unsignedcharpl=0x00,p2,p3,p4;voidmain(void)(init_sys();ZKB1=4O;*占空比初始值设定*/ZKB2=70;*占空比初始值设定*/ZKB3=20;/*占空比初始值设定*/ZKB4=70;/*占空比初始值设定*/ZKB5=30;/*占空比初始值设定*/ZKB6=70;/*占空比初始值设定*/ZKB7=80;/*占空比初始值设定*/ZKB8=70;

10、/*占空比初始值设定*/ZKB9=50;/*占空比初始值设定*/ZKB10=70;/*占空比初始值设定*/ZKBl1=40;/*占空比初始值设定*/ZKB12=40;/*占空比初始值设定*/ZKB13=40;/*占空比初始值设定*/ZKB14=70;/*占空比初始值设定*/ZKB15=60;/*占空比初始值设定*/ZKB16=70;/*占空比初始值设定*/ZKB17=40;/*占空比初始值设定*/ZKB18=70;/*占空比初始值设定*/ZKB19=20;ZKB20=70;ZKB21=30;ZKB22=70;ZKB23=80;ZKB24=70;ZKB25=50;ZKB26=70;ZKB27=4

11、0;ZKB28=40;ZKB29=40;ZKB30=70;ZKB31=60;ZKB32=70;SDA = 1;SCL = 1;/ fill_byte(OxOO);while(1)(if(RI)(RI = O;tmp = SBUF;*占空比初始值设定*/*占空比初始值设定*/*占空比初始值设定*/*占空比初始值设定*/*占空比初始值设定*/*占空比初始值设定*/*占空比初始值设定*/*占空比初始值设定*/*占空比初始值设定*/*占空比初始值设定*/*占空比初始值设定*/*占空比初始值设定*/*占空比初始值设定*/*占空比初始值设定*/全部填充Oxff/是否有数据到来/暂存接收到的数据/tmpI=

12、SBUF+;/dis_codei=SBUF;/数据传送到PO口/str1=SBUF;write_byte(0X00,tmp);/write_byte(0X00,strl);/write_byte(0X01,tmpl);PO=read_random(0X00);/循环读取24Cxx内容,并输出到PO口/P2=read_random(0X01);pl=read_random(0X00);/p2=read_random(0X01);/delayms(250);/回传接收到的数据send_char(tmp);/send_str()tmpl=stri;write_byte(0X01,tmpl);i+;/

13、下一个字符P2=read_random(0X01);/循环读取24Cxx内容,并输出到Po口if(!P0_0)如果按了+键,增加占空比(Delay5Ms();if(!P0_0)(ZKBl-;/ZKB1=90;)Iif(!P0_l)如果按了+键,增加占空比(Delay5Ms();if(!P0_l)(ZKB1+;/ZKB1=20;)if(!P0.2)如果按了+键,增加占空比(Delay5Ms();if(!P0_2)(ZKB2;/ZKB1=90;)if(!P0_3)如果按了+键,增加占空比(Delay5Ms();if(!P0_3)(ZKB2+;/ZKB1=20;)if(!P0_4)如果按了+键,增加

14、占空比(Delay5Ms();if(!P0_4)(ZKB3;/ZKB1=90;)Iif(!P0_5)如果按了+键,增加占空比(Delay5Ms();if(!P0_5)(ZKB3+;/ZKB1=20;)if(!P0_6)如果按了+键,增加占空比(Delay5Ms();if(!P0_6)(ZKB4;/ZKB1=90;)Iif(!P0_7)如果按了+键,增加占空比(Delay5Ms();if(!P0_7)(ZKB4+;/ZKB1=20;)if(!P2_0)如果按了+键,增加占空比Delay5Ms();if(!P2_0)ZKB5;/ZKB1=90;)if(!P2_1)如果按了+键,增加占空比(Delay5Ms();if(!P2_1)(ZKB5+;/ZKB1=20;)/if(!SBUF)如果按了一键,减少占空比/Delay5Ms();/if(SBUF=0x02)/ZKBl-;/)/)/*对占空比值限定范围*/if(ZKBl99)ZKBl=I;/if(ZKBKl)ZKB1=99;)*函数功能:对系统进行初始化,包括定时器初始化

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 通信/电子 > 电子电气自动化

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!