基于ARM7的无线的无纸化排队叫号系统系统毕业设计_第1页
基于ARM7的无线的无纸化排队叫号系统系统毕业设计_第2页
基于ARM7的无线的无纸化排队叫号系统系统毕业设计_第3页
基于ARM7的无线的无纸化排队叫号系统系统毕业设计_第4页
基于ARM7的无线的无纸化排队叫号系统系统毕业设计_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子

2、版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交

3、论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日指导教师评阅书指导教师评价:一、撰写(设计)过程1、学生在论文(设计)过程中的治学态度、工作精神 优 良 中 及格 不及格2、学生掌握专业知识、技能的扎实程度 优 良 中 及格 不及格3、学生综合运用所学知识和专业技能分析和解决问题的能力 优 良 中 及格 不及格4、研究方法的科学性;技术线路的可行性;设计方案的合理性 优 良 中 及格 不及格5

4、、完成毕业论文(设计)期间的出勤情况 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)指导教师: (签名) 单位: (盖章)年 月 日评阅教师评阅书评阅教师评价:

5、一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)评阅教师: (签名) 单位: (盖章)年 月 日教研室(或答辩小组)及教学系意见教研室(或答辩小组)评价:一、答辩过程1、毕业论文(设计)

6、的基本要点和见解的叙述情况 优 良 中 及格 不及格2、对答辩问题的反应、理解、表达情况 优 良 中 及格 不及格3、学生答辩过程中的精神状态 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格评定成绩: 优 良 中 及格 不

7、及格(在所选等级前的内画“”)教研室主任(或答辩小组组长): (签名)年 月 日教学系意见:系主任: (签名)年 月 日一:摘要 技术方案:基于arm的无线的无纸化排队叫号系统采用条形码扫描方式,利用带有条形码的可回收卡片代替打印纸票;采用工作在ism频段的uhf收发模块lsd-rfc1100c实现前后台的数据传输。柜台点阵显示采用p89lpc932单片机控制,成本低廉。前后台无线数据传输控制器为集成arm7内核的lpc2132,可利用其富余的ram和i/o引脚;采用工控机或pc机作为服务器,用于播放视频,语音报号及后台数据库。 主要内容:无线数据传输的无纸化银行叫号系统是一个高可靠性、高效率

8、的、节能创新的银行叫号系统系统,它使用可回收的条形码卡片代替现在的打纸票的方式,采用无线数据传输模块实现了工程布线的简洁和移动性,并且可以用成语、景点名称等代替单调的数字叫号,使之更加人性化。本设计着重介绍lpc2132arm控制器利用spi串行总线控制无线传输模块实现柜台和pc机之间的无线数据传输过程,特别介绍了无线模块集成的cc1100芯片和spi串行总线。实现了利用arm控制器外界无线传输芯片实现无线数据传输。二:概述:嵌入式系统的发展前景和意义:嵌入式系统诞生于微型机时代,嵌入式系统的嵌入性本质是将一个计算机嵌入到一个对象体系中去,这些是理解嵌入式系统的基本出发点。嵌入式系统以应用为中

9、心,以微电子技术、控制技术、计算机技术和通信技术为基础,强调硬件和软件的协同性与整合性,并且其软件与硬件可裁剪,以满足系统对功能、成本、体积和功耗等的要求。 通用计算机系统的技术要求是高速、海量的数值计算;技术发展方向是总线速度的无限提升,存储容量的无限扩大。 而嵌入式计算机系统的技术要求则是对象的智能化控制能力,嵌入式计算机系统要嵌入到对象体系中;技术发展方向是与对象系统密切相关的嵌入性能、控制能力与控制的可靠性。因此,它有着与通用计算机系统完全不同的技术要求与技术发展方向。嵌入式计算机系统则走上了一条完全不同的道路,这条独立发展的道路就是单芯片化道路。它动员了原有的传统电子系统领域的厂家与

10、专业人士,接过起源于计算机领域的嵌入式系统,承担起发展与普及嵌入式系统的历史任务,迅速地将传统的电子系统发展到智能化的现代电子系统时代。随着信息化,智能化,网络化发展,嵌入式系统技术也将获得广阔发展空间。信息时代,数字时代使得嵌入式产品获得了巨大的发展契机,为嵌入式市场展现了美好的前景,同时也地嵌入式生产厂商提出了新的挑战,从中我们可以看出未来嵌入式系统的几大发展趋势;、嵌入式开发是一项系统工程,因此要求嵌入式系统厂商不仅要提供嵌入式软硬件系统本身,同时还需要提供强大的硬件开发工具和软件包支持。、网络化、信息化的要求随着因特网技术的成熟、带宽的提高日益提高,使得以往单一功能的设备如电话、手机、

