基于AT89S51单片机自动往返小车系统设计-论文_第1页
基于AT89S51单片机自动往返小车系统设计-论文_第2页
基于AT89S51单片机自动往返小车系统设计-论文_第3页
基于AT89S51单片机自动往返小车系统设计-论文_第4页
基于AT89S51单片机自动往返小车系统设计-论文_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、基于at89s51单片机自动往返小车系统设计-论文基于at89s51单片机自动往返小车系统设计目 录自动往返行驶小汽车的设计设计(摘要) 3第一章 自动往返行驶小汽车系统概述4第二章 主要电路设计6第三章 系统软件设计9结 束 语 21参考文献 22自动往返行驶小汽车的设计 【摘要】at89s51单片机是美国inte公司于1980年推出的产品,它的易用性和多功能性受到了广大电子爱好者的好评。这里要介绍的是用at89s51单片机实现小汽车自动往返功能为目的,采用at89s51单片机为控制核心,利用光电检测器检测道路上的标志,控制电动小汽车的正反向行驶,快慢速行驶,以及停车的位置,并可自动记录往返

2、时间和距离,在显示完时间距离后将会自动播报整个行程所消耗的时间,以及行驶路程。整个系统的电路结构简单,可靠性高。实验测试结果满足要求,本文着重介绍了该系统的软硬件设计方法及测试结果分析。【关键字】at89s51单片机 光电检测器继电器。第一章 自动往返行驶小汽车系统概述一、方案设计与论证设计要求:1、采用at89s51单片机,能实现在系统下载烧录功能;2、小车能自动记录行驶时间及里程并能在车上显示。本系统为典型的实时控制系统,易用单片机控制来实现,这里以at89s51单片机为主控元件,提出两种设计方案。1方案一采用at89s51单片机对小车的整个行驶过程进行实时监控,完成所有功能需要19个i/

3、o口,由于at89s51单片机提供32个i/o口,一片即可实现所有功能,这为设计过程提供了极大方便。其主要设计思想是:小车上安装一个光电检测器,利用单片机的iob2外部中断判别光电检测器的结果来确定小车位置,安装一个霍尔元件利用单片机的iob3外部中断判别轮胎转数的结果用以计算路程;利用单片机的ioa0-ioa3控制继电器选择小车的正、反向和加、减速行驶;at89s51十六位单片机提供了丰富的时基信源和时基中断,给设计带量的选择空间,并给设计者提供精确的时基计数,我将利用时基中断向量irq4的1024hz中断源实现定时和计时,为整个行程提供精确的时间显示。其加减速通过大功率电阻消耗功率来实现。

4、这种方案可以使程序简单,易于控制。2方案二此方案也采用at89s51十六位单片机,与第一种方案不同之处在于利用单片机的iob8 、iob9产生控制调速的脉宽和控制小车的正、反行驶,用at89s51十六位单片机的timea和timeb很容易实现脉宽调制,这大大加强了用脉宽调制控制加减速的可选性。3两种方案比较控制部分方案一 、二中对电机的控制基本是相同的,都用继电器控制直流电动机的正反转,但方案二采用调节占空比实现电机的调速,而方案一直接采用消耗电阻的方式来控制加减速,脉宽调制控制加减速有它的好处,即控制电路速度选择可通过软件选择多种速度,但在实际应用中,由于各跑道摩擦力不同,在现场测试时并不好

5、调节速度,而方案一在现场可直接调节速度,使用非常方便;再者,所谓脉宽调制也不能真正实现不消耗功率,因为单片机不能直接驱动电机,用三极管或光藕驱动时,在他们导通时就得消耗大量功率,而第一种方案在全速行驶时也无功率消耗,在整个行程中是以全速行驶为主;方案二要体现出匀速行驶,对脉冲频率要求高,相应地对继电器要求也较高,而第一种方案就无此忧虑。光电检测器的检测部分也是相同的,均采用中断的控制方式,使用一个光电检测器即能使准确确定小车行驶位置。如前所述,方案一比方案二有许多优点,最重要是因为可靠性强,调整简单,有把握在规定的时间内完成此题目。为此我们选用方案一来实现。796基于at89s51单片机自动往

