基于arm7的无线的无纸化排队叫号系统系统毕业设计(编辑修改稿)内容摘要:

738495J _ D B 1D B 9P C _ R X D 0P C _ T X D 0TXD0RXD0T X D 1R X D 1P C _ R X D 1P C _ T X D 1SOC L KV C CCSCLK12345678J _ K E YC O N 8V C CK E Y 1K E Y 2K E Y 3K E Y 4K E Y 5K E Y 6K E Y 7K E Y 811223344556677889910101111121213131414J _ 7 4 0 8D M 7 4 0 8R 1 31 0 KR 1 41 0 KR 1 51 0 KR 1 61 0 KK E Y 1K E Y 2K E Y 3K E Y 4K E Y 5K E Y 6K E Y 7K E Y 8K E Y 1K E Y 21 amp。 2K E Y 3K E Y 43 amp。 43 amp。 41 amp。 2K E Y _ I N TV C CnRSTTMSTCKnTRSTRTCKI S P1 23 45 67 89 1011 12J _ W XH E A D E R 6 X 2SIR 0 71 0 KV C C12J _ 1 2 VC O N 2V C CS W 1S W 2S W 1S W 21A2KL E D 1L E D1A2KL E D 2L E DL E D 3L E DL E D 4L E DR 2 13 0 1R 2 23 0 1R 2 33 0 1R 2 43 0 1V C CL E D 1L E D 2L E D 3L E D 4L E D 1L E D 2L E D 3L E D 4K E Y _ I N TR 2 51 0 KV C CD 0 0D I O D EL E D _ P W RL E DR _ P W R3 0 1162738495J _ D B 0D B 9P C _ R X D 0P C _ T X D 01234J _ S WC O N 4V C CSO SICSG D O 0G D O 2G D O 0G D O 2 图三 最终通过 HEADER 与 LCP2132 连接的系统图如图三所示, CLK与 引脚相连, 是 SPIO 的 SCK0; SI 与 MCU 的 P0. 6 引脚相连, 是 SPIO 的 MOSI; SO 与 MCU 的 引脚相连, 是 SPIO 的 MOSI; CS 是 CC1100 芯片的片选引脚,与 GPIO 相连即可,也可与 相连; GDO0 作为 CC1100 的中断引脚,需要与具有中断功能的引脚相连,此时可与 相连,此引脚可配置为外部中断 EINT0。 GDO2 与 相连,在本系统中此引脚未用到。 无纸化银行叫号系统的 ARM 控制部分系统原理图如图三所示。 LPC2132 对 模 块 的 控 制 采 用 的 是 SPI 串 行 总 线 ,SPI(SerialPerripheralInterface)是一种串行同步通信协议,由一个主设备和一个或多个 从设备组成,主设备启动一个与从设备的同步通信, 从而完成数据交换。 SPI 借口由 SDI(串行数据输入)、 SDO(串行数据输出)、 SCK(串行移位时钟)、 CS(从使能信号) 4 种信号构成,CS 决定了唯一的与主设备通信的从设备,如没有 CS 信号,则只能存在一个从设备,主设备通过产生移位时钟来发起通信。 当进行通信时,数据由 SDO 输出, SDI 输入,数据在时钟的上升或下降沿由 SDI读入,这样经过 8/16 位数据的传输。 SPI 接口是在 CPU 和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,地位 在后,为全双工通信,数据传输速度总体来说比 I^2C 总线要快,速度可达到几 Mbit/s SPI 接口是以主从方式工作的,该模式通常有一个主器件和一个或多个从器件,其接口包括以下 4 种信号: ( 1) MOSI—— 主器件数据输出,从器件数据输入。 ( 2) MISO—— 主器件数据输入,从器件数据输出。 ( 3) SCLK—— 时钟信号,由主器件产生。 ( 4) /SS—— 从器件使能信号,由主器件控制。 对于 LPC2132 控制器的 SPI 功能引脚,则是通过管脚连接模块进行配置的,管脚俩接模块可以使微控制器的所选管脚具有 1个以上的功能。 配置寄存器控制多路开关来连 接管脚与片内外设。 所有配置字都是通过 SPI 接口送给 CC1100。 LPC2132 的 SPI 控制寄存器介绍: LPC2132 主要通过以下 5 个读写寄存器来实现 SPI 串行口数据传输: ( 1) 控制寄存器 SPCR,包含一些可编程位,用于控制 SPI 模 块的功能。 ( 2) 状态寄存器 SPSR,包含只读位,用于监视 SPI 接口的状态,包括一般性功能和异常状况。 该寄存器的主要用途是检测数据传输的状态,该操作通过 SPIF 位来实现。 其他位用于指示该异常。 ( 3) 数据寄存器 SPDR,用于提供发送和接收的数据字节。 ( 4) 中断寄存器 SPINT,包含 SPI 接口的中断标 位。 ( 5) 状态寄存器 SPCCR,用于控制主机的 SCK 的频率。 在本系统中, LPC2132 作为 SPI 主机,无线模块作为 SPI 从机。 将 LPC2132 作为 SPI 主机操作步骤如下: (1) 将 SPI 时钟计数寄存器设置为所需要的值。 (2) 将 SPI 控制寄存器设置为所需要的设定。 (3) 将要发送的数据写入 SPI 数据寄存器。 此写操作将启动SPI 数据传输。 (4) 等待 SPI 状态寄存器中的 SPIF 位置。 SPIF 为将在 SPI数据传输的最后一个周期后置位。 (5) 读取 SPI 状态寄存器,并从 SPI 数据寄存器中读出接收到的数据。 (6) 如果有更数据需要发送,则跳到第( 3)步。 五:软件设计 对于单片机控制点阵部分,较为简单的就是串口 接收数据,定时器服务程序按列扫描,进行汉字显示。 当接收数据时,数据前两 个字节是关键字 0xaa( 10101010)、 0x55( 01010101),第 3 个字节为柜台号,后面跟 128 个字节的点阵数据和固定字节的 0Xff。 对于 PC 机部分,首先要建好数据库,在 Access 数据库 的表 bBarCode 中建好条形码号码和成语,在表tbChineseAudio 建好条形码号码和语音路径、汉字字模的映射关系,在表 tbdesk 建好柜 台号和关于柜台语音的映射关系,在表VediotbVedioInformation 建好播放视频文件的相关信息。 程序主要完成以下功能: ( 1) 接收红外条形码扫描枪的扫描码,通过 Tedit 控件的EditSendChange 事件获得,并把所扫描到的号码存入队列。 该程序中具有过滤重复扫描功能。 ( 2) 通过无线串口接受柜台发送过来的数据,判断柜台号,并将等待队列中的条形码号码按 FIFO 分配给柜台,进行语音报号,然后将相关的点阵数据通过无线发送给柜台端。 ( 3) 根据条形码号码在数据库中检索相关数据,并存入数组。 同时根据扫描到的条形码号码和 已经播放完的号码进行数据指针的移动,以保持数据的先入先出。 ( 4) 进行视频播放,可按循环、随即和固定的方式播放视频文件 程序流程图如下: include include int main (void) { VAR_Init()。 //变量初始化 IO_Init()。 //引脚初始化 TI_CC_SPISetup()。 //SPI 初始化 TI_CC_PowerupResetCCxxxx()。 // Reset CCxxxx writeRFSettings()。 // 写入无线模块配置寄存器 TI_CC_SPIWriteBurstReg(TI_CCxxx0_PATABLE, paTable, paTableLen)。 //写入能量控制寄存器 UART0_Init(UART_BPS, set)。 // 串口初始化 TC0_Init()。 // 定时器 0 初始化 VIC_Init()。 // 中断初始化 TI_CC_SPIStrobe(TI_CCxxx0_SFSTXON)。 //开启和校准频率合成器 TI_CC_SPIStrobe(TI_CCxxx0_SRX)。 // 初始化模块为接收模式 . // 数据包接收结束后, GDO0 下降沿触发中断 ifdef WATCHDOG 初始化系统变量和结构体数组 初始化系统 I/O 引脚,配置引脚功能 初始化 SPI 并复位 CC1100,配置其寄存器 设置中断并使能,并初始化看门狗 初始化串口 UART0 和定时器 Timer0 开启和校准频率合成器,设模块为接收模式 串口接收中断,接收到数据,并处理 外部引脚中断,无线接收数据,并处理 无线数据发送 串口数据发送 WATCHDOG_Init()。 //看门狗初始化 endif UART0_SendBufEx(begin,7)。 while (1) { ifdef WIRLTEST if(TimerSend_ID==1) { TimerSend_ID=0。 /* IO1CLR=IO1CLR|LED1。 DelayNS(20)。 IO1SET=IO1SET|LED1。 DelayNS(20)。 IO1CLR=IO1CLR|LED1。 DelayNS(20)。 IO1SET=IO1SET|LED1。 RcvBuf[0]=0x05。 */ //从机地址 RcvBuf[0]=0x05。 for(i=1。 i16。 i++) { RFSendPacket((char*)RcvBuf,17)。 if(DeskDriver[i].allow10s==1) { DeskDriver[i].allow10s=0。 //开始限定时间,在限定时间内不接受按键 DeskDriver[i].keyScaned=1。 //接受按键,并置按下标志 DeskDriver[i].timeCnt=0。 //计数归零 DeskDriver[i].enable=1。 //开启允许无线发送 DeskDriver[i].sendCount=0。 //初始值 0 表示发送次数为 0,发送一次加 1 DeskDriver[i].sendOK=0。 //初始值 0 表示没发送成功 } } } endif //task1 接收完成,发送数据 if(RCVCOMP_ID==1) { IO1CLR=IO1CLR|LED1。 DelayNS(20)。 IO1SET=IO1SET|LED1。 DelayNS(20)。 IO1CL。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。