毕业设计(论文)-基于STC89C51单片机的智能小车的设计与实现.doc_第1页
毕业设计(论文)-基于STC89C51单片机的智能小车的设计与实现.doc_第2页
毕业设计(论文)-基于STC89C51单片机的智能小车的设计与实现.doc_第3页
毕业设计(论文)-基于STC89C51单片机的智能小车的设计与实现.doc_第4页
毕业设计(论文)-基于STC89C51单片机的智能小车的设计与实现.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

吉林农业大学学士学位论文吉 林 农 业 大 学本 科 毕 业 设 计论文题目: 智能小车的设计与实现 学生姓名: 专业年级 2005级电子信息科学与技术一班指导教师: 职称: 讲 师 2009 年 6 月 4 日吉林农业大学本科毕业设计目 录题目I摘要及关键词I1前言11.1题目的来源与开发意义11.2系统功能概述12方案的提出及论证22.1主控制器选择22.2车体设计22.3车载显示模块32.4报警模块42.5无线收发模块43 系统硬件设计43.1 STC89C51RC/RD+系列单片机介绍43.2路面检测模块53.3直流减速电机驱动模块63.3.1 L293D芯片介绍63.3.2 本设计L293D使用说明63.4 1602液晶显示模块73.4.1 1602主要技术参数73.4.2 1602接口信号说明73.4.3 基本操作时序83.4.4 RAM地址映射图83.4.5初始化设置93.4.6 本设计1602使用说明93.5报警模块103.6 JZ863微功率无线数传模块103.6.1 JZ863概述103.6.2 JZ863技术指标113.6.3JZ863功能特点123.6.4 JZ863接口的定义123.6.5 JZ863参数配置133.6.6 本设计JZ863 使用说明144 系统软件设计154.1软件总体设计思想154.2各功能模块的软件调试154.2.1路面检测模块的程序调试154.2.2直流减速电机驱动模块的程序调试174.2.3液晶显示模块的程序调试174.2.4报警模块的程序调试184.2.5无线收发模块的程序调试205 系统调试215.1 硬件电路调试215.2 各功能模块软件调试216结论与展望21参考文献22致 谢22附录一 系统总体硬件原理图23附录二 程序流程图24附录三 程序清单25II吉林农业大学本科毕业设计智能小车的设计与实现学 生:专 业:电子信息科学与技术指导教师: 摘要:本设计主要是将小车应用为基础通用的开发平台。在该系统中采用STC89C51单片机作主控制器;采用红外对发管检测轨道上的黑线,从而实现小车的寻迹功能;当前方遇见障碍物,小车改变转向,从而实现小车的避障功能;当前方遇见悬崖,小车立即停止并发出报警,从而实现小车的避崖功能。采用液晶芯片SMC1602实时的显示小车行驶的时间,采用JZ863微功率无线数传模块对小车的行驶过程进行控制。软件部分用C语言编写,易读、可移植性好。本系统主要包括路面检测模块、直流减速电机驱动模块、液晶显示模块、报警模块和无线收发模块五个部分。关键词:智能小车;单片机;寻迹;避障;避崖The Design and The Implementation of Intelligent CarName:Zhang Long Major:Electronics Information Science and TechnologyTutor:Gong HeAbstract:The design is mainly based on the application of the car universal development platform. Used in the system to decide STC89C51 single-chip controller; Control the use of infrared detection of fat black track line, accordingly achieve the car tracing function; When meeting the current barrier, Car shift change, accordingly achieving obstacle avoidance of the realization of function;When meeting in front of the cliff, The car an immediately stop and sound of alarm, accordingly achieving car of the cliff to avoid the realization of function. Using SMC1602 chip LCD display real-time car driving time, Using JZ863 Micro-power wireless module on the car to control the process of moving. Software with C language, accessibility, portability good. The system mainly includes the road detection module, DC motor drive module slowdown, liquid crystal display module, alarm module and wireless transceiver module five parts.Key words: Smart car; Single-chip; Tracing; Obstacle avoidance; Cliff avoidanceI吉林农业大学本科毕业设计1前言1.1题目的来源与开发意义智能小车,也就是轮式机器人,最适合人类在那些无法工作的环境中工作,它们已在许多工业部门获得广泛应用。它们可以比人类工作得更好并且成本低廉。正是基于智能小车的这些优点,它正逐步渗入到工业和社会的各个层面。另外,智能小车自动行驶功能的研究将有助于智能车辆的研究。智能车辆驾驶任务的自动完成将给人类社会的进步带来巨大的影响,例如能切实提高道路网络的利用率、降低车辆的燃油消耗量,尤其是在改进道路交通安全等方面提供了新的解决途径1。随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。全国电子大赛和省内电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都很重视该题目的研究。可见其研究意义很大。本设计就是在这样的背景下提出的。本设计不但能够实现寻轨避崖、避障、实时显示时间的功能,而且还具有无线遥控功能。 1.2系统功能概述 本系统的总体框图如1-1所示:STC89C51单片机路面检测模块无线收发模块液晶显示模块报警模块按键直流减速电机驱动模块图1-1系统总体框图Fig 1-1 Overall system block disgram 本设计系统是以STC89C51单片机作为主控制器,主要包括车载模块和无线收发模块两个部分。其中车载模块包括路面检测模块、直流减速电机驱动模块、液晶显示模块和报警模块四个部分。采用红外对发接受管检测路面信息来控制小车两个驱动轮,并实时的显示小车行驶的时间。当小车遇见悬崖立即停止并发出报警。为了使该系统实用性更强,更人性化,采用了JZ863微功率无线数传模块对小车的行驶过程进行控制。将小车开发应用为通用基础开发平台是本设计的创新之处,具有十分广泛的实用性。2方案的提出及论证2.1主控制器选择方案1:AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。方案2:STC89C51RC/RD+ 系列单片机是宏晶科技推出的新一代超强抗干扰/ 高速/ 低功耗的单片机,指令代码完全兼容传统8051 单片机,12时钟/机器周期和6时钟/ 机器周期可任意选择,最新的D 版本内部集成MAX810专用复位电路。选择STC89C51系列单片机的理由2:加密性强;超强抗干扰:高抗静电(E S D 保护);轻松过2 K V / 4 K V 快速脉冲干扰( E F T 测试)宽电压, 不怕电源抖动宽温度范围, - 4 0 8 5 三大降低单片机时钟对外部电磁辐射的措施:禁止A L E 输出;如选6 时钟/ 机器周期,外部时钟频率可降一半;单片机时钟振荡器增益可设为1 / 2 g a i n 。超低功耗:掉电模式: 典型功耗 0.1A;正常工作模式: 典型功耗 4mA - 7mA;掉电模式可由外部中断唤醒,适用于电池,供电系统,如水表、气表、便携设备等。在系统可编程, 无需编程器, 无需仿真器可送S T C - I S P 下载编程器,1 万片/ 人/ 天可供应内部集成M A X 8 1 0 专用复位电路的单片机,只有D 版本才有内部集成专用复位电路,原复位电路可以保留,也可以不用,不用时R E S E T 脚接1 K 电阻到地。综上考虑,我们选择了方案2。2.2车体设计方案1:购买玩具电动车。购买的玩具电动车具有组装完整的车架车轮、电机及其驱动电路。但是一般的说来,玩具电动车具有如下缺点:首先,这种玩具电动车由于装配紧凑,使得各种所需模块的安装十分不方便。其次,这种电动车一般都是前轮转向后轮驱动,不能适应该题目所实现的功能,也不能方便迅速的实现原地保持坐标转90度甚至180度的弯角。再次,玩具电动车的电机多为玩具直流电机,力矩小,空载转速快,负载性能差,不易调速。而且这种电动车一般都价格不扉。因此我们放弃了此方案。方案2:使用实验专用小车。经过反复考虑论证,我们制定了左右两轮分别驱动,前后万向轮转向的方案。即左右轮分别用两个转速和力矩基本完全相同的直流电机进行驱动,前后装两个万向轮。这样,当两个直流电机转向相反同时转速相同时就可以实现电动车的原地旋转,由此可以轻松的实现小车坐标不变的90度和180度的转弯。在安装时我们并不把万向轮装在一个平面上。当小车前进时,左右两驱动轮与前万向轮形成了三点结构。这种结构使得小车在前进时比较平稳,可以避免出现前后两轮过低而使左右两驱动轮驱动力不够的情况。而且小车更轻便,美观3。综上考虑,我们选择了方案2。实物图如图2-1所示:图2-1 小车基本框架Fig 2-1 the basic framework of car2.3车载显示模块为满足题目要求,需要在车上显示小车的行驶时间。因此需要在车上显示这些数据。方案1:用8位数码管进行显示小车行驶时间,这也是比较通用的方法,但是使用数码管显示时间的外围电路比较复杂且稳定性不高。方案2:用1602液晶屏。该液晶屏可以两行显示数字、汉字,显示清晰,美观;耗电量小。故采用方案2。1602外观图如图2-2所示:图2-2 1602外观图Fig 2-2 1602 the appearance of Figure2.4报警模块方案1:语音报警器。采用直接模拟存储技术DAST的芯片ISD1420来实现,能完成语音的录入,存储及分段输出,因而失真小,使用方便,但电路构成复杂,成本相对高些,而且地址模式所占IO口较多。方案2:喇叭报警。该设计只需安置一个喇叭器件,由软件设置满足一定条件时自动报警,连接简单易懂只需一个IO口即可,成本也低。综上所述:本设计只需在小车遇见悬崖后发出报警,所以选择方案二。2.5无线收发模块方案1: nRF905单片无线收发器工作在433/868/915MHZ的ISM频段。由一个完全集成的频率调制器,一个带解调器的接收器,一个功率放大器,一个晶体震荡器和一个调制器组成。ShockBurst工作模式的特点是自动产生导码和CRC。可以很容易通过SPI接口进行编程配置。电流消耗很低,在发射功率为-10dBm时,发射电流为11mA,接收电流为12.5mA进入POWERDOWN模式可以很容易实现节电。但是nRF905需要配置的端口很多,这样也造成了硬件电路设计的复杂。方案2: JZ863微功率无线数传模块。是一种短距离无线数据传输产品,它体积小,功耗低,稳定性及可靠性极高,能方便为用户提供双向的数据信号传输、检测和控制。外设硬件电路简单,节省了控制器的端口资源4。从硬件电路的难易程度、性能和控制灵活性上考虑,我选择了方案2。3 系统硬件设计3.1 STC89C51RC/RD+系列单片机介绍STC89C51特点:增强型6 时钟/ 机器周期,12 时钟/ 机器周期 8051 CPU工作电压:5.5V - 3.4V(5V 单片机) / 3.8V - 2.0V(3V 单片机)工作频率范围:0 - 40 MHz,相当于普通8051 的 080MHz.实际工作频率可达48MHz.用户应用程序空间 4K / 8K / 13K / 16K / 20K / 32K / 64K 字节片上集成 1280 字节 / 512 字节 RAM通用I/O 口(32/36 个),复位后为: P1/P2/P3/P4 是准双向口/ 弱上拉(普通8051 传统I/O 口)P0 口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/O 口用时,需加上拉电阻。I S P (在系统可编程)/ I A P (在应用可编程),无需专用编程器/ 仿真器可通过串口(P3.0/P3.1)直接下载用户程序,8K 程序3 秒即可完成一片EEPROM 功能看门狗内部集成MAX810 专用复位电路(D 版本才有),外部晶体20M 以下时,可省外部复位电路。引脚图如图3-1所示:图3-1 引脚图Fig 3-1 By foot map3.2路面检测模块 采用JX-359F红外发射接收管,用六对JX-359F搭建寻轨电路,其中四对管排列成十字形,分别用来控制小车前进、后退、向左转和向右转。另外两对对发管实现小车的避崖功能。让小车在黑胶带铺成的轨道上寻轨,当小车偏离轨道时,此时在轨道外侧的红外对发接收管经反射接收到信号,输出低电平,通过单片机P1口控制车轮的转和停,可使小车的驱动轮向偏离轨道相反的方向转,从而实现了小车行车路线的校正。用此方案寻迹灵敏度高,且硬件电路简单,占用单片机口线少5。硬件电路图如图3-2所示:图3-2路面检测模块电路图Fig 3-2 road detection module circuit diagram3.3直流减速电机驱动模块3.3.1 L293D芯片介绍L293D集成芯片由四个大功率管组成H桥式电路。是十六脚封装的直流电机驱动电路芯片,能够同时驱动两个直流电机。内部包含4通道逻辑驱动电路,额定工作电流1A,最大可达1.5A,Vss最小4.5V,最大可达36V;Vs电压最大值也是36V,一般Vs电压应该比Vss电压高,否则有时会出现失控现象6。如图3-2是L293D的外部引脚图,图3-3是其内部结构框图。图3-3 L293D外部引脚图 图3-4 L293D内部结构框图Fig 3-3 L293D external pin map Fig 3-4 L293D diagram of theinternal structure3.3.2 本设计L293D使用说明L293D的使用非常简单,如图3-2所示,管脚2、7、10、15是用来控制电机转动、停止。是由单片机的P2.1、P2.2、P2.3、P2.4控制的。前两个管脚是用来控制第一个电机,后两个是用来控制第二个电机的。当使能端1或9脚接收到单片机发送的高电平时,芯片就可以由2、7或10、15脚分别控制两个电机正、反转。如果2、7同时为高或低电平时电机停止运转。只要这两个管脚电平不同电机就可以运转,10、15两个管脚同2、7一样。L293D芯片的输出分别是3、6脚和11、14脚。其余的4、5、12、13是接地用的,VSS、VS分别接5V、7.5V。四大功率管分为两组,交替接通和截止,以保证小车完成前进和后退、左、右转弯等运行动作。电机分别连接在out1、out2和out3、out4,其余分别于单片机和电源部分连接。其电路如图3-5所示:图3-5直流减速电机驱动模块电路图Fig 3-5 DC motor driver module circuit slowdown3.4 1602液晶显示模块3.4.1 1602主要技术参数如表3-1所示:表3-1 1602主要技术参数Table 3-1 1602 Main technical parameters显示容量:162个字符芯片工作电压:4.55.5V工作电流:2.0mA(5.0V)字符尺寸:2.954.35(WH)mm3.4.2 1602接口信号说明如表3-2所示:表3-2 1602接口说明Table 3-2 1602 Interface Description编号符号引脚说明编号符号引脚说明1VSS电源地9D2Data I/O2VDD电源正极10D3Data I/O3VL液晶显示偏压信号11D4Data I/O4RS数据/命令选择端(H/L)12D5Data I/O5R/W读/写选择端(H/L)13D6Data I/O6E使能信号14D7Data I/O7D0Data I/O15BLA背光源正极8D1Data I/O16BLK背光源负极VDD:电源正极,4.55.5V,通常使用5V电压;VL:LCD对比度调节端,电压调节范围为05V。接正电源时对比度最弱,接地电源时对比度最高,但对比度过高时会产生“鬼影”,因此通常使用一个10K的电位器来调整对比度,或者直接串接一个电阻到地;RS:MCU写入数据或者指令选择端。MCU要写入指令时,使RS为低电平;MCU要写入数据时,使RS为高电平;R/W:读写控制端。R/W为高电平时,读取数据;R/W为低电平时,写入数据;E:LCD模块使能信号控制端。写数据时,需要下降沿触发模块。D0D7:8位数据总线,三态双向。如果MCU的I/O口资源紧张的话,该模块也可以只使用4位数据线D4D7接口传送数据。本充电器就是采用4位数据传送方式;BLA: LED背光正极。需要背光时,BLA串接一个限流电阻接VDD,BLK接地,实测该模块的背光电流为50mA左右;BLK: LED背光地端7。3.4.3 基本操作时序读状态:输入:RS=L,RW=H,E=H 输出:D0-D7=状态字写指令:输入:RS=L,RW=L,D0-D7=指令码,E=高脉冲 输出:无读数据:输入:RS=H,E=H, 输出:D0-D7=数据写数据:输入:RS=H,RW=L,D0-D7=数据,E=高脉冲 输出:无状态字说明见表3-3所示:表3-3状态字说明Table 3-3 Status Word DescriptionSTA7STA6STA5STA4STA3STA2STA1STA0D7D6D5D4D3D2D1D0注:对控制器每次进行读写操作之前,都必须进行读写检测,确保STA7为03.4.4 RAM地址映射图控制器内部带有808位(80字节)的RAM缓冲区,对应关系如图3-6所示:图3-6 RAM地址映射图Fig 3-6 RAM Address Map3.4.5初始化设置显示模式设置如表3-4所示:表3-4显示模式初始化Table 3-4 Display Mode Initialization指令码功能00111000设置162显示,57点阵,8位数据接口显示开/关及光标设置如表3-5所示:表3-5显示开/关及光标初始化Table 3-5 shows on / off and cursor initialization指令码功能00001DCBD=1 开显示; D=0 关显示C=1 显示光标 C=0 不显示光标B=1 光标闪烁;B=0 光标不显示000001NSN=1 当读或写一个字符后地址指针加一,且光标加一N=0 当读或写一个字符后地址指针减一,且光标减一S=1 当写一个字符,整屏显示左移(N=1)或右移(N=0),以得到光标不移动而屏幕移动的效果。S=0 当写一个字符,整屏显示不移动数据指针设置见表3-6所示:表3-6数据指针初始化Table 3-6 to initialize the data pointer指令码功能80H+地址码(0-27H,40H-67H)设置数据地址指针其他设置见表3-7所示:表3-7其他设置初始化Table 3-7 to initialize other settings指令码功能01H显示清屏:1 数据指针清零 2 所有显示清零02H显示回车:1 数据指针清零3.4.6 本设计1602使用说明1602 液晶显示8个数据端接口分别与P0口的8个I/O口相连接,数据/命令选择端RS、读/写选择端R/W和能信号EN分别与P2.5、P2.6和P2.7相连接,当小车开始行驶时,1602立即开始计时,第一行依次显示年、月、日和星期,第二行显示当前小车行驶的时间。当小车遇见悬崖时立即停止此时1602显示最终时间。如图3-7所示:图3-7 液晶显示模块Fig 3-7 LCD Module3.5报警模块报警模块即通过一个PNP三极管去驱动扬声器发出声音。当小车遇到悬崖时,立即停止,此时扬声器发出报警8。此电路结构简单,可以通过软件编程使扬声器播放各式各样的音乐。其电路如3-5所示:图3-8报警模块电路图Fig 3-8 Module alarm circuit3.6 JZ863微功率无线数传模块3.6.1 JZ863概述JZ863微功率无线数传模块,是一种短距离无线数据传输产品,它体积小,功耗低,稳定性及可靠性极高,能方便为用户提供双向的数据信号传输、检测和控制。适合水电气三表、停车场咪表、智能卡、电子衡器、门禁考勤、无线排队、楼宇控制、货场物流、防盗报警、智能仪器仪表、无功补偿、智能教学设备、体质检测智能设备、测量设备、汽车黑匣子、自动控制、家居智能化等领域的数据控制和数据抄录9。外形图如图3-9所示:图3-9 JZ863外形图Fig 3-9 JZ863 Outline3.6.2 JZ863技术指标调 制 方 式:FSK工 作 频 率:428434MHZ发 射 功 率:100mW接收灵敏度:-110dBm发 射 电 流: 100mA接 收 电 流:11mA休 眠 电 流: 1uA信 道 速 率:1200/2400/4800/9600/19200Bit/s用户可设串 口 速 率:1200/2400/4800/9600/19200Bit/s用户可设收发转换时间: 10ms接口数据格式:8E1/8N1/8O1工 作 电 源:TTL:DC +2.8V+3.6V或 +3.6V+5.5V,RS232/RS485:DC +4.5V+5.5V;工 作 温 度:-2065工 作 湿 度:10%90%相对湿度,无冷凝外 形 尺 寸:44mm27mm8mm互 通 型 号:JZ862/JZ863/JZ864/JZ865/JZ866/JZ8683.6.3JZ863功能特点微发射功率。发射功率小于100mW,高接收灵敏度-110dbm,体积小:44mm27mm8mm。 低功耗。接收电流11mA,发射电流100mA,休眠电流2米,可靠传输距离(BER=10-3/1200bps)500m,(BER=10-3/9600bps)200m。 透明的数据传输。 提供透明的数据接口,能适应任何标准或非标准的用户协议。自动过滤掉空中产生的噪音信号及假数据(所发即所收)。 收发转换时间:10ms。多信道,多速率。 JZ863型模块标准配置提供8个信道,满足用户多种通信组合方式的需求。JZ863型模块可提供1200bps、2400bps、4800bps、9600bps、19200bps等多种通信波特率,并且无线传输速率与接口波特率成正比,以满足客户设备对多种波特率的需要。 高速无线通讯和大的数据缓冲区。 空中速率大于串口速率时可连续传输无限大的数据,空中速率小于或等于串口速率时,一帧可传输255字节的数据。 智能数据控制,用户无需编制多余的程序 即使是半双工通信,用户也无需编制多余的程序,只要从接口收/发数据即可,其它如空中收/发转换,网络连接,控制等操作,模块能够自动完成。 高可靠性,体积小、重量轻。 采用高性能单片处理器,外围电路少,可靠性高,故障率低。看门狗实时监控。看门狗监控内部功能,改变了传统产品的组织结构,提高了产品的可靠性。天线的配置。3.6.4 JZ863接口的定义用户接口JZ863提供TTL、RS232、RS485接口方式之一,用户选购时需根据自己的需要指定接口方式。用户接口在标准配置下,接口为塑胶插座,缺口朝下,从左向右,依次为1-5脚,各接脚依次定义如表3-8所示:表3-8 JZ863管脚说明Table 3-8 JZ863 Pin Description管脚电台管脚定义说明用户终端备注1VCC+50.5V+5VTTL的3V用户需选配2GND电源终端地DGND/AGND3RXD/RS-485(B)串行数据接收端TXD/RS-485(B)4TXD/RS-485(A)串行数据发送端RXD/RS-485(A)5SLE休眠控制输入端高电平进入休眠,低电平唤醒注:为了防止串口接反而造成无法通讯,请在连接好设备通上电源后,用万用表测量3脚和4脚是否都有电压存在(都有电压表示接法正确),如果只有某一个脚有电压,而另一脚没有电压,则表明串口接反,此时应该将3脚与4脚的接线对换。 用户电源的选择JZ863使用的电源为直流电源,电压为+5V,典型电压为+5V,电流大于200mA。需3V供电的用户建议必须采用TTL接口。电源可以与别的设备共用一个电源,但要选择纹波系数好的电源,建议不用开关电源,如必须用的,请注意开关电源的开关频率与电台频率的相互干扰。为防止静电或强电击穿,在系统设备使用中,则需可靠接地,接地的同时必须与市电完全隔离。休眠功能JZ863分为休眠版本与无休眠版本。JZ863休眠后电流为1uA。用户在订购时必须先声明使用哪一版。其中休眠版本用户可启用与关闭休眠功能,JZ863休眠功能分为:硬件唤醒方式与串口唤醒方式两种(空中唤醒暂保留)。硬件唤醒是通过接口第五脚输入高电平进入休眠,输入低电平唤醒。串口唤醒方式是用户通过向JZ863接口发送指定协议的数据分别启用休眠或唤醒。具有休眠功能的JZ863出厂时休眠功能处于未启用状态,用户必须通过JZ863设置软件来进行设置,根据需要设置成硬件唤醒方式或串口唤醒方式。或用户事先告之我公司,我公司先设置好。如果用户使用具有休眠功能的JZ863,但又不想使用休眠功能,可通过JZ863设置软件来设置成无休眠方式,或者在硬件唤醒模式下,将JZ863的第5脚接地。3.6.5 JZ863参数配置 JZ863参数设置:JZ863常用参数主要有:串口波特率与校验,空中波特率,信道与频率。这些参数均可通过我公司设置软件进行设置。用户在使用过程中也可根据我公司协议动态更改这些参数。空中速率大于串口速率时,一帧可传无限大数据,空中速率小于或等于串口速率时,一帧最多可传255字节。空中速率越高时传输距离会越近。用户使用时请根据需要配置波特率。JZ863常规为5V供电,TTL接口的用户可选配3V。两台JZ863在使用时必需将参数配置如下(我公司出厂时一般会根据用户需求配好参数):两模块信道(即频率)一致;两模块空中波特率一致;两模块串口波特率及校验与所接设备或电脑一致。软件简单操作:进入模块设置软件后,打开连接模块的串口;单击“电台检测”,检测成功后,单击“读参数”,即可读出模块本来的参数,选择相应的参数,单击“设置”即可设置成功。如图3-10所示:图3-10 JZ863参数设置Fig 3-10 JZ863 parameters出厂参数:信道:第一信道;串口速率:9600BPS;串口校验:无;空中速率:9600BPS各信道及频率对照表如表3-9所示:表3-9各信道及频率对照表Table 3-9 and the frequency of the channel table信道号频率 信道号频率1428.0028MHZ 5433.1176 MHZ2429.001 MHZ 6433.6706 MHZ3433.3020MHZ 7433.8286 MHZ4433.9164MHZ 8433.5308 MHZ3.6.6 本设计JZ863 使用说明JZ863的3脚和4脚分别与单片机的串行数据接收端P3.0和串行数据发送端P3.1相连,实现单片机与单片机之间的串行口通信,本设计主要是单片机对小车的行驶过程进行控制。4 系统软件设计本系统采用C语言来进行软件设计。C语言是源于编写UNIX操作系统的语言,是一种结构化语言,可产生紧凑代码。C语言结构是以括号 而不是以字和特殊符号表示的语言。C语言可以进行许多机器级函数控制而不用汇编语言。与汇编语言相比,C 语言有如下优点10,12:对单片机的指令系统不要求了解,仅要求对8051的存储器结构有初步了解;寄存器的分配、不同存储器的寻址及数据类型等细节可由编译器管理;程序有规范的结构,可分为不同的函数,这种方式可使程序结构化;具有可变的选择与特殊操作组合在一起的能力,改善了程序的可读性;关键字及运算函数可用近似人的思维过程方式使用;编程及程序调试时间显著缩短,从而提高效率;提供的库包含许多标准子程序,具有较强的数据处理能力;已编好的程序容易植入新程序,因为C语言具有方便的模块化编程技术;4.1软件总体设计思想为了便于程序的调用和程序的调试,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了,使硬件在软件控制下协调运作。电路上电后,程序首先完成对路面信息的检测,并把所检测的信息传给单片机,单片机以此来通过L293D芯片控制小车的两个驱动轮,液晶片1602同时实时地显示所走过的时间,当前方遇见悬崖小车立即停止并发出报警。单片机通过JZ863无线收发数传模块来控制小车在行驶过程中的状态。4.2各功能模块的软件调试4.2.1路面检测模块的程序调试利用JX-359F红外发射接收管,完成对路面信息的采集。正常行驶时处于工作状态的红外对发管输出低电平,当输出为高电平时,说明小车偏离轨道既做出相应调整。下面是路面检测模块的子程序:/*调整小车方向分别为左:P11,前:P12,后:P13,右:P14*/void move() /*寻迹*/ if(right_check=0&left_check=0) moveStraight(); else if(left_check=0&right_check=1) moveRight(); else if(left_check=1&right_check=0) moveLeft(); else moveRightandLeft(); 路面检测模块子程序流程图如图4-1所示:开始小车寻迹检测车的运动情况直走右转左转是否遇见悬崖满足停车条件停止图4-1路面检测模块子程序流程图Fig 4-1 Subroutine flow chart of the road detection module4.2.2直流减速电机驱动模块的程序调试L293D两个使能端接高电平是表示电机正转,使用红外对发管完成对路面信息的检测从而控制左右两个车轮的转动和停止。下面是直流减速电机驱动的子程序:/*左转*/void moveLeft() left_1=0;left_2=0;right_1=1;right_2=0;delays(10);/*右转*/void moveRight() left_1=1;left_2=0;right_1=0;right_2=0;delays(10);/*直走*/void moveStraight() left_1=1;left_2=0;right_1=1;right_2=0;delays(10);/*左右来回走寻轨迹*/void moveRightandLeft() moveLeft();delays(10);moveRight();delays(10);void stopMove(); left_1=0;left_2=0;right_1=0;right_2=0;delays(10);4.2.3液晶显示模块的程序调试利用液晶片1602实时的显示小车行驶的时间,采用STC89C51内部定时/计数器1产生一秒的定时,当小车开始行驶时即开始定时并在液晶片上实时的显示,当小车遇见悬崖时停止计时。下面是显示子程序:/*在第一行写年 月 日 星期*/void write_sfm1(unchar add,unchar date)write_com(0x80+add);write_data(0x30+date);/*在第二写时间 分 秒*/void write_sfm2(unchar add,unchar date)write_com(0x80+0x40+add);write_data(0x30+date);液晶显示模块子程序流程图如4-2所示:开始1602、定时器1初始化写入第一行,第二行的数据秒等于60秒等于0秒赋值为0,分加1 Shi赋值为秒/10,Ge赋值为秒%10分等于0分等于60 Shi赋值为秒/10,Ge赋值为秒%10写秒的数据于第二行的5、6位小时等于24Shi赋值为分/10,Ge赋值为分%10秒赋值为0,分赋值为0写小时数据与第二行的头两位返回写分的数据于第二行的3、4位图4-2液晶显示模块子程序流程图Fig 4-2 Liquid crystal display module subroutine flowchart4.2.4报警模块的程序调试检测小车是否遇见悬崖的红外对发管输出为高电平时,启动报警模块,P2.0输出低电平,驱动三极管的集电极输出高电平,从而使扬声器产生报警。下面是报警模块的子程序:void baojing() ulong ul; uint n;while(1)for(ul=0;ul3000;ul+) /*输出一个频率的声音*/ for(n=0;n40;n+); /*延时*/ BEEP=BEEP; /*取反输出到喇叭的信*/ for(ul=0;ul2500;ul+) /*输出另一个频率的声音*/ for(n=0;n50;n+); /*延时*/ BEEP=BEEP; /*取反输出到喇叭的信号*/ 报警模块子程序流程图如4-3所示:开始左*和右*=0?扬声器发出报警返回图4-3报警模块子程序流程图Fig 4-3 Alarm module subroutine flowchart4.2.5无线收发模块的程序调试利用单片机的串行口RXD(P3.0)和TXD(P3.1)进行数据通信。将小车行驶的状态进行处理,通过串口通信将小车的状态调用显示子程序进行显示。下面是通过无线收发模块实现微机与单片机串口通信的子程序:void initscon() EA=0;TMOD=0x20;TH1=0xFD;TL1=0xFD;TR1=1;PCON=0x00; SCON=0x50; EA=1;void Send_data(unsigned char S_data)TI=0;SBUF=S_data;unsigned char Receive_data()unsigned char S_data;RI=0;S_data=SBUF;return(S_data);main() P0=0x0F;initscon(); P0=0x0F; TI=0;RI=0;while(1) if(RI) P0=(Receive_data()-48); Send_data(11); RI=0; if(TI) TI=0; 5 系统调试5.1 硬件电路调试硬件电路的调试在系统设计中占有很重要的地位,是对设计的电路能否正常工作,是否能达到设计的要求的检查和测量。调试过程就是利用符合指标要求的各种仪器,例如万用表、示波器、信号发生器、逻辑分析仪等各种测量仪器,对焊接好的电路进行调整和测量,以判断其性能好坏11。首先,电路焊接完成后,不急于通电,先认真检查接线是否正确,找出是否有遗漏或者接错的地方。然后用万用表检查电路中是否有短路和断路的现象,并检查所有的电源线是否导通,所有的地线是否导通。接通电源,用万用表检测各部分电路的电压和电流是否正常。在前三步都没有错误后,编写相应的程序来检查各个功能模块是否正常工作,只到确认硬件电路没有问题为止。5.2 各功能模块软件调试硬件电路检查无误后,需要对系统的各个模块进行软件与硬件相结合的调试。使用WAVE系列仿真器,将仿真器接入硬件电路中,并和电脑的串行口相连。把编写的各个模块的程序先单独调试,通过WAVE软件观察定义的各个量的数据是否是预计的,如果不是,经过逐步调试查出错误所在,并加以更正。在各个模块的程序都正常工作后,将其建立成一个工程,并编写主程序,再加以调试,最后得到正确结果,实现系统功能。6结论与展望本次设计由于自己理论知识的有限和实践经验的不足,使得本设计还存在着一些不足和缺陷,但是基本实现了设计要求的功能。通过本次毕业设计,收获的不仅是理论方面的知识,更重要的是锻炼了实际动手能力,还有初步掌握了设计一个系统时需要的设计思想和方法,这对以后的学习和工作都有一个很大

温馨提示

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

评论

0/150

提交评论