6、返小车系统设计二、系统原理框图系统原理框图如图1所示。 本设计采用at89s51单片机作为自动往返小汽车的检测和控制核心。路面线条测使用反射式红外开关传感器,检测小车的行驶路段;车速和距离检测使用光电编码器,利用pwm技术动态控制电动机的转速,通过软件完成对电动小汽车在不同路段的行驶速度实时控制;用单片机驱动数码管实现对指定行程和所用时间显示;采用双外部电源供电,保证系统工作更加稳定,可靠。本设计的主要特色有: 高效的h型pwm电路,提高电源利用率; 串口数码显示,行驶状态一目了然; 优化的软件算法,智能化的自动控制,定位精确; 前轮导向装置,减少了挡板的摩擦。第二章 主要电路设计1、光电检测

7、的设计为了检测到地上的黑线,根据小车所处的位置改变行驶状态,采用64型光电检测器采集外部信息传给iob2作为外部中断源,遇到黑线将产生一个中断,通过对中断的计数确定小车位置,并对行驶状态做出相应的反映。764型光电检测器输出形式为晶体管集电极开路输出,接4.7k的上拉电阻。光电管的测量最大范围为1.518.5cm,实际安装距地面为 2cm。发射管发出红外线光电信号,接收管接收到反射的光信号以后输出低电平,接收管没有接收到反射的光信号时输出高电平,输出电平直接送iob2做外部中断的信源。红外光电检测器连接电路如图2所示。 2主控电路的设计(1)、继电器驱动电路的设计由于单片机i/o口提供的电流太

8、小,不能直接驱动继电器。在这里采用8050来提供一个开关电压,实现i/o口对继电器的驱动,由于继电器的吸合只需5v电压,能够保证它的工作,用in4007去掉继电器断开时线圈产生的反向电流,保护8050。如图3。(2)、速度控制电路的设计本设计方案较为简单,即通过大功率电阻消耗功率来实现,通过对r1、r2的选择能提供八种速度,可根据路面摩擦力大小来调节r1、r2的大小,使小车处于最佳行使状态。具体电路图如图4,其中j1、j2由ioa0控制,j3、j4由ioa1控制,j5、j6分别由ioa2和ioa3控制。3、路程计数的设计 按题要求显示全程速度,可以通过检测车轮转过的转数乘上车轮的周长来计算,霍

9、尔元件就是一种很好的可用于车轮转数计数的元件。霍尔元件基本原理是:在普通转盘计数的仪表中加装霍尔元件和磁铁,即可构成基于磁电转换技术的传感器。霍尔元件固定安装在计数转盘附近,永磁铁安装在计数盘(例如0.01立方米)位上,当转盘每转一圈,永磁铁经过霍尔元件一次即在信号端产生一个计量脉冲。在普通转盘计数的仪表中加装霍尔元件和磁铁,即可构成基于磁电转换技术的传感器。本系统中霍尔元件固定安装在计数转盘附近,永磁铁安装在计数盘位上,当转盘每转一圈,永磁铁经过霍尔元件一次即在信号端产生一个计量脉冲。由于霍尔电压很微弱(mv级),需用霍尔集成电路进行处理,如图5所示。无论信号转子的哪个叶片通过空气间隙时,霍

10、尔信号发生器都将产生一个电位由高到低的脉冲信号,直接送iob3作外部中断源,信号转子通过霍尔元件将产生一个中断,对中断进行计数,此中断的个数即为车轮转过的转数.4、显示电路的设计本系统采用共阴极数码管四个进行动态显示,轮流显示时间和路程,这有利于节省i/o口。显示时间的精度为1s,显示路程的精度为0.01m。用iob8iob11口作为位选控制, ioa8ioa11口传输要显示的数据,数据线和位选线直接接at89s51单片机的i/o口即可,因为i/o口输出电流很小不会对led造成损坏,它的电压值却足以驱动led,这不像别的单片机还要外接驱动电路和电阻,采用at89s51单片机大大减化了设计过程和

