基于51单片机控制的障碍检测器_第1页
基于51单片机控制的障碍检测器_第2页
基于51单片机控制的障碍检测器_第3页
基于51单片机控制的障碍检测器_第4页
基于51单片机控制的障碍检测器_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、目录1 绪论12 设计目的13整体设计13.1 设计要求13.2 设计思路13.3 设计方案24 硬件电路设计44.1 单片机系统44.1.1 单片机型号选择44.1.2 STC89C52硬件简介54.2 镜面反射式光电开关模块54.3复位电路和晶振电路64.3.1 复位电路设计64.3.2晶振电路设计64.4 LCD显示模块74.4.1液晶1602的工作原理74.4.2液晶1602的引脚说明84.4.3读写时序操作及基本操作指令94.5 总体电路设计104.5.1 各模块组成104.5.2 元件清单115 程序设计115.1 程序设计总思路115.2 系统子程序设计125.2.1 主程序12

2、5.2.2 LCD1602初始化136仿真156.1 软件调试156.2 仿真结果156.2.1系统仿真、实际结果图157 心得体会178 参考文献17附录118元件清单18附录219源程序:19(1) 头文件Include.h源程序19(2) 显示屏lcd1602.c源程序19(3) 主模块main.c源程序23基于51单片机控制的障碍检测器1 绪论目前许多的课程设计都具有一定的智能化,所以检测障碍物模块的研究必不可少,这样可以提高产品的智能化,例如小车循迹,机器人智能行走等等都需要用到智能的障碍检测器用来提供产品对所处环境的判断。本文主要阐述一种基于光电开关和单片机实时测出前方障碍的设计。

3、以STC89C52RC单片机为核心,光电开关检测前方障碍,实现对产品前方障碍的检测。该障碍检测器能将传感器输入到单片机的脉冲信号送至LCD1602显示。软件部分用C语言进行编程,采用模块化设计思想。该系统硬件电路简单,子程序具有通用性,符合设计要求。2 设计目的了解一般电气控制系统设计过程、设计要求、应完成的共工作内容和具体设计方法。培养独立工作能力与创造力;综合运用专业及基础知识的能力,解决实际工程技术问题的能力;培养查阅图书资料、产品手册和各种工具书的能力;工程绘图的能力;书写技术报告和编制技术资料的能力。通过这一学期的学习,觉得课堂上学到的理论知识没有能够及时的转化为动手能力和实验能力,

4、而课程设计环节正好解决了这一隐患,使我们能够真正的把学到的理论转换为实践。鉴于此,本人选择障碍检测器仪作为研究方向,一方面为了增进对单片机的认识,加深对单片机理论方面的理解,巩固所学理论知识;掌握单片机的内部功能模块的应用;另一方面培养自己系统设计的思想,培养自己的软件设计能力,提高自己的动手能力;培养自己查阅相关资料、撰写文档的能力和自学、科研的能力。3整体设计3.1 设计要求利用光电开关的检测,观点开关在检测到空心区域会让光电开关的信号通过通过比较器产生高电平送给单片机,在实心区域会隔离光电开关的信号通过比较器产生低电平送给单片机,通过高低电平的切换和数据处理后我们可以实时的测出前方是否有

5、障碍物。3.2 设计思路(1)根据设计要求,选择STC89C52RC单片机为核心控制器件。(2)光电开关和码盘组成脉冲采集模块。(3)实时检测结果显示采用LCD1602液晶显示屏。3.3 设计方案障碍检测器由五部分组成,有单片机的核心的主控电路,有提供时钟信号的晶振电路,有提供初始化的复位电路,有显示结果的显示电路,还有主要的障碍检测电路。五个模块各司其职,又紧密联系,当光电开关模块检测到前方有障碍物时输入高电平给单片机,再由单片机控制1602显示屏显示“异常”字样;当光电开关模块检测到前方没有障碍物时输入低电平给单片机,再由单片机控制1602显示屏显示“正常”字样。4 硬件电路设计4.1 单

