寻光小地鼠的设计与制作_第1页
寻光小地鼠的设计与制作_第2页
寻光小地鼠的设计与制作_第3页
寻光小地鼠的设计与制作_第4页
寻光小地鼠的设计与制作_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

寻光小地鼠的设计与制作摘 要:随着传感器时代的到来,人类希望能有更多的产品来代替人类完成各种危险及费时费力的工作,于是机器人也成为当今世界重要话题。本文研究的是寻光小地鼠,主要用PWM技术控制地鼠行驶状态,用IIC技术进行数字光强度采集,并且通过1602芯片对数字光强度进行简单验证。最后把子程序合并到一起,实现小地鼠的“寻光”功能。关键词:单片机;PWM技术;数字光芯片1Design and manufacture oflight seekingsmall hamsterAbstract:Withthe arrival of the era ofhumansensor,hope to have moreproducts toreplace the humanto complete a variety of dangerousandtime-consuming work,so therobot hasbecomean important topic.This study is thesearch lightsmallhamster,mainlyusing PWM technology tocontrolhamsterrunning state,digitallight intensityacquisition using IICtechnology,andthrough the 1602 chipissimpleto verify thedigital lightintensity.Finally thesubroutinemerge together,realize the smallhamstersearchfunction.Keywords: MCU; PWM technology; digital optical chip2目 录第一章 研究背景与意义1第二章 硬件部分22.1 电源模块22.2单片机简介22.2.1上电复位32.2.2手动按键复位32.2.3看门狗复位32.2.4单片机最小系统42.3电机驱动模块42.4数字光模块7第三章 软件部分93.1单片机指令93.1.1基本指令93.1.2算数操作93.1.3逻辑操作93.1.4程序转移103.15布尔变量操作103.2 PWM调试103.2.1软件实现方法103.3 1602简介113.4数字光模块测试123.5 调试方法15第四章 总结与展望15参考文献17附录(一)19附录(二)21第一章 研究背景与意义自第一次工业革命开始,人类越来越想从手工劳动中解放出来。于是,蒸汽机、电话、电脑应运而出。时至今日,随着传感器的到来,人类更希望能有更多的产品来代替人类完成各项危险的以及各种费时费力的工作。于是机器人也成为当今世界重要话题之一。我研究的论文是:寻光小地鼠的设计与制作,旨在小地鼠能够自动寻找光源。因此,我们就能够让小地鼠利用此功能来寻找以及有效的跟踪物体。因其制作简单、经济又方便,既可以省去大量的人力、物力和财力,又可以代替人类到危险的地方工作。另外,如果在地鼠上添加红外装置或超声波装置还可以实现小地鼠的避障功能,添加灭火装置就能够实现无人自动灭火功能第二章 硬件部分本章主要讲地鼠的硬件部分内容,分为四个模块:电源模块,单片机最小系统,电机驱动模块以及数字光模块;系统的讲述了各模块的硬件组成以及各模块的选取理由。通过本章的描述、选择相应的硬件可以完成小地鼠的制作,进而可以为寻光的实现提供前提条件。2.1 电源模块电源主要用于给整个系统的各个模块供电,没有电源则实验就正常无法运行,而电源种类繁多,选取电源过大会烧坏元器件,选取电源过小可能导致系统无法运行。可见选取的电源不同对整个实验的结果的影响也不同,因此做实验时首要考虑因素之一就是如何选取电源。因为本实验所用元器件不多,只有四大模块,一般单片机所用电源电压为5V左右,数字光模块所用电源电压一般为3.3V-5V,而电机驱动模块所用电源电压一般为5V-12V,另外如需板内取电则电源电压应达到7V以上。为了使用方便,同时也为了节约电源、避免废弃电池对环境的污染,所以选取板内取电。因此只需要对电机驱动模块供电即可,其它模块所需电源可从驱动板内获取。所以选取的电源电压应达到7V以上才能满足系统正常运行。下面有两种方案可供选择:方案一、直接用干电池供电,但供电时间短,需要经常更新电池。既浪费钱又污染环境。方案二、采用可充电电池包供电,可以随时充电随时取用。清洁、安全、可靠。不难看出,方案二使用方便,另外相对于干电池不必经常更换且大大减少了对环境的污染。又因为所选的驱动模块里面可以直接进行片内取电,所以最佳方案为方案二。2.2单片机简介51单片机一般都是相互兼容的,所以选取型号可以因个人爱好而定。本文选的单片机型号为STC89C52RC,40引脚DIP封装形式。含有8个中断源,4个优先级,3个定时器,单片机的复位电路虽然简单,但它却非常重要。一个单片机系统能否正常运行,首先要检查单片机能否复位成功。在介绍最小系统之前,本文想先介绍一下单片机的复位。单片机复位方法一般有上电复位、手动按键复位和看门狗复位三种方式。12.2.1上电复位上电自动复位(如图2-1所示)是在加电瞬间通过对电容充电来实现的。由电路知识可知:在电源通电瞬间,电容C通过电阻R进行充电,此时复位端(REST)会形成正脉冲,用以实现复位。2根据电路图可知:实现上电自动复位功能的必要条件是电源的上升时间不超过1ms即tT=RC。此时,也可以说:只要接通电源就完成了系统的复位初始化功能。图2-1单片机复位示意图2.2.2手动按键复位所谓手动按键复位(如图2-1所示),是指通过人工手动操作、让单片机最小系统中的一个指定按键的产生动作而进入复位状态。在单片机系统进行上电运行后,通常条件下是通过手动按键复位实现来实现单片机的复位功能。因此,在实际应用中我们一般采用上电复位和手动按键复位两种复位方式相结合的形式来实现单片机的复位功能。2.2.3看门狗复位所谓看门狗复位,其实是通过软件编写程序进行复位。如:MOV 0A6H,#01EH;先送1E MOV 0A6H,#0E1H;后送E1。单片机89S51的看门狗软件正常工作的前提条件是必须依靠程序激活,因此我们首先要保证的一点就是单片机的上电复位功能能够可靠运行,反之,看门狗复位功能将处于功能失效模式使之无法进行正常监控和可靠复位。另外,看门狗复位功能能够运行的决定性因素是晶振能够正常可靠运行。2.2.4单片机最小系统单片机最小系统(如图2-2所示)是指单片机在能够正常工作的前提下使用的最少硬件组合。而51系列的单片机基本上都是兼容的,所以51单片机的最小系统电路图基本一致。该部分区域的外围电路图主要由电源、晶体振荡器、电解电容、复位电路四个部分组成。这里以STC89C51单片机为例,介绍51单片机的最小系统电路。图2-2单片机最小系统示意图根据单片机最小系统示意图可以看出:该51最小系统的电路图是由外接晶振通过两个30pf的电容接地,同时采用了手动按键复位和上电自动复位电路。该电路可以实现复位及程序运行的基本功能,对于其它一些兼容型号的单片机同样适用。而且对于所有51单片机的程序设计电路图都是在此基础上进行的。2.3电机驱动模块但凡做寻光、循迹之类的实验都需要物体运动,所以电机自然不可缺少。因地鼠需要完成直线与转弯运动,所以该地鼠至少应备有两个电机。在这里我们暂且先不考虑电机的选择,因为仅让小地鼠实现转弯一个功能就可以有多种方案。众所周知,只要当地鼠两个轮子转速不同时,即让两个轮子的相对运动速度不为零。该地鼠就可以实现转弯的功能。另外如果朝一个方向给小地鼠前面两个轮子一个力,让小地鼠前轮轴与后轮轴形成一个小夹角,即通过外力使地鼠的两个前轮朝着要转向的方向偏转,就像小汽车通过方向盘来改变车轮的偏转方向一样。这样小地鼠也可以实现转弯运动。很明显,让前轮偏转需要机械力来完成,无论是使用步进电机还是使用其他机械力,都会使小地鼠的内部结构变得复杂。这违背了制作小地鼠简单、经济与方便的初衷。所以就小地鼠转弯的角度考虑,选择改变地鼠两个轮子的转速这一方案为佳。下面要面临的问题是如何改变电机转速以及如何选用电机。根据电机学可以知道:电机分为直流电机与交流电机两大类型。根据 (2-3-1) 可以得出直流电机转速公式为: (2-3-2) 其中为额定电压,为额定磁通,为电动势常数, 为转矩常数, (2-3-3)为理想空载转速。直流电动机的固有机械特性为一条下斜线,斜率(2-3-4),斜率越小,直线越平,固有特性越硬。 由电动机转速公式可知: 改变直流电机的转速有改变电压、改变电枢回路总电阻和弱磁调节。改变电压调速的方法是:首先通过保持每极磁通为额定磁通并且电枢回路中间不进行电阻串联的方式,只人为的对电枢电压值的大小进行改变。由于受电机绝缘的限制,改变电压通常为降压方式。此时电机的固有机械特性保持不变,只是转速变小了。改变电枢回路总电阻的方法是:通过保持电枢电压为额定电压并且在额定磁通下的方式,其次在电枢回路中与外接电阻进行串联。由公式可知:电机的固有机械特性变软的充分条件是在保持负载转矩不变的情况下,串联电阻与电机转速之间将会呈现反比例关系,改变磁通一般都是降低磁通,因为当直流电机处于额定磁通下运行时的方式下,磁通已经接近饱和状态,此时磁通总体变化不大,而电流变化却很大,由于电机绝缘性能的限制,所以只能降低磁通。通常方法是在励磁回路串联电阻,通过调节励磁电流来降低磁通,此时电机的固有特性也会改变。交流电机还可以进行改变极对数和变频调速。因为要求小地鼠的制作简单方便,所以选择直流电机。这样可以使用712V直流电驱动电机,现实中很容易实现。下面要说的是为何选择直流减速电机而不选择步进减速电机。有点电机基础的都知道在电机学中直流电机和步进电机是有很大区别的:比如在理论上只要给直流电机的输入端加上合适的电压额定电压,那么直流电机就可以正常输出实现运转功能,而且在实际生活中我们会发现直流电机运转的圈数难以得到精确控制;而步进电机在正常的工作模式下则可以精确旋转到0.1度,因为它是依靠输入的节拍数来决定的。步进电机减速和直流电机减速都是在各自的基础上增加齿轮或其它方法进行减速。另外,两者的控制方式也大不相同,步进电机正常运行的前提条件是必需要在输入端形成控制节拍,小型步进电机可以用ULN2003驱动,而小型的直流电机利用L298N芯片驱动,用PWM调速进行控制,考虑到小地鼠需要做直线与转弯运动,而且使用直流电机比用步进电机所用的元器件少。又因为步进电机的转子具有一定的惯性,所以步进电机在工作中不能立即启动和停止。在启动时应慢慢地逐渐加速到预定速度,而在停止前应逐渐减速到停止,否则电机将产生失步现象。如果用软件利用单片机定时器控制步进电机,在加速阶段时,需要通过建立库或表,把定时器的初值存放在表中,而且定时器的初值应从小到大排列;同理,减速时,也应把定时器的初值放在另一表中,初值按照从大到小排列。而直流减速电机的控制相对简单,只需要改变占空比就可以做加速、减速运动。所以,直流电机更适合驱动小地鼠运行。因为直流电机转速很大,实际生活中若不加控制很容易失控。比如做小车,速度太大很容易使小车飞出跑道。而加了减速装置时,用单片机就很容易控制了。选好了电机,下面该选择驱动了。驱动方法一般分为搭建电路驱动和L298N芯片进行驱动。该电机可以使用三极管的放大电路进行驱动。事实上由于缺少元器件而且自己搭建外围电路时,缺少焊接电路所需的烙铁和锡,所以被迫取消搭建电路的方案。下面我想介绍一下L298N电机驱动芯片。驱动芯片:内部含有双H桥形式的芯片L298N。驱动端子的供电范围是5V35V,如果需要从芯片板的内部直接获取电源电压,则供电的范围改变为7V35V。逻辑部分端子供电范围5V7V可从芯片板的内部直接获取5V电源电压。使能端信号控制为高电平有效。有四个输入端和四个输出端,可以驱动两个直流减速电机,电源使用的是7.2V可充电电池包。2.4数字光模块在这里我想首先解释一下为什么选数字量而不是开关量。选用数字量的好处是结果直观、方便。开关量输出的只有0和1两种结果,显而易见,当地鼠的两个光芯片在一定范围内同时接受到光时,并不能保证光就在小地鼠的正前方。此时,如果小地鼠做直线运动,那么小地鼠便会与光失之交臂,也就是说小地鼠无法正确寻光。因此,为了能保证小地鼠可以正确寻光,我选择数字光模块芯片。因为只有当光在小地鼠正前方所在的平面上,小地鼠两边光芯片输出的值才相等。这样小地鼠才不会因为与光不在同一直线上而跑偏。下面该讲光强模块了:数字光,顾名思义就是把光的强弱转变成数字的大小。这样我们只要通过比较数字的大小就可以比较光的强弱,进而实现寻光。本文选取的内置数字光芯片为BH1750FVI的数字光模块GY_30。该芯片特点如下:1、总线接口(f/s模式支持)2、光谱的范围与人眼相近3、照度数字转换器4、宽范围和高分解(1勒克斯-65535勒克斯)5、低电流关机功能6、50HZ/60HZ光噪声reject-function7、1.8V逻辑输入接口8、无需任何外部零件9、光源依赖性不大10、是有可能的选择的2类型 slave-adress11、可调的光学窗口测量结果的影响12、小测变异13、红外线的影响很小GY-30光强模块引脚及功能描述如下:VCC:供给电压3V-5VSCL:IIC总线时钟线SDA:IIC总线数据线ADDR:IIC地址引脚GND:电源地第三章 软件部分本章主要讲地鼠的软件部分内容,分为三大部分:单片机基本指令部分、PWM的调试部分和数字光的测试部分。系统讲述了各部分内容、调试原理、方法以及详细过程。本章是本篇论文的核心部分,它不仅为小地鼠提供理论支持,还可以让小地鼠在现实中准确寻光。3.1单片机指令单片机指令一般有两种,一种是汇编语言,特点是直接操纵硬件、生成代码高、简单明了,相当于机器语言的缩写。另一种是C语言,移植性比较好,代码效率也比较高,可以对部分硬件直接访问。因C较熟悉,本章仅简单介绍基本汇编语言。3.1.1基本指令MOV A,Rn ;寄存器送AMOVC A,A+DPTR ; 由(A)+(DPTR))寻址的程序存贮器字节选AMOVX A,Ri ; 送外部数据(8位地址)送APUSH direct ; 直接字节进栈,SP加1POP direct ; 直接字节退栈,SP减1XCH A,Rn ; 交换A和寄存器SWAP A ;3.1.2算数操作(A的二个半字节交换)ADD A,Rn ; 寄存器加到ASUBB A,Rn ; A减去寄存器和进位位MUL AB ;A乘以BDIV AB ; A除以BDA A ; A的十进制加法调整3.1.3逻辑操作ANL A,Rn ; 寄存器“与”到AORL A,Rn ; 寄存器“或”到AXRL A,Rn ; 寄存器“异或”到ACLR A ; 清零3.1.4程序转移LCALL addr 16 ; 长子程序调用RETI addr 11 ; 中断调用返回LJMP addr 16 ;长转移JZ ;A为零转移CJNE A,direct,rel ;直接字节与A比较,不等则转移DJNZ Rn,rel ; 寄存器减1,不为零则转移3.15布尔变量操作ANL C,bit ; 直接数“与”到进位ORL C,bit ; 直接位“或”到进位JC rel ; 进位位为1转移3.2 PWM调试讲到PWM大家肯定都不陌生,根据电力学可以知道:PWM有等幅和不等幅之分。为了实验的简单性,本文没有选用外接电路,而是根据PWM的特点,利用单片机软件编程做出简易的PWM。下面本文来重点介绍一下PWM的主要思想以及软件实现的方法。脉冲宽度调制(PWM)在单片机中是一种通过软件编程写0或者写1的方式使得外部所获取的模拟信号发生变化的编码方法。利用单片机定时器或计数器可以进行高低电平转换的功能,输出一系列不同占空比的方波。那么,所获取的模拟信号就可以被调制出来。由于在任意的最小时间段中,直流供电如果不是满幅值供电,那肯定就是完全不供电。所以,此时的PWM信号就是由一系列的0和1组成的信号。我们通过导通在负载上的电压或电流源或关断在负载上的电压或电流源的两种基本方式,把重复脉冲序列的电压或电流源连接到模拟负载上去。即利用高频脉冲通过控制通电与断电之间的比例来控制输出部分的电压。综上所述:在单片机中只要带宽能够满足要求,那么任何范围的模拟量都可以通过PWM技术的形式实现。3.2.1软件实现方法可以采用单片机的定时器中断的功能来实现PWM技术,只需要在一定周期内的某段时间对管脚进行置1或清0即可。即把一个周期分为若干个时间段,在一段时间内对管脚进行操作。所以可以把每个时间段作为一个中断。这样只需要根据中断次数改变对管脚的操作就可以改变占空比,进而实现软件PWM,也就可以对小地鼠的运行速度进行控制了。具体程序见附录(一)。具体调试过程如下:本次调试的内容主要是中断周期和PWM总驱动时间和PWM开驱动时间。所达到的效果是小车可以持续运行。如果中断周期过小会出现小车由于物理惯性来不及运动而静止不动;反之,中断周期过大则会出现小车走一会停一会的现象;另外占空比过小会让小车不能持续运行;占空比过大则使小车速度增大,不易控制。因此,经测试中断周期设置为THT1 = 0EBH ,TLT1 = 00H;占空比为70%(可以改变占空比而改变速度)可以满足要求。3.3 1602简介所谓1602液晶显示芯片,顾名思义指的是显示的内容为上下两行并且每一行都可以显示出16个字符。字符型LCD1602通常分为两种形式14条引脚线的字符型LCD和16条引脚线的字符型LCD。而16条引脚线的字符型LCD比14条引脚线的字符型LCD多了背光电源线VCC(15脚)和接地线GND(16脚),并且它的控制原理和14个引脚线的字符型LCD一致,字符型LCD各引脚的定义及其作用如下表(3-3-1)所示:表3-1 LCD引脚功能表1602芯片测试程序见附录(二)。3.4数字光模块测试在介绍数字光测试之前,本文想先介绍一下IIC总线。IIC即IIC,一种总线结构。例如:内存中的SPD信息,通过IIC,与BX芯片组联系,IIC 存在于英特尔PIIX4结构体系中。随着集成电路的普及与发展发展,通过集成的手段把CPU和一个最小工作系统所必需的模块,如:程序存储器、数据存储器、输入输出端口、模数、数模转换模块等外围电路放在一个单元内对目前社会来说已然不是什么难题了。因此,单片机或微处理器应运而出现在,整个世界中已经有许多公司具备生产单片机的能力、并且生产的品种很多。但众所周知的是,单片机运用最多的还是扩展技术,毕竟单片机的品种的规格十分有限。而串行总线的出现又为单片机扩展硬件设计提供了基础。因为扩展分为连接线多、结构复杂的并行总线扩展和连接线少而且结构也简单的串行总线扩展两种方式。因此,现实生活中为了简化系统的硬件设计我们往往不采取专门为设备连接而设计的母板和插座,而是直接采用很少的几根导线串行总线的方式来连接各个设备。如PHILIPS公司早在十几年前就已经利用该总线可实现多主机系统所需的裁决和高低速设备同步等功能推出了高性能的IIC串行总线。为了能够让两个IIC主设备中的任意一个设备都能与共享资源直接连接,飞利浦电子公司推出了能够广泛适用于从MP3播放器到服务器等计算、通信和网络应用领域并且可以让制造商和终端用户都能够从中获益的新型二选一IIC主选择器。IIC串行总线一般含有具备双向传递功能的数据线SDA和同样具备双向传递功能的时钟线SCL两类信号线。接线时我们可以把所有的串行数据SDA都接到总线的SDA上,所有的时钟线SCL接到总线的SCL上。所有设备上的串行数据线SDA的接口电路用于向总线上发送数据的输出电路,用于接收总线上面数据的输入电路都应具备双向传递功能的。而作为接受主机命令的从机不但具有按总线上的SCL信号发送或接收SDA上信号的功能、也具有向SCL线发送低电平信号用来延长总线时钟信号周期的功能以及作为控制总线数据传送的主机不仅拥有通过SCL输出电路发送时钟信号的功能、还要拥有检测总线上的SCL电平来确定发送下一个时钟脉冲电平具体时刻的能力,两者之间相连接的串行时钟线同样也要具备双向传递功能。防止总线信号读取或传递错误的充分条件是规定所有的设备连接到总线的输出端时一定要为漏极开路(OD)输出或者为集电极开路(OC)输出。所有设备的SDA信号线均为逻辑“与”的关系,SCL信号线同样均为逻辑“与”的关系。由此可以得出一个非常重要的结论:如果当总线的状态处于空闲的时候,上拉电阻就可以把SDA和SCL线均拉到高电平状态。此时但凡有一个设备输出的状态是低电平,那么该设备均能把与之对应的总线状态拉到低电平状态。总线对NMOS和CMOS都可以进行兼容、而在IIC总线上的数据传送率可以达到每秒十万位,在高速方式下的数据传送率为每秒四十万位以上。从此可以看出:对于IIC总线来说,设备接口电路的制造工艺所使用的具体材料无任何特殊要求。需强调的是:总线上所允许连接的设备数量最终的限制条件是规定其电容量应小于400pF。总线的运行(数据传输)由主机一种具备启动数据的传送信号、对设备发出时钟信号和在传送结束时发送停止信号这些功能的设备控制。通常情况下主机均为微处理器。而从机的定义就是指能够被主机寻访的设备。在主机与从机之间进行的数据传送应当是具有双向传递的功能,只要能够把数据成功发送到总线的设备均是发送器,同理,只要能够从总线上可以成功接收数据的设备就叫做接受器,且为了方便被主机进行准确寻访,规定所有接到IIC总线的设备均备有唯一的且与之相对应的一个地址。IIC总线上可以允许连接多个微处理器和多个外围设备电路,如存储器、数码管和液晶显示屏驱动器、模数和数模转换器等。IIC总线可以允许连接不同传送速率的设备。多台设备之间的时钟信号的同步过程叫做同步化。总线处于任意一个时刻时只能被其中一台主机控制,只有当总线状态处于空闲状态时,微处理器才能向其发送用于启动的数据指令。只有满足上面的条件,才能保证数据在总线上能够进行可靠地传送。才能更好的解决多台微处理器同时向总线发送启动的数据传送指令(总线控制权)冲突,和更加明确的确定到底是由由哪一台微处理器来控制总线的相关问题,在IIC总线数据传输过程中可以首先定义两种特定的情况当时钟信号线SCL状态为“高”电平时,数据信号线SDA的状态从“高”电平翻转成“低”电平时就是IIC总线开始传送数据的启动指令;当时钟信号线SCL的状态保持“高”电平并且数据信号线SDA的状态由“低”电平翻转成“高”电平时就是IIC总线停止数据传送的指令。如果利用硬件接口技术则能够很轻松地检测到IIC总线的启动指令和停止指令,如果微机上没有这种硬件的接口的话,只需要通过软件技术在每个时钟周期中对数据信号线SDA的状态至少取样两次就能够把启动指令和停止指令检测出来。所以,我们可以知道:IIC总线的启动指令和停止指令都是从主控制器中发出。在时钟信号线SCL位于在“高”电平期间数据信号线SDA线上的数据一定要处于稳定状态;反之,只有当时钟信号线SCL线上的状态变成“低”电平时,数据信号线SDA上的“高”或“低”两种状态才可以进行改变。每次传输的字节没有特殊要求,但是输出到数据信号线SDA线上的每个字节一定要为8位,而且传输的每个字节必须要有一个应答信号ACK与之对应。假若有一个接收器件在完成其他功能(例:响应内部中断程序)前对另一组数据的字节无法进行完整的接收时,那么接收器件应当让时钟信号线SCL为“低”电平的状态,用来控制发送器呈现“等待”状态;而只有在接收器为数据的其它字节接收做好准备后时钟信号线SCL才能得到释放,数据的传输工作才可以继续进行。当发送器处于应答期间时一定要把数据信号线SDA的状态下拉至“低”电平状态,而和应答信号对应的时钟脉冲则从主控制器中发出,另外数据的传送一定要有应答信号与之对应。寻址的被控器件在无法完成应答的情况下,数据保持为高并使主控器产生停止条件而终止传输。在数据传输的过程中并且在主控接收器用到的情况下,主控接收器产生停止信号的前提条件是通过给被控发送器发送一个数据结束信号指令,从而让数据信号线SDA得到释放。资料中查得合法的数据传输格式如下所述:根据IIC总线在启动指令完成后的首个字节将可以确定主控器选择的到底是哪一个被控器。也就是说系统中的每一个器件都将在启动指令传输过后的前7位地址和自己所在的地址展开比较。如果是两者相同,那就代表被主控器寻址就是该器件,至于是被当作被控接收器还是被当作被控发送器就只能根据R/W位的数值来确定了。3.5 调试方法本文主要是利用单片机根据数字光来控制小地鼠的运行状态。程序主要思想是比较两个数字光芯片测的数值大小,即左边数值大则左转;右边数值大右转;两边数值一样大则直行。至于如何停止,则根据第一次测得数值平均值和第二次测得数值平均值进行比较。若小于,继续执行;反之则停止。第四章 总结与展望4.1 总结 本篇论文的重点和难点在于光强度的采集。所涉及的内容有中断技术、单片机的扩展技术、IIC总线以及液晶芯片1602的相关知识及应用。该论文是我在电脑前逐字逐句敲出来的。写这篇论文之前感觉这论文简单,应该能够在很短时间内完成。但是,当我具体做这个论文时,我才发现我原来把它想的太简单了。单是选实验材料就用了我一周的时间,那时才明白原来时间真的很紧。于是开始慎重起来,接下来开始准备电机驱动模块和数字光模块的资料。用了五天的时间写出了PWM,然后花了三天时间进行调试。虽然结果不太完美,总算能说的过去。然后是数字光的调试,我在此之前先准备了1602芯片,用了两周的时间才逐渐看懂芯片,为数字光的显示打下基础。接下来该是本论文的重点部分了光强度的采集。因为光强模块来自于淘宝,所以买的时候商家附带了一些芯片资料和验证程序。于是,我首先使用商家的测试程序验证光强度。只是当我把程序烧进单片机时发现:原来验证程序也会出错的!最终经过一个多月的不懈努力,终于把数字光采集了出来。至此,论文大体完成。经过这段时间的学习,我深刻理解了“纸上得来终觉浅,绝知此事要躬行”的真谛。我知道原来程序不是最难的,最难的是程序的调试。你可能只用半天级就能写出你所想要的程序,但你却需要不止半天的时间来调试程序。而程序的调试时间往往是写程序所用时间的两倍、三倍以致更多。不仅如此,当你写完论文时,你会发现一个奇怪的现象:你当初费尽心思整理出来的思路到了最后已经面目全非了!4.2 展望本文主要讲述了小地鼠的“寻光”功能。除此之外,我们还可以对小地鼠进行一些“变身”。如:把数字光芯片换成红外感应芯片,则可以实现小地鼠的 “避障” 功能;在小地鼠身上添加灭火装置,则可以实现小地鼠的 “自动灭火” 功能可以看出:小地鼠的潜在功能非常强大,因其制作简单、经济而又方便,所以小地鼠的制作成功必会对未来社会的发展起到不可估量的作用 参考文献1张毅刚.单片机原理及应用.高等教育出版社M,2003.12(1).2李华等编著.MCS-51系列单片机应用系统设计.北京:北京航空航天大学出版社,1995 3陈明荧.8051单片机课程设计实训教材.北京:清华大学出版社,2003 4阎石.数字电子技术基础.北京:高等教育出版社,1997 5陈大钦电子技术基础模拟部分(第四版)M高等教育出版社,2001.66何立民.MCS-51系列单片机应用系统设计.北京:北京航空航天大学出版社,19957陈世夏.频分制红外遥控开关电路的设计J.现代电子技术.2010(20) 8Meiqin.MSC-51 series single-chip microcomputer system and its application M. 2004.6 9Control Circuit Design of AC Frequency Conversion Systems for Speed Governing10Proceedings of 4th International Symposium on Test and Measurement(Volume 2) C,2001. 11The measurement of oil consumption on engineA,Proceedings of 4th International Symposium on Test and Measurement(Volume 2) C,2001. 12 郭志伟.基于NE555的自动供水控制器设计J.微型机与应用.2011(11)13夏路易电路原理图与电路板设计教程M北京希望电子出版社,2002.6. 14马忠梅等单片机的C语言应用程序设计M北京航空航天大学出版社,2003.11. 15聂毅单片机定时器中断时间误差的分析及补偿J微计算机信息,2002.18(4)16臧海波.玩转低技术用74HC240制作寻光机器人J.电子制作.2011(09) 17马忠梅等单片机的C语言应用程序设计M北京航空航天大学出版社,2003.11.附录(一)PWM程序如下所示:THT1 EQU 0EBH TLT1 EQU 00H/中断周期 OP EQU 14H /开驱动时间 WGP EQU 13H CP EQU 20H /总驱动时间 ZLF BIT P2.7 /INT A,B,C,DP20,1,6,7 YLF BIT P2.1 ORG 0000H AJMP MAIN ORG 001BH AJMP SERVE ORG 0030H MAIN:MOV SP,#6FH /主程序 MOV TMOD,#10H SETB ET1 SETB EA MOV 31H,#0H MOV 30H,#0H /开始驱动时间计数 MOV TH1,#THT1 MOV TL1,#TLT1 SETB TR1 SJMP $ SERVE:PUSH PSW /中断服务程序 PUSH ACC MOV TH1,#THT1 MOV TL1,#TLT1 MOV A,#01H ADD A,30H MOV 30H,A MOV A,#01H ADD A,31H MOV 31H,A MOV R2,30H MOV R3,31H CJNE R2,#OP,PWM MOV 30H,#WGP SJMP PANDU PWM:CLR ZLF /小车运动状态设定 CLR YLFMOV P2,#41HSJMP RETUNT PANDU: CJNE R3,#CP,PWMN MOV 30H,#0H /重新开始 MOV 31H,#0H SJMP RETUNT PWMN: MOV P2,#00H /小车停止 SJMP RETUNTRETUNT:POP ACCPOP PSWRETIEND附录(二)数字光采集程序及1602显示程序如下:#include #include /Keil library #include /Keil library#include #define uchar unsigned char#define uint unsigned int#define DataPort P2 /LCD1602数据端口sbit SCL=P10; /IIC时钟引脚定义sbit SDA=P11; /IIC数据引脚定义sbit LCM_RS=P16; /LCD1602命令端口sbit LCM_RW=P15; /LCD1602命令端口sbit LCM_EN=P14; /LCD1602命令端口 #define SlaveAddress 0x46 /定义器件在IIC总线中的从地址,/46/B8根据ALT ADDRESS地址引脚不同修改/ALT ADDRESS引脚接地时地址为0xA6,接电源时地址为0x3Atypedef unsigned char BYTE;typedef unsigned short WORD;BYTE BUF8; /接收数据缓存区 uchar ge,shi,bai,qian,wan; /显示变量int dis_data; /变量void delay_nms(unsigned int k);void InitLcd();void Init_BH1750(void);void WriteDataLCM(uchar dataW);void WriteCommandLCM(uchar CMD,uchar Attribc);void DisplayOneChar(uchar X,uchar Y,uchar DData);void conversion(uint temp_data);void Single_Write_BH1750(uchar REG_Address); /单个写入数据uchar Single_Read_BH1750(uchar REG_Address); /单个读取内部寄存器数据void Multiple_Read_BH1750(); /连续的读取内部寄存器数据void Delay5us();void Delay5ms();void BH1750_Start(); /起始信号void BH1750_Stop(); /停止信号void BH1750_SendACK(bit ack); /应答ACKbit BH1750_RecvACK(); /读ackvoid BH1750_SendByte(BYTE dat); /IIC单个字节写BYTE BH1750_RecvByte(); /IIC单个字节读void conversion(uint temp_data) / 数据转换出 个,十,百,千,万 wan=temp_data/10000+0x30 ; temp_data=temp_data%10000; /取余运算qian=temp_data/1000+0x30 ; temp_data=temp_data%1000; /取余运算 bai=temp_data/100+0x30 ; temp_data=temp_data%100; /取余运算 shi=temp_data/10+0x30 ; temp_data=temp_data%10; /取余运算 ge=temp_data+0x30; void delay_nms(unsigned int k) /毫秒延时*unsigned int i,j;for(i=0;ik;i+)for(j=0;j121;j+);void WaitForEnable(void)/*/DataPort=0xff;LCM_RS=0;LCM_RW=1;_nop_();LCM_EN=1;_nop_();_nop_();while(DataPort&0x80);LCM_EN=0;void WriteCommandLCM(uchar CMD,uchar Attribc) /*/if(Attribc)WaitForEnable();LCM_RS=0;LCM_RW=0;_nop_();DataPort=CMD;_nop_();LCM_EN=1;_nop_();_nop_();LCM_EN=0;void WriteDataLCM(uchar dataW)/*/WaitForEnable();LCM_RS=1;LCM_RW=0;_nop_();DataPort=dataW;_nop_();LCM_EN=1;_nop_();_nop_();LCM_EN=0;void InitLcd()/*/WriteCommandLCM(0x38,1);WriteCommandLCM(0x08,1);WriteCommandLCM(0x01,1);WriteCommandLCM(0x06,1);WriteCommandLCM(0x0c,1);void DisplayOneChar(uchar X,uchar Y,uchar DData) /*/Y&=1;X&=15;if(Y)X|=0x40;X|=0x80;WriteCommandLCM(X,0);WriteDataLCM(DData);void Delay5us() _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

温馨提示

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

评论

0/150

提交评论