单片机开发课程设计
一、设计目的1、熟悉单片机开发试验仪的工作原理.
2、掌握C51语言编程方法。
3、熟悉超声波测距模块工作原理。
4、熟悉LCD显示屏使用方法。
5、熟悉超声波传感器、蜂鸣器的原理及使用方法。
2、设计思路1、整体设计思路
图1 整体设计思路图(见51hei附件)
2、模块设计思路1、编写LCD1602驱动模块相关程序思路;
在LCD1602程序中,要写入写、读、显示数据函数模块。
1、写数据模块:
图2 数据传输图
2、读数据模块:
图3 数据传输图
3、显示模块:
图4 显示原理图
3、编写蜂鸣器驱动模块相关程序思路;用P1^5口接入蜂鸣器,设计两个不同频率的延时模块。
当距离不同时,分别调用不同频率的蜂鸣器驱动函数。
4、编写超声波传感器测距模块相关程序思路。高电平持续时间为超声波发出到返回接收到一个往返的时间。

图5 超声波时序图
三、设计过程1、总体设计方案1、超声波测距传感器的使用:
控制口发一个 10US 以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了。

图6超声波传感器实物图
如上实物图示,超声波传感器有4个引脚,VCC电源端、GND接地端、TRIG发送端、ECHO接收端。
超声波传感器采用IO触发测距,trig端发出超声波,模块自动发送8个40Khz的方波,自动检测是否有信号返回,到echo端接收到超声波,在此过程中一直持续高电平信号,高点平的持续时间就是超声波从发出到接收到这一过程的时间。
测试距离=(高电平时间*声速(340m/s))/2
2、模块电路1、超声波测距模块工作原理(程序见附件):
(1)采用 IO 触发测距,给至少 10us 的高电平信号;
(2)模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;
(3)有信号返回,通过 IO 输出一高电平,高电平持续的时间就是超声波从发射到返回的时间.测试距离=(高电平时间*声速(340M/S))/2;
最远探测距离调节
图7 超声波模块图
上图标志电阻即 R3,可以调节最大探测距离。R3 电阻为 392,探测距离最大 4.5M 左右,探测角度小于15度;R3电阻为472,探测距离最大7M 左右,盲区在2CM左右,探测角度小于30度;出厂默认392,即最大探测距离4.5M左右。R3电阻大,接收部分增益高,检测距离大,但检测角度会相应变大,容易检测到前方旁边的物体。当然,客户在不要求很高的测试距离的条件下,可以改小R3来减小探测角度,这时最大测距会减小。超声波模块测距接口: 图8 超声波模块测距接口图
字符的显示 :
用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。

图9 LCD1602模块接口电路图

图10 蜂鸣器模块接口电路图
蜂鸣器的BZ接到单片机的P1^5口上,当接收到低电平是低电平是,蜂鸣器报警,当是高电平蜂鸣器不响应。
四、系统调试与结果程序调试:
在Keil-uVision4软件中对程序进行编译,如下图所示,在调试的过程中,蜂鸣器在不同的测试距离下应该发出不同频率的报警声。期初,我未能透彻理解蜂鸣器发声原理,所以在写蜂鸣器报警程序时,遇到了很多问题,很长时间都不能发出不同频率的声音。最后经过查看资料、研究它的发声原理,

图11 程序调试显示图
功能调试:
(1)当超声波测距传感器此时与物体距离为0.13m,当超声波测距传感器与物体距离小于10时,蜂鸣器报警会发出滴---滴---滴---的声音。

图12 功能调试图
(2)当超声波测距传感器与物体距离为0.13,当超声波测距传感器与物体距离在10~30cm之间时,蜂鸣器报警会发出滴滴滴滴滴滴的声音。

图13 功能调试图
(3)当物体与超声波传感器的距离超过30cm时,不发生报警。

图14 功能调试图
五、主要元器件与设备开发平台:X86-PC windows开发工具:Keil uVersion4
目标平台:STC89C52RC 单片机
主要元器件:
单片机开发试验仪:
板载硬件:STC89C52RC、DS1302、LED 数码管、蜂鸣器、LCD1602、8*8 LED 矩阵、矩阵键盘、独立按键、74LS138 等;
超声波测距传感器
六、课程设计体会与建议6.1、设计体会 通过这四天的课程设计学习,不仅加强了我的学习理论的能力,而且也增强了我的动手写程序,也让我更深一步的认识了单片机,当然,遇到问题是在所难免的,有了问题才有进步的空间,也只有发现问题,才知道自己的水平是怎样的,才会让自己沉下心去认真分析与反思,细心总结,在学习中进步。
在项目中,我们要编写代码,进行功能的测试。在写程序时,老师带着我们写了主要的部分,让我们做扩展功能,在写的时后我犯了不少错误。C语言语法运用的不够熟练,会犯很基础的低级错误。
总之,在经历了这次课程设计工作之后,让我明白,不管遇到什么问题都要认证分析,坚持尝试,不断的努力去此外,对于问题要认真分析,仔细考虑有关的方方面面,才能解决问题。更要多去练习,相信孰能生巧。
6.2、设计建议我还是比较喜欢课程设计这一教学模式,因为这不仅是一个课程设计,在做一个实际的项目中所面临的问题远超于课本。
在这次单片机课程设计让我学到了很多东西,认识到了动手写程序的重要性,希望学校可以安排多次这样的课程设计,多让我们做一些有意义的设计,希望老师也能多发一些这样的课题让我们一起讨论、学习和设计。
七、参考文献[1] 康华光. 电子技术基础. 北京:高等教育出版社,1999年;
[2] 彭华林等编. 数字电子技术. 长沙:湖南大学出版社,2004年;
[3] 金唯香等编. 电子测试技术. 长沙:湖南大学出版社,2004年;
[4] 侯建军. 数字电路实验一体化教程. 北京:清华大学出版社,北京交通大学出版社,2005年;
[5] 阎石. 数字电子技术基础. 北京:高等教育出版社,2001年;
[6] 赵春华、张学军.电子技术基础仿真实验. 北京:机械工业出版社出版社,2007年;
设计程序代码:
main.c程序:
完整的Word格式文档51黑下载地址(含源码):
超声测距.doc
(2.41 MB, 下载次数: 27)