停车场智能车位引导系统结题答辩支撑材_第1页
停车场智能车位引导系统结题答辩支撑材_第2页
停车场智能车位引导系统结题答辩支撑材_第3页
停车场智能车位引导系统结题答辩支撑材_第4页
停车场智能车位引导系统结题答辩支撑材_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、停车场智能车位引导系统结题答辩支撑材我们的成果:一、 自己独立设计了一个CC2430模块PCB电路板:巴伦设计描述巴伦的目的是在TX模式下,把两个差分RF引脚的输出结合为一个单端50欧姆RF信号,以及在RX模式下把单端50欧姆天线信号分成一个差分RF信号。提供给输出阶段的阻抗匹配以及DC也在巴伦中实现。这个巴伦设计包括两个用于阻抗匹配的组件(L1和L3),一个RF块(L2),以及一个DC块(C2)。除了上述四个分立组件,还有一个1/2波长的长传输线,用于保证正确的RF信号相位,以及一个70欧姆、23的传输线用于阻抗匹配。为了实现合适的性能,适当长度的传输线,以及图4和表1所定义的L2连接点是很

2、重要的。L3和1/2波长传输线之间的布线的适当尺寸也很重要。选择这个布线的尺寸以确保合适的阻抗匹配。巴伦布线的阻抗受第1层布线与下面接地平面之间距离的影响。CC2420和CC2430EM的参考设计都使用了1mm厚的两层FR4基板。强烈建议使用相同的板厚度和基板类型,以达到合适的传输线阻抗。如果这是不可行的,巴伦和下面接地平面之间的1mm距离可以通过使用一个内部接地层实现。CC2420和CC243x的最佳阻抗略有不同。为了获得与巴伦匹配的合适阻抗,除了L1的值之外,可以使用相同的布局和组件值。对于CC2420,L1应为8.2nH,对于CC2430和CC2480,应为6.8nH。图2和图3展示了C

3、C2420EM和CC243xEM参考设计中巴伦的原理图。我设计的PCB电路图:原理图: 图1图2二、 应用超声波实现粗略的测距1、产品特点:HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。基本工作原理:(1)采用IO口TRIG触发测距,给至少10us的高电平信号;(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S)/2;3、电气参数:4、超声波时序图:

4、以上时序图表明你只需要提供一个10uS以上脉冲触发信号,该模块内部将发出8个40kHz周期电平并检测回波。一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。公式:uS/58=厘米或者uS/148=英寸;或是:距离=高电平时间*声速(340M/S)/2;建议测量周期为60ms以上,以防止发射信号对回响信号的影响。注:(1)此模块不宜带电连接,若要带电连接,则先让模块的GND端先连接,否则会影响模块的正常工作。(2)测距时,被测物体的面积不少于0.5平方米且平面尽量要求平整,否则影响测量的结果5、51单片机的测试程序

5、: /晶振=8M/MCU=STC10F04XE/P0.0-P0.6共阳数码管引脚/Trig = P10/Echo = P32#include /包括一个52标准内核的头文件#define uchar unsigned char /定义一下方便使用#define uint unsigned int#define ulong unsigned long/*sfr CLK_DIV = 0x97; /为STC单片机定义,系统时钟分频 /为STC单片机的IO口设置地址定义sfr P0M1 = 0X93;sfr P0M0 = 0X94;sfr P1M1 = 0X91;sfr P1M0 = 0X92;sfr

6、P2M1 = 0X95;sfrP2M0 = 0X96;/*sbit Trig = P10; /产生脉冲引脚sbit Echo = P32; /回波引脚sbit test = P11; /测试用引脚uchar code SEG710=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;/数码管0-9uint distance4; /测距接收缓冲区uchar ge,shi,bai,temp,flag,outcomeH,outcomeL,i; /自定义寄存器uchar SHZ=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x0

7、7,0x7f,0x6f;uchar WZH=0xdf,0xef,0xf7,0xfb,0xfd,0xfe;uchar FZ=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;sbit dula=P26;sbit wela=P27;bit succeed_flag; /测量成功标志/*函数声明void conversion(uint temp_data);void delay_20us(); void delay(uint k);void display(uchar a,uchar b ,uchar c);/void pai_xu();void m

8、ain(void) / 主程序 uint distance_data,a,b; uchar CONT_1; CLK_DIV=0X03; /系统时钟为1/8晶振(pdf-45页) P0M1 = 0; /将io口设置为推挽输出 P1M1 = 0; P2M1 = 0; P0M0 = 0XFF; P1M0 = 0XFF; P2M0 = 0XFF; i=0; flag=0;test =0;Trig=0; /首先拉低脉冲输入引脚TMOD=0x11; /定时器0,定时器1,16位工作方式TR0=1; /启动定时器0 IT0=0; /由高电平变低电平,触发外部中断ET0=1; /打开定时器0中断 /ET1=1

9、; /打开定时器1中断EX0=0; /关闭外部中断EA=1; /打开总中断0 while(1) /程序循环 EA=0; Trig=1; delay_20us(); Trig=0; /产生一个20us的脉冲,在Trig引脚 while(Echo=0); /等待Echo回波引脚变高电平 succeed_flag=0; /清测量成功标志 EX0=1; /打开外部中断 TH1=0; /定时器1清零 TL1=0; /定时器1清零 TF1=0; / TR1=1; /启动定时器1 EA=1; while(TH1 30);/等待测量的结果,周期65.535毫秒(可用中断实现) TR1=0; /关闭定时器1 E

10、X0=0; /关闭外部中断 if(succeed_flag=1) distance_data=outcomeH; /测量结果的高8位 distance_data=3) CONT_1=0; b=a; conversion(b); display(ge, shi , bai); / i=0; / /*/外部中断0,用做判断回波电平INTO_() interrupt 0 / 外部中断是0号 outcomeH =TH1; /取出定时器的值 outcomeL =TL1; /取出定时器的值 succeed_flag=1; /至成功测量的标志 EX0=0; /关闭外部中断 /*/定时器0中断,用做显示tim

11、er0() interrupt 1 / 定时器0中断是1号 TH0=0xfd; /写入定时器0初始值 TL0=0x77; switch(flag) case 0x00:flag+;break; case 0x01:flag+;break; case 0x02:flag=0;break; /显示数据转换程序void conversion(uint temp_data) uchar ge_data,shi_data,bai_data ; bai_data=temp_data/100 ; temp_data=temp_data%100; /取余运算 shi_data=temp_data/10 ; t

12、emp_data=temp_data%10; /取余运算 ge_data=temp_data; EA=0; bai = bai_data; shi = shi_data; ge = ge_data ; EA=1; /*void delay_20us() uchar bt ; for(bt=0;bt0;x-)for(y=110;y0;y-);void display(uchar a,uchar b ,uchar c/*uchar d,uchar e,uchar f*/)wela=1;P0=WZH0;wela=0;P0=0x00;dula=1;P0=SHZa;dula=0;P0=0xff;dela