11、硬件电路。硬件电路如图6所示 5、语音播报电路的设计at89s51是16位单片机,具有dsp功能,有很强的信息处理能力,最高时钟可达到49m,具备运算速度高的优势等等,这为语音的播放、录放、合成及辨识提供了条件。另外at89s51单片机具有32k闪存,事先把所需要的语音信号录制好,整个语音信号经at89s51压缩算法压缩只占有13.2k存储空间,对at89s51单片机的存储系统来说绰绰有余。at89s51单片机自带双通道dac音频输出,dac1、dac2转换输出的模拟量电流信号分别通过aud1和aud2管脚输出,dac输出为电流型输出,经lm396音频放大,即可驱动喇叭放音,放大电路如图5(只

12、列出了dac1,dac2类似)。在dac1、dac2后面接一个简单的音频放大电路和喇叭就能实现语音报功能,这为单片机的音频设计提供了极大方便,音频的具体功能主要通过程序来实现。 6、电源部分电源部分采用四节碱性电池对单片机、数码管等供电,采用九节碱性电池对继电器及电机进行供电,为减少耗电量,数码管未采用全程供电,而是等小车停止后显示所用时间和行驶距离;采用双电源供电消除电动机运转时产生的干扰,保证单片机正常工作。基于at89s51单片机自动往返小车系统设计第三章 系统软件设计软件是本系统的灵魂,在设计软件时,我将从系统实用、可*及方便灵活等几个方面出发,使程序满足本题目的要求。本系统软件分为主

13、模块、两个外部中断和1024时基中断。其中1024时基中断作为全程计时的时钟基准。外部中断irq3的第二个中断源计数小车车轮的转数,中断服务流程图如图9。在小汽车行驶时,用的是小车前部的光电检测器接受外部中断。1.主结构图软件系统的主结构图如图8。小车按复位键后,即启动,以最慢的速度向前行驶,当检测到第一根黑线时,就会全速前进。为了保证小车停车位置正确,在检测到第五和第十一跟黑线时就开始减速行驶。 2.中断服务流程图spce单片机有两个外部中断,分别为ext1和ext2,两个外部输入脚分别为b口的iob2和iob3的复用脚。ext1(iob2)和ext2(iob3)两条外部中断请求输入线,用于

14、输入两个外部中断源的中断请求信号,并允许外部中断以负跳沿触发方式来输入中断请求信号。ext1(iob2)为黑线检测,确定小车位置,ext2(iob3)为轮子转数检测用于计算路程。irq4用做整个行程的时间计数 图9中断服务流程图3.显示和播报时间和路程的显示采用动态显示,显示子程序流程图如图10,语音播报采用at89s51语音播报,流程图如图114、程序清单* 主程序和中断程序入口 *org 0000h ;程序执行起始地址 ljmp start ;跳至startorg 0003h ;外中断0入口 ljmp intex0 ;跳至intex0中断服务程序org 000bh ;定时器t0中断入口 r

15、eti ;中断返回 org 0013h ;外中断1入口 ljmp intex1 ;跳至intex1中断服务程序 org 001bh ;定时器t1中断入口 ljmp intt1 ;跳至intt1中断服务程序org 0023h ;串口中断入口reti ;中断返回org 002bh ;定时器t2中断入口reti ;中断返回* 初始化程序 *clearmemio: mov r0, #70h ;清70h-76h显示单元 mov r7, #07h ;循环次数ml0: mov r0, #00h ;清0 inc r0 ;下一地址 djnz r7, ml0 ;未完再循环 mov tmod,#10h ;t1为16