6、片机系统4.1.1 单片机型号选择单片机就是将微处理器、存储器、总线、定时器/计数器、输入/输出接口、中断系统和其它多种功能器件集成在一块芯片上的微型计算机。具有可靠性高、便于扩展、控制功能强、控制指令丰富、低电压、低功耗、片内存储容量较小、集成度高、体积小、性价比高、应用广泛、易于产品化等特点。所以单片机的选择很必要,选择合适的单片机不仅能做到资源合理利用,更是能更有效的帮助我们完成设计内容,达到理想的设计成果。在此次研究中,我根据单片机内部的指令结构,程序存储方式以及功能等几个方面选择了STC89C52这种单片机。4.1.2 STC89C52硬件简介STC89C52单片机作为核心控制体,该

7、单片机具有高可靠,超低价,低功耗,无法解密等优点。该单片机属于双列直插式封装的PDI40口管脚。具有4个输入输出端口,分别为PORT0、PROT1、PROT2、PROT3,其中P0口是一组8位漏极开路型双向IO口,校验时,要求接上拉电阻。其他三个内部有30K的电阻,所以不用再外接电阻。此单片机具有6个中断,其中包括三个定时器中断,二个外部中断,一个串口中断,为全双工通信口。内部有静态非易失EEPROM和看门狗。片内含8Kbbytes的可反复檫写的只读程序存储器(PEROM)和256bytes的随机存取数据存储器(RAM),功能强大,适合许多较为复杂的控制应用场合。相比较其他芯片来说比较适合学生

8、试验所用,故采用此单片机作为核心控制芯片。核心控制器件选用STC89C52单片机。STC89C52单片机为40管脚双列直插芯片,它是一种高 性 能,低 功 耗 的8位CMOS微 处 理 器 芯 片,市 场 应 用 最 多。而 且 价 格 便 宜,控 制方便,便于应用有4个I/O口分别为P1、P2、P3、P4。其中每一个管脚都能做独立的输入输出管脚,它的第9脚位复位管脚,接上电容和上拉电阻再带个开关构成复位电路。18,19管脚接外部晶振和两个微调电容构成外部晶振电路。单片机、复位电路、晶振、电源构成单片机最小系统。4.2 镜面反射式光电开关模块光电开关由振荡回路产生的调制脉冲经反射电路后,然后用

9、数字积分光电开关或RC积分方式排除干扰,最后经延时(或不延时)触发驱动器输出光电开关控制信号。利用光学元件,在传播媒介中间使光束发生变化;利用光束来反射物体;使光束发射经过;长距离后瞬间返回。光电开关是由发射器、接收器和检测电路三部分组成。发射器对准目标发射光束,发射的光束一般来源于发光二极管(LED)和激光二极管。光束不间断地发射,或者改变脉冲宽度。受脉冲调制的光束辐射强度在发射中经过多次选择,朝着目标不间接地运行。接收器有光电二极管或光电三极管组成。在接收器的前面,装有光学元件如透镜和光圈等。在其后面的是检测电路,它能滤出有效信号和应用该信号。光电耦合器是以光为媒介传输电信号的一种电一光一

10、电转换器件。它由发光源和受光器两部分组成。把发光源和受光器组装在同一密闭的壳体内,彼此间用透明绝缘体隔离。发光源的引脚为输入端,受光器的引脚为输出端,常见的发光源为发光二极管,受光器为光敏二极管、光敏三极管等等。光电耦合器的种类较多,常见有光电二极管型、光电三极管型、光敏电阻型、光控晶闸管型、光电达林顿型、集成电路型等。工作原理在光电耦合器输入端加电信号使发光源发光,光的强度取决于激励电流的大小,此光照射到封装在一起的受光器上后,因光电效应而产生了光电流,由受光器输出端引出,这样就实现了电一光一电的转换。4.3复位电路和晶振电路4.3.1 复位电路设计图2 复位电路4.3.2晶振电路设计图3

