基于AVR单片机非接触式IC卡读卡计数器.doc_第1页
基于AVR单片机非接触式IC卡读卡计数器.doc_第2页
基于AVR单片机非接触式IC卡读卡计数器.doc_第3页
基于AVR单片机非接触式IC卡读卡计数器.doc_第4页
基于AVR单片机非接触式IC卡读卡计数器.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

基于AVR单片机的非接触式IC卡读卡计数器一、设计目的、思想及功能目的:通过持卡人刷卡,读卡器对IC卡进行识别,进而由单片机为其中的信息做加法计算,从而实现累计持卡人是用此卡的次数的目标。思想:凭借atmega16实现对射频模块(主要包括fmrc500、h1n232pc及at89s52)的信号分析,以及数据显示。功能:根据AVR单片机ATmage16芯片、RC500非接触式读卡器的工作原理而设计的刷卡计数功能。二、硬件设计思想和电路原理图 凭借ATMEGA16实现对射频模块(主要包括FMRC500、H1N232PC及AT89S52)的信号分析,再通过七段数码管进行数据显示。实验板电路:七段数码管与ATMEGA16接线示意图串口接线示意图AT89S52与RS232接线图AT89S52与RC500的电路图特定的IC卡射频模块AVR单片机识别结果射频信号三、如何使用硬件资源 整个产品由读卡器及单片机系统组成,读卡器与单片机相关联。持卡人使用时,只需刷一下特定的IC卡,此时读卡器发出的信号会与IC卡中的L/C产生谐振,使IC卡发射出相应频率的信号,读卡器接受到IC卡的信号,把识别信号的结果传送给单片机根据程序的设计,单片机计数加一。最后通过三位七段数码管显示。四、软件设计流程1、了解串口通讯的基本原理。制定出发送函数和接受函数的原理,利用串口调试软件进行初步编译。2、上网搜索到mifare卡片的通讯协议。根据通讯协议设定发送数组和接受数组,实现下位机和上位机的串口通讯。3、在上位机接收到数据后,根据接收的数据,设定相应的输出,即利用七段数码管显示读卡次数,以此来实现电子计数。五、程序/ICC-AVR application builder : 2009-05-10 10:49:00/ Target : M16/ Crystal: 4.0000Mhz#include #include #define F_CPU 7372800 #pragma interrupt_handler USART_Receive:12 /中断向量12,表示USART 的RX结束const unsigned char start=0x02,0x0b,0x0f;const unsigned char search=0x02,0x02,0x26;const unsigned char search_ok=0x03,0x00,0x04,0x00;unsigned char receive10;unsigned char rdata,n = 0, num = 0,flag ,sw,gw,bw;unsigned char led_710=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F; void clear_re(void)unsigned char i;for(i=0;i10;i+)receivei = 0;void delay(unsigned int ms) /延时子函数 unsigned int i,j;for(i=0;ims;i+) for(j=0;j8);UBRRL = (unsigned char)tmp;/* 接收器与发送器使能*/UCSRB = (1RXCIE)|(1RXEN)|(1TXEN);/* 设置帧格式: 8 个数据位, 2 个停止位*/UCSRC = (1URSEL)|(1USBS)|(1UCSZ0)|(1UCSZ1);SREG=BIT(7);/ ICC 生成的初始化/UART0 initialize/ desired baud rate: 9600/ actual: baud rate:9600 (0.0%)/ char size: 8 bit/ parity: Disabledvoid uart0_init(void)UCSRB = 0x00; /disable while setting baud rateUCSRA = 0x00;UCSRC = BIT(URSEL) | 0x06;UBRRL = 0x2F; /set baud rate loUBRRH = 0x00; /set baud rate hiUCSRB = 0x18;/下面两个函数直接从数据手册上拷贝过来的/ 数据发送【发送5 到8 位数据位的帧】void USART_Transmit( unsigned char data )/* 等待发送缓冲器为空 */while ( !( UCSRA & (1UDRE) );/* 将数据放入缓冲器,发送数据 */UDR = data; / 数据接收【以5 到8 个数据位的方式接收数 据帧】unsigned char USART_Receive( void )UCSRB&=BIT(RXCIE); / 等待接收数据/while ( !(UCSRA & (1RXC) )/receiven = UDR;n+;/UCSRB|=BIT(RXCIE); /从缓冲器中获取并返回数据return UDR; void start_rf(void) unsigned char i=0; for(i=0;i3;i+) USART_Transmit(starti); delay(10);void search_card(void) unsigned char i=0; n = 0; for(i=0;i10;i+)receivei = 0; for(i=0;i3;i+) USART_Transmit(searchi); delay(20); void port_init(void) PORTA = 0x00; DDRA = 0xFF; PORTB = 0x00; DDRB = 0xFF; PORTC = 0x00; /m103 output only DDRC = 0x00; PORTD = 0x00; DDRD = 0x00;void main(void)unsigned char i=0,tmp=0;port_init();PORTA &= 0x01;USART_Init(9600); /波特率9600 初始化串口start_rf();delay(10);while(1)unsigned char n=30;search_card(); for(i=0;i0) PORTA =led_7bw; PORTB=0x04; delay(1); PORTB=0xFF; PORTA =led_7sw; PORTB=0x02; delay(1); PORTB=0xFF; PORTA =led_7gw; PORTB=0x01; delay(1); PORTB=0xFF; n-; DDRA = 0xff; flag = 0; else if(i != 4) flag = 1; PORTA |= 0xff; clear_re();delay(50);六、测试过程和测试数据过程2009年5月21日 老校10#235 初次实验,考入程序。观察结果:无任何反应。 2009年5月25日 老校10#235 再次检查调试好硬件,考入程序。 观察结果:起始运行时有反应,后无任何反应。 2009年5月31日 老校10#235 重新编译程序,再次考入程序。 观察结果:可以用led灯以2进制的形式显示。 2009年6月4 日 老校10#235 加入四位七段数码管,考入程序。 观察结果:无任何反应。 2009年6月10日 老校10#235 调试程序后,考入程序。观察结果:数码管顺利现实示数。数据 1) 刷卡计数延迟 约50ms。2) 射频感应距离 0-20mm。3) Led显示频率 低于30ms。4) 射频频率 13.56MHz七、分析相应指标参数 分析:对于非接触式射频卡来说,射频频率和射频感应距离是最重要的两个参数,我们使用的MFRC500射频模块这几项参数都是模块自带的,具体是射频频率13.56MHz,射频感应距离为0-40mm。但经过我们在实际操作中分析

温馨提示

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

评论

0/150

提交评论