课程设计报告书

时间:2024.4.27

超声波测距仪课程设计报告书

目录

引言... 2

超声波测距设计方案... 2

1.总体方案设计介绍... 2

2.硬件电路设计... 3

3.系统程序的设计... 6

4.设计总结... 10

附件... 11

控制源程序... 11


引言

本课程设计,旨在用所学知识解决生活中的常见问题,真正实现知识的活学活用,为步入社会,进入真实的生产制造环节打基础;超超声波测距在生活中应用极为广泛,因其测量误差小,操作方便而被广泛使用;然其工作原理较为简单,运用大学所学的单片机原理及应用的基础知识便可以实现其基本工程原理,再结合其他科目的基础知识便可以完成这一设计。

超声波测距设计方案

1.总体方案设计介绍

超声波测距原理源于蝙蝠回声定位,设超声波在空气中的传播速度为V,在空气中的传播时间为T,测距仪与障碍物的距离为S,S=VT/2,这样可以测出测距仪与障碍物之间的距离,然后在LED显示屏上显示出来。本课程设计测量范围0.50~4.00m,测量精度1cm.属于近距测量,采用压电式超声波传感器;程序要求反应灵敏,故采用80C51单片机的汇编程序设计,显示LED采用4位共阳LED数码管。

首先由单片机驱动产生12MHZ晶振,由超声波发射探头发送出去,在遇到障碍物反射回来时由超声波接收探头检测到信号,然后经过滤波、放大、整形之后送入单片机进行计算,把计算结果输出到LED液晶显示屏上。本设计采用80C51单片机作为主控制器,用动态扫描法实现LED数字显示,超声波驱动信号用单片机的定时器完成。超声波测距器系统设计如图1.1所示。

             图1.1  超声波测距器系统结构设计框图

2.硬件电路设计

硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分。单片机采用80C51。采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。单片机用P1.0端口输出超声波传感器所需的40kHz的方波信号,利用外中断0口监测超声波接收电路输出的返回信号。显示电路采用简单实用的4位共阳LED数码管,段码用74LS244驱动,位码用PNP三极管9012驱动(74LS06)。超声波发出后,单片机自动检测INT0引脚,当INT0引脚的电平由高电平变为低电平时就认为超声波已经返回。计数器所计的数据就是超声波所经历的时间,通过换算就可以得到传感器与障碍物之间的距离。
2.1超声波发射和接收模组(V2.0)

本文采用的超声波测距模组集发射和接受为一体,内部超声波传感器谐振频率40KHz,模组传感器工作电压4.5V~9V,模组接口电压4.5V~5.5V。本实验采用短距(0.50~4.00m)精度1cm。模组结构示意图如图2.1:

J7J6J5J4aaaaa.png

  图2.1  超声波发射及接收模组设计框图

应用时只需要用J5的第1个口与单片机Vcc连接,最后一个口与单片机GND连接,第4个接口与 单片机的INT0口相连接,J4的第3个接口与单片机1.0口连接,同时将J1跳线设置为短距模式,J2跳线设置为非外部电源供电方式(此时开发板通过10PIN排线为模组供电,板上J5选择5V,要把J2跳接到5v的一端)。这就完成了模组硬件的连接。超声波谐振频率调理电路图如图2.2:

fa.png

图2.2  超声波谐振频率调整电路设计框图

由单片机产生40KHz的方波由P1.0口送出,连接模组接口J4到模组的CD4049,而后面的CD4049则对40KHz频率信号进行调理,以使超声波传感器产生谐振。

sh.png

图2.3  超声波回波接收电路设计框图

超声波接受处理部分电路前级采用NE5532构成10000倍放大器,对接收信号进行放大;后级采用LM311比较器对接收信号进行调整,比较电压为LM311的3管脚的输入。

接收回路中测得的超声波信号共有两个波束,第一个为余波信号,即超声波接收头在发射头发射信号(一组40KHz的脉冲)后,马上就接收到了超声波信号,并持续一段时间。另一个波束为有效信号,即经过被测物表面反射的回波信号。超声波测距时,需要测的是开始发射到接收到信号的时间差,要尽量避免检测到余波信号,这也是检测中存在最小测量盲区的主要原因。

单片机控制模组每次发生若干完整的40KHz的脉冲信号,发射信号前打开计数器T0,进行计时,等计时到达一定值后再开启检测回波信号,以避免余波信号的干扰。采用外部中断INT0对回波信号进行检测,接收到回波信号后马上读取计数器中的数值,此数据即为需要测量的时间差数据。

2.2数据显示模块

