JK出品单片机自制遥控小车设计(附程序和部分电路).doc_第1页
JK出品单片机自制遥控小车设计(附程序和部分电路).doc_第2页
JK出品单片机自制遥控小车设计(附程序和部分电路).doc_第3页
JK出品单片机自制遥控小车设计(附程序和部分电路).doc_第4页
JK出品单片机自制遥控小车设计(附程序和部分电路).doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

遥控车报告 -JK出品 车名:JK一号机 学院:机电学院(JK) 队员:李凯 陈琦 庄彬 宾明 摘要本课题设计的遥控玩具车主要有三大模块组成:无线发射模块、无线接收模块和驱动模块。我们的设计以mega16芯片为核心,无线遥控发射/接收模块为apc220,驱动芯片为L298N。驱动电动机正反转的电路连接无线遥控接收电路构成一个驱动模块驱动电动机的前进、后退、左转和右转和各种微调控制。经过实践证明,我们的设计可以很好的实现题目给出的要求,并且在其要求上我们又进一步进行了完善,是设计具有更好的实用和参考价值。关键字:mega16芯片 L298N芯片 apc220无线发射/接收1、总体设计方案简介遥控玩具车是根据无线信号传送原理来控制小车的前进后退和左右转向的。一般,遥控玩具车都是有两组操纵控制按钮,一组是控制小车的前进(加速)和后退,另一组是控制小车的左右转向的。在我们的设计中,我们是采用四个按钮开关(或摇杆电位器)来分别控制小车的前进、后退、和左右转向的。此设计的遥控玩具车是以单片机mega16的uart异步通信模块控制apc220发出信号;另一块配套的apc220接收信号并传输给另一块mega16;L298N驱动芯片用来实现电动机的正反转。此设计的总体框图如图1所示:接收模块(apc220)L298N电机驱动芯片前进后退左转右转电源发射模块(apc220)控制按钮电源单片机mega单片机图1 总体设计硬件方框图该设计的外围电路是电路设计正常工作的基本保障电源电路提供稳定的+5V工作电压;控制按钮电路是实现对遥控车的实时控制;驱动电路是实现小车动作的电路。(附:选择apc220作为通信模块的原因)整体方案比较:红外线传输方向性强、传输距离短,蓝牙模块信号较稳定,但是传输距离短。相比之下,APC220整体信号稳定,传输距离远且不受方向限制,抗干扰和灵活度有较大优势。2、系统电路设计 1、无线发送和接收模块电路图 (1)控制发射按钮及部分必要外围电路 (2)无线通信电路(发射及接收)测试结果分析:经测试,各模块工作正常,程序、电路和整体机构配合良好。前轮驱动灵活,可基本代替舵机使用。通信传输正常,传输距离可达500m,且不受障碍物和方向的限制。3、软件系统框图 (1)发送模块软件框图 (2)接收模块软件框图初始化引脚、uart发送检测是否按键键盘扫描发送指定信息初始化引脚、uart接收,pwm等是否接到信息按信息处理左右前后转动3、核心程序代码 (1)发送部分程序代码#include #include #define uchar unsigned char#define uint unsigned int#define mclk 11059200char key_down(void) /检验按键是否按下 DDRA=0X00; PORTA=0X0F; return (PINA&0X0F)=0X0F ? 0:1;void delay(uint ms) uint i,j; for(i=0;ims;i+) for(j=0;j1141;j+);void uart_init(uint baud) UCSRB=0x00; UCSRA=0x00; /控制寄存器清零 UCSRC=(1URSEL)|(0UPM0)|(3UCSZ0); /选择UCSRC,异步模式,禁止 / 校验,1位停止位,8位数据位 UBRRL=(mclk/16/baud-1)%256; UBRRH=(mclk/16/baud-1)/256; /设置波特率 UCSRB=(1TXEN)|(1RXEN)|(1RXCIE); /接收、发送使能,接收中断使能 SREG=BIT(7); /全局中断开放 DDRD|=0X02; /配置TX为输出(很重要)void uart_sendB(uchar data) while(!(UCSRA&(BIT(UDRE) ; UDR=data; while(!(UCSRA&(BIT(TXC); UCSRA|=BIT(TXC);void main(void) uchar key; DDRD=0X02; DDRA=0X00; PORTA=0X0F; uart_init(9600); /PWM_initilize(); while(1) if(key_down()=1) delay(20); key=PINA&0x0f; if(key=0x0e) /按下前进键,发送s uart_sendB(s); delay(5); else if(key=0x0d) /按下后退键,发送b uart_sendB(b); delay(5); else if(key=0x06) /按下前和左转键,发送8 uart_sendB(8); delay(5); else if(key=0x07) /按下左转键,发送l uart_sendB(l); delay(5); else if(key=0x0a) /按下前和右转键,发送9 uart_sendB(9); delay(5); else if(key=0x0b) /按下右转键,发送r uart_sendB(r); delay(5); else if(key=0x05) /按下后退和左键,发送r uart_sendB(5); delay(5); else if(key=0x09) /按下后退和左键,发送r uart_sendB(6); delay(5); else uart_sendB(n); /没有键按下,发送n delay(5); delay(10); (2)接收部分程序代码#include #include /#include 1602.c#define uchar unsigned char#define uint unsigned int#define mclk 11059200#pragma interrupt_handler uart_receive:12uchar ray,naruto,conan,rdata,flag=0;void delay(uint ms) uint i,j;for(i=0;ims;i+) for(j=0;j1141;j+); void port_init(void) TCCR1A=0XA1; /8位快速PWM 1024分频 TCCR1B=0X0D; TCNT1H=0; TCNT1L=0; OCR1AL=128; /左轮 OCR1BL=128; DDRA=0XFF; /右轮 DDRD=0XCC; /电机控制端口 PORTD=0X00;void start(void) /正常速度 PORTD=0X44; /0100右 0100左 OCR1AL=100; /右轮 OCR1BL=120; /左轮void stop(void) /急停 PORTD=0XCC; OCR1AL=0; OCR1BL=0;void turnleft(void) /左转 PORTD=0X48; OCR1AL=230; OCR1BL=230;void frontleft(void) /调整左转 PORTD=0X44; OCR1AL=220; OCR1BL=80;void turnright(void) /右转 PORTD=0X84; OCR1AL=230; OCR1BL=230;void frontright(void) /调整右转 PORTD=0X44; OCR1AL=100; OCR1BL=250;void back(void) /后退 PORTD=0X88; OCR1AL=100; OCR1BL=100;void uart_init(uint baud) UCSRB=0x00; UCSRA=0x00; /控制寄存器清零 UCSRC=(1URSEL)|(0UPM0)|(3UCSZ0); /选择UCSRC,异步模式,禁止 / 校验,1位停止位,8位数据位 UBRRL=(mclk/16/baud-1)%256; UBRRH=(mclk/16/baud-1)/256; /设置波特率 UCSRB=(1RXEN)|(1RXCIE); /接收使能,接收中断使能 SREG=BIT(7); /全局中断开放 DDRD|=0X30; /配置TX为输出(很重要)uchar uart_receive(void) UCSRB&=BIT(RXCIE); rdata=UDR; flag=1; UCSRB|=BIT(RXCIE); return rdata; void main(void) uchar front; DDRD|=0X30; port_init(); uart_init(9600); DDRA=0XFF; PORTA=0XFF; /show(p,6); while(1) if(flag=1) /接到数据 /show(rdata,0); if(rdata=n) /收到闲置信号,直线前行 stop(); conan=0; PORTA=0XFF; delay(10); else if(rdata=s) / 收到前进信号 start(); conan=1; PORTA=0XFF; delay(10); else if(rdata=b) /收到倒车信号 back(); conan=2; PORTA=0XF3; delay(10); else if(rdata=l) /收到左转信号 turnleft(); conan=3; PORTA=0XFD; delay(10); else if(rdata=r) /收到右转信号 turnright(); conan=4; PORTA=0XFE; delay(100); else if(rdata=8) /收到调整左转信号 frontleft(); conan=5; PORTA=0XFF; delay(10); else if(rdata=9) /收到调整右转信号 frontright(); conan=6; PORTA=0XFF; delay(10); else if(rdata=5) /收到后调整左转信号 back(); conan=6; PORTA=0XF3; delay(10); else if(rdata=6)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论