遥控电动小车实验与程序设计.doc

上传人:laozhun 文档编号:4143536 上传时间:2023-04-07 格式:DOC 页数:17 大小:461.50KB
返回 下载 相关 举报
遥控电动小车实验与程序设计.doc_第1页
第1页 / 共17页
遥控电动小车实验与程序设计.doc_第2页
第2页 / 共17页
遥控电动小车实验与程序设计.doc_第3页
第3页 / 共17页
遥控电动小车实验与程序设计.doc_第4页
第4页 / 共17页
遥控电动小车实验与程序设计.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《遥控电动小车实验与程序设计.doc》由会员分享,可在线阅读,更多相关《遥控电动小车实验与程序设计.doc(17页珍藏版)》请在三一办公上搜索。

1、遥控小车及程序一、 实验前言随着科技的发展,近年来单片机等微型处理器在控制方面的应用越来越多。加之其易于使用、性价比高,所以用该类型芯片开发的产品成本低廉且使用方便。我们正是看中了单片机处理器的这些优点,经过性价比的分析设计了出了基于51系列的AT89S52处理器的电动遥控小车。本作品主要采用红外发送和红外接收技术,利用PC838红外接收管接收红外遥控发出的信号,然后将数据传送至AT89S52单片机中进行数据处理,从而控制L297电机驱动。实现小车遥控控制的功能。二、模块分析1、红外控制模块方案一:红外发射器使用PT2262/PT2272芯片搭建而成,红外接收模块使用PC838红外接收管搭建。

2、方案二:红外发射器直接使用市场现成的红外发射模块。由于自己搭建的红外发射器不稳定,且干扰因素多,综合考虑,红外发射器采用市场现成模块电路。红外接收模块由红外接受管PC838及相应器件搭建。红外遥控原理: 一般红外遥控器的输出都是用编码后串行数据对3840kHz的方波进行脉冲幅度调制而产生的。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”。上述“0”和“1”组成

3、的32位二进制码经38kHz的载频进行二次调制,然后再通过红外发射二极管产生红外线向空间发射。一般电视遥控器的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。后16位为8位的操作码和8位的操作反码,用于核对数据是否接收准确。根据红外编码的格式,发送数据前需要先发送9ms的起始码和4.5ms的结果码。遥控串行数据编码波形如下图所示:接收方一般使用TL0038一体化红外线接收器进行接收解码,当TL0038接收到38kHz红外信号时,输出端输出低电平,否则为高电平。所以红外遥控器发送红外信号时,参考上面遥控串行数据编码波形图,在低电平

4、处发送38kHz红外信号,高电平处则不发送红外信号。2、 电机驱动模块:方案一:使用L297驱动芯片做直流电机驱动,原理:芯片内的PWM斩波器电路可开关模式下调节步进电机绕组中的电机绕组中的电流。该集成电路采用了SGS公司的模拟/数字兼容的I2L技术,使用5V的电源电压,全部信号的连接都与TFL/CMOS或集电极开路的晶体管兼容。L297的芯片引脚特别紧凑,采用双列直插20脚塑封封装。方案二:使用L298驱动芯片做直流电机驱动,驱动原理和297相似,但是该芯片使用时产生热量过多。综合考虑,采用方案一。3、 显示模块方案一:采用LCD液晶显示器,LCD有明显的优点:功耗的,美观,寿命长,尺寸小,

5、使用方便,但其成本相对LED较高。方案二:采用LED数码管显示,LED数码管亮度高,但不足以达到实验显示要求,且难以控制。综合考虑采用方案一。三、系统分析该系统是基于51系列的AT89S52处理器的电动遥控小车。本作品主要采用红外发送和红外接收技术,使用红外遥控板上的K1及前后左右五个控制按键触发发射红外信号,利用PC838红外接收管接收红外遥控发出的信号,然后将数据传送至AT89S52单片机中进行数据处理,从而控制L297电机驱动。实现小车遥控控制的功能。1、 硬件模块设计显示输出模块LCD1602液晶红外接受器PC838芯片直流电机驱动L 297电源4节1.2v蓄电池声音报警蜂鸣器中央处理

6、器AT89s51单片机仿 真 图小车整体图显示部分遥控部分2、 软件模块设计系统初始化系统数据转化与LCD显示 外 部 中断0等待NoYes处理器对中断数据处理 L297 驱动直流电机车体四、 实验感悟 通过这次实验,我们锻炼了自己的动手能力,了解了遥控小车的原理及制作过程,使我们的团队意识增强,经过几天的努力,完成了模块的设计与制作,完成了整个系统的编程、组装与调试。基本上满足竞赛的要求,使用模块时,综合考虑电路的简单、电路的成本、以及电路的性能。此次设计仍有一些问题没有得到完全解决,对一些器件的应用还不是很熟悉,因此在今后的学习中,更要好好学习知识,增加技能训练。比如红外传感器的原理与应用

7、的知识,光敏二极管的原理与应用电路等,当我们遇到不懂不会的问题时,我们能通过图书馆、网络等各种渠道学习想要知道的知识,有时候虽然只是一个很简单的小车模块,但使我们认识到自己所学的专业知识在实践中所出现的很大的不足。在实际的设计当中也应注意到的许多问题,如在焊接时应提前布线、制图,以免在调试过程时无从下手。虽然在这次设计中对于知识的运用和衔接还不够熟练,但是我们将在以后的工作和学习中继续努力、不断完善。学习自己的专业知识,加强自己的动手实践,努力提高自己的专业技能,能在今后的生活学习中更好的应用。五、 参考文献1 董少明单片机原理与应用北京:北京理工大学出版社,20092 黄智伟全国大学生电子设

