射频识别课程设计_第1页
射频识别课程设计_第2页
射频识别课程设计_第3页
射频识别课程设计_第4页
射频识别课程设计_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

资料范本本资料为word版本,可以直接编辑和打印,感谢您的下载射频识别课程设计地点: 时间: 说明:本资料适用于约定双方经过谈判,协商而共同承认,共同遵守的责任与义务,仅供参考,文档可直接下载或修改,不需要的部分可直接删除,使用时请详细阅读内容射频识别课程设计专业班级:2013级通信工程2班姓名:杜超 学号:201309110224姓名:陆平 学号:201309110225姓名:贺凯文学号:201309110226姓名:贺凯文学号:201309110226姓名:牛新艳姓名:曹晓宁姓名:牛新艳姓名:曹晓宁姓名:李世钰姓名:刘帅姓名:张波学号:201309110228学号:201309110229学号:201309110230学号:201311310210刖言/view/139174.htm"/view/139174.htm"\t"/_blank"射频识别,/view/26303.htm"/view/26303.htm"\t"/_blank"RFID(RadioFrequencyIdentification)技术,又称/view/11208022.htm"/view/11208022.htm"\t"/_blank"无线射频识别,是一种/subview/158690/13619166.htm"/subview/158690/13619166.htm"\t"/_blank"通信技术,可通过无线电讯号识别特定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或光学接触。RFID(RadioFrequencyIdentification)技术作为构建“物联网"的关键技术近年来受到人们的关注。RFID技术早起源于英国,应用于第二次世界大战中辨别敌我飞机身份,20世纪60年代开始商用。RFID技术是一种自动识别技术,射频标签是产品电子代码(EPC)的物理载体,附着于可跟踪的物品上,可全球流通并对其进行识别和读写。/view/1252091.htm"/view/1252091.htm"\t"/_blank"RFID读写器也分移动式的和固定式的,目前RFID技术应用很广,如:图书馆,门禁系统,食品安全溯源等。本次RFID课程设计是围绕ID卡读卡器进行设计的。ID卡读卡器是RFID技术的具体应用°ID卡读卡器是用来读ID卡的,读卡器支持即插即用、在使用过程可以随意拔插,计算机USB口接入读卡器后,读卡器"滴"一声开始自检及初始化,再"滴"一声初始化成功,进入等待刷卡状态。本文分析了ID卡读卡器的基本工作机理并详细研究了ID卡的读卡原理和方法。在此基础上,进行了基于ID卡的软件和硬件开发。论述了主要元器件的选型方法以及各部分电路的工作原理。经过实际电路的制作和反复调试,实现了本次RFID课程设计。关键词:射频识别,读卡器,曼彻斯特码目录TOC\o"1-3"\h\u93581.课程设计 PAGEREF_Toc935841237本次课程设计是围绕ID读卡器进行的。4251811.1课程设计相关简介4214061.1.1ID卡简介449891.1.2读卡器简介5177741.1.3编码简介655351.2课程设计目的77551.3课程设计设备7126601.4课程设计模块组成7209681.5课程设计流程 7323371.5.1课程设计的设计流程PAGEREF_Toc323377232211.5.2课程设计系统的工作流程 PAGEREFToc232218163521.6课程设计电路图89732.课程设计硬件部分9303162.1硬件电路9228642.1.1模块一:MCU(STC89S52)控制电路9242072.1.2模块二:射频基站(U2270B)电路10272662.1.3模块三:串行通信(MAX232)电路11172242.1.4模块四:电源电路 PAGEREFToc172241151282.1.5模块五:复位电路12240022.1.6模块六:蜂鸣器电路 PAGEREFToc240021394922.2硬件电路的焊接1462283.软件程序设计15324803.1主程序1530339总结252355参考文献261.课程设计本次课程设计是围绕ID读卡器进行的。1.1课程设计相关简介1.1.1ID卡简介ID卡全称为身份识别卡(IdentificationCard),是一种不可写入的感应卡,含固定的编号,主要有台湾SYRIS的EM格式、美国HIDMOTOROLA等各类ID卡。ID卡与/view/48535.htm"/view/48535.htm"\t〃—blank”磁卡一样,都仅仅使用了“卡的号码”而已,卡内除了卡号外,无任何保密功能,其“卡号”是公开、裸露的。所以说ID卡就是“感应式磁卡”。ISO标准ID卡的规格为:85.5x54x0.80±0.04mm(高/宽/厚),市场上也存在一些厚、薄卡或异型卡。常应用于考勤、门禁、一卡通等系统。其表现形式相当广泛,与我们的生活生产息息相关。随着芯片技术、天线技术、无线收发技术、数据变换与编码技术、电磁传播特性等技术的综合发展,其应用性能将得到进一步的提高,使用范围将进一步延伸,将在门禁管理、资产回收、物料处理、医疗、宠物管理、工业自动化、联合票证等领域拥有更加广泛、高效、安全的应用。目前,市面使用的ID卡多以JK4001、H4001、EM4001、TK28等居多,其结构和工作原理都一样,故只掌握一种便可通用了。图1.1是ID卡工作原理框图。ID卡内部阵列存储空间结构如1.2所示:ID卡内部64位信息由5个区组成:9个引导位“1”,10个行奇校验位“P0--P9”,4个列奇校验位“PC0--PC3”,40位数据位“D00--D93”和一个停止位“0”。9个引导位是出厂就掩膜到晶片内的,其值为111111111。当它输出数据流时,首先是输出9个引导位,然后是10组由4个数据位和1个行奇校验位组成的数据串,之后是1组由4个列奇校验位组成的数据串,最后是停止位“0”,“D00--D13”是一个8位的晶片版本号或ID识别码°"D20--D93”是4组32位的晶片信息,即卡号。当ID卡得电初始化后,便依次将这64位数据反复输出,直到卡片离开基站读写器失电为止。图1.1ID卡工作原理框图图1.2ID卡内部阵列存储空间结构1.1.2读卡器简介本次课程设计所研究ID卡读卡器设计,是RFID技术的具体应用,其原理等同于RFID技术的原理。RFID技术的基本工作原理:应答器进入磁场后,接收读卡器发出的射频信号,凭借感应电流所获得的能量发送出存储在芯片中的产品信息(PassiveTag,无源标签或被动标签),或者主动发送某一频率的信号(ActiveTag,有源标签或主动标签);读卡器读取信息并解码后,送至中央信息系统进行有关数据处理。一套完整的RFID系统,是由读卡器(Reader)与电子标签(TAG)也就是所谓的应答器(Transponder)及应用软件系统三个部份所组成,其工作原理是Reader发射一特定频率的无线电波能量给Transponder,用以驱动电路将内部的数据送出,此时Reader便依序接收解读数据,送给应用程序做相应的处理。以RFID卡片阅读器及电子标签之间的通讯及能量感应方式来看大致上可以分成,感应偶合(InductiveCoupling)及后向散射偶合(BackscatterCoupling)两种,一般低频的RFID大都采用第一种式,而较高频大多采用第二种方式。基本工作方式分全双工和半双式以及时序系统。在全双工和半双工系统中,在读卡器接通高频电/磁场的情况下应答器的应答响应发送出去的。因为与读卡器本身的信号相比,在接收天线上的应答器的信号很弱的,只有使用合适的传输方法,才能有效区分应答器的信号与读卡器的信号。现实生活中,人们对应答器到读卡器的数据传输往往使用读卡器发射频率的谐波,负载调制,或者有副载波的负载调制,在市场上不难找到相对应的产品。时序方法则相反,阅读器的电/磁场短时间周期的断开,这些间隔被应答器识别出来,并被用于应答器到阅读器的数据传输。缺点就是:在阅读器发送间隙里时,应答器的能量供应中断,这就必须通过装入大容量的辅助性电容或辅助电池进行补偿。读卡器根据使用的结构和技术不同可以是读或读/写装置,是RFID系统信息控制和处理中心。读卡器通常由耦合模块、收发模块、控制模块和接口单元组成。读卡器和应答器之间一般采用半双工通信方式进行信息交换,同时阅读器通过耦合给无源应答器提供能量和时序。在实际应用中,可进一步通过Ethernet或WLAN等实现对物体识别信息的采集、处理及远程传送等管理功能。应答器是RFID系统的信息载体,目前应答器大多是由耦合原件(线圈、微带天线等)和微芯片组成无源单元。1.1.3编码简介射频识别系统完全可以把它认为是一个数字通信系统,从读卡器向应答器的传输可以分为三个主要功能模块:依次是阅读器中的信号编码(信号处理)和调制器(载波电路),传输介质(通路),以及应答器中的解调器(载波回路)和信号译码(信号处理)。信号编码系统的作用是使要传输的信息和它的信号表示尽可能最佳地与传输通道的性能相匹配。这种处理可以对信息提供某种程度的保护,以抗干扰或防信息碰撞,以及对信息某种特征的蓄意改变。常用的编码方式有:NRZ(反向不归零制)编码、曼彻斯特(manchester)编码、单极归零制编码(UnipolarRZ)、差动双相编码(DBR)、米勒编码(miller)、差动编码和脉冲-间隙(PP)编码。本设计所采用的是曼彻斯特(manchester)编码:在半个比特周期时的负边沿表示二进制l,半个比特周期中的正边沿表示二进制0。曼彻斯特编码在采用副载波的负载调制时经常用于从应答器到阅读器的数据传输。1.2课程设计目的(1) 熟悉和掌握RFID的一般组成和工作原理;(2) 认识RFID技术的特点及优势;(3) 初步了解到RFID的应用现状和前景;(4) 通过实验熟练掌握RFID课程设计的各工作部分的工作原理、低频,高频电路的一般调试方法;(5) 进一步巩固实际动手能力,培养严谨的实验作风。1.3课程设计设备PC机,调试程序,硬件电路,数据线,ID卡。1.4课程设计模块组成ID读卡器主要由MCU(STC89S52)控制电路、射频基站(U2270)电路、串行通信(MAX232)电路、电源电路,蜂鸣器电路,复位电路等组成。(由于本次课程设计没有用到12864显示电路所以下面不做详细介绍。)1.5课程设计流程1.5.1课程设计的设计流程课程设计的设计流程:学习RFID和ID卡的相关知识,学习并看懂电路图,然后根据电路图焊接元器件,学习单片机的主程序,最后小组讨论交流,做出本次课程设计的报告。1.5.2课程设计系统的工作流程系统的工作流程:MCU控制U2270,对ID卡进行操作,然后根据所得到的数据对MAX232接口通信,把数据传给计算机。1.6课程设计电路图电路图:2.课程设计硬件部分基于前面对读卡器原理的理论研究,设计了低频读卡器。本节将详细介绍读卡器的硬件电路设计、电路焊接等。2.1硬件电路2.1.1模块一:MCU(STC89S52)控制电路MCU(MicroControllerUnit)系统微处理采用宏晶科技公司的8位单片机STC89C52,该单片机是8位高性能MCU,超低功耗;掉电模式下典型功耗<0.1微安,空闲模式下典型功耗2毫安,正常工作模式下典型功耗4-7毫安。具有8kFlash存储器、512kBRAM、2kE"2PROM、降低EMI功能、ISP(在系统可编程)功能。单片机内部的看门狗电路经过特殊处理,是真正的看门狗,可放心省去外部看门狗。缺省为关闭,打开后无法关闭,单倍速和双倍速可反复设置。另外,掉电模式可由外部中断唤醒,特别适用于电池供电系统。MCU(STC89S52)控制电路2.1.2模块二:射频基站(U2270B)电路射频卡读写器的关键芯片是射频卡基站芯片,它主要用于完成数据的调制、发射和射频的接收以及数据的解调任务。U2270B是发射频率为125kHz的射频卡基站芯片。在众多的射频卡基站芯片中,U2270B是一种低成本、性能完善的低频(100〜150kHz)射频卡基站芯片,其主要特点如下:(1) 载波振荡器能产生100kHz〜150kHz的振荡频率,并可通过外接电阻进行精确调整,其典型应用频率为125kHz。(2) 典型数据传输速率为5kbps(125kHz时)。(3) 适用于曼彻斯特编码和双相位编码。(4) 带有微处理器接口,可与单片机直接连接。(5) 供电方式灵活,可以采用+5V直流供电,也可以采用汽车用+12V供电,同时具有电压输出功能,可以给微处理器或其它外围电路供电。(6) 具有低功耗待机模式,可以极大地降低基站的耗电量。(7) 125kHz时的典型读写距离为15mm。适用于对TEMIC的e5530/e5550/e5560射频卡进行读写操作。射频基站(U2270B)电路2.1.3模块三:串行通信(MAX232)电路MAX232芯片是专门为电脑的RS-232标准串口设计的接口电路,使用+5V的单电源供电。内部结构基本可分三个部分:第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DP9插头;DP9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。第三部分是供电。15脚DNG、16脚VCC(+5v)。串行通信(MAX232)电路2.1.4模块四:电源电路电源模块是可以直接贴装在印刷电路板上的电源供应器,其特点是可为专用/view/1355.htm"/view/1355.htm"\t"/_blank"集成电路(ASIC)、数字信号处理器(DSP)、微处理器、存储器、现场可编程门阵列(FPGA)及其他数字或模拟负载提供供电。一般来说,这类模块称为负载点(POL)电源供应系统或使用点电源供应系统(PUPS)。由于模块式结构的优点甚多,因此模块电源广泛用于交换设备、接入设备、移动通讯、微波通讯以及光传输、路由器等通信领域和汽车电子、航空航天等。2.1.5模块五:复位电路复位电路,就是利用它把电路恢复到起始状态。就像计算器的清零按钮的作用一样,以便回到原始状态,重新进行计算。和计算器清零按钮有所不同的是,复位电路启动的手段有所不同。一是在给电路通电时马上进行复位操作;二是在必要时可以由手动操作;三是根据程序或者电路运行的需要自动地进行。复位电路都是比较简单的大都是只有电阻和电容组合就可以办到了,再复杂点就有/view/3794.htm"/view/3794.htm"\t"/_blank"三极管等配合程序来进行了。52单片机要复位只需要在第9引脚接个高电平持续2us就可以实现,那这个过程是如何实现的呢?在单片机系统中,系统/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf="/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=20&is_app=0&jk=573e747f8e6221b1&k=%C9%CF%B5%E7&k0=%C9%CF%B5%E7&kdi0=0&luki=1&mcpm=0&n=10&p=baidu&q=98059059_cpr&rb=0&rs=1&seller_id=1&sid=b121628e7f743e57&ssp2=1&stid=9&t=tpclicked3_hc&td二1831118&tu=u1831118&u=/bbs/dpj-27603-1.html&urlid=0"\t"/bbs/_blank"上电启动的时候复位一次,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位。所以可以通过按键的断开和闭合在运行的系统中控制其复位。那么开机的时候为什么为复位?在/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf="/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=20&is_app=0&jk=573e747f8e6221b1&k=%B5%E7%C2%B7%CD%BC&k0=%B5%E7%C2%B7%CD%BC&kdi0=0&luki=4&mcpm=0&n=10&p=baidu&q=98059059_cpr&rb=0&rs=1&seller_id=1&sid=b121628e7f743e57&ssp2=1&stid=9&t=tpclicked3_hc&td=1831118&tu=u1831118&u=/bbs/dpj-27603T.html&urlid=0〃\t"/bbs/_blank"电路图中,电容的的大小是10uf,电阻的大小是10k。所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0.7倍即为3.5V),需要的时间是10K*10UF=0.1S。也就是说在电脑启动的0.1S内,电容两端的电压时在0~3.5V增加。这个时候10K电阻两端的电压为从5~1.5V减少(串联电路各处电压之和为总电压)。所以在0.1S内,RST引脚所接收到的电压是5V~1.5V。在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。所以在开机0.1S内,单片机系统自动复位(RST引脚接收到的高电平信号时间为0.1S左右)。那么按键按下的时候为什么会复位?在单片机启动0.1S后,电容C两端的电压持续充电为5V,这是时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。当按键按下的时候,/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf="/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=20&is_app=0&jk=573e747f8e6221b1&k=%BF%AA%B9%D8&k0=%BF%AA%B9%D8&kdi0=0&luki=3&mcpm=0&n=10&p=baidu&q=98059059_cpr&rb=0&rs=1&seller_id=1&sid=b121628e7f743e57&ssp2=1&stid=9&t=tpclicked3_hc&td二1831118&tu=u1831118&u=/bbs/dpj-27603-1.html&urlid=0"\t"/bbs/_blank"开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。随着时间的推移,电容的电压在0.1S内,从5V释放到变为了1.5V,甚至更小。根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平。单片机系统自动复位。总结:(1)复位电路的原理是HYPERLINK/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=20&is_app=0&jk=573e747f8e6221b1&k=%B5%A5%C6%AC%BB%FA&k0=%B5%A5%C6%AC%BB%FA&kdi0=0&luki=10&mcpm=0&n=10&p=baidu&q=98059059_cpr&rb=0&rs=1&seller_id=1&sid=b121628e7f743e57&ssp2=1&stid=9&t=tpclicked3_hc&td=1831118&tu=u1831118&u=/bbs/dpj-27603T.html&urlid=0〃\t"/bbs/_blank"单片机RST引脚接收到2US以上的HYPERLINK"/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=20&is_app=0&jk=573e747f8e6221b1&k=%B5%E7%C6%BD&k0=%B5%E7%C6%BD&kdi0=0&luki=6&mcpm=0&n=10&p=baidu&q=98059059_cpr&rb=0&rs=1&seller_id=1&sid=b121628e7f743e57&ssp2=1&stid=9&t=tpclicked3_hc&td=1831118&tu=u1831118&u=/bbs/dpj-27603-1.html&urlid=0"\t"/bbs/_blank"电平信号,只要保证电容的充放电时间大于2US,即可实现复位,所以电路中的电容值是可以改变的。(2)按键按下系统复位,是HYPERLINK"/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=20&is_app=0&jk=573e747f8e6221b1&k=%B5%E7%C8%DD&k0=%B5%E7%C8%DD&kdi0=0&luki=9&mcpm=0&n=10&p=baidu&q=98059059_cpr&rb=0&rs=1&seller_id=1&sid=b121628e7f743e57&ssp2=1&stid=9&t=tpclicked3_hc&td二1831118&tu=u1831118&u=/bbs/dpj-27603-1.html&urlid=0"\t"/bbs/_blank"电容处于一个HYPERLINK"/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=20&is_app=0&jk=573e747f8e6221b1&k=%B6%CC%C2%B7&k0=%B6%CC%C2%B7&kdi0=0&luki=5&mcpm=0&n=10&p=baidu&q=98059059_cpr&rb=0&rs=1&seller_id=1&sid=b121628e7f743e57&ssp2=1&stid=9&t=tpclicked3_hc&td=1831118&tu=u1831118&u=/bbs/dpj-27603-1.html&urlid=0"\t"/bbs/_blank"短路电路中,释放了所有的HYPERLINK/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=20&is_app=0&jk=573e747f8e6221b1&k=%B5%E7%C4%DC&k0二%B5%E7%C4%DC&kdi0=0&luki=2&mcpm=0&n=10&p=baidu&q=98059059_cpr&rb=0&rs=1&seller_id=1&sid=b121628e7f743e57&ssp2=1&stid=9&t=tpclicked3_hc&td二1831118&tu=u1831118&u=/bbs/dpj-27603-1.html&urlid=0"\t"/bbs/_blank"电能,HYPERLINK〃/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=20&is_app=0&jk=573e747f8e6221b1&k=%B5%E7%D7%E8&k0=%B5%E7%D7%E8&kdi0=0&luki=7&mcpm=0&n=10&p=baidu&q=98059059_cpr&rb=0&rs=1&seller_id=1&sid=b121628e7f743e57&ssp2=1&stid=9&t=tpclicked3_hc&td二1831118&tu=u1831118&u=/bbs/dpj-27603-1.html&urlid=0"\t"/bbs/_blank"电阻两端的HYPERLINK"/cpro/ui/uijs.php?adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=20&is_app=0&jk=573e747f8e6221b1&k=%B5%E7%D1%B9&k0=%B5%E7%D1%B9&kdi0=0&luki=8&mcpm=0&n=10&p=baidu&q=98059059_cpr&rb=0&rs=1&seller_id=1&sid=b121628e7f743e57&ssp2=1&stid=9&t=tpclicked3_hc&td=1831118&tu=u1831118&u=/bbs/dpj-27603-1.html&urlid=0"\t"/bbs/_blank"电压增加引起的。复位电路2.1.6模块六:蜂鸣器电路蜂鸣器是一种一体化结构的电子讯响器,采用直流电源供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器的电路图形符号:蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。蜂鸣器电路2.2硬件电路的焊接

