扬州大学单片机课程设计超声波测距仪的设计_第1页
扬州大学单片机课程设计超声波测距仪的设计_第2页
扬州大学单片机课程设计超声波测距仪的设计_第3页
扬州大学单片机课程设计超声波测距仪的设计_第4页
扬州大学单片机课程设计超声波测距仪的设计_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、扬州大学能源与动力工程学院课程设计报告题 目: 超声波测距仪的设计 课 程: 单片机原理及应用课程设计 专 业: 电气工程及其自动化 班 级: 电气1102 姓 名: 浦 健 学 号: 111704222 第 一 部 分任务书单片机原理及应用课程设计任务书一、课题名称超声波测距仪的设计二、课程设计目的课程设计是课程教学中的一项重要内容,是达到教学目标的重要环节,是综合性较强的实践教学环节,它对帮助学生全面牢固地掌握课堂教学内容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。单片机原理及应用是一门理论性、实用性和实践性都很强的课程,课程设计环节应占有更加重要的地位。单片机原理及

2、应用课程设计的目的是让学生在理论学习的基础上,通过完成一个涉及MCS-51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能将课堂上学到的理论知识与实际应用结合起来,而且能进一步加深对电子电路、电子元器件等知识的认识与理解,同时在软件编程、排错调试、相关软件和仪器设备的使用技能等方面得到较全面的锻炼和提高。为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。通过单片机硬件和软件设计、调试、整理资料等环节的培训,使学生初步掌握工程设计方法和组织实践的基本技能,逐步熟悉开展科学实践的程序和方法。三、课程设计内容设计以89C51单片机和外围元器件构成的单片机应

3、用系统,并完成相应的软硬件调试。1. 系统方案设计:综合运用单片机课程中所学到的理论知识,学生根据所选课题的任务、要求和条件进行总体方案的设计。2. 硬件电路设计:对方案中以单片机为核心的电路进行设计计算,包括元器件的选择和电路参数的计算,并画出总体电路图。3. 软件设计:根据已设计出的软件系统框图,用汇编语言或C51编制出各功能模块的子程序和整机软件系统的主程序。4. 调试:在单片机EDA仿真软件环境Proteus下进行仿真设计并调试;或在单片机周立功实验箱上进行相关设计并调试。四、课程设计要求1. 测量有效范围0-60cm;2. 测量的距离值在1602LED液晶上显示(保留一位小数);3.

4、 设计硬件原理图;4. 编写程序。五、进度安排序号内容天数1布置任务,熟悉课题要求0.52总体方案确定,硬件电路设计1.53软件编程1.54Proteus仿真,或在周立功实验箱上调试25总结,撰写课程设计报告1.5七、课程设计报告内容:总结设计过程,写出设计报告,设计报告具体内容要求如下:1课程设计的目和设计的内容。2课程设计的要求。3控制系统总框图及系统工作原理。4控制系统的硬件电路连接图,电路的原理。 5软件设计流程图及其说明。6电路设计,软件编程、调试中遇到的问题及分析解决方法。7实验结果及其分析。8体会。第 二 部 分课程设计报告目 录1 课题简介71.1设计目的71.2设计内容71.

5、3设备及工作环境72 方案设计82.1 超声波测距原理82.2 系统总体设计方案93硬件电路设计103.1 时钟电路103.2 复位电路103.3 1602液晶显示电路103.4超声波发射模块113.5超声波接收模块114 软件编程设计124.1 程序设计流程图124.2 1602LCD液晶显示控制程序124.3 超声波测速模块发送程序184.4 超声波模块回波检测程序194.5 数据处理程序194.6 数据送液晶显示程序205 实验与结果分析215.1软硬件仿真调试215.2 结果分析216 小结与体会23参 考 文 献24附录251 课题简介 1.1设计目的 (1) 设计一个超声波测距仪;

6、 (2)课程设计是课程教学中的一项重要内容,是达到教学目标的重要环节,是综合性较强的实践教学环节,它对帮助学生全面牢固地掌握课堂教学内容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。单片机原理及应用是一门理论性、实用性和实践性都很强的课程,课程设计环节应占有更加重要的地位。单片机原理及应用课程设计的目的是让学生在理论学习的基础上,通过完成一个涉及MCS-51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能将课堂上学到的理论知识与实际应用结合起来,而且能进一步加深对电子电路、电子元器件等知识的认识与理解,同时在软件编程、排错调试、相关软件和仪器设备