11、晶振电路4.4 LCD显示模块4.4.1液晶1602的工作原理1602液晶应用非常广泛,操作简单,功能强大,采用1602液晶显示各种数字信息最为合适,通过对单片机的编程来控制DS1302和DS18B20芯片的读写操作来获取相应的信息,再通过对液晶的编程控制将获取到的信息通过一系列转换从而显示到1602液晶上。最后达到有实时时钟、万年历、温度测量、秒表、闹钟等功能。系统论证时通过在单片机学习板上的试验操作,能够达到预期的效果。具体电路的制作是很简单的,就接了两个电阻,一个是10欧姆的背光限流电阻,另一个是2K的LCD极板电压调节电阻。这两个电阻的阻值怎么定呢?背光比较简单,它就相当于在后面接了几

12、个发光二极管,任何时候只要在15、16脚串上个100欧的电位器接上电源,调节电位器,觉得亮度合适。此时的阻值便可。LCD液晶极板驱动电压调节电阻的确定就稍微麻烦一点。在各数据线,控制线接好关通上电源的前提下在第3脚(VEE)和地之间接一个10K的电位器。调节电位器。当3脚电压高时为全亮,电压为0时为全暗(液晶全显示为黑块)。用电位器把屏幕从全暗刚好调到变亮。这时便可调试程序。待屏幕能正确显示后再细调电位器,使对比度合适。这时的阻值便可确定,然后换成等值的固定电阻焊上便可。表1 基本参数4.4.2液晶1602的引脚说明图4 LCD1602引脚图表2 各引脚说明4.4.3基本操作指令1602液晶模

13、块的读写操作、屏 幕 和 光标的操作都是通 过 指令编程来实现的。(说明:1为高电平、0为低电平)。 指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标 复 位,光标返回到地址00H。指令3:光标和显示模式设置I/D:光 标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显 示 开关控制。D:控制整体显 示 的 开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标 或 显示移 位&

14、#160;S/C:高电平时移 动 显示的文字,低电平时移动光标。指令6:功能设 置 命令DL:高电平时 为 4位 总 线 ,低电平时为8位 总 线 N:低电平时 为 单行显示,高电平时双行显示F:低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。  指令8:DDRAM地址设置。  指令9:读忙信号和光标地址BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。  指令10:写数据。指令11:读数据。4.4.4读写时序操作(1)写操作: 当我们要写指令

15、字,设置LCD1602的工作方式时:需要把RS置为低电平,RW置为低电平,然后将数据送到数据口D0D7,最后E引脚一个高脉冲将数据写入。  当我们要写入数据字,在1602上实现显示时:需要把RS置为高电平,RW置为低电平,然后将数据送到数据口D0D7,最后E引脚一个高脉冲将数据写入。 发现了么,写指令和写数据,差别仅仅在于RS的电平不一样而已。(2)读操作:4.5 总体电路设计4.5.1 各模块组成(1)根据设计要求,选择STC89C52RC单片机为核心控制器件。(2)光电开关脉冲采集模块。(3)LCD1602液晶显示屏。(4)复位电路。(5)晶振电路。4.5.2

16、 使用元件介绍(1)主控芯片:STC89C52RC一块,光电模块一个。(2)电阻10K一个(作为复位电路上拉电阻),10uf电解电容(复位充电)。(3)LCD1602液晶显示屏(实时显示当前里程),排阻一个(P0口上拉电阻)。(4)30pf电容两个和12MHZ晶振一个(晶振稳频,电容滤波)。图7 整体电路图5 程序设计5.1 程序设计总思路根据模块的划分原则,将该程序划分初始化模块,光电模块子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,如图所示。开始Lcd1602初始化前方有障碍物? Yes No显示正常显示异常图8 主程序框图5.2 系统具体程序设计5.2.1 主程序设计通过