11、冰箱、微波炉等功能不再单一,结构更加复杂、网络互联成为必然趋势。未来的嵌入式设备为了适应网络发展的要求,必然要求硬件上提供各种网络通信接口。、精简系统内核,算法,降低功耗和软硬件成本。、提供友好的多媒体人机界面。嵌入式设备能与用户亲密接触,最重要的因素就是它能提供非常友好的用户界面无线排队叫号系统诞生背景:随着科技的进步,运用于现实生活中的科技产品就变得更加的大众化起来。科技的进步使得我们的生活更加的简洁,方便,快捷。科技在现实中得到了更多的实现,我们在科技的支持下,生活变得更加的节省资源,更加的环保,更加的人性化。排队叫号系统先是在发达国家的有了十分广泛的应用,近年来开始流行于我国的银行、医

12、院、电信、领事馆、公安、税务及企事业服务机构。随着这一技术的普及,逐渐解决了更多的行业问题。系统完全模拟了人群排队全过程,通过取票进队、排队等待及叫号服务等功能代替了人们站队的辛苦,减少了人们一直等待的最大问题,减少了时间的浪费,把顾客排队等待的烦恼变成一段难得的休闲时光,使客户拥有一个自由的空间和一份美好的心情。无线的无纸化排队叫号系统诞生目的:现今的排队叫号系统几乎都是用打纸票的方式,造成资源的浪费以及对环境的污染,并且大厅的排队叫号机与柜台的显示系统的数据传输多为有线数据传输方式,增加了施工布线,移动性比较差。因此,无限的无纸化排队叫号系统的诞生就显得十分的重要了。无线的无纸化排队叫号系

13、统解决了纸张的浪费问题,避免了对环境的污染;同时减少了施工布线,增加了系统的灵活性和机动性。无线的无纸化排队叫号系统使得这一应用更加的方便与实用。无线的无纸化排队叫号系统是基于arm无线数据传输的无纸化排队叫号系统,与传统的排队叫号系统相比,本系统不仅大大节省了打印纸票的成本,而且显得环保且节省资源,布线简洁,移动性强;更为人性化的是系统可以采用吉祥成语、地名等词语代替单调的数字叫号。这样的排队叫号系统就能更加的贴近我们的生活,让使用者更加的舒心,更加便捷,更加的人性化。系统总体方案设计:条形码扫描扫描枪柜台点阵显示柜台点阵显柜台点阵显柜台点阵显柜台点阵显柜台点阵显柜台按键扫描与无线发射arm

14、控制器无线发射arm控制器pc机液晶显示与语音报号 图一:无线叫号系统总体框图三:系统实现方案1:柜台点阵显示(单片机部分)单片机部分主要负责显示点阵汉字,用4块8*8的点阵可构成一个16*16的点阵,用以显示汉字,柜台点阵可以显示4个汉字,总共用16块8*8点阵。控制器采用nxp的p89lpc932单片机,俩片74hc573锁存16位的点阵行数据,通过4片74hc154选通64列的列,74hc573和74hc154的片选信号通过一片74hc138进行控制,以节省单片机的引脚。通过max3232吧单片机的串口ttl电平转换rs232点平,通过rs232与无线控制部分通信,因为柜台点阵只是接受点

15、阵数据进行显示,故多个柜台点阵的单片机可同时通过地线和接收线的双两根线连接到无线控制部分。arm部分(无线数据转发)arm 部分主要负责无线数据的收发,柜台按键扫描,把按键的柜台号发送至pc机,以及向柜台点阵控制部分转发点阵数据。无线控制部分要转发大量的点阵数据,并保留与pc端通信的有线方式。此时可利用lpc2132 16kb的ram和富余的引脚,通过spi方式与无线模块通信。无线模块采用集成cc1100芯片的lsd-rfc1100c。pc机部分pc机部分主要负责可回收卡片的条形码扫描、语音报号、视频播放及发送点阵数据等总体协调作用。该部分采用delphi语言,视频播放采用tmediaplay

