




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理与接口技术课程设计汽车倒车测距仪 题目:汽车倒车测距仪 指导老师: 日期:2013年1月13日目录一、设计目的4二、设计内容4三、设计任务4四、问题分析及方案选择51. 总体思路52. 超声的波发射53. 测距原理54. 显示原理65. 报警原理6五、所需元件61.8086介绍62.8259A介绍73.8255介绍84.8253介绍85.地址锁存器74LS138介绍9六、硬件接线图111.总电路图112.超声波发射电路:113.超声波接收电路124.数码管显示电路145.蜂鸣报警电路14七、主程序流程图151.中断子程序172.延时子程序173.距离计算子程序184.十六进制转10进制数子程序195.LED显示子程序19八、程序代码20九、设计难点25十、心得体会26十一、参考文献28汽车倒车测距仪设计一设计目的1、运用微机原理及接口技术理论课中学习的8086、8255等芯片,以及数码管等元件进行课程设计,做到学以致用。2、通过课程设计提高自己的动手能力,分析问题的能力、解决问题的能力。3、提高自己运用汇编语言的能力,使自己的思维更加发散,提高创新能力。4、通过整个课程设计,提高综合运用能力,及提高对硬件的认识和布线能力。二、设计内容 1、设计一个微机控制的汽车倒车测距仪,能测量并显示车辆后部障碍物离车辆的距离,同时用间歇的“嘟嘟”声发出警报,“嘟嘟”声间隙随障碍物距离缩短而缩短,驾驶员不但可以直接观察到检测的距离,还可以凭听觉判断车后障碍物离车辆距离的远近; 开机后先显示“”,并有开机指示灯。 CPU发射超声波1ms,然后显示60ms;即1ms+60ms为一个工作周期,等待回波,在次周期内完成一次探测。 根据距离远近发出报警声并显示距离。障碍物距离小于1m,距离值变化5cm更换显示,否则不更换;距离在1m以上,新值与原显示值之差大于10cm更换,否则不更换。 用三LED位数码管显示障碍物距离2、硬件电路原理图和软件框图;3 编写控制程序,写出设计任务书(总结报告)。三、设计任务1、选用8088和适当的存储器及接口芯片完成相应的功能。2、用LED显示器显示电子锁的当前状态。3、画出详细的硬件连接图。4、给出程序设计思路、画出软件流程图。5、给出地址分配表。6、给出所有程序清单并加上必要注释。7、完成设计说明书(列出参考文献,所用器件型号)。四、问题分析及方案选择1.总体思路:要实现测距、报警、显示,则倒车测距仪必须由以下几部分组成:超声波发射、接受电路,显示电路以及报警电路,超声波发射电路用于发射时长1ms的超声波,接受电路在接受到超声波后立即产生中断,触发中断程序。显示电路及报警电路用于指示距离。2.超声的波发射:超声波发射电路需考虑的问题是如何控制超生波发射时间以及超声波的发射功率,由于本次课程设计主要针对微机的控制原理,顾不在本次课设中考虑发射功率的问题。发射时间由8253的一个计数器控制,设置合适的计数初值,使输出刚好能够产生1ms控制脉冲。3.测距原理:测量距离则需要发射电路与接收电路的配合,同样使用8253的另一个计数器,使其在超声波发射时开始计数,接收到超声波回波后立即停止计数,计算已计的计数值,然后根据声波速度、计数频率算出时间。此次设计采用的时钟频率为1.193MHz,声速340m/s,故每cm的计数次数为 n=1.193M340100,但是计数差值是声波来回行程的差值,故车辆与障碍物的距离每cm的实际计数次数为 N=2n。4.显示原理:由于数码管只有3个,而显示的灵敏度最高只需cm,所以选择第一个数码管为百位,第二个为十位,第三个为个位,单位cm。取计数差值,并将其值除以N,得到距离的16进制数(单位cm),需编辑相应的程序将16进制数转为10进制数,并逐个取出百位、十位、个位,并对应LED管的段码后输入到8255控制LED显示。5.报警原理: 报警电路采用8253的第三个计数器来控制报警频率,声音的产生则用一个蜂鸣发声器。因为距离越近,计算时间的计数值越小,所以我们可以用这个计数值乘上相应的系数来作为第三个计数器的计数初值,从而改变报警的频率。五、所需元件主要元件介绍:1. 8086介绍Intel 8086微处理器是由美国Intel公司1987年推出的一种高性能的16位微处理器,是第三代微处理器的代表。它有20条地址线,直接寻址能力达1MB,具有16条数据总线,内部总线和ALU均为16位,可进行8位和16位操作。具有丰富的指令系统,采用多级中断技术,多重寻址方式,多重数据处理形式,段式存储器结构,硬件乘除法运算电路,增加了预取指令的队列寄存器等,分为总线借口部件ALU和执行部件EU。2. 8259A介绍8259A是专门为了对8085A和8086/8088进行中断控制而设计的芯片,它是可以用程序控制的中断控制器。单个的8259A能管理8级向量优先级中断。在不增加其他电路的情况下,最多可以级联成64级的向量优级中断系统。8259A有多种工作方式,能用于各种系统。各种工作方式的设定是在初始化时通过软件进行的。 在总线控制器的控制下,8259A芯片可以处于编程状态和操作状态,编程状态是CPU使用IN或OUT指令对8259A芯片进行初始化编程的状态。3. 8255介绍8255是Intel公司生产的一种通用的可编程并行I/O接口芯片,它有三个并行I/O口,又可通过编程设置多种工作方式,价格低廉,使用方便,可以直接与Intel系列的芯片连接使用,在系列微机中,8255接口用于接受键盘输入的扫描码和系统配置的DPI开关状态,以及用于扬声器控制和储存器奇偶校验。4. 8253介绍intel8253是NMOS工艺制成的可编程计数器/定时器,有几种芯片型号,外形引脚及功能都是兼容的,只是工作的最高计数速率有所差异,例如8253(2.6MHz),8253-5(5MHz)8253内部有三个计数器,分别称为计数器0、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。输出锁存器的值是通过程序设置的。输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。顺便提一下,CR、CE和OL都是16位寄存器,但是也可以作8位寄存器来用。5. 地址锁存器74LS138介绍74LS138 为3 线8 线译码器,其工作原理如下:当一个选通端(G1)为高电平,另两个选通端(/(G2A)和/(G2B))为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。 利用 G1、/(G2A)和/(G2B)可级联扩展成 24 线译码器;若外接一个反相器还可级联扩展成 32 线译码器。 若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。其功能表为六、硬件接线图1. 总电路图CPU类型:80868253地址分配:4H、5H、6H、7H8255地址分配:0CH、0DH、0EH、0FH8259地址分配:8H 、9H时钟信号频率:1.193MHz2. 超声波发射电路:超声波发射电路主要由两部分组成:超声波发射控制电路及超声波产生电路 超声波发射控制电路图超声波发射控制电路采用一片8253芯片,计数器0设置为计数方式0,控制计数时间为1ms,并在OUT0端加上非门,则可在OUT0得到1ms的高电平。计数器2也设置为计数方式0,用于计算超声波从发出到接收回来的时间。 超声波产生电路图OUT0、fout端为控制端,只要在fout端加上恒定控制电源,就可以由OUT0来控制Q1的导通,从而控制超声波的发射。3. 超声波接收电路超声波接收电路也由两部分组成:中断产生电路和超声波采集电路 中断产生电路图中断产生电路主要由一片8259构成,当超声波采集电路收集到超声波后,IR7引脚会输入一个高电平,从而产生中断,进行显示、报警等后续操作。 超声波采集电路图超声波采集电路主要选用了一片LM567通用锁相环电路音调译码器,当超声波接收换能器接收到超声波后,INTR7端会产生一个高电平,用作中断响应电路的IR7中断输入信号。4. 数码管显示电路 数码管显示电路图数码管显示电路采用一片8255来控制三个数码管的显示,A口选管,B口输出显示内容,A、B口都为基本输入输出方式,显示时间近似60ms。5. 蜂鸣报警电路蜂鸣报警电路亦由两部分组成:报警频率控制电路和蜂鸣产生电路 报警频率控制电路图频率的控制由8253的计数器1完成,计数方式为方式2,计数初值根据障碍物距离而定,距离越小,计数初值越小,产生负脉冲的频率越高,经过非门变为一个正脉冲,输入给蜂鸣产生电路,脉冲长度由所接时钟决定,可根据实际合理选择蜂鸣器一次发声长。 蜂鸣产生电路图蜂鸣产生电路采用一个蜂鸣器和多谐振荡接法的555定时器,当控制信号输入时,555控制蜂鸣器发出的音调。七 主程序流程图NYNNYYYNY是否收到超声波?初始化过程开始开机显示“”停止计时并计算距离打开超声波的接收中断发射超声波1ms并开始计时N是否大于1m?变化5cm?变化10cm?是否按下按键?刷新显示和报警频率延时60ms结束结束接收中断延时60ms1. 中断子程序结束YNY是否收到超声波?初始化8259ICW1、ICW4、OCW1开始打开中断、接收IR7请求设置OCW2,结束中断执行IR7程序处理是否按下按键?2. 延时子程序Y结束NCX=0?CX赋初值0FFFFH开始CX=CX-13. 距离计算子程序YNY是已发射超声波?初始化8253计数器2开始装入计数初值停止计数开始计数是否收到超声波?取出计数值与计数初值相减除以35再除以2得到距离的16进制数(单位cm)结束4. 十六进制转10进制数子程序取得到的16进制数开始先除10再乘16制将得到的10进制数储存结束5. LED显示子程序取出存储的10进制数字开始与相应段码对应将段码送入8255控制LED显示结束八、程序代码INTR_RECV EQU 01C8H ;INTR对应的中断矢量地址INTR_OCW1 EQU 9H ;INTR对应的8259内部OCW1地址INTR_OCW2 EQU 8H ;INTR对应的8259内部ICW2地址INTR_ICW1 EQU 8H ;INTR对应的8259内部ICW1地址INTR_ICW4 EQU 9H ;INTR对应的8259内部ICW2地址MY8253_COUNT0 EQU 4H ;8253计数器0端口地址MY8253_COUNT1 EQU 5H ;8253计数器1端口地址MY8253_COUNT2 EQU 6H ;8253计数器2端口地址MY8253_MODE EQU 7H ;8253的控制寄存器地址MY8255_A EQU 0CH ;8255的A口地址MY8255_B EQU 0DH ;8255的B口地址MY8255_C EQU 0FH ;8255的C口地址MY8255_MODE EQU 0EH ;8255的控制寄存器地址STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDS ;堆栈段初始化DATA SEGMENT ;数据段初始化DTABL1 DB 40H,07H,5CH,50H,67H,6EH,7EH,28H,80H,70H ;1管使用的段码(带小数点)DTABL2 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,27H,7FH,6FH ;2、3管使用的段码X1 DW 1DUP(0) ;存放距离的百位(单位cm)X2 DW 1DUP(0) ;存放距离的十位(单位cm)X3 DW 1DUP(0) ;存放距离的个位(单位cm)DATA ENDS CODE SEGMENT ;代码段初始化 ASSUME CS:CODE, DS:DATASTART:MOV AX,DATA MOV DX,AX MOV AX,0000H MOV DX,AX ;数据段清零M8255:MOV DX,MY8255_MODE 0CH ;初始化8255 MOV AL,80H ;工作方式0,A口和B口输出 OUT DX,AL MOV DX,MY8255_A ;写A口发出的起始数据 MOV AL,7H ;选择LED数码管前三个管 OUT DX,AL MOV DX,MY8255_B ;写B口发出的起始数据 MOV AL,30H ;显示“ OUT DX,AL M8259:MOV DX,INTR_OCW1 ;初始化8259 MOV AL,7FH ;开8259中断7 OUT DX,AL MOV DX,INTR_ICW1 MOV AL,13H ;连接方式为单片,边沿触发 OUT DX,AL MOV DX,INTR_ICW4 MOV AL,1H ;CPU为8086 OUT DX,AL MOV SI,INTR_RECV ;填8259中断7中断矢量 MOV AX,OFFSET IRQ7 ;取中断程序入口地址(相对地址) MOV ES:DI,AX ;设置中断程序入口偏移地址 ADD DI,2 MOV AX,SEG IRQ7 MOV ES:DI,AX ;设置中断程序入口段地址 SEND: MOV DX,MY8253_MODE ;初始化8253 MOV AL,30H ;计数器0,方式0 OUT DX,AL MOV DX,MY8253_COUNT0 MOV AL,0A9H ;装入计数初值1193D,发射超声波1ms OUT DX,AL MOV AL,4H OUT DX,AL MOV DX,MY8253_MODE MOV AL,0B0H ;计数器2,方式0 OUT DX,AL STI ;打开中断 MOV DX,MY8253_COUNT2 MOV AL,0FFH ;装入计数初值,开始计时 OUT DX,AL MOV AL,0FFH OUT DX,AL WAIT1:MOV AH,1 ;判断是否有按键按下 INT 16H JZ WAIT1QUIT1:CLI ;关闭中断 MOV AX,4C00H INT 21H IQR7 PROC NEAR ;中断处理程序IQR7 MOV BX,0H ;置零BX MOV DX,MY8253_MODE MOV AL,80H ;设定“飞读” OUT DX,AL IN AL,MY8253_COUNT2 ;读取计数器2当前计数值 MOV CL,AL IN AL,MY8253_COUNT2 MOV CH,AL MOV BX,CX ;保存当前计数值COUNT:MOV AX,0FFFFH ;计算差值 SUB AX,CX CMP AX,0DBDH ;比较是否大于一米 JA ONE1 ;大于则转移到ONE1 SUB AX,BX CMP AX,0AFH ;比较是否比5cm大 JNA BACK ;不大于5cm则转移到BACK MOV DX,MY8253_MODE MOV AX,74H ;计数器1,方式2 OUT DX,AX MOV DX,MY8253_COUNT1 MOV AX,BX OUT DX,AX ;刷新报警声音频率 MOV CX,0AFH DIV CX ;计算距离 CALL TRAN ;调用10进制调整程序 CALL DISP ;调用显示程序 MOV DX,MY8253_MODE ;初始化8253 MOV AL,30H ;计数器0,方式0 OUT DX,AL MOV DX,MY8253_COUNT0 MOV AL,0A9H ;装入计数初值1193D,发射超声波1ms OUT DX,AL MOV AL,4H OUT DX,AL MOV DX,MY8253_MODE MOV AL,0B0H ;计数器2,方式0 OUT DX,AL STI ;打开中断 MOV DX,MY8253_COUNT2 MOV AL,0FFH ;装入计数初值,开始计时 OUT DX,AL MOV AL,0FFH OUT DX,AL OVER: MOV DX,INTR_OCW2 ;向CUP发出中断结束命令 MOV AL,20H OUT DX,AL IRETIRQ7 ENDP ONE1: SUB AX,BX CMP AX,15EH ;比较是否比10cm大 JNA BACK ;不大于10cm则转移到BACK MOV DX,MY8253_MODE MOV AX,74H ;计数器1,方式2 OUT DX,AX MOV DX,MY8253_COUNT1 MOV AX,BX OUT DX,AX ;刷新报警声音频率 MOV CX,15EH DIV CX ;计算距离,舍去余数(已小于5cm) CALL TRAN ;调用10进制调整程序 CALL DISP ;调用显示程序 JMP OVER ;返回 BACK:CALL DELAY1 JMP OVERTRAN PROC NEAR ;距离(单位cm)10进制调整子程序 PUSH BX ;把BX压栈 CLC ;进位标志位置零 MOV CL,5H MUL CL MOV DX,0H MOV BX,0H A1: MOV CX,100H MUL CX MOV X3,AX A2: MOV AL,AH ;取出余数 MOV CL,0AH DIV CL MOV CX,0H MOV CL,AH MOV X3,CX ;取出个位 MOV CL,10H MUL CL MOV X2,AX ;取出十位 MOV AX,X1 MOV BX,X2 ADD AX,BX MOV BX,X3 ADD AX,BX MOV BX,AX AND BX,100H SAR BX,2 ;右移两位 MOV X3,BX MOV BX,X2 AND BX,10H SAR BX,1 ;右移一位 MOV X2,BX POP BX ;BX出栈 RET TRAN ENDPDISP PROC NEAR MOV DX,MY8255_A MOV AL,1H ;选择LED数码管1 OUT DX,AL MOV DX,MY8255_B MOV BX,OFFSET DTABL1 MOV AX,X1 ADD BX,AX MOV AL,BX ;导入十进制数字X1对应的段码1 OUT DX,AL ; 显示数值 CALL DELAY1 ;调用显示延时程序 MOV DX,MY8255_A MOV AL,2H ;选择LED数码管2 OUT DX,AL MOV DX,MY8255_B MOV BX,OFFSET DTABL2 MOV AX,X2 ADD BX,AX MOV AL,BX ;导入十进制数字X2对应的段码2 OUT DX,AL ;显示数值 CALL DELAY1 ;调用显示延时程序 MOV DX,MY8255_A MOV AL,4H ;选择LED数码管3 OUT DX,AL MOV DX,MY8255_B MOV BX,OFFSET DTABL2 MOV AX,X3 ADD BX,AX MOV AL,BX ;导入十进制数字X3对应的段码2 OUT DX,AL ;显示数值 CALL DELAY1 ;调用显示延时程序 RETDISP ENDP DELAY1 PROC NEAR PUSH CX ;延时接近60ms MOV CX,0FFFFHD1 :DEC CX LOOP D1 POP CX RETDELAY1 ENDP CODE ENDSEND STATR九、设计难点设计难点主要在于控制发射超声波的时间,控制报警电路的报警频率变化,以及将计数值转化为所需要的十进制数显示距离,为此,我们小组进行了多次讨论,包括8253计数器的计数方式的选择,电路的连接,以及转化的算法,但是由于时间和能力有限,报警电路还是有些问题,直接用8253的计数器控制,一次报警的时长太短,需要在计数器与报警电路之间再加入相关环节来改变一次报警时长,此部分我们未能如期完成。计数差值转化为十进制距离时,令我们感到十分头痛,计数值除以N时,若计数值太大,可能会产生丢失,所以我们在此改为先除以一个比较大的数(N的整倍数),再乘以倍数,得到所需要的值,但会损失一定的精确度,在交报告前,我们未能作出更好的算法。十、心得体会这次课程设计我们选择了比较难的一个题目,汽车倒车测距仪,希望在运用微机课程知识和提高自己的能力同时,给自己多一些锻炼和挑战。看到其他有些同学草草地改了一些课程设计就上交了,我们并没有因此心浮气躁,而是继续专心研读相关资料,结合题目和课本进行倒车测距仪的设计。花了一个多星期,兢兢业业,挥汗洒泪,终于完成了本次课程设计。真是“十年辛苦不寻常,字字看来皆是血”啊!下面我们就分软件和硬件进行阐述:1、 硬件部分此次题目硬件部分是难点,因为我们虽然学习和掌握了8253,8259,8255等等相关知识,但是综合运用起来却显得捉襟见肘,因为此外还要配套地加上一些其它的电路,比如超声波的发射和接收电路等,于是我们上网查阅了很多资料,在掌握了相关的原理的基础上,整合修改了一些电路,使我们的课程设计所要求的功能能够完整而正确地实现。我们小组一起研究学习了proteus软件,学会了如何绘制电路图和仿真,在这其中也碰到了许多困难,但是我们相互讨论,并通过搜索网络,查阅书籍等解决了硬件上遇到的很多问题。 2、 软件部分 软件部分是在我们的硬件基础上进行功能实现,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 购房定金合同格式要求
- 2025年亚麻种植行业深度研究报告
- 2025年中国食品内运输槽车项目投资可行性研究报告
- 资质确认与代理记账合同
- 绿化恢复合同
- 绿色环保技术推广会议合同
- 2025-2030年中国马口铁礼品盒行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国餐饮美食广场行业现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 食品加工技术转让合同
- 2025-2030年中国长袍挂钩行业市场现状供需分析及投资评估规划分析研究报告
- 牛场安全培训
- 脑电图及临床应用
- 2025年重庆中考语文a试题及答案2024
- 大学生的人际交往困境与突破
- 第八单元常见的酸、碱、盐基础练习题-+2024-2025学年九年级化学科粤版(2024)下册
- 2024国家安全教育大学生读本题库
- 黄河文化(齐鲁工业大学)知到智慧树章节测试课后答案2024年秋齐鲁工业大学
- 变电站电网侧储能项目可行性研究报告
- 第十二周《遇见劳动之美点亮成长底色》主题班会
- 世界环境日环保教育班会 课件
- 临床诊疗指南-疼痛学分册
评论
0/150
提交评论