资源预览内容
第1页 / 共44页
第2页 / 共44页
第3页 / 共44页
第4页 / 共44页
第5页 / 共44页
第6页 / 共44页
第7页 / 共44页
第8页 / 共44页
第9页 / 共44页
第10页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
哈尔滨工业大学(威海)第四届电子设计大赛汽车行车时间检测器作者:队员学号联系方式摘要:本作品通过STC89C52单片机和必要外围电路实现一个驾驶员的防疲劳,检测连续行车时间系统。作品主要由两部分组成:警车的接收端和普通车的客户端。接受和发射部分使用由NRF24L01组成的发射电路,通过API总线与单片机通讯。作品中涉及单片机的IO口模拟API总线、无线双机通讯,数码管显示,键盘控制,18B20数字温度芯片,IIC总线操作等部分。发送和接受采用间歇通讯方式,降低能耗。Abstract:This works by STC89C52 microcontroller and external circuitry necessary to implement a pilot anti-fatigue, test driving a continuous-time systems. Works mainly consists of two parts: the receiving end of police vehicles and ordinary vehicles client. Receive and transmitter used by NRF24L01 consisting of transmitter, through the API bus with MCU. Works involved in the SCM API bus IO port simulation, wireless communication between two computers, digital display, keyboard control, 18B20 digital temperature chip, IIC bus operators and other parts. Send and receive intermittent communication, reduce energy consumption.关键词:无线 计时 报警 2.4GHz工作频率 SPI总线目录前言4总体方案设计4编码方式如下4单片机内程序的设计6用户车端6警车端6使用方法7理论分析与计算7电路与程序设计8发射和接收电路8部分接收程序8部分发射程序9测试数据9调试方法与仪器9测试方法和步骤10测试结果分析10参考文献10总结10附录11NRF24L01引脚11NRF24L01在Altium Designer里面的原理图11NRF24L01引脚图12全部程序12警车程序12用户车程序2812864i.h里面所包含的程序42前言:汽车运行超时检测报警器的实际应用非常广泛,现在由于驾驶员疲劳驾驶出现的交通事故越来越多,所以这样一个记录驾驶员连续行车时间并发送给交通警察的系统有广泛的应用价值。总体方案设计作品主要以STC89C52为核心,通过NRF24L01无线通讯芯片实现双机通讯。通讯过程中双机间每次发送24位(3字节)数据。其中包括车牌信息、车型信息和指令。在警车端回馈的信息里面还包括所要设定的时间信息。由于每次发送数据和接受数据里面都包含车牌位,所以警车端程序可以识别发来车的车牌,用户车端也可以分辨是否发送的数据是发至本车牌的,实现主机可以分辨多机同时发送数据的情况和用户ID可变。计时器采用单片机的定时器0,使计时比较准确。编码方式如下:00111111第一字节01001102五位时间11111031101004车型位车型位车型位车型位车型位车型位567车牌位车牌位车牌位车牌位车牌位车牌位车牌位89第二字节1011121314151617第三字节18192021222324警车回馈时间信号警车回馈取消警报信号用户车短暂停车信号(即通过收费站或者交通岗)用户车停车休息信号用户车正常信号用户车超时信号用户车启动信号单片机内程序的设计单片机程序设计分为两部分:用户车端和警车端。用户车端:主要由SPI总线模拟程序的无线发射和计时报警部分组成。即使部分使用51单片机内所带的定时器0计时,比较准确。还包括用6位数码管显示行车时间的显示函数和键盘扫描函数。开机自动向主机发送车辆启动信号,当接到警车回复的允许的行车时间后,开始计时。在正常行车时间内,每隔20秒向警车发送一次正常行车信号,间断的信号可以降低能耗。当行车超时后,作品发出蜂鸣器报警(即题目所要求的声音提示),提示停车,并像警车端发送超时信号,接到警车的回馈信号后,作品停止报警。如果警车发回信号后,1分钟后仍然没有停车休息,系统将继续报警。如果驾驶员短暂停车,用户车发送指令至警车,说明该车短暂停车。如果驾驶员停车时间超过设定时间,认为其停车休息,发送指令至警车,说明停车休息,并停止计时。警车端:警车端先于用户车端启动,并初始化后进入接收模式,当接到有车发送启动信号后,读取其车的车型和车牌号并显示在12864液晶屏幕上,要求警察输入该车的行车时间(以秒计)。确认后发送至用户车。此处时间为以秒记,以便测试效果时间较短,在实际应用时应改为以小时为单位,警车可以设定的最大时间为32小时(即上面编码的5个时间位)。当接到用户车正常行车时在12864液晶屏幕上显示车牌号极其车型。当接到有车超时时引发蜂鸣器报警,并发送回馈停车信号。使其在一分钟内停车休息。警车端还可以实时查询用户车行车时的温度。发送信息至用户车端,使其通过18B20读取温度数据并传输回警车端。使用方法:警车端应先开机,当有用户车启动时,用户车向警车发送信号,说明启动,信号包括车型和车牌号码和4位指令位。警车接到启动信息后,为该车设定行车时间,发送给该用户车,用户车接到行车时间后开始计时。在没有超时的情况下,每隔20秒给警车发送一次正常行车信号。超时后发送超时信号给警车并用蜂鸣器发出警告,直到警车收到信号,并发送回反馈信号,警报结束。如果1分钟内,驾驶员仍然没有停车休息,蜂鸣器再次发出警报。作品可以实现对于用户车暂短停车和长时间停车的判断。由于每个车在发送信号的时候都会包括指令位和车型、车牌位。这样警车在每次接到信号的时候都会区分发信号的车辆,排除多机同时向警车端发信号的干扰问题。在警车端处理一个车发来信号的时候,如果有其他车辆发送信号,信号会先被存储在NRF24L01芯片中,在警车端发出当前车时间信号后,读取并处理等待车发来的信号。理论分析与计算无线通信(Wireless communication)是利用电磁波信号可以在自由空间中传播的特性进行信息交换的一种通信方式,近些年信息通信领域中,发展最快、应用最广的就是无线通信技术。无线部分采用NRF24L01,有四种发射功率,作品在做的时候选用的最高功率。供电可以在1.9V和3.3V之间。待机模式电流为22uA,符合题目要求。采用2.4GHz的频率进行通讯,全球开放ISM频段免许可使用。单片机与无线模块间采用SPI总线进行串行通讯。SPI是英文Serial Peripheral Interface的缩写,中文意思是串行外围设备接口,SPI是Motorola公司推出的一种同步串行通讯方式,是一种四线同步总线,因其硬件功能很强,与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。电路与程序设计发射和接收电路:部分接收程序void RX_Mode(void)CE=0; SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); / Use the same address on the RX device as the TX device SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); / Enable Auto.Ack:Pipe0 SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); / Enable Pipe0 SPI_RW_Reg(WRITE_REG + RF_CH, 40); / Select RF channel 40 SPI_RW_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH); / Select same RX payload width as TX Payload width SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); / TX_PWR:0dBm, Datarate:2Mbps, LNA:HCURR SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f); / Set PWR_UP bit, enable CRC(2 bytes) & Prim:RX. RX_DR enabled. CE = 1; / Set CE pin high to enable RX device / This device is now ready to receive one packet of 16 bytes payload from a TX device sending to address / 3443101001, with auto acknowledgment, retransmit count of 10, RF channel 40 and datarate = 2Mbps.部分发射程序void TX_Mode(void)CE=0; SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); / Writes TX_Address to nRF24L01 SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); / RX_Addr0 same as TX_Adr for Auto.Ack SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); / Writes data to TX payload SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); / Enable Auto.Ack:Pipe0 SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); / Enable Pipe0 SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x1a); / 500us + 86us, 10 ret
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号