16、位定时器 mov r4,#14h ;1秒定时用(50毫秒20次) mov tl1,#0b0h ;50毫秒定时用初值 mov th1,#3ch ; mov 20h,#00h ;清0操作 mov 21h,#00h ; mov 22h,#00h ; mov 23h,#00h ; mov 24h,#00h ; clr 30h ;清停车标志 setb et1 ;开t1中断 setb ex1 ;开外中断1 setb it1 ;外中断1采用边沿触发 setb it0 ;外中断0优先级为1(最高) setb ex0 ;开外中断0 setb ea ;开总中断允许 setb tr1 ;开启定时器t1基于at89s

17、51单片机自动往返小车系统设计* 主 程 序 *start: lcall clearmemio ;上电初始化 setb p1.6 ;选择7.5v输出 clr p1.7 ;选择7.5v输出 setb p3.7 ;前进状态 clr p3.6 ;前进状态 clr p1.0 ;电机供电开始main: lcall disp ;led显示一次 ljmp main ;转main循环 nop ;pc值出错处理 nop ljmp start ;重新初始化*外中断0服务程序,用作跑道位置处理 23h作跑道计数器 *intex0: push acc ;堆栈保护 push psw ; clr ex0 ;关中断 lca

18、ll disp ;led显示一次(延时抗干扰) jb p3.2,in0ret ;p3.2为1退出(干扰) inc 23h ;跑道计数器加1 mov a,23h ;数据入a cjne a,#06h,judge1 ;不是第6道转judge1 lcall stop ;是第6道,停车 ljmp in0ret ;转中断退出judge1: cjne a,#03h,judge2 ;不是第3道转judge2 lcall stopslow ;是第3道,变慢车 ljmp in0ret ;转中断退出judge2: cjne a,#04h,judge3 ;不是第4道转judge3 lcall fast ;是第4道,变

19、快车 ljmp in0ret ;转中断退出judge3: cjne a,#05h,in0ret ;不是第5道转inoret退出 lcall stopslow ;是第5道,变慢车in0ret: clr ie0 ;清外中断0中断标志 pop psw ;恢复现场 pop acc ; lcall dl7ms ;延时7毫秒(抗干扰) setb ex0 ;开外中断0 reti ;中断返回* 慢车控制子程序 *stopslow: clr p1.6 ;关7.5v电源 cpl p3.6 ;反向驱动(刹车) cpl p3.7 ;反向驱动 lcall ds50ms ;刹车时间(可根据试车情况调整) lcall ds

20、50ms ; lcall ds50ms ; cpl p3.6 ;正向驱动 cpl p3.7 ;正向驱动 setb p1.7 ;开4.3v电源 ret ;返回;*;* 快车控制子程序 *;*fast: clr p1.7 ; 关4.3v电源 setb p1.6 ; 开7.5v电源 ret ;返回* 停车控制程序 *stop: mov 23h,#00h ;跑道计数单元清0 cpl p3.6 ;反向驱动(刹车) cpl p3.7 ;反向驱动(刹车) lcall ds50ms ;刹车时间 lcall ds50ms ;刹车时间(可调整) setb p1.0 ;关电机电源 setb pt1 ;定时器t1为高

21、优先级 lcall ds10s ;停车10秒 clr pt1 ;恢复t1为低优先级 setb p1.6 ;开7.5v电源(高速) clr p1.7 ;关4.3v clr p1.0 ;电机电源开 cpl 30h ;停车点位置判断标志取反 jb 30h,stren ;为1(中途停车)转stren lcall clr00 ;是终点,调复0程序stren: ret ;返回* 计时清0程序 *clr00: mov 70h,#00h ;计时单元清0 mov 71h,#00h ;计时单元清0 mov 72h,#00h ;计时单元清0 mov 73h,#00h ;计时单元清0 ret ;返回* 外中断1程序,