显示电路采用简单实用的4位共阳LED数码管,断码用74LS244驱动,位码用74LS06驱动。由P0口输出显示数据,P2.0~P2.3用来位选。显示电路如图2.4

图2.4  超声波测距显示电路设计框图

3.系统程序的设计

超声波测距器的软件设计主要由主程序,超声波发生子程序,超声波接收中断程序及显示子程序组成,本次设计采用执行效率高的汇编语言实现。下面对超声波测距器的算法,主程序,超声波发生子程序和超声波接收中断程序逐一介绍。

3.1超声波测距器的算法设计

超声波测距的原理类似于蝙蝠的回声定位,既超声波发生器T在某一时刻发出一个超声波信号,当这个超声波遇到被测物体后反射回来,就会被超声波接收器R接收到。这样,只要计算出从发出超声波信号到接收到返回信号所用的时间,就可算出超声波发生器于反射物体的距离。该距离的计算公式如下:

d=s/2=(v×t)/2

式3-1  超声波距离计算

其中:d为被测物于测距器的距离(m);s为声波的来回路程(m);v为声速(m/s);t为声波来回所用的时间(s)。

3.2  主程序

主程序首先要对系统环境初始化,设置定时器T0工作模式为16位定时/计数器模式,置位总中断允许位EA并对显示端口P0和P2清0;然后调用超声波发生子程序送出一个超声波脉冲。为了避免超声波从发射器直接传到接收器引起的直射波,需要延时约2.906ms(最小距离0.50m,机器周期1us)后才可打开外中断0接收返回的超声波信号。由于采用的是12MHz的晶振,计数器每计一个数就是1us,所以当主程序检测到接收成功的标志位后,将计数器T0中的数(即超声波来回所用的时间)按式(3—2)计算,即可得被测物体与测距器之间的距离。设计时取20℃时的声速为344m/s,则有

d=(v×t)/2=(172T/1000)(cm)

式3-2  超声波距离计算

其中:T为计数器T0的计数值。

测出距离后,结果将以十进制BCD码方式送往LED显示,重复测量3-5次取加权平均即可得出最终结果。图3.1所示为主程序流程图。

图3.1  超声波测距主程序流程图

※※※※※※主程序※※※※※※

START:      MOV      SP, #4FH

             MOV   R0, #40H  ;40H~43H为显示数据存放单元(40H为最高位)

             MOV      R7, #0BH

CLEARDISP:  MOV       @R0, #00H

             INC      R0

             DJNZ     R7, CLEARDISP

             MOV      20H, #00H

             MOV   TMOD, #21H ;T1为8位自动重装模式,T0为16位定时器

             MOV      TH0, #C7H      ;14.5ms初值

             MOV      TL0, #39H

             MOV      TH1, #0F2H     ;40kHz初值

             MOV      TL1, #0F2H

             MOV      P0, #0FFH

             MOV      P1, #0FFH

             MOV      P2, #0FFH

             MOV      P3, #0FFH

             MOV      R4, #04H      ;超声波脉冲个数控制(为赋值的一半)

             SETB      PX0

             SETB      ET0

             SETB      EA

             SETB      TR0           ;开启测试定时器

START1:      LCALL     DISPLAY

              JNB      00H, START1   ;收到反射信号时标志位为1

              CLR      EA

              LCALL    WORK

              SETB     EA

              CLR      00H

              SETB     TR0         ;重新开启测试定时器

              MOV      R2, #64H    ;测量间隙控制(约4ms×100=400ms)

LOOP:         LCALL    DISPLAY

              DJNZ     R2,LOOP

SJMP     START1

3.3 超声波发生子程序和超声波接收中断程序

超声波发生子程序的作用是通过P1.0端口发送两个左右的超声波脉冲信号(频率40KHz的方波),脉冲宽度为12us左右,同时把计数器T0打开进行时。超声波发生子程序较简单,但要求程序运行时间准确,所以采用汇编语言编程。

ORG      0000H

             LJMP     START

             ORG      0003H

             LJMP     PINT0

             ORG      000BH

             LJMP     INTT0

             ORG      0013H

             RETI

             ORG      001BH

             LJMP     INTT1

             ORG      0023H

             RETI

             ORG      002BH

             RETI

超声波测距器主程序利用外中断0检测返回超声波信号,一旦接收到返回超声波信号(即INT0引脚出现低电平),立即进入超声波接收中断程序。进入该中断后,就立即关闭计时器T0,停止计时,并将测距成功标志字赋值1.

※※※※※※中断程序※※※※※※

;T0中断,14.5ms中断一次

