一种具有12路PWM直流电机的串口遥控机器人
技术领域
本实用新型涉及一种一种具有12路PWM直流电机的串口遥控机器人,尤其是一种可以用串口无线WIFI遥控的智能机器人。
背景技术
现有常规遥控机人按照无线电信号的遥控进行动作,也可以按照存储在寄存器里面的程序动作,但是动作电机较少,一般只有4路PWM直流电机,这对机器人的行动带来很大的不便。一种具有12路PWM直流电机的串口遥控机器人是一种具有12路PWM直流电机的机器人,操作者可以使用计算机串口WIFI信号对它的12路直流电机进行遥控,它也可以按照其控制电路中的24C04铁电存储器里面的数据,在STC11F60单片机的控制下进行动作。
实用新型内容
为了解决常规遥控机器人动作电机较少的缺点,一种具有12路PWM直流电机的串口遥控机器人提供了一种具有12路PWM直流电机进行串口WIFI信号遥控动作的机器人。它可以按照电路中的24C04铁电存储器里面的数据,在STC11F60单片机的控制下进行动作,也可以按照操作人员计算机串口WIFI信号的遥控进行动作。由于它具有12路PWM直流电机,所以它可以进行行走,抬手,伸手等多种动作。
本实用新型解决其技术问题所采用的技术方案是:一种具有12路PWM直流电机的串口遥控机器人是一种可以被WIFI串口信号遥控的机器人。它依靠外壳下面装配的12路PWN直流电机在操作人员的计算机串口WIFI信号的遥控下进行的转动进行各种动作,它可以在电机的转动下进行移动,行走,抬手等等动作。同时,它也可以按照控制电路中的24C04铁电存储器里面的数据,在STC11F60单片机(1)的控制下进行电机的转动等动作。它的控制电路如图1所示。在图1中,STC11F60单片机(1)的P1中的P1.0, P1.1, P1.2, P1.3, P1.4, P1.5, P1.6,P1.7端口,P3 中的P3.2, P3.5, P3.6, P3.7端口在定时器TIME0产生12路PWM方波,上面总共12路IO口,每个IO口产生一路PWM信号,总共12路PWM控制方波信号。WIFI模块(2)连接在单片机STC11F60(1)的串口上面,它接收操作人员发出的数据,然后单片机STC11F60 (1)按照程序减少或增加PWM方波的占空比。同时单片机(1)按照铁电存储器24C04(3)中的数据控制上面的PWM方波信号。微云文件分享:12PWM机器人下载地址:
链接: https://pan.baidu.com/s/1oK1L9I1EFRVYrHcABoS7Cg?pwd=y7nn 提取码: y7nn
https://share.weiyun.com/51DCGVd
单片机STC11F60的控制程序是在keill4编译环境下,通过C语言编译并通过串口下载到单片机STC11F60。程序代码如下:
/******************************************************************************
*程序思路说明: *
*关于频率和占空比的确定,对于12M晶振,假定PWM输出频率为1KHZ,这样定时中断次数 *
设定为C=10,即0.01MS中断一次,则TH0=FF,TL0=F6;由于设定中断时间为0.01ms,这样可以设定占空比
可从1-100变化。即0.01ms100=1ms *
*/
#include <regx51.h>
#include <INTRINS.H>
#define uchar unsigned char
#include <intrins.h>
#define OP_READ 0xa1 // 器件地址以及读取操作
#define OP_WRITE 0xa0 // 器件地址以及写入操作
#define MAX_ADDR 0x7f // AT24C02最大地址
/
-
TH0和TL0是计数器0的高8位和低8位计数器,计算办法:TL0=(65536-C)%256; *
-
TH0=(65536-C)/256,其中C为所要计数的次数即多长时间产生一次中断;TMOD是计数器*
-
工作模式选择,0X01表示选用模式1,它有16位计数器,最大计数脉冲为65536,最长时 *
-
间为1ms*65536=65.536ms *
******************************************************************************/
#define V_TH0 0XFF
#define V_TL0 0XF6
#define V_TMOD 0X01
#define V_TH1 0XFF
#define V_TL1 0XF6
#define V_TH2 0XFF
#define V_TL2 0XF6
unsigned char code dis_code[] = {0x7e,0xbd,0xdb,0xe7,0xdb,0xbd,0x7e,0xff};
// 写入到AT24C01的数据串
sbit SDA = P3^4;
sbit SCL = P3^3;
void start();
void stop();
unsigned char shin();
bit shout(unsigned char write_data);
unsigned char read_random(unsigned char random_addr);
void write_byte( unsigned char ad