17、查询光电开关传输的高低电平,检测光电开光前方是否有障碍物。int main(void) LCD_Init(); while(1)if(!KeyPress)Disp_Normal();while(!KeyPress);LCD_Clear();elseDisp_Unusual();while(KeyPress);LCD_Clear();return 0;5.2.2 LCD1602初始化子程序设计Lcd1602初始化为对相关寄存器的配置,LCD的配置分为写数据和些命令,需要对RS拉高拉低进行选择void LCD_Init() LCD_WriteCmd(0x38);/*功能设定*/ Delayms(1

18、);/*延时1ms确保数据准确送达,下同*/ LCD_WriteCmd(0x01); /*清屏,将光标移至左上角*/ Delayms(1); LCD_WriteCmd(0x06);/*设定进入模式*/ Delayms(1); LCD_WriteCmd(0x0c);/*打开显示器开关*/ Delayms(1);void LCD_WriteCmd(u8 cmd) RS = 0;/*拉低进入命令写入模式*/ EN = 0; P0 = cmd; EN = 1;/*使能数据口接收信号*/ Delayms(1);/*延时确保命令写入*/ EN = 0;void LCD_WriteData(u8 dat)

19、RS = 1;/*拉高进入数据写入模式*/ EN = 0; P0 = dat; EN = 1; Delayms(1); EN = 0;6仿真6.1 软件调试软件仿真过程应该为:首先,绘画出ptotues的电路图,然后再在kiel4中编写程序,再然后进行编译,kiel4中生成王建成110910099.hex文件,再把hex文件添加到protues中的单片机里,再进行仿真,从而得以完成整个的软件仿真。6.2 仿真结果6.2.1 系统仿真、实际结果图程序编译情况如图9所示,主函数负责调用子函数,以及对光电开关的查询。其中的while部分就是查询光电开关是否检测到障碍物的,通过条件判断开关,然后显示结

20、果,再清屏。图9 程序调试图实物仿真图如图10所示,第一幅图中所示,当接地开关断开时,P3.4为高电平,表明,光电开关前方没有障碍物,所以显示屏显示“异常”字样。第二幅图中所示,当接地开关闭合时,P3.4为低电平,表明,光电开关前方有障碍物,所以显示屏显示“正常”字样。 图10 proteus仿真图6.3实物安装与文字说明(1)准备元器件,准备焊接;(2)正确焊接元器件,做到不漏焊,不虚焊;(3)焊接好后检测电路是否焊接有误,有则及时改正,注意检查电路的电源和地是否焊接正确;(4)安好全部元器件后,进行调试;(5)调试过程:若光电开关前有障碍物就显示正常,否则显示异常如图11所示 图 11 实

21、物结果图7 心得体会不知不觉地紧张而有序的两周课程设计结束了,回想起来,我感觉学到了许多有用的知识,以前只是在课堂上,理论性的学习过三极管、运算放大器、电容、电阻、单片机,并不知道在实际中如何去运用,计算。甚至不会读取电阻、电容的阻值;如何去选取电子元器件。通过这两周的课程设计,我慢慢得学会了如何去排除电路的故障,如何解决现有的问题,去分析电路的作用。进一步加强了对单片机编程能力,同时也发现了自己的不足之处。印象最深的是电路设计焊接完毕后进行调试,刚开始的时候,自己不知道如何去调试,从何下手,经过指导教师的指点,我一步步进行调试。在调试过程中损毁了不少的电器元器件,从损毁的电器元器件中,摸索学

22、到了如何维修电路,从何下手去检查电路中出现的故障,自己如何解决故障。我是总想追求完美的人,可总不那么完美。但是我比较骄傲的是我用这两周的时间读懂了本次黑线检测器电路,和更深远的知识。能够解决电路中的一般性质的问题。这是值得庆幸的事。在这里我很感谢学校和肖老师给我这次机会,也很感谢自己给了自己一次机会。回顾起此次课程设计,至今我仍感慨颇多,从理论到实践,在整整半个月的日子里,我学到很多很多的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的内容。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结

