《单片机控制小车课程设计论文.doc》由会员分享,可在线阅读,更多相关《单片机控制小车课程设计论文.doc(19页珍藏版)》请在三一文库上搜索。
1、单片机控制小车单片机控制小车摘要:本论文利用单片机控制一个小车前进、后退、左转、右转。该小车核心硬件采用了ATM公司生产的到AT89C51芯片。该芯片具有低功耗,高性能的片内含4KB快闪编程/擦除只读存储器的8位CMOS微控制器,使用高密度,非易失存储技术制造,并且与89C51引脚和指令系统完全兼容的特点。而且芯片上的FPROM允许在线编程或采用通用的非易失存编程器对程序存储器重复编程。且价格比价低。驱动小车的电动机采用直流伺服机,伺服电机可控制速度,位置精度非常准确,避免了电刷摩擦和换向干扰,因此灵敏度高,死区小,噪声低,寿命长,对周围电子设备干扰小。关键词:AT89C51单片机 直流伺服机
2、 小车 第一章 小车整机系统介绍本次设计的小车利用伺服机驱动,单片机控制的。小车为机器人的雏形,由于使用伺服机控制,其动作的精度非常高,用途非常的广泛,比如可用于较窄的人无法进入的管道进行查看,像下水管道,大型工厂的排线管道,军事上的排除炸弹等等。一、小车系统介绍 控制系统原理如图1所示: 图1 电气控制图 伺服机控制系统的控制电路分为以下几部分:(1)单芯片89C51控制部分的核心元件,采用89C51。(2)伺服机的接口伺服机的接口所示如图2。图2 伺服机接口 图3 按键电路 为伺服机提供电源。(3)控制按键电路 按键电路如图3所示。用来控制小车前进、后退、左转、右转。(4)电源电路图4 电
3、源电路 图5 晶振电路 图6 复位电路电源电路如图4所示。为单片机和伺服机提供电源。(5)晶振电路晶振电路如图5所示。为单片机提供脉冲,晶振频率范围为1.233HZ。(6)复位电路复位电路如图6所示。使单片机复位。二、89C51单片机的组成1.中央处理器CPU中央处理器简称CPU,是单片机的核心,用于完成运算和控制操作。中央处理器包括运算器和控制器两部分电路。(1)运算电路运算电路是单片机的运算部件,用于实现算术和逻辑运算。算术逻辑单元ALU、累加器、B寄存器、程序状态字和两个暂存寄存器等都属于运算器电路。运算电路以ALU为核心,基本的算术运算和逻辑运算均在其中进行,包括加、减、乘、除、增量、
4、减量、十进制调整、比较等算术运算,“与”、“异或”等逻辑运算,左、右移位和半字节交换等操作。 (2)控制电路控制电路是单片机的指挥控制部件,保证单片机各部分能自动而协调地工作。程序计数器、PC加1寄存器、指令寄存器、指令译码器、定时控制电路以及振荡电路等均属于控制电路。1. 内部数据存储器内部数据存储器包括RAM(128*8)和RAM地址寄存器,用于存放可读/写的数据。实际上80C51芯片中共有256个RAM单元,但其中后128个单元为专用寄存器,能作为普通RAM存储器供用户使用的只是前128个单元。因此,通常所说的内部数据存储器是指前128个单元,简称“内部RAM”。2内部程序存储器内部程序
5、存储器包括ROM(4K*8)和程序地址寄存器等。80C51共有4KB掩膜ROM,用于存放程序和原始数据,因此称之为程序存储器,简称“内部ROM”3定时器/计数器由于控制应用的需要,80C51共有两个16位的定时器/计数器,用定时器/计数器0和定时器/计数器1表示,用于实现定时或计数功能,并以其定时或计数结果对单片机进行控制。4. 并行I/O口80C51共有4个8位并行I/O(P0、P1、P2、P3),以实现数据的并行输入/输出。三89C51单片机的封装与信号引脚1.芯片封装形式80C51有40引脚双列直插式DIP和44引脚方形扁平式QFP共两种封装形式。其中双列直插式封装芯片的引脚排列及芯片逻
6、辑符号如图7所示。图7 89C51芯片2.芯片引脚介绍P0.0P0.7 P0口8位双向口线P1.0P1.7 P1口8位双向口线P2.0P2.7 P2口8位双向口线P3.0P3.7 P3口8位双向口线地址锁存控制信号ALE在系统扩展时可作为外部时钟或外部定时脉冲使用。外部程序存储器读选通信号PSEN非在读外部ROM时PSEN非有效(低电平),以实现外部ROM单元的读操作。访问程序存储器控制信号EA非当EA非信号为低电平时,对ROM的读操作室针对外部程序存储器的;而当EA非信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延续至外部程序存储器。复位信号RST当输入的复位信号延续2个机器周
7、期以上高电平时即为有效,用于完成单片机的复位操作。外接晶体引线端XTAL1和XTAL2当使用芯片内部时钟时,XTAL1和XTAL2用于外接石英晶体谐振器和微调电容;当使用外部时钟时,用于接入外部时钟脉冲信号。地线Vss+5V电源Vcc3.控制键盘电路键盘是单片机不可缺少的人机交互设备,键盘上的键犹如一个机械开关,手按下键闭合,手放开键释放。单片机系统中通常使用的键盘是价格便宜的非编码矩阵式键盘。矩阵式键盘的键排列成矩阵形式,在行与列的每个交点上对应有一个键。4.消除抖动由于按钮是机械触点,当机械触点断开、闭合时,会有抖动,输入端的波形。这种抖动对于人来说是感觉不到的,但对计算机来说,则是完全能
8、感应到的,因为计算机处理的速度是在微秒级,而机械抖动的时间至少是毫秒级,对计算机而言,这已是一个漫长的时间了。就是说按钮有时灵,有时不灵,其实就是这个原因,你只按了一次按钮,可是计算机却已执行了多次中断的过程,如果执行的次数正好是奇数次,那么结果正如你所料,如果执行的次数是偶数次,那就不对了。为使CPU能正确地读出P1口的状态,对每一次按钮只作一次响应,就必须考虑如何去除抖动,常用的去抖动的办法有两种:硬件办法和软件办法。单片机中常用软件法。软件法其实很简单,就是在单片机获得的信息后,不是立即认定开关已被按下,而是延时10毫秒或更长一些时间后再次检测,如果仍为低,说明开关的确按下了,这实际上是
9、避开了按钮按下时的抖动时间。而在检测到按钮释放后再延时5-10个毫秒。当然,实际应用中,对按钮的要求也是千差万别,要根据不一样的需要来编制处理程序,但以上是消除键抖动的原则。三伺服电机伺服机是在伺服系统中控制机械元件运转的发动机,是一种补助马达间接变速装置。伺服电机是可以连续旋转的电机械转换器。属于功率很小的微特电机,以永磁式直流伺服电机和并激式直流伺服电机最为常用。伺服电机可控制速度,位置精度非常准确。1直流伺服电机直流伺服电机的输出转速与输入电压成正比,并能实现正反向速度控制。具有起动转矩大,调速范围宽,机械特性和调节特性的线性度好,控制方便等优点,但换向电刷的磨损和易产生火花会影响其使用
10、寿命。近年来出现的无刷直流伺服电机避免了电刷摩擦和换向干扰,因此灵敏度高,死区小,噪声低,寿命长,对周围电子设备干扰小。而直流力矩伺服电机(即低速直流伺服电机)可在几十转/分的低速下,甚至在长期堵转的条件下工作,故可直接驱动被控件而不需减速。2.伺服机的选择本次将利用无线电遥控飞机.遥控船上一定会用到的伺服机当作驱动器,结合89C51单片机来设计一个简易的伺服机控制系统 ,此系统可以以简易的电路连接配合驱动器程序,可以精确的控制伺服机动作,凡是需要以单片机控制想要拉动或是做简易的机械式传动的机构设计都可能有机会使用到它。 直流伺服电动机的特点:电阻大,机械特性软。线性;滑动接触;火花干扰;惯性
11、大;体积大;相对价高。本次采用的规格如图8:电压扭矩速度5V44.4 oz-in.0.23 sec/606.0V56.9 oz-in.0.16 sec/60尺寸重量1.6 x 0.8 x 1.4 in.1.3 oz.图8 伺服机规格图3伺服机的改装一般玩具遥控模型店中所购得的标准伺服机只能转动180度,用途有限,为了做更多的应用实验,经几个伺服机的改装步骤,使伺服机可以转动360度,适合用于遥控车上作为推动车论转动用。标准伺服机由于动作角度有限,因此在机构旋转轴上有阻挡越位的凸点,同时也利用可变电阻的移位来侦测所转动的角度,了解起动作原理后,要将起改装为360度转动便不困难了。拆开伺服机在改装
12、前再仔细看其各个零件相关的特殊位置,特别是旋转轴的凸点,及可变电阻的高度,是改装过程中要修改的部分。注意整个可变电阻高度已经降下来了,因此当齿轮转动时并不会带动可变电阻转动,使得回授信号为固定,当送出控制信号后马达可以一直往某个方向正转或是反转。整个改装步骤说明如下:(1) 将伺服机螺丝松开,小心取出各个部分零件及齿轮,并依序防止整齐,方便稍后组装回去。(2) 小型马达要推出来时,要以小改锥稍微由外向内施力推出,电路板比较脆弱,小心折断。(3) 以斜口钳剪断所示的凸点,并以小刀修平。(4) 将变电阻用按入凹槽就可以了。(5) 将改装的零件结合各式齿轮完整组装回去。在改装后凸点不见了,而可变电阻
13、中间的旋转柄降低了,因此在伺服机转动时也不会带动可变电阻转,因此控制器侦测不到端点,只要单片机不断地送出适当的脉冲信号,便可以使伺服机不断地正转或是反转一直持续下去,不会只转动180度便卡住了。由于其体积小设计上采用特殊集成电路设计,在松开螺丝后小心将其零件分解,可以看到其内部零件:(控制芯片、小型直流马达、转换齿轮、旋转轴、回授可变电阻)伺服机以5V电源便可以推动,控制方式是以脉冲调制/解调的方式来控制。其外部3个引脚如下:黑色:GND 地线红色:5V电源线(位置在中间)白色:控制信号四小车底座组成驱动器:以改装过的伺服机当驱动器件。轮子:为了配合现成的伺服机机构连接,以现成的饮料瓶盖来改装
14、。前辅轮:以现成的圆形物体代替。连接座:用来固定伺服机用,以现成的“L”铁座来连接。车体底盘:以不锈钢板来组装。螺丝包:做各部分零件的组装及固定。前轮改装:1.准备两块长方形的铝片 (长:8CM 宽:1.5CM)2.一套四驱车导轮3.两个垫片组装成如图9、图10:图9 小车底部组装图图10 小车控制部分组装图八伺服车外形电池使用4只,可用一般电池测试,但使用充电电池较省钱。左右伺服机接线会影响车子行进方向,若方向不对请自行对调调整。由于车子采用后轮驱动,因此重心要摆在后方,电池放在后方底座。组装成如图11:图11 小车整体图第二章 小车控制程序设计一小车工作流程图在主控程序循环中扫描是否有按键
15、,若有按键则做相对应的功能处理,若按下K1键车体做前进展示,若按下K2键车体做后退展示,若按下K3键车体左转展示,若按下K4键车体做右转展示。所有按键动作都是等按键放开来才开始执行车体动作。小车工作流程图如图12:图12 流程图二小车控制程序由于伺服车上伺服机的安装是在左右两侧,伺服机正反转与前进方向刚好相反,前面理论上说明的前进,应该是左伺服机正转且右伺服机也正转,不过实际上控制程序是伺服机1正转控制,伺服机2反转控制。因此控制程序车体前进部分设计如下。Go_for:; 车体前进Mov r3,#ts; 设置计数次数J1:call pu_for; 伺服机1正转控制Djnz r3,j1; 伺服机
16、2反转控制Ret其他3个方向的动作原理一样1.指令详解DELAY:延迟子程序LED_BL:工作指示闪烁PU_BACK:伺服机1反转控制PU_FOR:伺服机1正转控制DEMO_FOR:伺服机正转展示DEMO_BACK:伺服机反转展示DEL:0.1ms延迟子程序PUR_BACK:伺服机2反转控制PUR_FOR:伺服机2正转控制GO_FOR:车体前进GO_BACK:车体后退GO_LEFT:车体左转GO_RIGHT:车体右转2.程序清单equ 3; 伺服机正转时间常数deb equ 25; 伺服机反转时间常数ts equ 18; 脉冲信号个数k1 equ p0.3; 按键1引脚定义k2 equ p0.
17、4; 按键2引脚定义k3 equ p0.5; 按键3引脚定义k4 equ p0.6; 按键4引脚定义wled equ p3.7; 工作指示灯引脚定义pul equ p1.7; 伺服机1控制线pur equ p1.6; 伺服机2控制线start:clr pul; 送出低电平至伺服机clr pur;call led_bl; led闪动,表示程序开始执行loop:jb k1,x1; 未按下K1键则继续扫描jnb k1,$; 等按键放开来call led_bl;call go_for; 车体前进jmp loop; 继续循环执行x1:jb k2,x2; 未按下K2键则继续扫描jnb k2,$; 等按键放
18、开来call led_bl;call go_bac; 车体后退jmp loop; 继续循环执行X2:jb k3,x3; 未按下K3键则继续扫描Jnb k3,$; 等按键放开来call led_bl;call go_left; 车体左转jmp loop; 继续循环执行x3:jb k4,x4; 未按下K4键则继续扫描jnb k4,$; 等按键放开来call led_bl;call go_right; 车体右转jmp loop; 继续循环执行x4:jmp loop; 继续循环执行delay: 延时子程序mov r6,#32h d1:mov r7,#64hdjnz r7,$djnz r6,d1djnz
19、 r5,delayretled_bl: 工作指示灯闪烁mov r4,#02hl0:cpl wled; 位反向mov r5,#05h; 延迟50mscall delay;djnz r4,l0;setb wled;LED OFFretpu_back:setb pul; 伺服机反转控制,送出高电平mov r4,#deba1:call deldjnz r4,a1clr pul; 送出低电平call loop1retpu_for:setb pul; 伺服机正传控制,送出高电平mov r4,#deab1:call deldjnz r4,b1clr pul; 送出低电平call loop2ret del:m
20、ov r5,#01h; 0.1秒延时子程序delay1: mov r6,#02hf1:mov r7,#11hdjnz r7,$djnz r6,f1djnz r5,delayretpur_back:setb pur; 伺服机反转控制,送出高电平mov r4,#debg1:call deldjnz r4,g1clr pur; 送出低电平call loop1retpur_for:setb pur; 伺服机正传展示,送出高电平mov r4,#deah1:call deldjnz r4,h1clr pur; 送出低电平call loop2retloop1:mov r4,#0c5hl:call deldj
21、nz r4,lretloop2:mov r4,#0afhl1:call deldjnz r4,l1retgo_for: 车体前进mov r3,#tsj1:call pu_backcall pur_fordjnz r3,j1retgo_back: 车体后退mov r3,#tss1:call pu_forcall pur_backdjnz r3,s1retgo_right: 车体右转mov r3,#tsm1:call pu_backcall pur_backdjnz r3,m1retgo_left: 车体左转mov r3,#tsq1:call pu_forcall pur_fordjnz r3,q
22、1retend元 件 清 单元件名称规格数量备注实验板50*701电阻1K7电容20PF2电容10uF1发光二极管红色1发光二极管绿色1晶振12MHZ1芯片89C511底座40引脚1电源接插件2脚4电源接插件3脚2按钮5伺服机FUTABA S30032电池接线盒2干电池5号4前轮2小车底座1答谢辞首先,我要感谢我的指导老师沈蓬老师,在我的毕业设计期间对我的设计悉心指导,他渊博的知识、丰富的实践工作经验使我在完成设计过程中受益非浅;他严谨而踏实的研究作风、刻苦的工作态度对我产生了深远的影响作用,在此对我的指导老师致以崇高的敬意与深深的感谢。只有不断地去学习,更新自己的知识,才能够收获更多,在校学习期间,要建立一个自主学习模式,自己去摸索,去查询有关的资料,动脑筋去完成。运用以前学的东西及日常生活中的一些普通的材料完成自己的课题,化废为宝。最后,衷心感谢各位老师抽出宝贵时间阅读此文参考文献1. 陈明荧.8051单片机课程设计实训教材.北京清华大学出版社,2004.2. 周向红.51系列单片机应用与实践教程.北京航空大学出版社,2008.3. 张鹏.单片机原理与应用实例教程.北京海洋出版社,2008.19