INTT0:        CLR       EA

              CLR       TR0

              MOV       TH0,#C7H

              MOV       TL0,#39H

              SETB       ET1

              SETB       EA

              SETB       TR0         ;启动计数器T0,用以计算超声来回时间

              SETB       TR1         ;开启发超声波用定时器T1

OUT:         RETI

;T1中断,发超声波用

INTT1:       CPL          VOUT

             DJNZ         R4,RETOUT

             CLR          TR1        ;超声波发完毕,关T1

             CLR          ET1

             MOV          R4,#04H

             SETB         EX0       ;开启接收回波中断

RETIOUT:    RETI

;外中断0,收到回波时进入

PINT0:       CLR          TR0        ;关计数器

             CLR          TR1

             CLR          ET1

             CLR          EA

             CLR          EX0

             MOV      44H  ,TL0     ;将计数值移入处理单元

             MOV      45H  ,TH0

             SETB        00H         ;接收成功标志

             RETI

如果当计时器溢出时还未检测到超声波返回信号,则定时器T0溢出中断将外中断0关闭,并将测距成功标志字赋值2,以表示本次测距不成功。

4.设计总结

本次设计中,充分体现了合作共赢的重要性,这个社会是个专业化日趋加强的社会,人们的专业知识正变得集中而而有深度,此次设计,广泛整合了各方面的资源,充分证明了合作的重要性,以及专业知识的必要性,作为作为一项实际需要的产品,都综合了各方面的知识,只有强强联手,才能打造更加优异的产品。本次设计的环节不多,单片机及程序、超声波发送及接收电路,数码显示管等几大块,对于我来说,专业在于单片机及数码显示管的连接及程序设计,而超声波发射及接收电路则是由另外的合作伙伴完成,然后实现两者的连接便完成了此次设计。

当然,设计总是没有完美的,我们由于阅历尚欠,经验不足,又缺乏实践,故产品设计原型可能存在诸多问题,需要在实践中不断发现,修补完善,不断创新。不满足于已有的设计,不断寻求新的突破才是我们需要做的。

附件

控制源程序

                      超声波测距器

                 采用80C51、12MHz晶振、采用共阳LED显示器

测试范围为0.50~5.00m,堆栈在4FH以上,20H用于标志

显示缓冲单元在40H~43H,内存44H~46H用于计算距离

VOUT         EQU      P1.0                ;脉冲输出端口

         ※※※※※※中断入口程序※※※※※※

              ORG      0000H

             LJMP     START

             ORG      0003H

             LJMP     PINT0

             ORG      000BH

             LJMP     INTT0

             ORG      0013H

             RETI

             ORG      001BH

             LJMP     INTT1

             ORG      0023H

             RETI

             ORG      002BH

             RETI

               ※※※※※※主程序※※※※※※

START:      MOV      SP, #4FH

             MOV   R0, #40H  ;40H~43H为显示数据存放单元(40H为最高位)

             MOV      R7, #0BH

CLEARDISP:  MOV       @R0, #00H

             INC      R0

             DJNZ     R7, CLEARDISP

             MOV      20H, #00H

             MOV   TMOD, #21H ;T1为8位自动重装模式,T0为16位定时器

             MOV      TH0, #C7H      ;14.5ms初值

             MOV      TL0, #39H

             MOV      TH1, #0F2H     ;40kHz初值

             MOV      TL1, #0F2H

             MOV      P0, #0FFH

             MOV      P1, #0FFH

             MOV      P2, #0FFH

             MOV      P3, #0FFH

             MOV      R4, #04H      ;超声波脉冲个数控制(为赋值的一半)

             SETB      PX0

             SETB      ET0

             SETB      EA

             SETB      TR0           ;开启测试定时器

START1:      LCALL     DISPLAY

              JNB      00H, START1   ;收到反射信号时标志位为1

              CLR      EA

              LCALL    WORK

              SETB     EA

              CLR      00H

              SETB     TR0         ;重新开启测试定时器

              MOV      R2, #64H    ;测量间隙控制(约4ms×100=400ms)

LOOP:         LCALL    DISPLAY

              DJNZ     R2,LOOP

SJMP     START1

※※※※※※中断程序※※※※※※

;T0中断,1.45ms中断一次

INTT0:        CLR        EA

              CLR        TR0

              MOV        TH0,#C7H

              MOV        TL0,#39H

              SETB       ET1

              SETB       EA

              SETB       TR0         ;启动计数器T0,用以计算超声来回时间

              SETB       TR1         ;开启发超声波用定时器T1

OUT:         RETI

;T1中断,发超声波用

INTT1:       CPL          VOUT

             DJNZ         R4,RETOUT

             CLR          TR1            ;超声波发完毕,关T1

             CLR          ET1

             MOV          R4,#04H

             SETB         EX0            ;开启接收回波中断

