好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

停车场智能车位引导系统结题答辩支撑材.pdf

15页
  • 卖家[上传人]:飞***
  • 文档编号:53191875
  • 上传时间:2018-08-28
  • 文档格式:PDF
  • 文档大小:600.83KB
  • / 15 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 停车场智能车位引导系统结题答辩支撑材我们的成果:一、自己独立设计了一个CC2430模块 PCB电路板:巴伦设计描述巴伦的目的是在TX 模式下,把两个差分RF 引脚的输出结合为一个单端50 欧姆 RF信号,以及在RX 模式下把单端50 欧姆天线信号分成一个差分RF 信号提供给输出阶段的阻抗匹配以及DC 也在巴伦中实现这个巴伦设计包括两个用于阻抗匹配的组件(L1 和 L3 ) ,一个RF 块( L2) ,以及一个 DC 块( C2) 除了上述四个分立组件,还有一个1/2 波长的长传输线,用于保证正确的RF 信号相位,以及一个70 欧姆、 23°的传输线用于阻抗匹配为了实现合适的性能,适当长度的传输线,以及图4 和表 1 所定义的L2 连接点是很重要的 L3 和 1/2 波长传输线之间的布线的适当尺寸也很重要选择这个布线的尺寸以确保合适的阻抗匹配巴伦布线的阻抗受第1 层布线与下面接地平面之间距离的影响CC2420 和 CC2430EM 的参考设计都使用了1mm 厚的两层 FR4 基板强烈建议使用相同的板厚度和基板类型,以达到合适的传输线阻抗如果这是不可行的,巴伦和下面接地平面之间的1mm 距离可以通过使用一个内部接地层实现。

      CC2420 和 CC243x 的最佳阻抗略有不同为了获得与巴伦匹配的合适阻抗,除了 L1的值之外,可以使用相同的布局和组件值对于CC2420,L1 应为 8.2nH,对于 CC2430 和CC2480,应为 6.8nH图 2 和图 3 展示了 CC2420EM 和 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、超声波时序图:以上时序图表明你只需要提供一个10uS 以上脉冲触发信号,该模块内部将发出8 个40kHz 周期电平并检测回波。

      一旦检测到有回波信号则输出回响信号回响信号的脉冲宽度与所测的距离成正比由此通过发射信号到收到的回响信号时间间隔可以计算得到距离公式: uS/58=厘米或者uS/148=英寸;或是:距离=高电平时间 *声速( 340M/S)/2;建议测量周期为 60ms 以上,以防止发射信号对回响信号的影响注: (1)此模块不宜带电连接,若要带电连接,则先让模块的GND 端先连接,否则会影响模块的正常工作2)测距时,被测物体的面积不少于0.5 平方米且平面尽量要求平整,否则影响测量的结果5、51 单片机的测试程序://晶振 =8M //MCU=STC10F04XE //P0.0-P0.6 共阳数码管引脚//Trig = P1^0 //Echo = P3^2 #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 P2M1 = 0X95; sfr P2M0 = 0X96; //*********************************************** sbit Trig = P1^0; // 产生脉冲引脚sbit Echo = P3^2; //回波引脚sbit test = P1^1; // 测试用引脚uchar code SEG7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//数码管 0-9 uint distance[4]; //测距接收缓冲区uchar ge,shi,bai,temp,flag,outcomeH,outcomeL,i; //自定义寄存器uchar SHZ[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar WZH[]={0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; uchar FZ[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; sbit dula=P2^6; sbit wela=P2^7; 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 main(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; //打开定时器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 =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中断 ,用做显示timer0() 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 ; temp_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;y>0;y--); } void display(uchar a,uchar b ,uchar c/*uchar d,uchar e,uchar f*/) { wela=1; P0=WZH[0]; wela=0; P0=0x00; dula=1; P0=SHZ[a]; dula=0; P0=0xff; delay(1); dula=1; P0=0x00; dula=0; wela=1; P0=WZH[1]; wela=0; P0=0x00; dula=1; P0=SHZ[b]; dula=0; P0=0xff; delay(1); dula=1; P0=0x00; dula=0; wela=1; P0=WZH[2]; wela=0; P0=0x00; dula=1; P0=FZ[c]; dula=0; P0=0xff; delay(1); dula=1; P0=0x00; dula=0; } 三、能够用 CC2430实现两点的通信和简单的两点之间的测距:CC2430两点的通信和简单的两点之间的测距原理通过比较发射端的信号强 度和接收短信号强度的衰减来进行测距 1、数据发送程序为: 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( } // Set TX output power appTxPower = appSelectOutputPower(); 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 payload txPacket.seqNumber = 0; txPac。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.