7、的使用技能等方面得到较全面的锻炼和提高。为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。通过单片机硬件和软件设计、调试、整理资料等环节的培训,使学生初步掌握工程设计方法和组织实践的基本技能,逐步熟悉开展科学实践的程序和方法。1.2 设计内容1.2.1 设计要求设计一个超声波测距仪。具体要求:(1)测量范围:0-60cm;(2)测量精度:±5%;(3)选定设计方案,画出系统框图,写出详细的设计过程;(4) 利用Protel 99 SE软件画出一套完整的设计电路图,并列出所有的元件清单;1.2.2 设计内容及任务 设计以89C51单片机和外围元器件构成的单片机应用系统,

8、并完成相应的软硬件调试。 (1) 系统方案设计:综合运用单片机课程中所学到的理论知识,根据所选课题的任务、要求和条件进行总体方案的设计。 (2)硬件电路设计:对方案中以单片机为核心的电路进行设计计算,包括元器件的选择和电路参数的计算,并画出总体电路图。 (3) 软件设计:根据已设计出的软件系统框图,用C51语言编制出各功能模块的子程序和整机软件系统的主程序。 (4)调试:在锐志RZ-51/AVR V2.8开发板上进行相关设计并调试。 (5)在液晶显示屏上显示测量的距离,以厘米为单位,保留一位小数。 (6)软件设计必须应用8052片内定时器,采用定时中断结构,可以采用软件中断的延时法。1.3设备

9、及工作环境 (1)软件:Windows XP操纵系统、Keil C51软件、STC_ISP_V479软件; (2)硬件:锐志RZ-51/AVR V2.8开发板。2 方案设计2.1 超声波测距原理 超声波是一种人耳无法听到的、频率一般超过20kHz的声音。 波的传播速度是用频率乘以波长来表示。声波在空气中的传播速度较慢,约为344m/s(20ºC)。在这种较低的传播速度下,波长很短,就意味着可以获得较高的距离和方向分辩率。正是由于这种较高的分辩率特性,才使我们有可能在进行测量时得很高的精确度。超声波设备的外表面尺寸易于获得精确的辐射。 超声波对金属、木材、混凝土、玻璃、橡胶和纸等可以反

10、射近乎100%,相反对布、棉花、绒毛等会被吸收而难以实行反射波的探测。 (1)温度效应 声波传播的速度C=331.5+0.607t(m/s)。也就是说,声音传播速度随周围温度的变化而有所不同。因此,要精确的测量与某个物体之间的距离时,始终检查周围温度是十分必要的。 (2)衰减 传播到空气中的超声波强度随距离的变化成比例地减弱,这是因为衍射现象所导致的在球形表面上的扩散损失,也是因为介质吸收能量产生的吸收损失。 如图1所示,超声波的频率越高,衰减率就越高,波的传播距离也就越短。 图1 声压在不同距离上的衰减特性 (3)压电式超声波发生器原理 超声波发生器可以分为两大类:一类是用电气方式产生超声波

11、,一类是用机械方式产生超声波。电气方式包括压电型、磁致伸缩型和电动型等;机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。目前较为常用的是压电式超声波发生器。 压电式超声波发生器实际上是利用压电晶体的谐振来工作的。超声波发生器内部结构如图2所示,它有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。 图2 压电式超声波发生器

12、的构造 (4)超声波测距的优缺点 超声波测距的优点: 1)对雨、雾、雪的穿透力强、衰减小,因此汽车声纳雷达可以在雨、雪、大雾等恶劣天气下工作。 2)超声波测距的原理简单、制作方便、成本低。 超声波测距的缺点: 1)声波的传播速度相对于电磁波来说慢了许多,当汽车在高速公路上以每小时上百公里的速度高速行驶时,使用超声波测距无法跟上车距的实时变化,误差大; 2)超声波的方向性相对于激光光束来讲要差的多,发散角大。当要测量距离较远的目标时,一方面由于发散而使能量大大降低,另一方面会使分辨力下降,导致将邻车道的车辆或路边的物体作为测量目标。2.2 系统总体设计方案本系统由时钟电路、复位电路、超声波发射、

