课程设计(论文)基于PIC的汽车倒车雷达.doc

上传人:文库蛋蛋多 文档编号:2959546 上传时间:2023-03-05 格式:DOC 页数:17 大小:177.50KB
返回 下载 相关 举报
课程设计(论文)基于PIC的汽车倒车雷达.doc_第1页
第1页 / 共17页
课程设计(论文)基于PIC的汽车倒车雷达.doc_第2页
第2页 / 共17页
课程设计(论文)基于PIC的汽车倒车雷达.doc_第3页
第3页 / 共17页
课程设计(论文)基于PIC的汽车倒车雷达.doc_第4页
第4页 / 共17页
课程设计(论文)基于PIC的汽车倒车雷达.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《课程设计(论文)基于PIC的汽车倒车雷达.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)基于PIC的汽车倒车雷达.doc(17页珍藏版)》请在三一办公上搜索。

1、0. 前言11. 课程设计的目的和要求12. 总体设计13. 硬件设计54. 软件设计95. 系统操作说明166. 结束语177. 参考文献17 0. 前言倒车障碍检测系统所采用的超声波传感器技术可以探测到附近的障碍物,为驾驶员提供倒车警告和辅助泊车功能,其原理是利用超声波探测倒车路径上或附近存在的任何障碍物,并及时发出警告。所设计的检测系统可以同时提供声光并茂的听觉和视觉警告,其警告表示是探测到了在盲区内障碍物的距离和方向。这样,在狭窄的地方不管是泊车还是开车,借助倒车障碍报警检测系统,驾驶员心理压力就会减少,并可以游刃有余地采取必要的动作。随着人们对汽车辅助驾驶系统智能化要求的提高和汽车电

2、子系统的网络化发展,新型的倒车雷达应能够连续测距并显示障碍物距离,并具有通信功能,能够把数据发送到汽车总线上去。本文介绍基于PICF4520的倒车雷达。1. 课程设计的目的和要求1.1. 课程设计的目的单片机原理与课程设计的目的是综合训练利用单片机原理、C语言及电工电子技术等课程知识进行单片机应用系统设计的能力。根据设计题目的要求完成设计任务需求分析、系统方案总体设计及原理图绘制、程序流程图和代码编写等任务,设计一个能完成汽车倒车雷达任务的单片机系统。1.2. 课程设计的基本要求利用单片机的超声波传感器设计一个汽车倒车雷达,实时测量和显示汽车尾部与障碍物的距离,当距离值小于程序设定值时发出声光

3、报警,距离值可以通过串口传送到汽车总线上。2. 总体设计2.1、基本工作原理系统采用超声波测距原理。工作时,超声波发射器发出超声波脉冲,超声波接收器接收遇到障碍物反射回来的反射波,准确测量超声波从发射到遇到障碍物反射返回的时间,根据超声波的传播速度,可以计算出障碍物距离。超声波测距具有在近距离范围内有不受光线和雨雪雾的影响、结构简单、制作方便和成本低等优点。高性能的单片机结合超声波测距,可以实现功能强大、使用方便的倒车雷达。2.2、硬件总体设计2.2.1、系统组成方案CCPI/O端口UARTPIC单片机声光报警信号调理超声波发送器超声波接收器信号调理LED显示器电平转换汽车总线图1 倒车雷达系

4、统框图2.2.2、扩展单元编址2.2.3、显示功能的定义使用一个I/O端口(Port A或B或C或D)驱动LED2.3、软件总体设计2.3.1、存储单元的分配、标志位的定义PICF4520芯片:内部程序存储器32K,数据存储器(1536字节RAM,256字节EPROM),18个中断源,5个I/O端口(Port A、B、C、D、E), 4个定时器,2个CCP模块。使用Timer 0定时器产生40KHz的脉冲波用于超声波发送模块,用Timer 1定时器对超声波的发送和接收时间间隔进行计时,用Timer 2定时器产生PWM脉冲波,使提示声音随着距离值的减小而频率增大;用Timer 3定时器进行计数,

5、每100ms产生一次高优先级中断,发生中断后使Timer 0定时器产生40KHz的方波。使用一个I/O端口(Port A或B或C或D)驱动LED2.3.2、主程序框图及清单开始微控制器初始化发送脉冲等待回波接收脉冲读取时间计算距离距离=1.0m红灯亮,绿灯灭,蜂鸣器响绿灯亮,红灯灭,蜂鸣器不响1.0距离=10.0程序清单:void main (void)char selectpattern;char a;ADCON1=OX7F;TRISBbits.TRISB4=0;/program RB4 as outputTRISBbits.TRISB0=1;/program RB0 as inputTRI