16、er控件,数据库采用ado+access本地数据库,串口采用mscomm控件,配置文件采用ini文件,通过rs232与无线控制部分进行数据交互。四:硬件电路设计系统硬件主要是lpc2132控制器与lsd-rfc1100c模块的接口设计,先介绍cc1100芯片。1:cc1100是一种低成本真正单片的uhf收发器,为低功耗无线应用而设计。电路主要设定为在315、433、868和915mhz的ism(工业,科学和医学)和srd(短距离设备) 频率波段,也可以容易地设置为300-348 mhz、400-464 mhz和800-928 mhz的其他频率。 rf收发器集成了一个高度可配置的调制解调器。这个

17、调制解调器支持不同的调制格式,其数据传输率可达500kbps。通过开启集成在调制解调器上的前向误差校正 选项,能使性能得到提升。 cc1100为数据包处理、数据缓冲、突发数据传输、清晰信道评估、连接质量指示和电磁波激发提供广泛的硬件支持。cc1100的主要操作参数和64位传输/接收fifo(先进先出堆栈)可通过spi接口控制。在一个典型系统里,cc1100和一 个微控制器及若干被动元件一起使用。cc1100基于0.18微米cmos晶体的chipcon的smartrf 04技术。主要特性:体积小(qlp 4×4mm封装,20脚) 真正的单片uhf rf收发器频率波段:300-348 m

18、hz、400-464 mhz和800-928 mhz 高灵敏度(1.2kbps下-110dbm,1数据包误差率) 可编程控制的数据传输率,可达500kbps较低的电流消耗(rx中15.6ma,2.4kbps,433mhz) 可编程控制的输出功率,对所有的支持频率可达+10dbm 优秀的接收器选择性和模块化性能极少的外部元件:芯片内频率合成器,不需要外部滤波器或rf转换 可编程控制的基带调制解调器理想的多路操作特性可控的数据包处理硬件 快速频率变动合成器带来的合适的频率跳跃系统 可选的带交错的前向误差校正单独的64字节rx和tx数据fifo 高效的spi接口:所有的寄存器能用一个“突发”转换器控

19、制 数字rssi输出与遵照en 300 220(欧洲)和fcc cfr47 part 15 (美国)标准的系统相配 自动低功率rx拉电路的电磁波激活功能许多强大的数字特征,使得使用廉价的微控制器就能得到高性能的rf系统集成模拟温度传感器自由引导的绿色数据包 对数据包导向系统的灵活支持:对同步词汇侦测的芯片支持,地址检查,灵活的数据包长度及自动crc处理可编程信道滤波带宽 ook和灵活的ask整型支持2-fsk,gfsk和msk支持 自动频率补偿可用来调整频率合成器到接收中间频率 对数据的可选自动白化处理对现存通信协议的向后兼容的异步透明接收/传输模式的支持可编程的载波感应指示器可编程前导质量指

20、示器及在随机噪声下改进的针对同步词汇侦测的保护 支持传输前自动清理信道访问(cca),即载波侦听系统支持每个数据包连接质量指示引脚功能:1:sclk 数字输入: so(gd01) 2:数字输出 3:gdo2 数字输出 4:dvdd 功率(数字) 5:dcoupl 功率(数字): 6:gdo0(atest) 数字i/o 7:csn 数字输入 8:xosc_q1 模拟i/o 9:avdd 功率(模拟) 10: xosc_q2 模拟i/o 11:avdd 功率(模拟) 12:rf_p rf i/o 13:avdd rf i/o 14/15:avdd 功率(模拟)16/19:gnd 地(模拟) 17:

21、rbias 模拟i/o 18:dguard 功率(数字) 20:si 数字输入2:接口电路对于市场上的大多数的集成cc1100的模块,其内部电路图均相差无几。将cc1100芯片的低频引脚全部引出后(主要包括spi接口),单片机用户和其他用户即可通过spi接口对cc1100的寄存器进行设置及状态的检测。此时也可以使用普通的i/o口模拟spi 。无纸化较好系统的无线数据传输部分工作在443mhz频率范围内。对于工作在315/433mhz频段下的典型应用电路如图二。图二lsd-rfc1100c中cc1100的引脚具体功能说明:(1) vdd脚,接电压范围为1.9-3.6v,若超过3.6v将会烧毁模块