RETIOUT:    RETI

;外中断0,收到回波时进入

PINT0:       CLR          TR0            ;关计数器

             CLR          TR1

             CLR          ET1

             CLR          EA

             CLR          EX0

             MOV         44H,TL0     ;将计数值移入处理单元

             MOV         45H,TH0

             SETB         00H         ;接收成功标志

             RETI

※※※※※※显示程序※※※※※※

;40H为最高位,43H为最低位,先扫描高位

DISPLAY:     MOV           R1,#40H;G

MOV          R5,#0E7H;G

PLAY:        MOV           A,R5

             MOV           P0,#0FEH

             MOV           P2,A

             MOV           @R1

             MOV           DPTR,#TAB

             MOVC          A,@A+DPTR

             MOV           P0,A

             LCALL         DL1MS

             INC           R1

             MOV           A,R5

             JNB           ACC.0,ENDOUT;G

             RR            A

             MOV           R5,A

             AJMP          PLAY

ENDOUT:      MOV           P2,#0FEH

             MOV           P0,#0FEH

             RET

TAB:   DB  0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FEH,88H,0BFH

;共阳段码表          “0”,“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,

“不亮”,“A”,“-”

※※※※※※延时程序※※※※※※

DL1MS:      MOV         R6, #0BH

DL1:         MOV         R7, #5AH

DL2:         DJNZ        R7, DL2

             DJNZ        R6, DL1

             RET

            ※※※※※※距离计算程序※※※※※※

Work:       PUSH          ACC

            PUSH          PSW

            PUSH          B

            MOV           PSW, #18h

            MOV           R3, 45H

            MOV           R2, 44H

            MOV           R1, #00D

            MOV           R0, #17D

            LCALL         MUL2BY2

            MOV           R3, #03H

            MOV           R2, #0E8H

            LCALL         DIV4BY2

            LCALL         DIV4Y2

            MOV           400H, R4

            MOV           A, 40H

            JNZ           JJ0

            MOV           40H,#0AH      ;最高位为0,不点亮

JJ0:        MOV           A, R0

            MOV           R4, A

            MOV           A, R1

            MOV           R5, A

            MOV           R3, #00D

            MOV           R2, #100D      

            LCALL         DIV4BY2

            MOV           41H, R4

            MOV           A, 41H

            JNZ           JJ1

            MOV           A, 40H        ;次高位为0,先看最高位是否为不亮

            SUBB          A, #0AH

            JNZ           JJ1

            MOV           41H, #0AH     ;最高位不亮,次高位也不亮

JJ1:        M0V           A, R0

            MOV            R4, A

            MOV            A, R1

            MOV            R5, A

            MOV            R3, #00D

            MOV            R2, #10D

            LCALL          DIV4BY2

            MOV            42H, R4

            MOV            A, 42H

            JNZ            JJ2

            MOV            A, 41H   ;次次高位为0,先看次高位是否为不亮

            SUBB           A, #0AH

            JNZ            JJ2

            MOV            42H, #0AH ;次高位不亮,次次高位也不亮

JJ2:        MOV            43H, R0

            POP             B

            POP             PSW

            POP             ACC

            RET

※※※※※※2字节无符号数乘法程序※※※※※※

R7R6R5R4≦R3R2×R1R0

MUL2BY2:    CLR             A

            MOV             R7,A

            MOV             R6,A

            MOV             R5,A

            MOV             R4,A

            MOV             46H,#10H

MULLOOP1:   CLR             C

            MOV             A,R4

            RLC             A

            MOV             R4,A

            MOV             A,R5

            RLC             A

            MOV             R5,A

            MOV             A,R6

            RLC             A

            MOV             R6,A

            MOV             A,R7

            RLC             A

            MOV             R7,A

            MOV             A,R0

            RLC             A

            MOV             R0,A

            MOV             A,R1

            RLC             A

            MOV             R1,A

            JNC             MULLOOP2

            MOV             A,R4

            ADD             A,R2

            MOV             R4,A

            MOV             A,R5

            ADDC            A,R3

            MOV             R5,A

            MOV             A,R6

            ADDC            A,#00H

            MOV             R6,A

            MOV             A,R7

            ADDC            A,#00H

            MOV             R7,A

MULLOOP2:   DJNZ            46H,MULLOOP1

            RET

          ※※※※※※4字节/2字节无符号数除法程序※※※※※※

;R7R6R5R4/R3R2=R7R6R5R4(商)…R1R0(余数)

DIV4BY2:    MOV             46H,#20H

            MOV             R0,#00H

            MOV             R1,#00H