6、SCbits.TRISC0=0;/program RC0 as outputTRISCbits.TRISC1=0;/program RC1 as outputTRISCbits.TRISC2=0;/program RC2 as outputTRISCbits.TRISC6=0;/program RC6 as outputTRISCbits.TRISC7=1;/program RC7 as inputTRISD=0;/PortD as outputTRISE=0;/General purpose I/O mode,RE0,RE1,RE2 as outputT0CON=0x48;/select i

7、nternal clock and a prescaler of divide by 1RCONbits.IPEN=1;/IPEN=1TMR1L=0;/Preload Timer 1 with 0xFF00;TMR1H=0xFF;T1CON=0x04;/select internal clock seconds=minutes=0;/select clock at 00:00T2CON=1;/select a prescaler of divide by 4CCP1CON=0x0C;/CCp module off, active high outputTMR2=0;/clear Timer 2

8、PR2=124;/Timer 2 clears on 124CCPR1L=62; T3CON=0x70;/select a presacler of divide by 8TMR3L=0x2C;TMR3H=0xCF;IPR1bits.TMR1IP=0;/make Timer 1 low priorityPIE1bits.TMR1IE=1;/enable timer 1 interruptIPR2bits.TMR3IP=1;/make Timer 3 high priorityPIE2bits.TMR3IE=1;/enable timer 3 interruptOpenUSART(USART_A

9、SYNCH_MODE &/USART operates at 9600 Baud USART_EIGHT_BIT & USART_BRGH_HIGH, 25);TXSTAbits.TXEN=0;/transmit disabledTXSTAbits.TRMT=1;/TSR emptyINTCON2bits.INTEDG0=0;/make INT0 negative edge-triggeredINTCONbits.INT0IE=1;/enable INT0INTCONbits.GIEH=1;/enable high priority interruptsINTCONbits.GIEL=1;/e

10、nable low priority interruptsT0CONbits.TMRON=1;/enable Timer 0l=0;PORTCbits.RC0=0;/light green Led PORTCbits.RC1=1;/turn off red Led length=6.00;OutWave();/ output pulse waveT3CONbits.TMR3ON=1;/enable timer 3while(1)ClrWdt();/reset Watchdogselectpattern=1;for(a=0;a3;a+)PORTE=selectpattern;/select a

11、digitif(a=0)PORTD=look7(int)length|0x80;elsePORTD=look7(int)length;length-=(int)length;length*=10;selectpattern=(selectpattern1)|1;Delay1KTCYx(3);/3ms delayif(TXSTAbits.TRMT=0)TXSTAbits.TXEN=1;/transmit enabled超声波发射电路发出超声波的同时计数器开始计数,当遇到障碍物反馈信号到超声波接收器接收,经CX20106接收电路处理后,产生一个低脉冲,该信号传送给单片机产生中断,调用测距子程序,计

12、算出测量距离,调用显示子程序,根据不同的测量数值在液晶上显示距离和报警。当1.0m距离10m,显示测量距离,继续测量;当距离小于1m时,显示测量距离,红灯亮、绿灯灭,并由RB0位驱动蜂鸣器报警。为增强抗干扰能力,系统每100ms发射一次超声波,每次发射的超声波包含10个波簇。这样每秒可测约10个数据,可以满足实时性要求。3.硬件设计系统以PIC18F4520微控制器为核心,外围电路由超声波发射电路、超声波接收电路、声光报警电路、通信接口电路、液晶显示电路五部分组成,下面逐一介绍。图2 倒车雷达系统主控电路图系统的主控电路图如图2所示。本系统中选用的PIC18F4520片内有32Kb闪存和1.5

13、Kb RAM,因此无须外扩存储器。超声波发送模块电路如图3所示,由超声波产生和发射两部分组成。超声波的产生采用软件发生法,因为通过软件发生法既可以减少硬件的复杂程度,降低系统的成本,又具有灵活性强、容易实现、稳定性好的优点。本系统利用PIC18F4520单片机的定时器功能来产生稳定的40KHz脉冲波,并通过I/O端口RB4输出到超声波发射部分。在超声波发射电路中CD4049一共包括了6个非门,图3中线路仅使用了3个,为了防止干扰或被静电击穿导致整个CD4049损坏,把没有使用的那一侧的3个非门串起来做接地处理。当控制端输出一系列固定频率脉冲时,在压电陶瓷型超声波发射换能器UCM-40-T上就固