22、。推荐电压为3.3v左右。(2) 除电源vdd和接地端,其余脚均可直接和普通的5v单片机io口直接相连,无需电平转换。当然,对3v左右的单片机更加适用。(3) 硬件上没有spi 的单片机也可以控制本模块,用普通单片机io口模拟spi不需要单片机真正的串口介入,只需要普通的单片机io口即可,当然,使用串口也可。(4) gnd脚为接地脚,需要和母板逻辑地连接起来。(5) 排针间距为100mil,标准dip插针。(6) si数字输入,连续配置接口,数据输入。(7) sclk数字输入,连续配置接口,时钟输入。(8) csn数字输入,连续配置接口,芯片选择。(9) so(gdo1)数字输出,当csn为高

23、时为可选的一般数据输出脚。(10) gdo2数字输出,一般用途的数字输出脚:测试信号,fifo状态信号时钟输出,从xosc向下分割并连续输入tx数据。(11) god1数字输出,一般用途的数字输出脚:测试信号,fifo状态信号,时钟输出,从xosc向下分割并连续输入tx数据,用作原型/产品测试的模拟测试i/o。 图三最终通过header与lcp2132连接的系统图如图三所示,clk与p0.4引脚相连,p0.4是spio的sck0;si与mcu的p0. 6引脚相连,p0.6是spio的mosi;so与mcu的p0.5引脚相连,p0.5是spio的mosi;cs是cc1100芯片的片选引脚,与gp

24、io相连即可,也可与p0.13相连;gdo0作为cc1100的中断引脚,需要与具有中断功能的引脚相连,此时可与p0.16相连,此引脚可配置为外部中断eint0。gdo2与p0.15相连,在本系统中此引脚未用到。无纸化银行叫号系统的arm控制部分系统原理图如图三所示。lpc2132对模块的控制采用的是spi串行总线,spi(serialperripheralinterface)是一种串行同步通信协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通信,从而完成数据交换。spi借口由sdi(串行数据输入)、sdo(串行数据输出)、sck(串行移位时钟)、cs(从使能信号)4种信号

25、构成,cs决定了唯一的与主设备通信的从设备,如没有cs信号,则只能存在一个从设备,主设备通过产生移位时钟来发起通信。当进行通信时,数据由sdo输出,sdi输入,数据在时钟的上升或下降沿由sdi读入,这样经过8/16位数据的传输。spi接口是在cpu和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,地位在后,为全双工通信,数据传输速度总体来说比i2c总线要快,速度可达到几mbit/sspi接口是以主从方式工作的,该模式通常有一个主器件和一个或多个从器件,其接口包括以下4种信号:(1) mosi主器件数据输出,从器件数据输入。(2) miso主器件数据输入,从器

26、件数据输出。(3) sclk时钟信号,由主器件产生。(4) /ss从器件使能信号,由主器件控制。对于lpc2132控制器的spi功能引脚,则是通过管脚连接模块进行配置的,管脚俩接模块可以使微控制器的所选管脚具有1个以上的功能。配置寄存器控制多路开关来连接管脚与片内外设。所有配置字都是通过spi接口送给cc1100。lpc2132的spi控制寄存器介绍:lpc2132主要通过以下5个读写寄存器来实现spi串行口数据传输:(1) 控制寄存器spcr,包含一些可编程位,用于控制spi模块的功能。(2) 状态寄存器spsr,包含只读位,用于监视spi接口的状态,包括一般性功能和异常状况。该寄存器的主要

27、用途是检测数据传输的状态,该操作通过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数据

28、传输的最后一个周期后置位。(5) 读取spi状态寄存器,并从spi数据寄存器中读出接收到的数据。(6) 如果有更数据需要发送,则跳到第(3)步。五:软件设计 对于单片机控制点阵部分,较为简单的就是串口接收数据,定时器服务程序按列扫描,进行汉字显示。当接收数据时,数据前两个字节是关键字0xaa(10101010)、0x55(01010101),第3个字节为柜台号,后面跟128个字节的点阵数据和固定字节的0xff。对于pc机部分,首先要建好数据库,在access数据库dbbankcall.mdb的表bbarcode中建好条形码号码和成语,在表tbchineseaudio建好条形码号码和语音路径、汉