13、回波信号接收、液晶显示等硬件电路部分以及相应的软件部分构成。整个系统由单片机AT89S52控制,超声波传感器采用收发分体式,分别是一支超声波发射换能器TCT4016T和一支超声波接收换能器TCT4016R。超声波信号通过超声波发射换能器发射至空气中,遇被测物反射后回波被超声波接收换能器接收。进行相关处理后,输入单片机的INT1脚产生中断,计算中间经历的时间,通过换算得出测试的距离。 图3 系统结构框图 3硬件电路设计3.1 时钟电路AT89S52单片机内部有一个用于构成振荡器的高增益反相放大器,它的输入端为芯片引脚XTAL1,输出端为引脚XTAL2.这两个引脚跨接石英晶体和微调电容,构成一个稳

14、定的自激振荡器,图4是AT89S52内部时钟方式的电路。电路中的电容C1和C2的典型值通常选择为30pF。 图4 AT89S52内部时钟方式的电路3.2 复位电路 AT89S52的复位是由外部的复位电路实现的,常有上电自复位和按钮复位两种方式。本系统采用的是如图5所示的按键手动电平复位电路。按键手动电平复位是通过RST端经电阻与电源VCC接通来实现的。当时钟频率选用11.0592MHz时,C的典型取值为10uF,R的取值为2K。 图5 按键手动电平复位电路3.3 1602液晶显示电路 本设计使用的是2行16个字的1602液晶模块作为测量值显示部分。1602液晶也叫1602字符型液晶 它是一种专

15、门用来显示字母、数字、符号等的点阵型液晶模块 它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔 每行之间也有也有间隔 起到了字符间距和行间距的作用,正因为如此 所以他不能显示图形。如图6为1602LCD接线图。1602 采用标准的16脚接口,其中: 第1脚:VSS为地电源第2脚:VDD接5V正电源第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K 的电位器调整对比度第4 脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器, 图6 1602

16、LCD接线图与单片机的P2.0口相连。 第5脚:RW为读写信号线, 高电平时进行读操作,低电平时进行写操作,与单片机P2.1口相连。第6 脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线,与单片机P0口相连。第15、16脚:背光电源的正负极,分别接+5V电源和地。3.4超声波发射模块超声波发射部分是为了让超声波发射换能器TCT4016T能向外界发出40 kHz左右的方波脉冲信号。40 kHz左右的方波脉冲信号的产生通常有两种方法:采用硬件如由555振荡产生或软件如单片机软件编程输出,本系统采用后者。编程由单片机P3.2端口输出40 kHz左

17、右的方波脉冲信号,由于单片机端口输出功率不够,40 kHz方波脉冲信号分 图7 超声波发射模块成两路,送给一个由CD4069组成的推挽式电路进行功率放大以便使发射距离足够远,满足测量距离要求,最后送给超声波发射换能器TCT4016T以声波形式发射到空气中。发射部分的电路,如图7所示。图中输出端上拉电阻R6,R7,一方面可以提高反向器CD4069输出高电平的驱动能力,另一方面可以增加超声换能器的阻尼效果,缩短其自由振荡的时间。3.5超声波接收模块上述TCT4016T发射的在空气中传播,遇到障碍物就会返回,超声波接收部分是为了将反射波(回波)顺利接收到超声波接收换能器TCT4016R进行转换变成电

18、信号,并对此电信号进行放大、滤波、整形等处理后,这里用索尼公司生产的集成芯片CX20106,得到一个负脉冲送给单片机的P3.3(INT1)引脚,以产生一个中断。接收部分的电路,如图8所示。 可以看到,集成芯片CX20106在接收部分电路中起了很大的作用。CX20106是一款应用广泛的红外线检波接收的专用芯片,其具有功能强、性能优越、外围接口简单、成本低等优点,由于红外遥控常用的载波频率38 kHz与测距的超声波频率40 kHz比较接近,而且CX20106内部设置的滤波器中心频率f0可由其5脚(FW)外接电阻调节,阻值越大中心频率越低,范围为3060 kHz。 图8 超声波接收模块故本次设计用它

