欢迎来到天天文库
浏览记录
ID:38804366
大小:317.50 KB
页数:7页
时间:2019-06-19
《智能卡_磁卡二轨数据识别实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、磁卡二轨数据识别实验报告磁卡二轨数据识别实验报告学生:房皓学号:13410801班级:计科11级1104班(进修生)任课教师:李济生一、实验目的1.理解ISO7810/7811/7812/7813国际标准;2.掌握磁卡读卡器的接口要求以及与STM32单片机的接口方法;3.掌握正反向识别磁卡二轨数据的过程和编程方法,以及与微机交换数据的方法。二、实验内容1、采用中断方式读取磁卡数据;2、用PD5控制指示灯L1的点亮和熄灭,当CP是低电平时点亮L1指示灯,当CP是高电平时熄灭L1指示灯(即刷卡过程中L1点亮,其他时间是熄灭的)3
2、、每个字符的奇校验,整个字符的异或校验;4、如果校验正确,L2指示灯点亮,蜂鸣器响一声;否则L2等熄灭,蜂鸣器响三声。5、将读卡和校验后的数据传送到微机中(微机软件采用超级终端)。6、卡二轨反向数据的读取,完成正反向都可以刷卡的磁卡读卡器;7、如果校验正确,L2指示灯点亮,蜂鸣器响一声;否则L2等熄灭,蜂鸣器响三声。三、实验连接图磁卡二轨数据识别实验报告一、程序流程图磁卡二轨数据识别实验报告磁卡二轨数据识别实验报告一、程序关键代码分析磁卡二轨数据识别实验报告1.当有刷卡过程时产生中断,准备接收数据Cp=GPIO_ReadIn
3、putDataBit(GPIOB,GPIO_Pin_8);while(Cp){Cp=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8);}EXTI_GenerateSWInterrupt(EXTI_Line0);2.如果校验正确,L2指示灯点亮,蜂鸣器响一声;否则L2等熄灭,蜂鸣器响三声。if(Check()==0){intw;GPIO_ResetBits(GPIOD,GPIO_Pin_6);for(w=1;w<=3;w++){GPIO_SetBits(GPIOD,GPIO_Pin_7);Dela
4、y(65530);GPIO_ResetBits(GPIOD,GPIO_Pin_7);Delay(65530);}}else{GPIO_SetBits(GPIOD,GPIO_Pin_6);GPIO_SetBits(GPIOD,GPIO_Pin_7);Delay(65530);GPIO_ResetBits(GPIOD,GPIO_Pin_7);}3.在数据校验时,要查第1个数据是否0BH,倒数第2个数据是否1FHintjudgeData(void){if(TxBuffer[0]==11&&TxBuffer[9]==31)retur
5、n1;elsereturn0;}4.每个字符的奇校验,即字符中1的个数是奇数个intCheckOdd(ints){u8k;u8odd;u8oddCounter;odd=1;oddCounter=0;for(k=0;k<5;++k)磁卡二轨数据识别实验报告{oddCounter+=(TxBuffer[s]&odd)>>k;odd=odd<<1;}TxBuffer[s]=TxBuffer[s]&0xEF;if(oddCounter%2==1){return1;}else{return0;}}5.所有数据的异或校验是否正确intC
6、heckORX(void){u8k;sum=TxBuffer[0];for(k=0;k<11;++k){sum=sum^TxBuffer[k];}TxBuffer[10]=TxBuffer[10]<<4;sum=sum<<4;if(TxBuffer[10]==sum){return1;}else{return0;}}6.中断服务程序voidEXTI0_IRQHandler(void){inta;if(Cp==0)//当刷卡过程产生时,置L1亮,准备接收数据{GPIO_SetBits(GPIOD,GPIO_Pin_5);if(
7、EXTI_GetITStatus(EXTI_Line0)!=RESET){磁卡二轨数据识别实验报告ReaderData();//读取的数据求反if(data==1)begin=1;if(begin==1)//begin为1,表示数据已经开始make();//接收数据EXTI_ClearITPendingBit(EXTI_Line0);}}}voidReaderData(void)//函数功能:将读取的数据求反{data=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9);if(data==0)da
8、ta=1;elsedata=0;}voidmake(void)//函数功能:将读取的数存入数组,每5个数数组下标加1{inta=0;if(nCount==5){nCount=0;fp++;}a=nCount;nCount++;TxBuffer[fp]=TxBuffer[fp]+(data<
此文档下载收益归作者所有