《32路舵机控制机器人C51单片机C语言知识程序代码.doc》由会员分享,可在线阅读,更多相关《32路舵机控制机器人C51单片机C语言知识程序代码.doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、/32路舵机控制机器人C51单片机C语言程序代码说明: 32路舵机控制板,最多可以控制32个舵机,可以对仿生,人形等机器人进行控制,轻松上手。/* 本程序在STC89C51RC单片机中进行过测试,完全正常(晶振11.0592M)*用户可以根据晶振不同自行修改,建议用户先连接PC,通过PC的串口调试* 助手来验证程序是否有效* P30: RXD* P31: TXD*/#include #ifndef _DG_TYPE_#define _DG_TYPE_ typedef unsigned char uchar; typedef unsigned int uint;#endif#define CMD
2、_LEN 75 / 命令长度#define CMD_TAG 1 / 提示符长度void UartInit();void UartSendChar(unsigned char ch);void UartSendStr(uchar *pStr);void UartCharPro(uchar ch);void UartCmdPro();uchar g_ucCmdCMD_LEN + 1 = 0;uchar g_ucLen = 0; / 命令长度uchar g_ucCur = 1; / 光标位置void main() UartInit(); UartSendStr(#1P1500T100rn); / S
3、1号舵机在时间100ms内移动到PWM1500的位置 / UartSendStr(#1GC2rn); / 执行第一个动作组,循环执行2次 while(1);/* Name: UartInit* Func:* 串行通信初始化* Para:* uchar ch: 发送的字符* Return: None*/void UartInit() SCON = 0x50; / SCON: serail mode 1 8-bit UART TMOD |= 0x20; / TMOD: timer 1 mode 2 8-bit reload PCON |= 0x80; / SMOD=1; TH1 = 0xFA; /
4、 Baud:9600 fosc=11.0592MHz TL1 = 0xFA; IE |= 0x90; / 使能串行中断 TR1 = 1; / 启动TIMER1 EA = 1;/* Name: UartSendChar* Func:* 向串口发送一个字符* Para:* uchar ch: 发送的字符* Return: None*/void UartSendChar(unsigned char ch) SBUF = ch; while(TI=0); TI=0;/* Name: UartSendStr* Func:* 向串口发送以0结尾的字符串* Para:* uchar *pStr: 发送的字符
5、指针* Return: None*/void UartSendStr(uchar *pStr) while(*pStr != 0) SBUF = *pStr+; while(TI=0); TI=0; void UartSrv() interrupt 4unsigned char ch;ch = SBUF;if(RI) RI = 0; /UartSendChar(ch); /P0 = ch; UartCharPro(ch); /* Name: UartCharPro* Func:* 字符处理过程函数。根据输入的普通字符或控制字符判断回显。* Para:* uchar ch: 判断的字符* Ret
6、urn: None*/void UartCharPro(uchar ch) P0 = ch; switch(ch) case b: / 退格键 if(g_ucCur CMD_TAG) UartSendChar(b); UartSendChar( ); UartSendChar(b); if(g_ucLen) g_ucLen-; g_ucCur-; break; case r: / 回车键 UartSendChar(r); UartSendChar(n); g_ucCmdg_ucLen = 0; UartSendStr(g_ucCmd); UartSendChar(r); UartSendChar(n); UartSendChar(); g_ucLen = 0; g_ucCur = 1; break; default: / 其它字符 UartSendChar(ch); g_ucCur+; if(g_ucLen CMD_LEN) g_ucCmdg_ucLen+ = ch; else g_ucCmdg_ucLen = 0;