29、字字模的映射关系,在表tbdesk建好柜台号和关于柜台语音的映射关系,在表vediotbvedioinformation建好播放视频文件的相关信息。程序主要完成以下功能:(1) 接收红外条形码扫描枪的扫描码,通过tedit控件的editsendchange事件获得,并把所扫描到的号码存入队列。该程序中具有过滤重复扫描功能。(2) 通过无线串口接受柜台发送过来的数据,判断柜台号,并将等待队列中的条形码号码按fifo分配给柜台,进行语音报号,然后将相关的点阵数据通过无线发送给柜台端。(3) 根据条形码号码在数据库中检索相关数据,并存入数组。同时根据扫描到的条形码号码和已经播放完的号码进行数据指针的

30、移动,以保持数据的先入先出。(4) 进行视频播放,可按循环、随即和固定的方式播放视频文件程序流程图如下:无线数据发送串口数据发送外部引脚中断,无线接收数据,并处理串口接收中断,接收到数据,并处理开启和校准频率合成器,设模块为接收模式设置中断并使能,并初始化看门狗初始化串口uart0和定时器timer0初始化spi并复位cc1100,配置其寄存器初始化系统i/o引脚,配置引脚功能初始化系统变量和结构体数组#include "config.h"#include "include.h"int main (void)var_init(); /变量初始化io_in

31、it(); /引脚初始化 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); /

32、开启和校准频率合成器 ti_cc_spistrobe(ti_ccxxx0_srx); / 初始化模块为接收模式. / 数据包接收结束后,gdo0下降沿触发中断 #ifdef watchdog 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); io

33、1clr=io1clr|led1; delayns(20); io1set=io1set|led1; rcvbuf0=0x05; */ /从机地址 rcvbuf0=0x05; for(i=1;i<16;i+) rfsendpacket(char*)rcvbuf,17); if(deskdriveri.allow10s=1) deskdriveri.allow10s=0; /开始限定时间,在限定时间内不接受按键 deskdriveri.keyscaned=1; /接受按键,并置按下标志 deskdriveri.timecnt=0; /计数归零 deskdriveri.enable=1; /

34、开启允许无线发送 deskdriveri.sendcount=0; /初始值0表示发送次数为0,发送一次加1 deskdriveri.sendok=0; /初始值0表示没发送成功 #endif /task1 接收完成,发送数据 if(rcvcomp_id=1) io1clr=io1clr|led1; delayns(20); io1set=io1set|led1; delayns(20); io1clr=io1clr|led1; delayns(20); io1set=io1set|led1; rcvcomp_id=0; uart0_sendbuf(); uart0_sendbufex(rcv

35、buf,rcv_len1+2); rcvbuf0=0x05; /从机地址 rfsendpacket(char*)rcvbuf,17); /task2 按键扫描 if(scan_id=1) scan_id=0; keyscan(); /task3 发送柜台号 if(senddesk_id=1) senddesk_pro(); senddesk_id=0; #ifdef watchdog /看门狗喂狗 irqdisable(); /关中断 wdfeed = 0xaa; /第一次喂狗启动wdt wdfeed = 0x55; /喂狗序列 irqenable(); /开中断 #endif return

36、0;void delayns (uint32 dly)uint32 i;for ( ; dly>0; dly-)for (i=0; i<50000; i+); /短延时子程序void delay(uint8 t) uint8 i,j; for(i=0;i<t;i+) for(j=0;j<10;j+); void var_init(void) uint8 i;set.datab = 8; /串口数据位set.stopb = 1; /串口停止位set.parity = 0; /串口校验位rcv_new = 0; /串口接收完数据标志rsmchr=0; /接收数据暂存变量rs

37、mchr=0; /判断接收数据用标志rssms_id=0; /直接接收数据标志rcvcomp_id=0; /接收完成标志scan_id=1; /按键扫描定时标志input1=0; /按键扫描去抖动计数input1_id=1; /按键按下放开标志desk_num=0x50; /柜台号,初始值为无效柜台号senddesk_id=0; /发送柜台号标志timercount=0; /定时器计数变量for(i=0;i<maxdesknum;i+) deskdriveri.allow10s=1; /初始值1为10秒已经过去,可以接受按键柜台号 deskdriveri.keyscaned=0; /初始