14、定频率的加正电压和反电压,发出大功率的超声波,所得到的波形比其他方式效果更理想。图3 倒车雷达超声波发送模块超声波接收电路如图4所示。压电陶瓷型超声波接收器 UCM-40-R 接收反射的超声波转换为40kHz毫伏级的电压信号,需要经过放大、处理、才能用于触发单片机中断。一方面传感器输出信号微弱,由于反射条件不同,需要放大倍数的范围大约是1005000,另一方面传感器输出阻抗较大,需要高输入阻抗的多级放大电路,而高输入阻抗容易接收干扰信号。通常采用两种方案:一是采用运算放大器组成多级选频放大电路;二是采用专用的集成前置放大器。第一种方案容易产生自激振荡,要使接收电路达到很好灵敏度和抗干扰效果,电

15、路的调试是较困难的。本系统采用专用的集成电路前置放大器 CX20106,它由前置放大器、限幅放大器、带通滤波器、检波器、积分器、整型电路组成。其中前置放大器具有自动增益控制功能,可以保证在超声波传感器接收较远反射信号输出微弱电压时放大器有较高的增益,在近距离输入信号强时放大器不会过载。调节芯片引脚5的外接电阻R3,将它的滤波器的中心频率设置在40kHz,达到了很好的效果。当接收到与滤波器中心频率相符的信号时,其输出引脚7输出一个低电平,而输出引脚7直接接到PIC18F4520的上RB0/INT0上,以触发INT0中断。图4 倒车雷达超声波接收模块集成电路CX20106是一款红外线检波接收的专用

16、芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率38kHz 与测距超声波频率40kHz 较为接近,可以利用它作为超声波检测电路。实验证明,其具有很高的灵敏度和较强的抗干扰能力。取R3=200k时,f042kHz,若取R3=220k,则中心频率f038kHz。图5 声光报警模块报警模块采用简单的声光报警电路,如图5所示。发光二极管可以直接由PIC单片机的I/O端口驱动,蜂鸣器通过一个NPN三极管来驱动。先设定一个临界值,当车尾与障碍物的距离小于设定的最小距离时,红色指示灯闪亮,绿色指示灯熄灭。单片机向其端口发出PWM脉冲,随着距离的减小,通过控制PWM脉冲的占空比和周期使蜂鸣的频率

17、加剧,以此来提示驾驶员。图6通信接口模块通信接口电路如图6所示。采用美信的MAX3232芯片,外围电路非常简单,只需要5个0.1F的电容器。该电路把单片机串口输出信号隔离变换成 RS-232信号发送到汽车总线上。图中RS232插座来和汽车的串口相连,TX和RX信号用来和PIC单片机的管脚相连。图7 LED显示器距离值的显示采用3位LED,PIC单片机的I/O端口可以直接驱动LED,进行动态显示,原理图如图7所示。LED数码管采用共阴极数码管,段码由RD0-RD7控制,位码由RE0、RE1、RE2控制,三极管Q2、Q3、Q4增加驱动能力。当RE0为高,RE1、RE2为低电平时,RD0-RD7上高

18、电平的管脚便会点亮数码管的相应段,这些段的不同组合便会显示出0-9十个数字,三个数码管轮流显示,当显示频率大于25Hz时,人眼的感觉就是连续显示。4、软件设计介绍本系统的主要子程序、中断服务程序的框图及程序清单(1) 子程序1:void OutWave (void)程序功能:通过定时器Timer 0产生40KHz方波程序框图如下:i = 0TMR0L=0TMR0L=12?i10?TMR0L25?PORTBbits.RB4=1l=0?T1CONbits.TMR1ON=1l=1;PORTBbits.RB4=0结束开始i=i+1/function to generate the pulse wave

19、void OutWave (void)int i;for(i=0;i10;i+)/ generate 10 wavesTMR0L=0;doif(TMR0L=12)PORTBbits.RB4=1;if(l=0)T1CONbits.TMR1ON=1;/enable Timer 1l=1;elsePORTBbits.RB4=0;while(TMR0L25)(2) 子程序2:void DoTime (void)程序功能:通过定时器Timer 1进行计数程序框图如下:开始seconds=0;minutes=minutes+1;TMR1H=0xFF;PIR1bits.TMR1IF=0;seconds= s

20、econds+1;Timer 1溢出中断发生?minutes=60?seconds=60?结束minutes=0;程序清单:void DoTime (void)TMR1H=0xFF;PIR1bits.TMR1IF=0;/clear Timer 1 interruptseconds+;/increment secondsif(seconds=60)/if seconds hits 60seconds=0;/clear seconds back to zerominutes+;/increment minutesif(minutes=60)/if minutes hits 60minutes=0;