8、计竞赛电路设计北京:北京航空航天出版社,20063 张毅刚等电子系统设计哈尔滨:哈尔滨工业大学出版社,20094 全国大学生电子设计竞赛组委会全国大学生电子设计竞赛获奖作品选编北京:北京理工大学出版社附录 1、遥控系统功能键列表按键编号按键码按键名功能10x10K1停止20x1DUP前进30x12DOWN后退40x19L左转50x11R右转附录 2、遥控小车硬件连接图附录2、系统软件程序/* * 红外遥控直流电机运行 * * MCU: AT89S52 晶振:11.0592MHz * */#include /管脚定义头文件#include lcd.h#define uchar unsigned

9、char#define uint unsigned intsbit BEEP = P37; /蜂鸣器sbit IRIN = P32; /红外接收端口bit flag = 0; /红外接收有效标志uchar code cdis1 = IR_CODE: - H ;uchar code cdis2 = RATE : ;uchar code cdis3 = STOP; /停止 uchar code cdis4 = ; /正转uchar code cdis5 = ; /反转uchar code cdis6 = G0!; /前进uchar code cdis7 = BACK; /后退uchar IRCOM

10、6;char code reserve3_at_ 0x3b; /保留0x3b开始的3个字节/* x*0.14ms 延时子函数*/void delay(uchar x) uchar i; while(x-) for (i = 0; i14; i+); /* 蜂鸣器响一声*/void beep(void) uchar i; for (i=0;i0x09) IRCOM5=IRCOM5+0x37; else IRCOM5=IRCOM5+0x30; IRCOM4=(IRCOM4&0xf0)4; /高位 if(IRCOM40x09) IRCOM4=IRCOM4+0x37; else IRCOM4=IRCO

11、M4+0x30; lcd_pos(10,1); /第一行10列 lcd_wdat(IRCOM4); lcd_wdat(IRCOM5);/* 主函数*/void main(void) P0 = 0xff; /端口初始化 P2 = 0xff; P1 = 0xf0; /步进电机断电 lcd_init(); /LCD1602初始化 lcd_pos(0,1); /设置显示位置为第一行 wr_string(cdis1,0); /显示字符串1 lcd_pos(0,2); /设置显示位置为第二行 wr_string(cdis2,0); /显示字符串2 lcd_pos(10,2); /第二行10列 wr_str

12、ing(cdis3,0); /显示停止标记 EA = 1; /允许总中断 EX0 = 1; /使能INT0外部中断 IT0 = 1; /下降沿触发 /flag= 1; while(1) code_conv(); /显示键码 if(flag) if(IRCOM2 = 0x10) /为遥控器K1键 lcd_pos(10,2); /第二行10列 wr_string(cdis3,0); /显示停止标记 P1 = 0xf0; /步进电机断电 if(IRCOM2 = 0x1d) /为遥控器的 UP键 /小车前进 lcd_pos(10,2); /第二行10列 wr_string(cdis6,0); /的显示

13、前进标记 P1 = 0xf9; /取数据,前进 delay(5); if(IRCOM2 = 0x12) /为遥控器的 DOWN键 /小车后退 lcd_pos(10,2); /第二行10列 wr_string(cdis7,0); /显示后退标记 P1 = 0xf5; /取数据,后退 delay(5); if(IRCOM2 = 0x19) /为遥控器的 L键 /小车左转 lcd_pos(10,2); /第二行10列 wr_string(cdis5,0); /显示左转标记 P1 = 0xe8; /取数据,左转 delay(5); if(IRCOM2 = 0x11) /为遥控器的 R键 /小车右转 l

14、cd_pos(10,2); /第二行10列 wr_string(cdis4,0); /显示右转标记 P1 = 0xd1; /取数据,右转 delay(5); flag = 0; /* INT0 中断服务子函数 (负责红外解码)*/void IR_IN()interrupt 0 unsigned char j, k, Num = 0; EX0 = 0; /关闭INT0中断 delay(15); /延时 if (IRIN = 1) /再确认IR信号是否出现 EX0 = 1; /开INT0中断 return ; /退出 while (!IRIN) /等IR变为高电平,跳过9ms的前导低电平信号。 d

15、elay(1); while (IRIN) /等IR变为低电平,跳过4.5ms的前导高电平信号。 delay(1); for (j = 0; j 4; j+) /收集四组数据 for (k = 0; k = 15) EX0 = 1; /0.14ms计数过长自动离开。 return ; /高电平计数完毕 IRCOMj = IRCOMj 1; /数据最高位补“0” if (Num = 8) IRCOMj = IRCOMj | 0x80; /数据最高位补“1” Num = 0; /end for k /end for j if (IRCOM0 != 0x00) /比较用户码 EX0 = 1; /开INT0中断 return ; /退出 if (IRCOM2 != IRCOM3) /接收数据是否正确 EX0 = 1; /开INT0中断 return ; /退出 beep(); /蜂鸣器响一声 flag = 1; EX0 = 1; /重新开INT0中断

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号