38、值0表示还没有按键柜台号被接受 deskdriveri.sendcount=0; /初始值0表示发送次数为0,发送一次加1 deskdriveri.sendok=0; /初始值0表示没发送成功 deskdriveri.timecnt=0; /初始值0,定时计数为0,每秒加1 deskdriveri.enable=1; /初始值1表示允许发送void io_init(void) pinsel0 = 0x00000005; /设置i/o连接到uart0 pinsel0 =pinsel0 |0x00050000 ; /配置uart1引脚功能 pinsel0 =pinsel0 |0x00005500

39、; /配置spi总线引脚 0.4sck 0.5miso 0.6mosi0.7ssel pinsel1 = 0x00000001; /配置p0.16 ti_cc_gdo0_pin 为外部中断引脚 io0dir = 0x00000000; io1dir = 0x00000000; io1dir = io1dir|io1dir|led1|led2|led3|led4; /连led的引脚配置为输出引脚 io0dir=io0dir|key_r1| key_r2| key_r3| key_r4; /行线引脚配置为出输出引脚 io0dir=io0dir|mosi0|sclk0|ti_cc_csn_pin;

40、/配置spi的cs片选为输出 mosi0|sclk0| extmode=0x01; /eint0使用边沿激活 extpolar=0x00; /下降沿或低电平有效void tc0_init(void)t0tc = 0; / 定时器设置为0t0pr = 0; / 时钟不分频t0mcr = 0x03; /设置t0mr0匹配后复位t0tc,并产生中断标志t0mr0 = fpclk / 50; /20毫秒 100则10ms定时,修改定时间隔只需修改除数t0tcr = 0x01; / 启动定时器void _irq irq_timer0 (void) timercount+; if(timercount&g

41、t;20) /0.4秒计数 timercount=0; #ifdef wirltest timersend_id=1; #endif if(io1pin&led2) io1clr=io1clr|led2; else io1set=io1set|led2; time1scount+; if(time1scount>=3) /1.6秒执行一次 time1scount=0; updatadesk(); /更新柜台号结构体的信息 senddesknum(); /发送柜台号给pc端 scan_id=1; /开启按键扫描t0ir = 0x01;/清除中断标志,并复位中断vicvectaddr

42、 = 0x00;/通知vic中断处理结束void updatadesk(void) uint8 i; for(i=0;i<maxdesknum;i+) if(deskdriveri.allow10s=0) /按键按下还没有过10s限定时间 deskdriveri.timecnt+; if(deskdriveri.timecnt=2)|(deskdriveri.timecnt=4)|(deskdriveri.timecnt=5) deskdriveri.enable=1; /每隔3秒允许发送 if(deskdriveri.timecnt>=7) /超过限定时间,开启允许接收按键,并更

43、新整个结构体 deskdriveri.allow10s=1; deskdriveri.keyscaned=0; /初始值0表示还没有按键柜台号被接受 deskdriveri.sendcount=0; /初始值0表示发送次数为0,发送一次加1 deskdriveri.sendok=0; /初始值0表示没发送成功 deskdriveri.timecnt=0; /初始值0,定时计数为0,每秒加1 deskdriveri.enable=1; /初始值1表示允许发送 /end forvoid senddesknum(void) uint8 i; for(i=0;i<maxdesknum;i+) /

44、论询所有柜台结构,看是否有满足发送条件的 if(deskdriveri.keyscaned=1)&(deskdriveri.sendok=0)&(deskdriveri.enable=1) deskloadbuf(i); /将柜台号转载到发送缓冲区 rfsendpacket(sendbuf, pakt_len+1); /无线发射 deskdriveri.sendcount+; /发送次数加1 deskdriveri.enable=0; /关闭允许发送 return; void deskloadbuf(uint8 desknum) sendbuf0=oppo_addr; /对方无线地址 sendbuf1='a' /打头关键字 sendbuf2='b' sendbuf3=(char)desknum; /柜台号码 sendbuf4=0x0d; /结尾关键字 sendbuf5=0x0a; #ifdef watchdogvoid watchdog_init(void) while( wdmod & 0x04 ) = 0x04) /判断看门狗超时标志 wdmod = 0x00; /则软件清零看门狗超时标志位 wdtc = 0x5f0000; /设置看门狗定时器参数wdmo

温馨提示

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

评论

0/150

提交评论