19、来做接收电路。CX20106内部由前置放大器、限幅放大器、带通滤波器、检波器、积分器及整形电路构成。工作过程如下:接收的回波信号先经过前置放大器和限幅放大器,将信号调整到合适幅值的矩形脉冲,由滤波器进行频率选择,滤除干扰信号,再经整形,送给输出端7脚(OUT)。当接收到与CX20106滤波器中心频率相符的回波信号时,其输出端7脚就输出低电平,而输出端7脚直接接到AT89S52的P3.3(INT1)引脚上,以触发中断。若频率有一些误差,可调节芯片引脚5的外接电阻R4,将滤波器的中心频率设置在40 kHz,就可达到理想的效果。 4 软件编程设计4.1 程序设计流程图 图9 程序设计流程图4.2 1

20、602LCD液晶显示控制程序1602液晶也叫1602字符型液晶 它是一种专门用来显示字母、数字、符号等的点阵型液晶模块 它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔,每行之间也有也有间隔,起到了字符间距和行间距的作用,正因为如此,所以他不能显示图形。对它的操作通常有读写数据、读写命令和检测忙信号等操作。在介绍程序之前先介绍本程序所涉及到的一些指令的意义。1602液晶的驱动芯片HD44780内置了DDRAM(显示数据存储RAM)、CGROM(字符存储ROM)和CGRAM(用户自定义RAM)。 DDRAM就是显示数据RAM,用来

21、寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下图所示:图10 DDRAM地址与屏幕对应关系图也就是说想要在LCD1602屏幕的第一行第一列显示一个“A”字,就要向DDRAM的00H地址写入“A”的代码就行了。但具体的写入是要按LCD模块的指令格式来进行的,一行有40个地址,在1602中我们就用前16个就行了。第二行也一样用前16个地址。对应如下图所示: 图11 DDRAM地址与屏幕对应关系图(实际显示部分)但是我们往DDRAM里的00H地址处送一个数据,譬如0x31(数字1的代码)并不能显示1出来。这是令初学者很容易出错的地方,原因就是如果你要想在DDRAM的00H地址处显示数

22、据,则必须将00H加上80H,即0X80+0x00,若要在DDRAM的01H处显示数据,则必须将01H加上80H即 0X80+0x01,具体程序会在后面介绍写地址的操作处解释。(1)基本操作时序: 读状态           输入:RS=L,RW=H,E=H                    

23、输出:DB0DB7=状态字 写指令           输入:RS=L,RW=L,E=下降沿脉冲,DB0DB7=指令码 输出:无 读数据           输入:RS=H,RW=H,E=H                 

24、60;               输出:DB0DB7=数据 写数据           输入:RS=H,RW=L,E=下降沿脉冲,DB0DB7=数据 输出:无 (2)常用指令及意义 1)清屏指令图12 清屏指令对应指令编码 功能:<1> 清除液晶显示器,即将DDRAM的内容全部填入“空白”的字符码20H;<2> 光标归位,即将光标撤

25、回液晶显示屏的左上方; <3> 将地址计数器(AC)的值设为0。 2)输入模式设置指令图13 输入模式设置对应指令编码功能:设定每次写入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。参数设定的情况如下所示: 位名              设置 I/D             0 写入新数据后光标左移 

26、;     1 写入新数据后光标右移 S                 0 写入新数据后显示屏不移动 1 写入新数据后显示屏整体右移1个字3)显示开关控制指令图14 显示开关控制对应指令编码功能:控制显示器开/关、光标显示/关闭以及光标是否闪烁。参数设定的情况如下: 参数设定情况如下所示位名         

27、;     设置 D                0=显示功能关           1=显示功能开 C               &#

28、160;0=无光标                   1=有光标 B                0=光标不闪烁            

29、   1=光标闪烁4)设定显示屏或光标移动方向指令图15 设定显示屏或光标移动方向指令编码功能:使光标移位或使整个显示屏幕移位。参数设定的情况如下:参数设定情况如下所示: S/C               R/L                设定情况 0  

30、;               0          光标左移1格,且AC值减1 0                 1      

