机电信息工程学院
单片机系统课程设计报告
设计题目: 学生姓名: 指导教师:
超声波测距
大连民族学院2007级通信工程专业单片机系统课程设计报告
目 录
一、设计任务和性能指标 ......................................................................................................................... 2 1.1设计任务 .......................................................................................................................................... 2 1.2性能指标 .......................................................................................................................................... 2 二、设计方案 ............................................................................................................................................. 3 三、系统硬件设计 .................................................................................................... 错误!未定义书签。 3.1单片机最小系统 ............................................................................................. 错误!未定义书签。 3.2 超声波发射电路 ............................................................................................. 错误!未定义书签。 3.3 超声波检测接收电路 ..................................................................................... 错误!未定义书签。 3.4.温度补偿电路 ................................................................................................................................. 3 3.5显示电路 .......................................................................................................................................... 4 四.系统软件设计 ....................................................................................................................................... 5 4.1 主程序设计 ...................................................................................................................................... 5 4.2 温度补偿子程序 .............................................................................................................................. 6 五.调试及性能分析 ................................................................................................................................... 7 5.1调试步骤 .......................................................................................................................................... 7 5.2 性能分析.......................................................................................................................................... 8 六.心得体会 ............................................................................................................................................... 8 参考文献 .................................................................................................................................................... 11 附录1 系统硬件电路图 ........................................................................................... 错误!未定义书签。 附录2 程序清单 .................................................................................................................................... 12
大连民族学院2007级通信工程专业单片机系统课程设计报告
一、设计任务和性能指标
1.1设计任务
利用单片机及外围接口电路(键盘接口和显示接口电路)设计制作一个含有温度补偿的超声波测距仪器,用LED把环境温度和测距仪距被测物的距离显示出来。
要求用AD6.0 画出系统的电路原理图,印刷电路板,绘出程序流程图,并给出程序清单。
1.2性能指标
1. 距离显示:用三位LED数码管进行显示(单位是CM)。 2. 环境温度:用三位数码管进行显示温度(绝对温度)。 3. 测距范围:5CM到 300CM之间。
4. 键位:复位键 、便携电源开关、USB供电开关,温度显示距离显示
2
大连民族学院2007级通信工程专业单片机系统课程设计报告
二、设计方案
按照系统设计的功能的要求,初步确定设计系统由单片机主控模块、电源模块、显示模块、键扫描模块、超声波发射模块,超声波接收模块,温度补偿模块共七个模块组成。
主控芯片使用51系列STC89C52单片机,该单片机工作性能稳定,同时也是在单片机课程设计中经常使用到的控制芯片。本设计在接受模块采用了由索尼公司生产的CX2016A红外接收芯片来实现超声波的接收。CX2016A是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率38KHz与测距超声波频率40KHz较为接近,可以利用它作为超声波检测电路。实验证明其具有很高的灵敏度和较强的抗干扰能力。同时通过改变部分参数来改变接受电路的灵敏度和抗干扰能力,所以我们采用该芯片作为接收模
3.4.温度补偿电路
温度传感器使用了DSl8B20数字温度计提供可选择的12位(二进制)温度读数来指示周围环境的温度信息。经过单线接口DQ与单片机进行数据交互。从主机CPU到DSl8B20仅需一条数据接线(和地线)。DSl8B20的电源可以由数据线本身提供而不需要接外部电源。由于每一个DSl8B20在出厂时已经给定了唯一的序号因此任意多个DSl8B20可以存放在同一条单线总线上实现多点温度测量。温度传感器DSl8B20的测温范围从-55摄 氏度到+125摄氏度增量值为0.5度可在l s(典型值)内把温度变换成数字量,因此采用DS18B20实现温度补偿电路的设计。
图3-3 超声波接收电路原理图
图3-4 温度补偿电路原理图 3
大连民族学院2007级通信工程专业单片机系统课程设计报告
3.5显示电路
显示电路主要由74ls273芯片驱动,用PNPC8550三级管进行位选,七段共阳极数码管显示,硬件电路图如图3-5所示:
图3-5 显示电路原理图 4
大连民族学院2007级通信工程专业单片机系统课程设计报告
四.系统软件设计
4.1 主程序设计
图4-1 主程序流程图
主程序中包括温度补偿子程序,计算子程序,显示子程序 ,如图4-1所示:在主程序设计中,我们采用了汇编编程。首先进行系统初始化。其次利用循环产生4个40KHZ的方波,由输出口进行输出,并开始计时。第三读取外界环境的温度,由该温度确定环境中的超声波传输速度。第四等待中断,若超声波被接收探头捕捉到,那么通过中断可测得超声波在环境中的传播时长。第五进行计算,求得测距仪到被测物的距离。第六进行距离显示。
5
大连民族学院2007级通信工程专业单片机系统课程设计报告
4.2 温度补偿子程序
图4-2 DS18B20时序图
DS18B20正常工作需要严格的工作时序,操作起来很复杂,图4-2给出的是DS18B20的时序图,其控制程序如下: TEMP: SETB DQ TSR3: SETB FLAG1 NOP CLR P2.0 CLR DQ AJMP TSR5 MOV R0,#0FBH TSR4: CLR FLAG1 TSR1: DJNZ R0,TSR1 LJMP TSR7 SETB DQ TSR5: MOV R0,#06BH MOV R0,#25H ; TSR6: DJNZ R0,TSR6
TSR2: JNB DQ TSR7:SETB DQ TSR3 DJNZ R0,TSR2 ; RET
6
大连民族学院2007级通信工程专业单片机系统课程设计报告
READ2_18B20: ********读转换后的温度值******
GET_TEMPER: MOV R4,#2 ; SETB DQ MOV R1,#29H LCALL TEMP RE00: MOV R2,#8 JB FLAG1,TSS2 RE01: CLR C RET SETB C
TSS2:MOVA,#0CCH NOP LCALL WRITE_18B20 NOP
MOVA,#44H CLR DQ LCALL WRITE_18B20 NOP LCALL TEMP NOP MOV A,#0CCH NOP LCALL WRITE_18B20 SETB DQ MOV A,#0BEH ; MOV R3,#7 LCALL WRITE_18B20 DJNZ R3,$ LCALL MOV C,DQ
READ2_18B20 ; MOV R3,#23 RET DJNZ R3,$
RRC A ********写ds18b20汇编程序***
WRITE_18B20: DJNZ R2,RE01 MOV R2,#8 MOV @R1,A CLR C DEC R1 WR1:CLR DQ DJNZ R4,RE00 MOV R3,#6 RET DJNZ R3,$ *****读出的温度进行数据转换*** RRC A CHANGE: MOV A,29H ; MOV DQ,C MOVC,28H.0 MOV R3,#23 RRC A DJNZ R3,$ MOV C,28H.1 SETB DQ RRC A NOP MOV C,28H.2 DJNZ R2,WR1 RRC A SETB DQ MOV C,28H.3 RET RRC A
MOV 29H,A ; **读18B20程序,读出两个字节的温度**
五.调试及性能分析
5.1调试步骤
我们的步骤是先焊接各个模块,焊接完每个模块以后,再进行模块的单独测试,以确保
7
大连民族学院2007级通信工程专业单片机系统课程设计报告
在整个系统焊接完能正常的工作,首先焊接的是电源模块,其中包括USB供电和电池供电两种方式,电源模块焊接完以后,进行电源模块的测试,当插上USB以后电源指示灯并没有亮,说明电源模块有问题,后来发现稳压芯片发烫,得出一定是电源和地短了,接下来就开始检查USB的地和电源是不是接反了,然后开始检查PCB和电路图,发现确实是封装错了,USB解决以后测试,发现电源指示灯还是没有亮,不过7805还是发热,经检查知道,7805的封装也错了,经改装电源模块可以正常工作了,接下来是单片机最小系统的测试,焊接完以后发现系统没有问题,程序可以正常下载,然后是超声波发送模块的焊接,焊接完以后,编写一个专门的发射超声波的程序,然后用示波器测试通过,在测试显示程序的时候数码管不能正常工作,不亮,后来发现是驱动芯片74LS273的CLK没有和单片机的控制端连接上,不能将数据锁存到数码管中,后来用跳线连接上了。接下来是软件的调试过程,在软件的调试过程中,遇到了很多的问题 ,每个问题也解决了。经过3,4天的调试终于将程序调试通过了。
5.2 性能分析
虽然结果和预想的有很大的差距,但总体来说已经基本上达到了要求,理想上超声波测距能达到5到7米左右,而我们所能实现的最大距离只有3米,造成这种原因我想有以下几点:
1.由于我们采用的是11.0592MHZ的晶振,理论上是按照12MHZ的晶振计算的,所以对系统造成了一定的误差。
2.由于温度传感器DS18B20距离单片机较近,所采集到的温度严重受到单片机的影响,造成系统误差。
3.单片机接收端其中有个电阻是4.7欧姆的,由于种种原因没有找到4.7欧姆的,就找了个5.5欧姆的代替,造成系统误差。
六.心得体会
俗话说“好的开始是成功的一半”。通过这次实习,我们学到了很多东西。在进行课程设计时,我们应该做到以下三点:首先,我认为最重要的就是认真的研究老师给的题目。其次,在老师讲解的基础上认真研究硬件电路的设计,和软件流程的设计。最后,重点实现软硬结合的综合调试。
8
大连民族学院2007级通信工程专业单片机系统课程设计报告
这次的实习算起来一共进行了三周,在这三周的时间里我们进行了硬件电路图设计,PCB板的设计,以及软件的编程实现,软硬件的综合调试。最终一个完整的课程设计成果出来了,很高兴它能按着设计的思想与要求运作起来。 当然,这其中也有很多问题,第一、不够细心。比如在PCB制作过程中没有建立网络报表导致了部分连线没有倒入PCB板中,还有部分封装出现了错误。第二,实践环节上,这次课设是对我所学的理论课程的一次检验,对于这次单片机综合课程实习,使我们的动手能力得到提升,同时纠正我们对“系统”这一概念以往的错误理解。
就实现功能来说,设计结果能够符合题意,成功完成了此次实习要求,我们不只在乎这一结果,更加在乎的,是这个过程。这个过程中,我们花费了大量的时间和精力,更重要的是,我们在学会创新的基础上,同时还懂得合作精神的重要性,学会了与他人合作。在已度过的大学时间里,我们大多数接触的是理论课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似实习就为我们提供了良好的实践平台。
同时这次实习给我们带来前所未有的的启发:
首先,查阅资料的必要性。在做本次实习的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。我们是在做单片机实习,但我们不是艺术家,他们可以抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计,我们能做的就是理论结合实际。
其次,在这次课程设计中,我们运用到了以前所学的专业课知识,如:模拟和数字电路知识等。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。
再次,在实习之前,我们要对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在实习过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力提高都会受益于我在以后的学习、工作和生活中
9
大连民族学院2007级通信工程专业单片机系统课程设计报告
最后,我们在这次实习中我们使用了分模块焊接,分模块测试的方法进行硬件电路的焊接和测试,这是我们最宝贵的收获,这样做可以避免走很多弯路。使得调试也条理分明。
总体上说,这次实习中收获很多,感触也很多。
10
大连民族学院2007级通信工程专业单片机系统课程设计报告
参考文献
[1] 徐维祥、刘旭敏. 单片微型机原理及应用. 大连:大连理工大学出版社,1996 [2] 李光飞、楼然苗、胡佳文、谢象佐. 单片机课程设计与实例指导. 北京: 北京航空航天大学出版社,2004
[3] 余永权. 89系列FLASH单片机原理及应用. 北京:电子工业出版社,2002 [4] 李群芳,黄建. 单片机微型计算机与接口技术. 北京:电子工业出版社,2001 [5] 楼然苗、李光飞. 51系列单片机设计实例. 北京:北京航空航天大学出版社,2003 [6] 王守中 51单片机开发入门与典型实例. 北京:人民邮电出版社,2009
11
大连民族学院2007级通信工程专业单片机系统课程设计报告
附录1 程序清单
VOUT EQU P1.0 TEMP1 EQU 36H TEP1 EQU 37H DQ EQU P1.7 FLAG1 EQU 38H ORG 0000H JMP START ORG 0003H JMP PINT0
;************主程序****************** START:MOV P3,0FFH MOV P0,0FFH MOV P1,0FFH MOV P2,0FFH MOV TMOD,#01H MOV TH0,#00H MOV TL0,#00H CLR IE0 SETB PX0 SETB EA SETB EX0 CLR IT0
MOV R4,#4 SETB TR0 k: CPL P1.0 NOP NOP NOP NOP NOP NOP NOP NOP NOP
DJNZ R4,K JNB IE0,$
LCALL TEMP LCALL GET_TEMPER LCALL CHANGE LCALL WORK
LCALL DISPLAY1 LJMP START PINT0:CLR TR0 CLR EX0
MOV 30H,TL0 MOV 31H,TH0 RETI
TEMP: SETB DQ NOP
CLR DQ
MOV R0,#0FBH ;给延时程序赋初值
TSR1: DJNZ R0,TSR1 ;延时
SETB DQ
MOV R0,#25H ;给延时程序赋初值
TSR2: JNB DQ ,TSR3 ; S18B20是否存在,存在就跳转到TSR3 DJNZ R0,TSR2 ;不存在等待
TSR3: SETB FLAG1 ;置标志位,表明DS18B20存在;
CLR P2.0 ;二极管
指示
AJMP TSR5 TSR4: CLR FLAG1 LJMP TSR7
TSR5: MOV R0,#06BH TSR6: DJNZ R0,TSR6 ;延时 TSR7:SETB DQ ;表明不存在
RET
********读转换后的温度值********* GET_TEMPER:
SETB DQ LCALL TEMP
JB FLAG1,TSS2
RET ;若
12
大连民族学院2007级通信工程专业单片机系统课程设计报告
NOP 不存在则返回
NOP TSS2: MOV A,#0CCH ;跳
NOP 过ROM
LCALL WRITE_18B20 SETB DQ
MOV R3,#7 MOV A,#44H ;发
DJNZ R3,$ 出温度转换命令
LCALL WRITE_18B20 MOV C,DQ LCALL TEMP MOV R3,#23
DJNZ R3,$ MOV A,#0CCH ;跳
RRC A 过ROM
LCALL WRITE_18B20 DJNZ R2,RE01 MOV A,#0BEH ; MOV @R1,A
DEC R1 发出读温度换命令
LCALL WRITE_18B20 DJNZ R4,RE00 LCALL RET READ2_18B20 ;读两个字节的温度 ; ****读出的温度进行数据转换******** RET CHANGE: MOV A,29H ; ; *******写ds18b20汇编程序******* MOV C,28H.0 ;将 WRITE_18B20: 28H中的最低位移入C MOV R2,#8 RRC A CLR C MOV C,28H.1 WR1:CLR DQ RRC A MOV R3,#6 MOV C,28H.2 DJNZ R3,$ RRC A RRC A MOV C,28H.3 MOV DQ,C RRC A MOV R3,#23 MOV 29H,A DJNZ R3,$ LCALL CONVERSE SETB DQ RET NOP ;* ************DISPLAY****** DJNZ R2,WR1 CONVERSE: MOV A,29H;将29H中的十 SETB DQ 六进制数转换成10进制 RET MOV DPTR,#TABLE
MOVC A,@A+DPTR ; **读18B20程序,读出两个字节的温度**
READ2_18B20: MOV TEMP1,A MOV R4,#2 ;TABLE: DB
165D,165D,165D,166D,166D,166D,167D,16低位存在29 H,高位存在28H
MOV R1,#29H 7D,167D,167D RE00: MOV R2,#8 DB RE01: CLR C 168D,168D,168D,169D,169D,169D,170D,17 SETB C 0D,170D,171D NOP DB NOP 171D,171D,172D,172D,172D,173D,173D,17 CLR DQ 3D,174D,174D
13
大连民族学院2007级通信工程专业单片机系统课程设计报告
DB 174D,174D,175D,175D,175D RET
;* ******计算子程序*********
WORK: ; MOV PSW, #18h ;选择3区R系列寄存器
MOV R3, 31H MOV R2, 30H MOV R1, #00D MOV R0, TEMP1 LCALL MUL2BY2 MOV R3, #27H MOV R2, #10H LCALL DIV4BY2 LCALL HBCD RET
*两字节无符号数乘法程序*
; R7R6R5R4 <= R3R2 * R1R0 速度X时间/2
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
14
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
* 四字节/两字节无符号数除法程序 * ;R7R6R5R4/R3R2=R7R6R5R4(商)...R1R0(余数)/10000
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 A
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
大连民族学院2007级通信工程专业单片机系统课程设计报告
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
;***************************** ; ;十六进制双字节转三字节十进制 ; ;***************************** ; HBCD:MOV A,R5 MOV R6,A MOV A,R4 MOV R7,A HB2: CLR A MOV R3,A MOV R4,A MOV R5,A MOV R2,#10H HB3: MOV A,R7 RLC A MOV R7,A MOV A,R6 RLC A MOV R6,A MOV A,R5 ADDC A,R5 DA A
MOV R5,A MOV A,R4 ADDC A,R4 DA A
MOV R4,A
MOV A,R3 ADDC A,R3 MOV R3,A DJNZ R2,HB3 MOV A,R5 ANL A,#0FH MOV 40H,A MOV A,R5 ANL A,#0F0H SWAP A MOV 41H,A MOV A,R4 MOV 42H,A RET
;************************************ ; 显示子程序
;************************************ DISPLAY1:MOV DPTR,#TABLE1 MOV R0,#4
DP1:MOV R1,#250
LOOP:MOV A,40H ;显示低位 MOVC A,@A+DPTR MOV P0,A CLR P1.4 SETB P1.4 CLR P1.4 CLR P2.5 ACALL DELAY1 SETB P2.5
MOV A,41H;显示中位 MOVC A,@A+DPTR MOV P0,A SETB P1.4 CLR P1.4 CLR P2.6 ACALL DELAY1 SETB P2.6 MOV A,42H ;显示高位 JZ L
MOVC A,@A+DPTR MOV P0,A SETB P1.4
15
大连民族学院2007级通信工程专业单片机系统课程设计报告
CLR P1.4 CLR P2.7
L:ACALL DELAY1 SETB P2.7 DJNZ R1,LOOP DJNZ R0,DP1 RET TABLE1:
DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H
DELAY1:
MOV R7,#80 DJNZ R7,$ RET DELAY:
MOV R5,#100 D: MOV R6,#150 DJNZ R6,$ DJNZ R5,D RET END
16
因篇幅问题不能全部显示,请点此查看更多更全内容