
系统的单片机程序:
#include"reg52.h"
#definedet_Dist2.55//
单个脉冲对应的小车行走距离,其值为车轮周长
/4#defineRD9//
小车对角轴长度。
#definePI3.1415926
#defineANG_9090
#defineANG_90_T102
#defineANG_180189/
全局变量定义区。
/sbitP10=P1^0//
控制继电器的开闭sbitP11=P1^1//
控制金属接近开关。
扩展资料:
控制器搏蠢部分:接收传感器部分传递过来的信嫌银森号,并根据事前写入的决策系统(软件程序),来决定机器人对外部信号的反应,将控制信号发给执行器部分。好比人的大脑。
执行器部分:驱动机器人做出各种行为,包括发出各种信号(点亮发光二极管、发出声音)的部分,并且可以根据控制器部分的信号调整自己的状态。芹亩
对机器人小车来说,最基本的就是轮子。这部分就好比人的四肢一样。 传感器部分:机器人用来读取各种外部信号的传感器,以及控制机器人行动的各种开关。好比人的眼睛、耳朵等感觉器官。
这要看用的是PWM哪个通道来控制了。
下面用PWM2和PWM3来控制。
#include <hidef.h> /* common defines and macros */
#include <mc9s12dg128.h>/* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
int cnt2=80,cnt3=20
void init_pwm(void)
{
PWME=0X00//PWM禁止
PWMPRCLK=0x10//Clock B=8M/2=4MHz
PWMSCLB=200//Clock SB=Clock B/2/200=10kHz
PWMCLK=0x0c//设置PWM2、PWM3的时钟源均为Clock SB
PWMPOL=0x0c//设置带扮PWM2、PWM3的极性均为1
PWMCAE=0x00//设置PWM2、PWM3的对齐方式为左对齐
PWMPER2=200
PWMDTY2=cnt2 //设置PWM2的周期内高电平时间
PWMPER3=200
PWMDTY3=cnt3 //设置PWM3的周期内高电平时间
PWME=0x0c//PWM2、碰行信PWM3使能
}
void init_ect(void)
{
TSCR1_TEN=0//计数器清零
TSCR2_PR=7// Clock=Bus/128
TIOS_IOS1=1//设置ECT1口为输出比笑轮较
TC1=406250//设置每6500ms产生定时中断
DLYCT=0x01//延迟256个Bus周期,即32us
PACN1=0//清零TC1寄存器
TIE_C1I=1//设置ECT1口中断使能
TSCR1_TEN=1//计数开始
}
void interrupt 9 run(void) //计数650ms后中断
{
TFLG1_C1F=1//清除ECT1的中断标志
TC1=TC1+406250
cnt2=cnt2-5
cnt3=cnt3+5
PWMPER2=cnt2
PWMPER3=cnt3
if (cnt2==0)
init_pwm()
}
void main(void)
{
DDRB=0XFF
PORTB=0x04
init_pwm()
init_ect()
EnableInterrupts
for()
{ }
}
智能车烧世虚录不进去的原因可能有以下几种:1.硬件故障:智能车的拦腊硬件出现故障,例如电路板损坏、芯片失效等,会导致烧录失败。
2.软件问题:烧录程序出现问题,例如烧录工具版本不兼容、烧录程序代码有误等,会导致烧录失败。
3.通讯问题:烧录时与智能车通讯出现问题,例如串口连接不稳定、通讯速度设置错误等,会导致烧录失败。
解决方法:
1.检查硬件:检查智能车硬件是否正常,如有问题需要修复或更换。
2.检查软件:检查烧录程序是否完整且正确,如有问题需要重新下载或修改。
3.检简返滑查通讯:检查通讯连接是否正常,如有问题需要重新连接或设置通讯参数。
总之,要烧录成功,需要综合考虑硬件、软件和通讯等多个方面,找出问题所在,然后有针对性地解决问题。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)