31、0;   光标右移1格,且AC值加1 1                 0          显示器上字符全部左移一格,但光标不动 1              

32、60;  1          显示器上字符全部右移一格,但光标不动 5)功能设定指令图16 功能设定指令编码功能:设定数据总线位数、显示的行数及字型。参数设定的情况如下: 位名               设置 DL           

33、                  0 数据总线为4位 1 数据总线为8位 N                             &#

34、160; 0 显示1行 1 显示2行 F                                0 5×7点阵/每字符   1 5×10点阵/每字符6)设定DDRAM地址指令图17 设定DDRAM地址指令编码功能:设定下一个要存入数

35、据的CGRAM的地址。 (注意这里我们送地址的时候应该是0x80+Address,这也是前面说到写地址命令的时候要加上0x80的原因)7)读取忙信号或AC指令图18 读取忙信号或AC指令编码功能:<1> 读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令; 当BF=0时,液晶显示器可以接收单片机送来的数据或指令; <2> 读取地址计数器(AC)的内容。8)数据写入DDRAM或CGRAM指令图19 数据写入DRAM或CGRAM指令编码功能:<1> 将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符; <2>

36、将用户自己设计的图形存入CGRAM。 (3)操作时序图1)读数据、命令读状态           输入:RS=0,RW=1,E=1  读数据           输入:RS=1,RW=1,E=1图20 读、数据、命令时序图2)写数据、命令写指令           输入:RS=0

37、,RW=0,E=下降沿脉冲,DB0DB7=指令码 写数据           输入:RS=1,RW=0,E=下降沿脉冲,DB0DB7=数据 图21 写数据、命令时序图(4)程序举例1)1602液晶忙信号检测uchar BusyTest(void) bit result;RS=0; /rs为0 rw为1 数据位第8位为忙信号RW=1;E=1; _nop_(); _nop_();_nop_(); _nop_(); result=BF; E=0; return result; 2)1602写命令指令v

38、oid WriteCom (unsigned char dictate) while(BusyTest()=1); RS=0; /rs为0 rw为0 e下降沿写入指令 RW=0; E=0; _nop_(); /e为0期间,将数据送到P0口 _nop_(); P0=dictate; _nop_(); _nop_(); _nop_(); _nop_(); E=1; _nop_(); _nop_(); _nop_(); _nop_(); E=0; 3)1602写地址指令void WriteAddress(unsigned char x) /1602液晶确定将要写入DDRAM的数据的地址 WriteC

39、om(x|0x80); /要显示的地址+0x80为实际要写入的地址 可用或操作实现 4)1602写数据指令void WriteData(unsigned char y) while(BusyTest()=1); RS=1; /rs为1 rw为0 e下降沿写入指令 RW=0; E=0; P0=y; /e为0期间,将数据送到P0口 _nop_(); _nop_(); _nop_(); _nop_(); E=1; _nop_(); _nop_(); _nop_(); _nop_(); E=0; 5)1602初始化指令void LcdInitiate(void) delay(15); WriteCom

40、(0x38); /5*7点阵 数据总线为8位 显示两行 delay(5); WriteCom(0x38); delay(5); WriteCom(0x38); /液晶厂家推荐方式三次写入确保确切写入 delay(5); WriteCom(0x0c);/显示功能开,光标不显示 delay(5); WriteCom(0x06); /写入新数据后光标右移(即AC自加1) delay(5);WriteCom(0x01); /清屏指令 delay(5); 4.3 超声波测速模块发送程序 Tx=1; delay_20us();/在超声波模块发射脚产生20us高电平,启动测速 Tx=0; while(Rx=

41、0); /启动完成后接收脚自动置1 等启动完成 succeed_flag=0; /测速成功标志置0 EX1=1; /开外部中断1 超声波模块的接收叫接在外部中断1的输入脚 TH1=0; TL1=0; /定时器1 的初值设0 用来计时 TR1=1; /启动定时器1 开始计时 EA=1;/开总中断 delay(80);/等待80ms 此间若测速完成 会进外部中断 置测速成功标志位1 读取时间4.4 超声波模块回波检测程序 INT0_() interrupt 2 /若测速成功 则进入此中断 读取计时器计时数值 outcomeH =TH1; outcomeL =TL1; succeed_flag=1;