22、里程计数用 20h、21h、22h、24h作计数器 *intex1: push acc ;堆栈保护 push psw ; clr ex1 ;关外中断1 inc 20h ;圈加1llll: mov a,20h ;判断是否满6圈 cjne a,#06h,lll ;不满6圈转lll退出 mov 20h,#00h ;满6圈清0进位(6圈为1米) inc 21h ;上位加1 mov a,21h ;判断是否满10 cjne a,#0ah,lll ;不满10转lll mov 21h,#00h ; 满10清0进1位 inc 22h ; 高位加1 mov a,22h ; 判断是否满10 cjne a,#0ah,

23、lll ; 不满10转lll mov 22h,#00h ; 满10清0进1位 inc 24h ; 高位加1 mov a,24h ; 判断是否满10 cjne a,#0ah,lll ; 不满10转lll mov 24h,#00h ; 满10清0lll: mov 74h,21h ; 将里程数移入显示单元(个位) mov 75h,22h ; 将里程数移入显示单元(十位) mov 76h,24h ; 将里程数移入显示单元(百位)in1ret: pop psw ;恢复堆栈 pop acc ; setb ex1 ;开外中断1 reti ;中断返回基于at89s51单片机自动往返小车系统设计intt1: p

24、ush acc ;堆栈保护 push psw ; mov tl1,#0b0h ;赋50毫秒定时初值 mov th1,#3ch ; dec r4 ;减1 mov a,r4 ; jnz rett0 ;不为0转rett0 mov r4,#14h ;为0(1秒到)重赋初值 mov r0,#71h ;地址指向71h acall add1 ;加1秒操作 mov a,r3 ; clr c ; cjne a,#60h,cc ;是否为60秒?cc: jc rett0 ;小于60转rett0 acall clr0 ;大于或等于60清0 mov r0,#73h ;指向分计时地址单元 acall add1 ;分加1

25、mov a,r3 ; clr c ; cjne a,#60h,ccc ;是否为60分?ccc: jc rett0 ;小于60转rett0 acall clr0 ;大于或等于60分计时单元清0rett0: pop psw ;恢复堆栈 pop acc ; reti ;中断返回 ; ; 加1操作程序 ; ;add1: mov a,r0 ;取计数值 dec r0 ;指向低一个地址 swap a ;计数值高低四位交换 orl a,r0 ;相或组合成一个数据 add a,#01h ;加1 da a ;十进制调整 mov r3,a ;暂存r3内 anl a,#0fh ;高四位变0 mov r0,a ;放回低

26、地址 mov a,r3 ;取回r3内数据 inc r0 ;地址加1 swap a ;高低四位交换 anl a,#0fh ;高四位为0 mov r0,a ;放回原地址 ret ;返回; ; 清0程序 ;clr0: clr a ;清a mov r0,a ;对应地址单元清0 dec r0 ;指向低一地址 mov r0,a ;清0 ret ;返回 ; 显示程序 ;disp: mov r1,#70h ;显示数据首址 mov r5,#0feh ;扫描字play: mov a,r5 ;扫描字入a mov p2,a ;从p2口输出 mov a,r1 ;取显示数据 mov dptr,#tab ;取段码表首址 m

27、ovc a,a+dptr ; 查数据对应段码 mov p0,a ;段码从p0口输出 lcall dl1ms ;点亮1毫秒 inc r1 ;指向下显示数地址 mov a,r5 ;扫描字入a jnb acc.6,endout ;acc.6=0转endout结束 rl a ;循环左移 mov r5,a ;放回a ajmp play ;转play再显示endout: mov p2,#0ffh ;显示结束处理。p2口置1 ret ;子程序结束;led共阴段码表(0-9)tab: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;1毫秒延时程序dl1ms: mov r6,#14hdl1: mov r7,#19hdl2: djnz r7,dl2 djnz r6,dl1

温馨提示

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

评论

0/150

提交评论