23、论,才是真正的知识,才能提高自己的实际动手能力和独立思考的能力。在设计的过程遇到了各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计,把以前所学过的知识重新温故,巩固了所学的知识。参考文献【1】谭浩强编著.C程序设计第二版M北京:清华大学出版社,1999 【2】徐爱钧、彭秀华单片机高级语言C51 应用程序设计-北京:北京航空航天大学出版社2006.1 【3】薛均义、张彦斌. MCS-51 系列单片微型计算机及其应用-西安:西安交通大学出版社 2005.1 【4】楼然苗.51系列单片机设计实例北京:北京航空航天大学出版社20

24、06【5】黄智伟传感器应用设计实例制作一北京:电子工业出版社2006.4 附录1元件清单: 2014 年 7月 4 日课题题目基于51单片机控制的障碍检测器设计者王建成指导老师肖婧系统功能简介 结合光电开关和单片机测出光电开关前方的障碍物并在LCD1602上显示正常,异常;若前方有障碍就显示正常,没有就显示异常。系统原理框图所需元器件10k电阻一个;10k滑动变阻器一个;10uf电解电容一个;30pf电容两个;10k排阻一个;开关一个;光电开关一个;LCD1602显示屏一个;STC89C52单片机一片;指导老师意见发件人(签名) 年 月 日领件人(签名) 年 月 日附录2源程序:(1) 头文件

25、Include.h源程序:#ifndef _INCLUDE_H #define _INCLUDE_H#include <reg51.h>typedef unsigned char u8;typedef unsigned int u16;void LCD_Init(void);void LCD_Clear(void);void LCD_WriteStr(u8 x,u8 y,u8 *str);void Disp_Normal(void);void Disp_Unusual(void);#endif(2) 显示屏lcd1602.c源程序:#include <reg51.h>#

26、include <intrins.h>typedef unsigned char u8;typedef unsigned int u16;sbit RS = P20;sbit EN = P21;unsigned char Code=0x00,0x00,0x00,0x0f,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x05,0x05,0x05,0x05,0x0f,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,/*正,15*14*/ 0x01,0

27、x05,0x03,0x01,0x0f,0x08,0x07,0x04,0x00,0x00,0x08,0x10,0x1c,0x04,0x18,0x08, 0x07,0x01,0x07,0x05,0x01,0x01,0x01,0x00,0x18,0x00,0x18,0x08,0x00,0x00,0x00,0x00,/*常,15*14*/ 0x00,0x07,0x04,0x07,0x04,0x07,0x02,0x0f,0x00,0x1c,0x04,0x1c,0x02,0x1c,0x08,0x1e,0x02,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x08,0x08,0x0

28、8,0x08,0x08,0x00,0x00,0x00/*"异",0*/;void Delayms(u16 ms) u8 i;while(ms-) for(i=0;i<120;i+);void LCD_WriteCmd(u8 cmd)RS = 0;EN = 0;P0 = cmd;EN = 1;Delayms(1);EN = 0;void LCD_WriteData(u8 dat)RS = 1;EN = 0;P0 = dat;EN = 1;Delayms(1);EN = 0;void Disp_Normal(void)u8 i;LCD_WriteCmd(0x40);for

29、(i=0;i<64;i+)LCD_WriteData(Codei);Delayms(5); LCD_WriteCmd(0x80);LCD_WriteData(0x00);LCD_WriteData(0x01);LCD_WriteCmd(0xc0);LCD_WriteData(0x02);LCD_WriteData(0x03);LCD_WriteCmd(0x80+2);LCD_WriteData(0x04);LCD_WriteData(0x05);LCD_WriteCmd(0xc0+2);LCD_WriteData(0x06);LCD_WriteData(0x07);void Disp_Unusual(void)u8 i;L

温馨提示

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

评论

0/150

提交评论