42、 TR1=0; /停止计时EX1=0; /禁止外部中断4.5数据处理程序 1)计算测速距离 if(succeed_flag=1)/如果测速成功,会读取时间的数值 Distance_data=outcomeH; distance_data<<=8; distance_data=distance_data|outcomeL; distance_data*=12; distance_data/=58; /Y米=X秒*340/2 Y厘米=X微秒/58 if(succeed_flag=0)/60ms后 若为测速未成功,则赋0 distance_data=0; deal(distance_da

43、ta); /数据处理 分离个、十、百 2)分离距离数值的个位、十位和百位void deal(uint temp_data) uchar ge_data,shi_data,bai_data ; bai_data=temp_data/100 ; /将计算过后的指令取出个位、十位、百位 temp_data=temp_data%100; shi_data=temp_data/10 ;ge_data=temp_data%10; EA=0; /关总中断,确保数据确实读出 bai = bai_data; shi = shi_data; ge = ge_data ; EA=1; 4.6数据送液晶显示程序 Wr

44、iteAddress(0x41); WriteData('J'); WriteData('U'); WriteData('L'); WriteData('I'); WriteData(':'); WriteData(digitbai);WriteData(digitshi); WriteData('.'); WriteData(digitge); WriteData(' '); WriteData('C'); WriteData('M'); 5 实验与

45、结果分析5.1软硬件仿真调试 运用STC_ISP_V479软件将编译生成的hex文件烧写到单片机中,液晶显示屏在显示2秒初始化界面后,即可实时显示所测得的距离。1)初始界面图22 液晶显示初始界面 图 23(a) 图 23(b) 图 23(c) 图 23(d)图23 超声波测速工作显示界面5.2 结果分析 本次课程设计所设计的超声波测速程序,虽然能实时显示所测得的距离,而且在实际调试、校准时也已将误差缩小至2cm以内,可以满足基本的测速范围。但是仍然存在需要改进的地方,但由于时间和实际条件的限制无法做到尽善尽美。具体表现在两个方面:1.测距的范围有限,实验发现最大测距距离在90cm左右;2.通

46、过查阅资料得知,声速在空气中传播速度与所处环境的温度、湿度、气压等诸多因素有关,由于个人能力所限及实际情况无法将所有因素考虑在内,只是近似选取了声速在标准环境下的速度340m/s。6 小结与体会此次单片机原理及应用课程设计前后共计1周半的时间,由于整个过程从选题到功能模块的学习到软件硬件编程调试都是我自己一个人在摸索,所以1周半之后自己感觉收获颇丰,感觉自己在过去一学期中学到的单片机及其外围设备的知识以及单片机原理及应用这门课所特有的思维模式得到了充分的发挥。在与老师进行简单的沟通之后,我得到允许可以脱离给定课题的限制,自己按照自己的想法设计编程实现自己感兴趣的东西,这一点让我在整个课程设计的

47、过程中都能保持高度的热情。然而由于此次课程设计自始至终都是我一个人在慢慢摸索,而自己为了给自己一点挑战性,所选课题中的超声波测速模块和1602液晶在平时都没有接触到,所以我需要在动手之前迅速学会对他们进行相应的操作。所以第一天和第二天的时间我都花在了学习对这两个模块的操作上了,而整个课程设计期间也只有这两天我所学到的东西是最多的。在了解了对超声波测速模块和1602液晶的操作之后,在第三天开始,我就开始根据预期的目的开始设计整个程序的流程,并一再的分析论证其可行性,因为我知道这将是整个课程设计的核心。我以为我一切已经准备就绪,但当我实际开始编程时,我还是卡在了对超声波模块的测速上,因为我发现我手

48、头掌握的关于超声波模块的资料,其选择的驱动芯片和我手头的并不一致,而网上关于CX20106芯片的说明也是少之又少。我以为我遇到了瓶颈,觉得无法进行下去了,这时候舍友提醒我可以去联系当初我购买板子的店家,从他们那寻求帮助,果不其然从他们那我得到了详细的关于CX20106芯片的资料,同时他们提供给我的示例程序对我的软件编写部分带来了一定的指导意义。平时实验期间老师对我们说,正确编写程序并不难,难的是能检查出错误程序中的错误。而在此次课程设计期间我就遇到了这样的问题。在我按照流程图编写完程序之后,无论怎样1602液晶始终不能显示。然而我一遍遍的检查流程图,一次次的核对程序,并请同学帮忙检查程序之后仍