13、y(1);dula=1;P0=0x00;dula=0;wela=1;P0=WZH1;wela=0;P0=0x00;dula=1;P0=SHZb;dula=0;P0=0xff;delay(1);dula=1;P0=0x00;dula=0;wela=1;P0=WZH2;wela=0;P0=0x00;dula=1;P0=FZc;dula=0;P0=0xff;delay(1);dula=1;P0=0x00;dula=0;三、 能够用CC2430实现两点的通信和简单的两点之间的测距:CC2430两点的通信和简单的两点之间的测距原理通过比较发射端的信号强度和接收短信号强度的衰减来进行测距1、数据发送程序为

14、:static void appTransmitter() uint32 burstSize=0; uint32 pktsSent=0; uint8 appTxPower,Sendflag=0;uint8 n; char dataTransmitter= Sending: ; / Initialize BasicRF basicRfConfig.myAddr = TX_ADDR; if(basicRfInit(&basicRfConfig)=FAILED) HAL_ASSERT(FALSE); / Set TX output power appTxPower = appSelectOutput

15、Power(); halRfSetTxPower(appTxPower); / Set burst size burstSize = appSelectBurstSize(); / Basic RF puts on receiver before transmission of packet, and turns off / after packet is sent basicRfReceiveOff(); / Config timer and IO appConfigTimer(PACKET_RATE); halJoystickInit(); / Initalise packet paylo

16、ad txPacket.seqNumber = 0; txPacket.padding0=0x01; /我改的 /*我改的 for(n = 0; n sizeof(txPacket.padding); n+) txPacket.paddingn = n; */ / halLcdClear();/ halLcdWriteLines(PER Tester, Joystick Push, start/stop); halLedClearAll(); halLedSet(1); /appTransmitter 模式LED1亮 SendStringData(0,dataTransmitter,sizeo

17、f(dataTransmitter),0); / 我改的 / Main loop while (TRUE) / Wait for user to start application while(!halJoystickPushed() ); appStartStop(); / halLcdClear();/ halLcdWriteLines(PER Tester, Transmitter, NULL); while(appStarted) halLedSet(4); if( halJoystickPushed() ) appStartStop(); if (pktsSent 0) / Chan

18、ge byte order from network to host orderUINT32_NTOH(rxPacket.seqNumber); segNumber = rxPacket.seqNumber; / Subtract old RSSI value from sum rxStats.rssiSum -= perRssiBufperRssiBufCounter; / Store new RSSI value in ring buffer, will add it to sum later perRssiBufperRssiBufCounter = rssi; / Add the ne

19、w RSSI value to sum rxStats.rssiSum += perRssiBufperRssiBufCounter; if (+perRssiBufCounter = RSSI_AVG_WINDOW_SIZE) perRssiBufCounter = 0; / Wrap ring buffer counter / Check if received packet is the expected packet if (rxStats.expectedSeqNum = segNumber) rxStats.expectedSeqNum+; / If there is a jump

20、 in the sequence numbering this means some packets in / between has been lost. else if (rxStats.expectedSeqNum segNumber) rxStats.lostPkts += segNumber - rxStats.expectedSeqNum; rxStats.expectedSeqNum = segNumber + 1; / If the sequence number is lower than the previous one, we will assume a / new data burst has started and we will reset our statistics variables. else / Update our expectations assuming this is a new burst rxStats.expectedSeqNum = segNumber + 1; rxStats.rcvdPkts = 0; rxStats.lostPkts = 0; rxStats

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论