对于硬件电路的设计来说,其工作是相当严谨的要求是极为精细,不允许有任何错误和误差,即使是电路的原理设计完全正确,也不能保证电路板制作出来之后焊接上器件就可以立刻正常工作。一个未经调试的电路板,可能有来自原理图错误,PCB版图设计失误,PCB制作厂商的质量问题,元器件焊接问题以及元器件质量问题等多方面的因素导致无法正常工作。本次课程设计是在按照设计留出了电路通道,并在通道上预留了各种元件的焊接位置的电路板上焊接电子元器件,参照原理图以及PCB图,器件的焊接主要是根据原理图及PCB板在电路板上排布电子元器件,以功能模块为主的形式组合,并把元器件焊接到电路板上。软件程序设计本次课程设计的软件程序是针对52单片机进行编写的。3.1主程序/********************************************MR系列ID卡读卡演示程序*************************************************/#include<reg52.h>#include<math.h>#include<string.h>#include<stdio.h>#include<absacc.h>#include<intrins.h>sbitP12二P「2; //蜂鸣器sbitP14二P「4; //指示灯sbitP13二P「3;sbitP11二P「1; //解码输入sbitLCD_RSP35;//寄存器选择输入sbitLCD_RSP35;//寄存器选择输入sbitLCD_RW=P3”6;sbitLCD_EN=P3”4;sbitLCD_PSB=P3”7;//液晶读/写控制sbitLCD_RW=P3”6;sbitLCD_EN=P3”4;sbitLCD_PSB=P3”7;//液晶读/写控制//液晶使能控制〃串/并方式控制#defineucharunsignedchar#defineuintunsignedint#defineLCD_dataP0 //数据口#defineSPK P12 //蜂鸣器#defineLED P14 //指示灯#defineLED2P13#defineINPORTP11 〃解码输入〃用来区分脉冲宽度的参数TOC\o"1-5"\h\z#defineTIME00 50#defineTIME05 260#defineTIME10 550ucharflag;unsignedlongsum;intn=8;bitbitin; 〃上一次的状态位unsignedcharBuff[30]; 〃解码缓冲区unsignedcharstring[10];unsignedcharcodedis1[]={〃临沂大学信息学院"};//8unsignedcharcodedis2[]=("2013-2014-1"};//16unsignedcharcodedis3[]=("期末考试”};//7unsignedchardis4[]={"卡号:"}; //6voidlcd_pos(charX,charY);〃确定显示位置/*******************************************************************//**//*延时函数*//**//*******************************************************************/voiddelay(intms)(inti,j;for(j=0;j<ms;j++)for(i=0;i<110;i++);}/*******************************************************************//**//*检查LCD忙状态*//*lcd_busy为1时,忙,等待°lcd-busy为0时,闲,可写指令与数据。*//**//*******************************************************************/bitlcd_busy()(ucharresult;LCD_RS=0;LCD_RW=1;//delayNOP();while(1)(P0=0xff;LCD_EN=1;result=P0;LCD_EN=0;if((result&0x80)==0)break;}}/*******************************************************************//**//*写指令数据到LCD*//*RS=L,RW=L,E二高脉冲,D0-D7二指令码。*//**//*******************************************************************/voidlcd_wcmd(ucharcmd)(lcd_busy();LCD_RS=0;LCD_RW=0;LCD_EN=0;LCD_data=cmd;delay(5);LCD_EN=1;delay(5);LCD_EN=0;}/*******************************************************************//**//*写显示数据到LCD*//*RS=H,RW=L,£二高脉冲,D0-D7二数据。*//**//*******************************************************************/voidlcd_wdat(uchardat)(lcd_busy();LCD_RS=1;LCD_RW=0;LCD_EN=0;LCD_data=dat;delay(5);LCD_EN=1;delay(5);LCD_EN=0;delay(5);}/*******************************************************************//**//*LCD初始化设定*//**/