49、然发现不了错误,觉得从程序设计思想,到各模块功能的操作以及到软件编程都不存在错误。但液晶不现实是明摆的现实,我只能采取最原始的方法,将每一句语句拆分出来,一句句分析,而这竟花费了我半天的时间,最终发现在主程序的while循环后面多加了一个分号,致使程序无法最终进入显示部分。而这样的低级错误本是不应该发生的,只能说自己在编写程序的时候还没有养成良好的习惯,不能及时回头检查程序编写中可能出现的人为的低级错误。当然,在此刻课程设计期间,我所学到的远不止这些。不管是如何迅速的熟悉并学会对新的器件的操作,还是设计程序流程图,还是寻找程序中的错误,还是优化程序,精简不必要的指令,减少资源空间的浪费在此次课

50、程设计过程中我都有了更进一步的认识。然而正如之前所说,由于时间条件限制和个人能力所限,此次设计的超声波测速程序,只能满足一般的测速要求,若要提高其精确度和稳定性我还需要做大量的工作。而这将是我后续需要学习和完善的地方,或许它也会给我一年后的毕业设计带来一定的提示与便捷。参 考 文 献1 张毅刚主编,单片机原理及应用,北京:高等教育出版社,20042 范百刚,超声原理与应用M.,南京: 江苏科学技术出版社,,19843 朱善军,单片机接口技术及应用M,北京:北京航天航空大学出版社出版,20034 区建昌,电子设备的电磁兼容性设计M,北京:电子工业出版社出版,2002 5 李建忠,单片机原理及应用

51、,西安:西安电子科技大学出版社,20026 贾伯年,传感器技术,南京:东南大学出版社,20007 阎石, 数字电子技术基础,北京:高等教育出版社,19988 谭浩强.,C程序设计(第三版),北京:清华大学出版社,2005附录附1超声波测距模块图片 附2 1602液晶实物照片 附3 单片机开发板照片附4系统原理图附5 源程序#include <reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int#define ulong unsigned longsbit Tx

52、=P32; /超声波模块发射脚sbit Rx=P33; /超声波模块接收脚sbit RS=P20; /1602液晶指令、数据选择位sbit RW=P21; /1602液晶读写选择位sbit E=P22; /1602液晶使能位sbit BF=P07; /1602液晶忙信号位uchar code string = "CHAO SHENG BO" uchar code digit ="0123456789" uchar code string0 =" CSB CE SU"uchar code string1 =" Designed

53、 by Pj"uchar ge,shi,bai,outcomeH,outcomeL,i; bit succeed_flag; /测速成功标志位void delay1ms() /延时1msunsigned char i,j;for(i=0;i<10;i+)for(j=0;j<33;j+); void delay(unsigned char n) /延时n msunsigned char i;for(i=0;i<n;i+)delay1ms();uchar BusyTest(void) /1602液晶忙信号检测bit result;RS=0; /rs为0 rw为1 数据位

54、第8位为忙信号RW=1;E=1; _nop_(); _nop_();_nop_(); _nop_(); result=BF; E=0; return result;void WriteCom (unsigned char dictate)/1602液晶写指令 while(BusyTest()=1); RS=0; /rs为0 rw为0 e下降沿写入指令 RW=0; E=0; _nop_(); /e为0期间,将数据送到P0口 _nop_(); P0=dictate; _nop_(); _nop_(); _nop_(); _nop_(); E=1; _nop_(); _nop_(); _nop_(); _nop_(); E=0; void WriteAddress(unsigned char x) /1602液晶确定将要写入DDRAM的数据的地址 WriteCom(x|0x80); /要显示的地址+0x80为实际要写入的地址 可用或操作实现 void WriteData(unsigned char y)/1602液晶写数据 while(BusyTest()=1) ; RS=

温馨提示

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

评论

0/150

提交评论