DIVLOOP1:   MOV             A,R4

            RLC             A

            MOV             R4,A

            MOV             A,R5

            RLC             A

            MOV             R5,A

            MOV             A,R6

            RLC             A

             MOV            R6,A

             MOV            A,R7

             RLC            A

             MOV            R7,A

             MOV            A,R0

             RLC            R0

             MOV            R0,A

             MOV            A,R1

             RLC            A

             MOV            R1,A

             CLR            C

             MOV            A,R0

             SUBB           A,R2

             MOV            B,A

             MOV            A,R1

             SUBB           A,R3

             JC             DIVLOOP2

             MOV            R0,B

             MOV            R1,A

DIVLOOP2:   CPL             C

             DJNZ           46H,DIVLOOP1

             MOV            A,R4

             RLC             A

             MOV               R4,A

             MOV               A,R5

             RLC               A

             MOV               R5,A

             MOV               A,R6

             RLC               A

             MOV               R6,A

             MOV               A,R7              

             RLC               A

             MOV               R7,A

             RET

             END                                   ;程序结束

6.2电路图

超声波发射电路

fa.png

超声波接收电路

sh.png

单片机及显示电路

更多相关推荐:
20xx课程设计报告模板

XXXXXXX机电学院电子课程设计报告论文题目多功能电子表设计专业班级电气工程及其自动化123姓名时间20xx060920xx0620指导教师完成日期20xx年06月17日交通灯控制器设计任务书1设计目的与要求...

课程设计报告书模板

华东交通大学课程设计报告书所属课程名称计算机网络原理题目院系软件学院班级软件工程20xx5班学号学生姓名指导教师谢昕辅导教师谢昕20xx年6月9日华东交通大学课程设计论文任务书软件学院专业软件工程班级20xx5...

课程设计报告书格式

信息工程学院网页设计与制作课程设计报告书指导教师专业班级姓名学号日期20xx年6月4日20xx年6月10日网页设计与制作课程设计一设计目的网页设计与制作课程设计是在学生学习网页设计与制作课程后结合HTML语言P...

c++课程设计报告书

河南城建学院面向对象程序设计课程设计报告书设计题目企业人事管理系统指导老师崔雪冰蔡照鹏张妍琰学生学号083410109学生姓名王丽华同组人员于文文梁泽玉宋应取时间20xx年12月28日目录第1章选题211题目背...

课程设计报告书

苏州科技学院天平学院二一二二一三学年第二学期机电工程系课程设计报告书课程名称程序设计基础实践班级软件1222学号1233107239姓名陶芸静指导教师张宗杰二一三年四月1题目试卷信息管理系统的设计与实现2功能1...

课程设计报告书(报告,要求手写)

武汉理工大学华夏学院课程设计报告书课程名称课程设计总评成绩学生姓名学号学生专业班级指导教师姓名课程设计起止日期课程设计基本要求课程设计是工科学生十分重要的实践教学环节通过课程设计培养学生综合运用先修课程的理论知...

课程设计报告书模板

大连科技学院数据库课程设计题目系统软件工程091指导教师王立娟职称讲师所在单位信息科学系软件工程教研室教学部主任王立娟完成日期20xx年12月5日目录1前言页码11问题提出页码12研究意义页码2系统需求分析页码...

课程设计报告书

多媒体课件制作课程设计报告书目录摘要第一章第二章第三章第四章第五章1多媒体课件制作课程设计报告书多媒体技术的应用摘要多媒体技术是当今信息技术领域发展最快最活跃的技术集文本图形动画声音影视等各种交流媒介于一体的计...

NET课程设计报告书

计算机应用技术系课程设计报告书Aspnet课程设计报告书题目留言板班级学号姓名教师吕志峰周期三周成绩20xx年10月21日1计算机应用技术系课程设计报告书留言板一课程设计的目的与要求一课程设计目的与任务课程设计...

windows课程设计报告书

Windows程序设计课程设计报告书题目模拟时钟程序班级1401312学号1140131241姓名李泽源教师吕志峰周期成绩20xx年12月10日计算机应用技术系课程设计报告书设计题目一课程设计的目的与要求正文为...

课程设计报告书封面标准格式

淮海工学院课程设计报告书题目学院专业班级姓名学号年月日

课程设计报告书

武汉理工大学华夏学院课程设计课程名称办公自动化实训题目1广告宣传片的制作2程序流程图的绘二维数组的应用专业软件工程班级姓名成绩指导教师王绪梅20xx年2月22日至20xx年2月26日课程设计任务书学生姓名张劲宇...

课程设计报告书(32篇)