欢迎来到天天文库
浏览记录
ID:16425395
大小:414.00 KB
页数:15页
时间:2018-08-09
《单片机大作业-简易红外遥控小车设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、安阳工学院《单片机基础》课程大作业《简易红外遥控小车设计》院系:计算机科学与信息工程学院专业班级:姓名:学号:成绩(教师填写)___________20年月日一、课题名称:《简易红外遥控小车设计》二、方法步骤:1.总体设计主要设计思想:本设计利用通用红外遥控器控制小车后轮两个电机的动作来实现小车走、停、转弯等功能。并通过软件控制小车方向和PWM调速小车的转速。具体思想如下:通过外部中断1接收红外信息,并通过软件解码,根据接收信息的不同通过PWM和控制函数做出响应,并且在二极管上面反映出来,所以说二极管充当车灯和
2、档位指示灯的作用,且每次接收信号,蜂鸣器鸣叫用来显示有信号的传入。主要设计任务:红外遥控小车的设计主要分两大步,第一是硬件实现的设计,第二是单片机软件实现的设计。(1)其中硬件又分几块:51单片机最小系统板,小型直流电机(3~9V)驱动电路模块,红外接收模块(已集成在最小系统板),蜂鸣器和二极管显示模块,车体。(2)软件比较简单,但也分了几块:外部中断红外接收解码模块,PWM电机调速模块,主程序。2.设计任务与要求(1)主要完成的性能指标本小车设计完成后能够实现如下功能:前进、后退、左前传(以做轮胎为轴转弯)、
3、右前转、左圆转(以车体为轴进行转弯)、右圆转、左倒转、右倒转、紧急暂停、123级加减速。(2)器件选择本设计主要用到以下材料:51单片机一个、通用遥控器一个、红外接收头一个、5号电池7节、车体(双电机+万向轮)一套、蜂鸣器一个、杜邦线若干、二极管9个、L9110S电机驱动芯片2个、其他电阻电容若干(3)单片机选择本设计用到宏晶公司的STC——125A32Ad单片机(4)说明总体框图(可选)51最小系统电机驱动二极管显示5V直流电机(5)画出总线路图(硬件)51单片机最小系统如右:红外电路图如下:L9110S电机
4、驱动电路如下:L9110S电气特性如下:完成后的驱动:实现后的实物图如下:(6)流程图及程序清单//*******************************************************************************//***************简易红外小车完全调试程序//***************版本V0.2//***************2012年5月13日10:49:26//***************修改优化时间2012年5月14日0:02:21//
5、***************再次修改时间2012年5月18日20:49:28//***************Madeby**************#include#include"intrins.h"#defineuintunsignedint#defineucharunsignedcharsbitM11=P1^0;//电机1接口sbitM12=P1^1;sbitM21=P1^2;//电机2接口sbitM22=P1^3;sbitLED0=P0^0;//左前灯sbitLED1=P0^1;/
6、/档1灯sbitLED2=P0^2;//档2灯sbitLED3=P0^3;//档3灯sbitLED4=P0^4;//紧急灯sbitLED5=P0^5;//右前灯sbitLED6=P0^6;//左后灯sbitLED7=P0^7;//右后灯sbitF=P1^4;//蜂鸣器接口ucharTEMP1=0;//全局变量,用于存放红外返回值-用于PWM占空比的控制ucharTEMP2=10;//用于方向的控制sbitInt0=P3^3;//红外接收采用外部中断1uchardatabus[7];//用于红外接收存放数据//*
7、***********************************************************//延时函数voiddelay1(uintxms)//delay0.1ms{uinti,j;for(i=xms;i>0;i--)for(j=13;j>0;j--);}//************************************************************//********************接受解码函数ucharRec(){uchartemp=0;//函
8、数内部临时变量,用于返回函数值uinti=0;//用于存放数据的临时变量uintj=0;uintm=0;//局部计数临时变量uintn=0;//局部计数临时变量uintk=0;//局部计数临时变量EX1=0;//关外部中断1,以防再次外部1中断的介入while(!Int0)//用于计时前9Ms低电平的引导码{delay1(1);m++;//计数引导码的长度}if(m<=60)//50,
此文档下载收益归作者所有