/*******************************************************************///LCD_PSB=0;〃串口方式LCD_PSB=1;〃并口方式//LCD_PSB=0;〃串口方式LCD_PSB=1;〃并口方式lcd_wcmd(0x34);//扩充指令操作lcd_wcmd(0x34);//扩充指令操作delay(5);lcd_wcmd(0x30);//基本指令操作lcd_wcmd(0x30);//基本指令操作delay(5);//lcd_wcmd(0x30);〃起始点设定,光标右移//lcd_wcmd(0x30);〃起始点设定,光标右移lcd_wcmd(0x0C);//显示开,关光标lcd_wcmd(0x0C);//显示开,关光标delay(5);lcd_wcmd(0x01);〃清除lcd_wcmd(0x01);〃清除LCD的显示内容delay(5);//lcd_wcmd(0x06);//地址归零//lcd_wcmd(0x01);〃清除LCD的显示内容///delay(5);/*********************************************************//**//*设定显示位置*///lcd_wcmd(0x06);//地址归零//lcd_wcmd(0x01);〃清除LCD的显示内容///delay(5);/*********************************************************//**//*设定显示位置*//**//*********************************************************/voidlcd_pos(ucharX,ucharY)ucharpos;if(X==0){X=0x80;}elseif(X==1)(X=0x90;}elseif(X==2)(X=0x88;}elseif(X==3)(X=0x98;}pos=X+Y;lcd_wcmd(pos);//显示地址}voiddelay_ms(unsignedintms)(unsignedchari;while(ms--)(i=112;while(i--);}}voidprintchar(unsignedcharch)(inti;unsignedlongamount;amount=(unsignedlong)ch;n--;for(i=n;i>0;i--)amount二amount*16;sum+=amount;}voidprinthex(unsignedcharhex)//以十六进制格式输出1个字节(unsignedcharc;c=hex;c=c>>4;printchar(c);c=hex;c=c&0x0F;printchar(c);}〃检测数据位unsignedcharreadbit()(unsignedintmk=TIME10; //装入超时值TL0=TH0=0; //初始化计时器TR0=1; 〃开始计时while(--mk) 〃超时机制,防止死等//有跳变if(bitin!=INPORT)//有跳变break;TR0=0; 〃停止计时if(mk==0) 〃超时退出return0;bitin=INPORT;〃保存状态mk二TH0*256+TL0; //计算这样跳变的脉宽if((mk>TIME05)&&(mk<=TIME10)) 〃一个周期return1;if((mk>=TIME00)&&(mk<=TIME05))〃半个周期return2;return0; 〃出错}//读一个完整的数据位unsignedcharreaddata()(switch(readbit())(case1: 〃一个周期return!bitin;case2: //半个周期if(readbit()!=2)return2; 〃再读一次半个周期return!bitin;default:return2;}〃接收并解码bitCheckData()(unsignedchari,j;bitin=INPORT; 〃保存位状态for(i=0;i<9;i++) 〃检测9个数据位1(if(readdata()!=1)return0;}〃读取数据for(i=0;i<11;i++)(Buff[i]=0x00;for(j=0;j<5;j++)(Buff[i]<<=1;switch(readdata())(case0: //0break;case1: //1Buff[i]|=0x08;break;case2: //errreturn0:〃结束位if(Buff[10]&0x08!=0x00)return0;〃行奇校验位for(i=0;i<10:i++)if((((Buff[i]»4)”(Buff[i]»3)”(Buff[i]»2)”(Buff[i]»l)”Buff[i])&0x08)!=0)return0://列奇校验位j=0;for(i=0;i<ll:i++)j=j"(Buff[i]&0x80):if(j!=O)return0:for(i=0;i<ll:i++)j=j"(Buff[i]&0x40):if(j!=O)return0:for(i=0;i<11;i++)j=j"(Buff[i]&0x20);if(j!=0)return0;for(i=0;i<11;i++)j=j"(Buff[i]&0x10);if(j!=0)return0;//完成return1;}bitReadCardNo()(if(CheckData()) //检测卡(u

温馨提示

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

评论

0/150

提交评论