21、/clear minutes(3) 子程序3:void Int0(void)程序功能:计算距离值并用LED显示,当距离值小于1.0m时进行声光报警开始清INT0中断,计算length值length10.0?length=1.0?PORTCbits.RC0=1;PORTCbits.RC1=0;T2CONbits.TMR2ON=1;0.9length=1.0PR2=124; CCPR1L=620.8length=0.90.7length=0.80.6length=0.70.5length=0.60.4length=0.5PR2=35; CCPR1L=20;PR2=45; CCPR1L=25;PR2

22、=55; CCPR1L=30;PR2=70; CCPR1L=35;PR2=90; CCPR1L=45;PR2=110; CCPR1L=55RC0=0; RC1=1;T2CONbits.TMR2ON=0;seconds=minutes=0; T1CONbits.TMR1ON=0; TMR1H=0xFF; TMR1L=0; l=0;结束程序清单:void Int0(void)char a;INTCONbits.INT0IF=0;length=(60*minutes+seconds)*0.5*256*340*1.0e-6;TXREG=length;/send dataTXSTAbits.TRMT=0

23、;/TSR FULLif(length10.0)if(length=1.0)PORTCbits.RC0=1;/turn off green Led PORTCbits.RC1=0;/light red Led T2CONbits.TMR2ON=1;/Start Timer 2 & PWMif(lengh0.9)PR2=124;/Timer 2 clears on 124CCPR1L=62;else if(length0.8)PR2=110;CCPR1L=55; else if(length0.7)PR2=90;CCPR1L=45;else if(length0.6)PR2=70;CCPR1L=

24、35;else if(length0.5)PR2=55;CCPR1L=30;else if(length0.4)PR2=45;CCPR1L=25;elsePR2=35;CCPR1L=20;elsePORTCbits.RC0=0;/light green Led PORTCbits.RC1=1;/turn off red Led T2CONbits.TMR2ON=0;/Stop Timer 2 & PWMseconds=minutes=0;/clear recordsT1CONbits.TMR1ON=0;/disable Timer 1TMR1H=0xFF;TMR1L=0;l=0;(4) 中断程

25、序1:void MyHighInt (void)程序功能:高优先级中断。当超声波接收传感器接收到脉冲波时产生INT0高优先级中断;当Timer 3 定时器溢出时产生次高优先级中断。程序框图如下:开始 调用Int0()函数INT0中断发生?Timer 3 溢出中断发生?TMR3L=0x2C;TMR3H=0xCF;PIR2bits.TMR3IF=0;OutWave();结束程序清单:void MyHighInt (void)if(INTCONbits.INT0IF=1)Int0();else if(PIR2bits.TMR3IF=1)/OUTPUT a wave every 100msTMR3L=

26、0x2C;TMR3H=0xCF;PIR2bits.TMR3IF=0;OutWave();(5) 中断程序2:void MyLowInt (void)程序功能:低优先级中断。当Timer 1定时器溢出时产生低优先级中断,调用DoTime()函数进行计数。程序框图如下:开始Timer 1溢出中断发生?调用DoTime()函数结束程序清单:void MyLowInt (void)if(PIR1bits.TMR1IF=1)DoTime();5、系统操作说明当驾驶员挂上倒挡时,汽车内部控制器发出信号使倒车雷达系统开始工作。初始时设定LED屏上显示的是6.00m, 此时绿色指示灯亮,红色指示灯灭,超声波发

27、送传感器发出一簇脉冲波;当超声波接收传感器接收到脉冲信号时产生INT0中断,进入中断函数进行距离值length的计算;若length=10.0,则不显示该值;若1.0length10.0, 则在LED上显示该值;若length=1.0,则红色指示灯亮,绿色指示灯灭,蜂鸣器开始发声并在LED上显示该值,而且随着距离值的不断减小蜂鸣器发声的频率不断增大。6、结束语该倒车雷达采用了PIC18F4520单片机,并充分利用了其片上资源使得系统功能丰富,使用的外围芯片减少,系统可靠性得到提高。该倒车雷达应用于汽车中,当驾驶员倒车时,从液晶显示屏上一目了然便知道障碍物离车的距离,克服了后视镜小,视野窄的缺点

28、,消除了倒车造成的事故隐患。7、参考文献1 Brey, B.B, Applying PIC18 Microcontrollers: Architecture, Programming, and Interfacing using C and Assembly. 北京:清华大学出版社,2009.4.2 求是科技. PIC 单片机典型模块设计实例导航. 北京:人民邮电出版社, 2005.6.3 Dogan Ibrahim. Advanced PIC Microcontrollers Projects in C From USB to RTOS with the PIC18F Series. 北京:人民邮电出版社, 2010.7.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号