基于单片机的RFID消费管理系统设计_第1页
基于单片机的RFID消费管理系统设计_第2页
基于单片机的RFID消费管理系统设计_第3页
基于单片机的RFID消费管理系统设计_第4页
基于单片机的RFID消费管理系统设计_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

本科论文目录TOC\o"1-2"\h\u26844摘要 。MFRC522具有低电压、低成本、体积小以及非接触的优点,符合设计方案的实际需求,因此采用MFRC522读卡器作为射频识别系统的读写模块。MFRC522读卡器电路原理图如图2.6所示。图2.6MFRC522读卡器电路原理图2.4RFID射频卡设计接触式射频卡在七八年前使用较多,接触式射频卡的芯片通常都在表面,所以很容易损坏。而非接触式射频卡,则是将芯片和线圈封装在卡内,不容易损坏,所以在当今颇受欢迎,且可靠性高。方案一:选用ID射频卡。ID卡只可读不可修改,芯片内的数据是预先写入的唯一序列编号,且不可修改。因此使用ID卡识别数据只是读取ID卡内的序列编号进行身份识别,其使用原理和磁条卡的差异不大。方案二:选用MIFARES50型IC射频卡。IC卡可以搭载复杂的信息精准的传送识别。可根据用户需求设置权限,卡内记录内容可反复修改擦写。每张卡内都有唯一的32位序列号,能保证卡内数据信息的安全性,抗干扰能力强并可以防止多张卡片同时识别[15]。考虑到安全问题,由于IC卡数据内容可以通过密码进行保护,使其内容不易被伪造和篡改。因此,本设计选用方案二,选用可靠性高,成本低的非接触式S50型IC射频卡。MIFARES50型IC卡主要参数:(1)工作频率:13.56MHZ;(2)通信速度:106KBPS;(3)读写距离:10CM以内。2.5数据存储芯片设计本设计的存储芯片采用的是型号为AT24C02的存储芯片。AT24C02是一个2K位串行CMOSEEPROM,芯片内部总容量为256个8位字节,采用CMOS技术,从而减少了元件的功耗。另外AT24C02具备16字节页缓冲器。该器件通过总线接口进行操作,有一个专门的保护功能[16]。单片机内部的EEPROM,在数据存储的过程中不易操作,AT24C02是专门的数据存储芯片,并且有专门的保护功能。因此,采用AT24C02存储芯片。AT24C02存储芯片主要参数:(1)类型:可擦除只读存储器;(2)次数:1000000次;数据保存:100年。2.6按键电路设计在矩阵键盘每条行线和列线的交点加入一个按键,采用4条行线,4条列线,这样就有16个按键[17]。按键部分实现了对电路的控制,K5键为管理键,按下K5键直接进入管理系统界面,此时液晶显示屏第一列显示RFID管理系统;第二行显示注册、修改密码;第三行显示注销、退出管理、第四行显示充值。此时可以根据K9键和K13键切换菜单,分别为切换上一项、切换下一项;K16键为确定输入或确定菜单选项设置;K17键为退出键,按下后可以返回上一级菜单;K15、K2、K3、K4、K6、K7、K8、K11、K12分别为0~9数字按键,用于输入充值金额、扣费金额和修改密码;K14键为退格键,在输入数字过程中输错时,可以清除输入的最后一位。本设计需要按键较多,矩阵键盘又能够减少I/O口的占用,因此采用矩阵键盘是非常合理的。矩阵键盘电路原理图如图2.7所示。图2.7矩阵键盘电路原理图3系统软件设计3.1软件程序设计在单片机的控制系统中,数据处理包括数据收集、数字处理、数据转换和显示处理;过程控制程序主要通过根据特定方法计算然后输出信号来控制生产。在设计软件以执行上述任务时,整个过程分为几个部分,并将每个部分称为模块。所谓的“模块”本质上是一个执行特定功能的相对独立的程序段。3.2Keil软件开发KeiluVision4,它同时支持WINXP和WIN7等多种操作系统,内含强大开发工具,可以进行编译、连接、调试以及仿真等所有研发过程Keil提供的开发解决方案具有很强的完整性、实用性,其中包括编译器、宏汇编、链接器、库管理和仿真器调试器[18]。KeiluVision4软件开发流程图如图3.1所示。图3.1KeiluVision4软件开发流程图3.3系统程序流程图系统程序流程图如图3.2所示。图3.2系统程序流程图系统程序流程:上电初始化,RC522读卡器复位,读卡器读取IC卡,如果进行卡内扣费,按下矩阵键盘中的数字按键输入扣费金额进行扣费,卡内实时余额通过LCD12864液晶显示屏显示;若不进行卡内扣费,进入管理系统选择功能界面,按下矩阵键盘中的功能键并刷卡,可以完成注册、注销、充值、修改密码功能,成功操作后提示语将会通过LCD12864液晶显示屏显示,并将数据信息实时存储在AT24C02中,完成操作后等待IC卡离开读卡器,操作结束。LCD显示流程图如图3.3所示。图3.3LCD显示流程图LCD显示流程:上电初始化,设置显示位置,显示字符,将实时采集的数据显示在LCD12864液晶显示屏上。MFRC522读卡器流程图如图3.4所示。图3.4MFRC522读卡器流程图MFRC522读卡器读卡流程:系统初始化,读卡器初始化,读卡器检测IC卡然后进行防冲撞检测也就是防止两张卡一起检测,然后选定该IC卡,再进行该卡密码匹配,如果匹配成功进行读卡操作,如果匹配失败则返回。4系统调试在整个系统通电之前,观察焊接是否存在问题。如有明显断裂,正负极连接、器件连接、焊接不实等,用万用表检测电源正负电压,是否出现严重的电源问题,如短路等。最后确认并保证系统没有问题。在搭建调试平台后,需要对软件程序进行调试,如果检查程序没有语句错误,则要检测是否能够达到本设计的要求,如果有功能不能正常运行,需要继续对软件程序进行调试,反复进行测试验证,直到所有功能都能正常运行。4.1软件调试(1)使用Keil4软件创建项目:单击菜单栏上的“工程”,输入并保存新项目名称“基于单片机的RFID消费管理系统设计”,然后在“Atmel”目录下选择单片机的型号“STC89C52”。(2)新建用户源文件:新建一个空白的文本,在空白文本上编写本设计相关的程序源代码,代码编写完成后,文件拓展名“main.c”,新文件创建完成。(3)程序编译和调试:单击代码运行按钮,在下方有输出文本框,可以看到代码的编译信息,如果在最后一行error()内有数字,则需要按照提示找出错误的代码,并重新编写,直到没有错误为止[19]。4.2软件调试中遇到的问题问题一:首次对程序进行编译时,有窗口弹出,显示有错误。解决方法:检查程序中的标点书写格式,检查是否切换中英文角标;检查程序句末尾是否有遗漏的分号。问题二:程序汇编时出现字母数字的混杂。解决方法:输入字母“O”和数字“0”时,注意细节。问题三:提示无asm文件。编译时候提示:F:\...\XX.asmFilehasbeenchangedoutsidetheeditor,reload?解决方法:重新生成项目,产生examl1.asm即可。4.3焊接中遇到的问题由于本设计布线较密,在焊接时需要根据电路图仔细对照,防止焊接位置出现错误。问题一:在焊接过程中,焊锡不够、焊接点不圆润。解决方法:这时需要给焊接处补焊锡,此时一定要注意焊锡量,不能补多,否则会容易连接到其它的引脚[20]。问题二:在焊接过程中,遇到焊锡过多的问题。解决方法:在焊接处用电烙铁来回滑动,用电烙铁将多余的焊锡带走,也可以使用吸锡器除焊锡。实物焊接图如图4.1所示。图4.1实物焊接图4.4实物调试在系统中,对于硬件电路的检测主要是看焊接时是否有毛刺、无光泽,电路是否有短路、开路、一些具有方向的元件是否方向弄错、电路设计错误等情况。对于漏焊、元件方向弄错的检测方法是将手中的电路板对照着原理图,将导线一条一条的对照。如果发现没有导线连接错误或者对不上的情况下,需及时的检查有无漏焊的部位,确定漏焊的部位并进行及时的补焊。检测短路、断路以及虚焊的时候,分别用两支红黑表笔在需要检测的元件或导线的两端连通,如果听到蜂鸣器发出响声,则代表线路正常,如果没有听到蜂鸣器发出响声,则代表着电路有问题[21]。经过测试,实物电路板与原理图一致,所有元器件的插接、方向均正确,本系统最终实现了所有硬件功能。本设计制作过程图如图4.2所示。图4.2制作过程图本设计实物图如图4.3所示。图4.3实物图结论通过以上分析,本设计经过了硬件以及软件的测试,各部分均达到预期功能。本次设计由STC89C52单片机主控电路、MFRC522读卡器电路、IC射频卡电路、LCD12864液晶显示电路、按键电路、AT24C02存储芯片电路、电源电路七个部分组成。本篇论文针对近几年随着国内手机用户的高速增长,国内三大电信运营商的竞争日渐激烈,联通公司需要办理业务充值的用户也越来越多,传统货币又不能同时满足小额交易消费时间短且安全的问题,设计出了基于单片机的RFID消费管理系统。本设计采用STC89C52单片机作为主控制器,通过MFRC522射频识别模块对IC射频卡进行卡内数据识别,并通过矩阵键盘调控LCD12864液晶显示IC卡的卡号、消费金额、卡内实时余额显示和管理系统界面,并将卡内数据实时存储到AT24C02存储芯片中。其中0~9数字按键输入充值金额、消费金额及修改密码,功能按键分别为管理键、上下菜单切换键、确认键、返回上一级菜单键、退格清除键。结果表明,本设计达到了预期功能,采用RFID射频识别技术解决了传统货币进行小额消费时不能快速交易的问题。本设计以电子数据代替传统货币,达到了能够保证小额消费交易安全又能实现快速交易的目的。并在此基础上添加了管理系统设计,能够实现充值、注册、注销、修改密码的功能。

参考文献[1]赵帅锋,胡绍海.基于软件仿真的“RFID原理与应用”课程实践教学初探[J].工业和信息化教育,2020(01):75-80[2]孙永飞.基于ARM的RFID读卡器设计[D].南京理工大学,2007[3]赵大伟.基于RFID无线射频技术的一卡通控制系统设计与实现[D].齐鲁工业大学,2017[4]沈红卫.基于单片机的智能系统设计与实现[M].北京:电子工业出版社,2006[5]许守成.UHFRFID读写器的设计与实现[D].东南大学,2019[6]段华伟.无线射频识别技术(RFID)简述[J].智慧工厂,2019(01):59-62[7]刘莹.基于单片机控制的RFID读写器的设计与实现[J].电子技术与软件工程,2014(03):158-159[8]程冬冬.基于RFID和图像处理身份识别采集终端的研究与实现[D].河北工程大学,2011[9]陈明月.RFID无线射频识别技术在物联网的应用[J].信息与电脑(理论版),2019(13):174-175[10]孙天泽,袁文菊,付晓江.JS500磁卡解码芯片在嵌入式Linux系统中的编程[J].仪器仪表用户,2004(03):33-34[11]付龙,胡林林,彭海涛.基于STC89C52单片机和RFID的智能考勤系统的设计[J].仪表技术,2019(11):31-33[12]韩勇鹏,霍利锋.基于MSP430F169的最小系统设计[J].山西农业大学学报,2007(S2):216-218[13]杨会宝.基于51单片机的温度日期显示系统[J].信息化研究,2009,(4):61-63[14]单莹,刘旭儒,史仪凯.非接触式13.56MHz读卡器的设计[J].工业仪表与自动化装置,2010(03):27-29[15]陈保平,王月波,马伯元.基于MFRC522的Mifare射频卡读写模块开发[J].微计算机信息,2007(32):230-231[16]宋德杰.AT24C02在单片机中的应用[J].电子制作,2005(04):17-19[17]陶有军.矩阵键盘的一种简捷高效识别算法[J].单片机与嵌入式系统应用,2019,19(09):43-45[18]邓力.基于Keil时序逻辑和Proteus的电路仿真[J].实验室研究与探索,2017,36(01):80-83[19]侯美.基于keil4、Proteus和YL-236设备的单片机教学[J].数字通信世界,2020(04):226[20]WangMiao,YuanMing,WangChaoming,MaRuiting.AbieticacidencapsulatedSn-57Bialloynanoparticlesasoxidationresistantsoldermaterial[J].Elsevier,2020,602(prepublish)[21]王彩霞,谢兰清.万用表实操能力强化在电子实训教学过程中的作用研究[J].无线互联科技,2020,17(06):153-154附录1原理图

附录2源程序清单#include<reg52.h> //头文件#include<LCD12864.h>#include<AT24C02.h>#include<KEY.h>#include<MFRC522.h>#include<INTERRUPT.h>#defineucharunsignedchar //宏定义#defineuintunsignedint#defineMAX4//充值和刷卡最多4位数ucharmode=0;//0正常扣费,1进入管理,2管理界面,3注册模式,4撤销模式,5充值模式,6修改密码ucharmode_num=0;ucharg_ucTempbuf[4];//存储读回的数据ucharstatus;//存储操作是否成功,0表示成功ucharIC_num;//总存储的卡片数量ucharID[2];//存储卡号ucharii;//循环变量uintprice=0; //存储输入的金额ucharn=0; //输入的位数ucharTagType[2];//函数名称:voiddisplay_ID()//函数作用:显示感应区的ID号voiddisplay_ID(){ if(ID[0]!=0&&ID[1]!=0)//检测到正确的卡号 { LCD12864_display_char(3,2,ASCII[ID[0]/16]);//显示卡号 LCD12864_display_char(4,2,ASCII[ID[0]%16]); LCD12864_display_char(5,2,ASCII[ID[1]/16]); LCD12864_display_char(6,2,ASCII[ID[1]%16]); } }函数名称:bitchaxun()//函数作用:查询本次刷的卡是否存储参数说明:返回0表示没有,返回1表示有bitchaxun(){ ucharID2[2]; //用于读取存储的卡号 for(ii=0;ii<IC_num;ii++)//循环检测存储所有的IC卡号 { ID2[0]=AT24C02_read_date(ii*4); //先读取第一位 if(ID2[0]==ID[0]) //如果第一位匹配成功 { ID2[1]=AT24C02_read_date(ii*4+1);//读取第二位 if(ID2[1]==ID[1]) //如果匹配成功 return1; //返回1 } } return0; //没有完全匹配的返回0}函数名称:voidcunchu()//函数作用:存储卡voidcunchu(){ if(chaxun()) //先检测该卡是否存储 LCD12864_display_string(0,3,"该卡已经是会员卡"); else //未存储 { if(IC_num<50) //先判断目前卡是否存满 { AT24C02_write_date(IC_num*4,ID[0]); //存储卡号 AT24C02_write_date(IC_num*4+1,ID[1]); AT24C02_write_date(IC_num*4+2,0); AT24C02_write_date(IC_num*4+3,0); IC_num++; //卡数+1 AT24C02_write_date(210,IC_num); LCD12864_display_string(0,4,"会员卡总数:"); LCD12864_display_char(6,4,ASCII[IC_num/10]); LCD12864_display_char(7,4,ASCII[IC_num%10]); LCD12864_display_string(0,3,"会员注册成功");//以存储成功,提示操作成功 } else LCD12864_display_string(0,3,"存储已满");//以存储满,提示操作失败 } }函数名称:voidshanchu()//函数作用:删除卡voidshanchu(){ ucharID2[2]; if(chaxun()) //先检测该卡是否存储 { for(;ii<IC_num-1;ii++) //将所有的卡往前存储 { ID2[0]=AT24C02_read_date(4*ii+4); AT24C02_write_date(ii*4,ID2[0]); ID2[1]=AT24C02_read_date(4*ii+5); AT24C02_write_date(ii*4+1,ID2[1]); } IC_num--; //总卡数-1 AT24C02_write_date(IC_num*4,0); AT24C02_write_date(IC_num*4+1,0); AT24C02_write_date(IC_num*4+2,0); AT24C02_write_date(IC_num*4+3,0); AT24C02_write_date(210,IC_num); LCD12864_display_string(0,4,"会员卡总数:"); LCD12864_display_char(6,4,ASCII[IC_num/10]); LCD12864_display_char(7,4,ASCII[IC_num%10]); LCD12864_display_string(0,3,"注销成功");//删除成功,提示操作成功 } else LCD12864_display_string(0,3,"不是会员卡");//未存储过,提示操作失败 }函数名称:voidyu(uinttemp,ucharwei)//函数作用:显示一个五位数字参数说明:temp:显示数字,wei:显示在第几行voidyu(uinttemp,ucharwei){ ucharss[]="\0"; LCD12864_display_string(0,4,"余额:"); if(temp>9999) //将数字转换成字符数组,方便显示 { ss[0]=ASCII[temp/10000]; ss[1]=ASCII[temp%10000/1000]; ss[2]=ASCII[temp%1000/100]; ss[3]=ASCII[temp%100/10]; ss[4]=ASCII[temp%10]; } else if(temp>999) { ss[0]=ASCII[temp%10000/1000]; ss[1]=ASCII[temp%1000/100]; ss[2]=ASCII[temp%100/10]; ss[3]=ASCII[temp%10]; } else if(temp>99) { ss[0]=ASCII[temp%1000/100]; ss[1]=ASCII[temp%100/10]; ss[2]=ASCII[temp%10]; } else if(temp>9) { ss[0]=ASCII[temp%100/10]; ss[1]=ASCII[temp%10]; } else ss[0]=ASCII[temp%10]; LCD12864_display_string(3,wei,ss); }函数名称:voidchongzhi()//函数作用:充值卡voidchongzhi(){ uinttemp;//零时存储余额 if(chaxun()) //先检测该卡是否存储 { temp=AT24C02_read_date(ii*4+2); //读取余额 temp=temp*256+AT24C02_read_date(ii*4+3); if(price+temp>50000) //超额 LCD12864_display_string(0,3,"超出限额"); else { temp=price+temp; AT24C02_write_date(ii*4+2,temp/256); AT24C02_write_date(ii*4+3,temp%256); LCD12864_display_string(0,3,"充值成功"); } price=0; n=0; yu(temp,4); } else LCD12864_display_string(0,3,"非会员卡");//未存储过,提示操作失败 }函数名称:voidxiaofei()//函数作用:消费voidxiaofei(){ uinttemp;//零时存储余额 if(chaxun()) //先检测该卡是否存储 { temp=AT24C02_read_date(ii*4+2); temp=temp*256+AT24C02_read_date(ii*4+3); if(temp<price) LCD12864_display_string(0,3,"余额不足"); else { temp=temp-price; AT24C02_write_date(ii*4+2,temp/256); AT24C02_write_date(ii*4+3,temp%256); LCD12864_display_string(0,3,"扣费成功"); } price=0; n=0; yu(temp,4); } else { LCD12864_display_string(0,3,"非会员卡");//未存储过,提示操作失败 } }函数名称:voidmoeny()//函数作用:显示余额voidmoeny(){ uinttemp;//零时存储余额 if(chaxun()) //先检测该卡是否存储 { temp=AT24C02_read_date(ii*4+2); temp=temp*256+AT24C02_read_date(ii*4+3); yu(temp,4); } }函数名称:voidxunka()//函数作用:寻卡voidxunka(){ while(1) { status=PcdRequest(PICC_REQALL,g_ucTempbuf);//寻卡 if(status!=MI_OK) {break;} status=PcdAnticoll(g_ucTempbuf);//防冲撞 if(status!=MI_OK) {break;} T1_num=0; TR1=1; //开启定时器,12秒左右自动退出初始的界面 ID[0]=g_ucTempbuf[0]; //记录卡号 ID[1]=g_ucTempbuf[1]; LCD12864_display_string(0,2,"卡号:"); LCD12864_display_char(3,2,ASCII[ID[0]/16]); //显示卡号 LCD12864_display_char(4,2,ASCII[ID[0]%16]); LCD12864_display_char(5,2,ASCII[ID[1]/16]); LCD12864_display_char(6,2,ASCII[ID[1]%16]); status=PcdSelect(g_ucTempbuf);//选定卡片 if(status!=MI_OK) {break;} } }函数名称:voiddisplay_guanli()//函数作用:显示管理界面voiddisplay_guanli(){ LCD12864_display_string(0,1,"RFID管理系统"); LCD12864_display_string(0,2,"注册修改密码"); LCD12864_display_string(0,3,"注销退出管理"); LCD12864_display_string(0,4,"充值"); switch(mode_num) { case0:LCD12864_display_string(0,2,">>");break; case1:LCD12864_display_string(0,3,">>");break; case2:LCD12864_display_string(0,4,">>");break; case3:LCD12864_display_string(3,2,">>");break; case4:LCD12864_display_string(3,3,">>");break; default:break; }}函数名称:voidmain()//函数作用:主函数voidmain(){ uchari; a=keycan(); if(a==1) { for(i=0;i<214;i++) AT24C02_write_date(i,0); low_mima=0; } LCD12864_init(); //初始化LCD12864 T0_init(); PcdReset(); //复位RC522PcdAntennaOff(); //先关闭天线PcdAntennaOn(); //然后打开天线M500PcdConfigISOType('A');//配置RC522工作方式 low_mima=AT24C02_read_date(211); low_mima=low_mima*100+AT24C02_read_date(212); low_mima=low_mima*100+AT24C02_read_date(213); IC_num=AT24C02_read_date(210); //读取存储的总卡数LCD12864_display_string(0,1,"RFID消费系统");//显示初始界面 LCD12864_display_string(0,2,"卡号:"); LCD12864_display_string(0,3,"消费:元"); LCD12864_display_string(0,4,"余额:元"); while(1) { a=keycan(); //矩阵键盘检测 chuli(); //矩阵键盘处理 if(mode==2) display_guanli(); else if(mode==3) //注册卡 { xunka(); //寻找卡 if(ID[0]!=0&&ID[1]!=0)//检测到正确的卡号 { cunchu(); //执行存储操作 WaitCardOff();//等待卡离开天线 PcdHalt(); ID[0]=0; //清除卡号 ID[1]=0; } else { LCD12864_display_string(0,2,""); LCD12864_display_string(0,3,""); LCD12864_display_string(0,4,""); } } else if(mode==4) //注销卡 { xunka(); //寻找卡 if(ID[0]!=0&&ID[1]!=0)//检测到正确的卡号 { shanchu(); //执行删除操作 WaitCardOff();//等待卡离开天线 PcdHalt(); ID[0]=0; //清除卡号 ID[1]=0; } else { LCD12864_display_string(0,2,""); LCD12864_display_string(0,3,""); LCD12864_display_string(0,4,""); } } else if(mode==5) //充值 { xunka(); //寻找卡 if(ID[0]!=0&&ID[1]!=0)//检测到正确的卡号 { T1_num=0; TR1=1; moeny(); status=PcdRequest(PICC_REQALL,TagType); if(status)//等待卡离开天线 { status=PcdRequest(PICC_REQALL,TagType); if(status) { status=PcdRequest(PICC_REQALL,TagType); if(status) { LCD12864_display_string(0,2,"卡号:"); LCD12864_display_string(0,3,"充值:元"); LCD12864_display_string(0,4,"余额:元"); ID[0]=0; //清除卡号 ID[1]=0; n=0; price=0; PcdHalt(); } } } } } else if(mode==0&&in_f==0) //消费 { xunka(); //寻找卡 if(ID[0]!=0&&ID[1]!=0)//检测到正确的卡号 { T1_num=0; TR1=1; moeny(); status=PcdRequest(PICC_REQALL,TagType); if(status)//等待卡离开天线 { status=PcdRequest(PICC_REQALL,TagType); if(status) { status=PcdRequest(PICC_REQALL,TagType); if(status) { LCD12864_display_string(0,2,"卡号:"); LCD12864_display_string(0,3,"消费:元"); LCD12864_display_string(0,4,"余额:元"); ID[0]=0; //清除卡号 ID[1]=0; n=0; price=0;// price_f=1; PcdHalt(); } } } } } if(f==1) { f=0; num=0;//清除所有标志、计数 in_f=0; reset_f=0; input_f=0; reset_num=0; reset_f=0; TR1=0; n=0; write_com(0x01); //关闭定时 if(mode>=2) mode=2; else { mode=0; LCD12864_display_string(0,1,"RFID消费系统");//显示初始界面 LCD12864_display_string(0,2,"卡号:"); LCD12864_display_string(0,3,"消费:元"); LCD12864_display_string(0,4,"余额:元"); display_ID(); } } }}致谢在这次毕业设计中,首先我要感谢我的指导老师谢莹和冯雅丽老师。在本文的撰写过程中,得幸遇谢莹老师和冯雅丽老师,从开题报告到初稿及多次修改的定稿,都离不开谢莹老师和冯雅丽老师的指导与帮助。感谢这次疫情中最美的“逆行者”及所有疫情工作者,正是因为有你们,我才可以安心在家完成我的论文。感谢谢莹老师、冯雅丽老师在疫情期间仍一丝不苟逐字逐句审阅修改,并为本文给予了宝贵意见,本文才得以成型。这是我在沈阳城市学院所写的最后一篇论文,行文至此最后落笔之处,也意味着四年本科生涯即将闭幕。始于2016初秋,终于2020盛夏,时间转瞬即逝,入学之时恍如昨日,回首四年,百感交集。在这四年曾有过困顿、有过低落、有过未来的迷茫,但也有过坚定、有过认可与关怀。留下的青春和沉甸甸的收获。即有万般不舍,但仍心怀感激。经师易遇,人师难求。再次感谢四年来所有教导我的老师们,饮其流时思其源,成吾学时念吾师。谨此对自动化老师们一并表达谢意。感谢我的同窗三位舍友,感谢四年来对我的帮助与陪伴,在学习上给予鼓励与支持,在生活上帮助和开导。愿有前程可奔赴,亦有岁月共回首。其次感谢四年来所有帮助过我同学,在临别之际,祝大家前程似锦,未来可期。父母之爱子,则为之计深远。借此机会,特别感谢我的父母。二十余载求学之路,全乃父母默默付出。在对未来困惑时指点迷津并表示韶华不为少年留,支持继续深造学业。祝父母身体健康,再次感谢父母的无私付出与鼎力支持。冬季的黑暗尽管漫长,但永远遮挡不住黎明的曙光。纵然山河有恙,不敌世间盛情。春已至,花已开,国家泰安,祥和人间。在此最后向此次逆行者们致以最崇高的敬意,幸得有你,山河无恙。在撰写本文期间,深感祖国之强大,为祖国为骄傲,祝愿祖国繁荣昌盛,国泰民安!

电脑故障检测卡代码表

1、特殊代码"00"和"ff"及其它起始码有三种情况出现:

①已由一系列其它代码之后再出现:"00"或"ff",则主板ok。

②如果将cmos中设置无错误,则不严重的故障不会影响bios自检的继续,而最终出现"00"或"ff"。

③一开机就出现"00"或"ff"或其它起始代码并且不变化则为主板没有运行起来。

2、本表是按代码值从小到大排序,卡中出码顺序不定。

3、未定义的代码表中未列出。

4、对于不同bios(常用ami、award、phoenix)用同一代码代表的意义不同,因此应弄清您所检测的电脑是属于哪一种类型的bios,您可查阅您的电脑使用手册,或从主板上的bios芯片上直接查看,也可以在启动屏幕时直接看到。

5、有少数主板的pci槽只有一部分代码出现,但isa槽有完整自检代码输出。且目前已发现有极个别原装机主板的isa槽无代码输出,而pci槽则有完整代码输出,故建议您在查看代码不成功时,将本双槽卡换到另一种插槽试一下。另外,同一块主板的不同pci槽,有的槽有完整代码送出,如dell810主板只有靠近cpu的一个pci槽有完整代码显示,一直变化到"00"或"ff",而其它pci槽走到"38"后则不继续变化。

6、复位信号所需时间isa与pci不一定同步,故有可能isa开始出代码,但pci的复位灯还不熄,故pci代码停要起始代码上。

代码对照表

00.已显示系统的配置;即将控制INI19引导装入。

01处理器测试1,处理器状态核实,如果测试失败,循环是无限的。处理器寄存器的测试即将开始,不可屏蔽中断即将停用。CPU寄存器测试正在进行或者失败。

02确定诊断的类型(正常或者制造)。如果键盘缓冲器含有数据就会失效。停用不可屏蔽中断;通过延迟开始。CMOS写入/读出正在进行或者失灵。

03清除8042键盘控制器,发出TESTKBRD命令(AAH)通电延迟已完成。ROMBIOS检查部件正在进行或失灵。

04使8042键盘控制器复位,核实TESTKBRD。键盘控制器软复位/通电测试。可编程间隔计时器的测试正在进行或失灵。

05如果不断重复制造测试1至5,可获得8042控制状态。已确定软复位/通电;即将启动ROM。DMA初如准备正在进行或者失灵。

06使电路片作初始准备,停用视频、奇偶性、DMA电路片,以及清除DMA电路片,所有页面寄存器和CMOS停机字节。已启动ROM计算ROMBIOS检查总和,以及检查键盘缓冲器是否清除。DMA初始页面寄存器读/写测试正在进行或失灵。

07处理器测试2,核实CPU寄存器的工作。ROMBIOS检查总和正常,键盘缓冲器已清除,向键盘发出BAT(基本保证测试)命令。.

08使CMOS计时器作初始准备,正常的更新计时器的循环。已向键盘发出BAT命令,即将写入BAT命令。RAM更新检验正在进行或失灵。

09EPROM检查总和且必须等于零才通过。核实键盘的基本保证测试,接着核实键盘命令字节。第一个64KRAM测试正在进行。

0A使视频接口作初始准备。发出键盘命令字节代码,即将写入命令字节数据。第一个64KRAM芯片或数据线失灵,移位。

0B测试8254通道0。写入键盘控制器命令字节,即将发出引脚23和24的封锁/解锁命令。第一个64KRAM奇/偶逻辑失灵。

0C测试8254通道1。键盘控制器引脚23、24已封锁/解锁;已发出NOP命令。第一个64KRAN的地址线故障。

0D1、检查CPU速度是否与系统时钟相匹配。2、检查控制芯片已编程值是否符合初设置。3、视频通道测试,如果失败,则鸣喇叭。已处理NOP命令;接着测试CMOS停开寄存器。第一个64KRAM的奇偶性失灵

0E测试CMOS停机字节。CMOS停开寄存器读/写测试;将计算CMOS检查总和。初始化输入/输出端口地址。

0F测试扩展的CMOS。已计算CMOS检查总和写入诊断字节;CMOS开始初始准备。.

10测试DMA通道0。CMOS已作初始准备,CMOS状态寄存器即将为日期和时间作初始准备。第一个64KRAM第0位故障。

11测试DMA通道1。CMOS状态寄存器已作初始准备,即将停用DMA和中断控制器。第一个64DKRAM第1位故障。

12测试DMA页面寄存器。停用DMA控制器1以及中断控制器1和2;即将视频显示器并使端口B作初始准备。第一个64DKRAM第2位故障。

13测试8741键盘控制器接口。视频显示器已停用,端口B已作初始准备;即将开始电路片初始化/存储器自动检测。第一个64DKRAM第3位故障。

14测试存储器更新触发电路。电路片初始化/存储器处自动检测结束;8254计时器测试即将开始。第一个64DKRAM第4位故障。

15测试开头64K的系统存储器。第2通道计时器测试了一半;8254第2通道计时器即将完成测试。第一个64DKRAM第5位故障。

16建立8259所用的中断矢量表。第2通道计时器测试结束;8254第1通道计时器即将完成测试。第一个64DKRAM第6位故障。

17调准视频输入/输出工作,若装有视频BIOS则启用。第1通道计时器测试结束;8254第0通道计时器即将完成测试。第一个64DKRAM第7位故障。

18测试视频存储器,如果安装选用的视频BIOS通过,由可绕过。第0通道计时器测试结束;即将开始更新存储器。第一个64DKRAM第8位故障。

19测试第1通道的中断控制器(8259)屏蔽位。已开始更新存储器,接着将完成存储器的更新。第一个64DKRAM第9位故障。

1A测试第2通道的中断控制器(8259)屏蔽位。正在触发存储器更新线路,即将检查15微秒通/断时间。第一个64DKRAM第10位故障。

1B测试CMOS电池电平。完成存储器更新时间30微秒测试;即将开始基本的64K存储器测试。第一个64DKRAM第11位故障。

1C测试CMOS检查总和。.第一个64DKRAM第12位故障。

1D调定CMOS配置。.第一个64DKRAM第13位故障。

1E测定系统存储器的大小,并且把它和CMOS值比较。.第一个64DKRAM第14位故障。

1F测试64K存储器至最高640K。.第一个64DKRAM第15位故障。

20测量固定的8259中断位。开始基本的64K存储器测试;即将测试地址线。从属DMA寄存器测试正在进行或失灵。

21维持不可屏蔽中断(NMI)位(奇偶性或输入/输出通道的检查)。通过地址线测试;即将触发奇偶性。主DMA寄存器测试正在进行或失灵。

22测试8259的中断功能。结束触发奇偶性;将开始串行数据读/写测试。主中断屏蔽寄存器测试正在进行或失灵。

23测试保护方式8086虚拟方式和8086页面方式。基本的64K串行数据读/写测试正常;即将开始中断矢量初始化之前的任何调节。从属中断屏蔽存器测试正在进行或失灵。

24测定1MB以上的扩展存储器。矢量初始化之前的任何调节完成,即将开始中断矢量的初始准备。设置ES段地址寄存器注册表到内存高端。

25测试除头一个64K之后的所有存储器。完成中断矢量初始准备;将为旋转式断续开始读出8042的输入/输出端口。装入中断矢量正在进行或失灵。

26测试保护方式的例外情况。读出8042的输入/输出端口;即将为旋转式断续开始使全局数据作初始准备。开启A20地址线;使之参入寻址。

27确定超高速缓冲存储器的控制或屏蔽RAM。全1数据初始准备结束;接着将进行中断矢量之后的任何初始准备。键盘控制器测试正在进行或失灵。

28确定超高速缓冲存储器的控制或者特别的8042键盘控制器。完成中断矢量之后的初始准备;即将调定单色方式。CMOS电源故障/检查总和计算正在进行。

29.已调定单色方式,即将调定彩色方式。CMOS配置有效性的检查正在进行。

2A使键盘控制器作初始准备。已调定彩色方式,即将进行ROM测试前的触发奇偶性。置空64K基本内存。

2B使磁碟驱动器和控制器作初始准备。触发奇偶性结束;即将控制任选的视频ROM检查前所需的任何调节。屏幕存储器测试正在进行或失灵。

2C检查串行端口,并使之作初始准备。完成视频ROM控制之前的处理;即将查看任选的视频ROM并加以控制。屏幕初始准备正在进行或失灵。

2D检测并行端口,并使之作初始准备。已完成任选的视频ROM控制,即将进行视频ROM回复控制之后任何其他处理的控制。屏幕回扫测试正在进行或失灵。

2E使硬磁盘驱动器和控制器作初始准备。从视频ROM控制之后的处理复原;如果没有发现EGA/VGA就要进行显示器存储器读/写测试。检测视频ROM正在进行。

2F检测数学协处理器,并使之作初始准备。没发现EGA/VGA;即将开始显示器存储器读/写测试。.

30建立基本内存和扩展内存。通过显示器存储器读/写测试;即将进行扫描检查。认为屏幕是可以工作的。

31检测从C800:0至EFFF:0的选用ROM,并使之作初始准备。显示器存储器读/写测试或扫描检查失败,即将进行另一种显示器存储器读/写测试。单色监视器是可以工作的。

32对主板上COM/LTP/FDD/声音设备等I/O芯片编程使之适合设置值。通过另一种显示器存储器读/写测试;却将进行另一种显示器扫描检查。彩色监视器(40列)是可以工作的。

33.视频显示器检查结束;将开始利用调节开关和实际插卡检验显示器的关型。彩色监视器(80列)是可以工作的。

34.已检验显示器适配器;接着将调定显示方式。计时器滴答声中断测试正在进行或失灵。35.完成调定显示方式;即将检查BIOSROM的数据区。停机测试正在进行或失灵。

36.已检查BIOSROM数据区;即将调定通电信息的游标。门电路中A-20失灵。

37.识别通电信息的游标调定已完成;即将显示通电信息。保护方式中的意外中断。

38.完成显示通电信息;即将读出新的游标位置。RAM测试正在进行或者地址故障>FFFFH。

39.已读出保存游标位置,即将显示引用信息串。.

3A.引用信息串显示结束;即将显示发现信息。间隔计时器通道2测试或失灵。

3B用OPTI电路片(只是486)使辅助超高速缓冲存储器作初始准备。已显示发现<ESC>信息;虚拟方式,存储器测试即将开始。按日计算的日历时钟测试正在进行或失灵。

3C建立允许进入CMOS设置的标志。.串行端口测试正在进行或失灵。

3D初始化键盘/PS2鼠标/PNP设备及总内存节点。.并行端口测试正在进行或失灵。

3E尝试打开L2高速缓存。.数学协处理器测试正在进行或失灵。

40.已开始准备虚拟方式的测试;即将从视频存储器来检验。调整CPU速度,使之与外围时钟精确匹配。

41中断已打开,将初始化数据以便于0:0检测内存变换(中断控制器或内存不良)从视频存储器检验之后复原;即将准备描述符表。系统插件板选择失灵。

42显示窗口进入SETUP。描述符表已准备好;即将进行虚拟方式作存储器测试。扩展CMOSRAM故障。

43若是即插即用BIOS,则串口、并口初始化。进入虚拟方式;即将为诊断方式实现中断。.44.已实现中断(如已接通诊断开关;即将使数据作初始准备以检查存储器在0:0返转。)BIOS中断进行初始化。

45初始化数学协处理器。数据已作初始准备;即将检查存储器在0:0返转以及找出系统存储器的规模。.

46.测试存储器已返回;存储器大小计算完毕,即将写入页面来测试存储器。检查只读存储器ROM版本。

47.即将在扩展的存储器试写页面;即将基本640K存储器写入页面。

48.已将基本存储器写入页面;即将确定1MB以上的存储器。视频检查,CMOS重新配置。

49.找出1BM以下的存储器并检验;即将确定1MB以上的存储器。.

4A.找出1MB以上的存储器并检验;即将检查BIOSROM数据区。进行视频的初始化。

4B.BIOSROM数据区的检验结束,即将检查<ESC>和为软复位清除1MB以上的存储器。.4C.清除1MB以上的存储器(软复位)即将清除1MB以上的存储器.屏蔽视频BIOSROM。.4D。已清除1MB以上的存储器(软复位);将保存存储器的大小。.

4E若检测到有错误;在显示器上显示错误信息,并等待客户按<F1>键继续。开始存储器的测试:(无软复位);即将显示第一个64K存储器的测试。显示版权信息。

4F读写软、硬盘数据,进行DOS引导。开始显示存储器的大小,正在测试存储器将使之更新;将进行串行和随机的存储器测试。.

50将当前BIOS监时区内的CMOS值存到CMOS中。完成1MB以下的存储器测试;即将高速存储器的大小以便再定位和掩蔽。将CPU类型和速度送到屏幕。

51.测试1MB以上的存储器。.

52所有ISA只读存储器ROM进行初始化,最终给PCI分配IRQ号等初始化工作。已完成1MB以上的存储器测试;即将准备回到实址方式。进入键盘检测。

53如果不是即插即用BIOS,则初始化串口、并口和设置时种值。保存CPU寄存器和存储器的大小,将进入实址方式。.

54.成功地开启实址方式;即将复原准备停机时保存的寄存器。扫描“打击键”

55.寄存器已复原,将停用门电路A-20的地址线。.

56.成功地停用A-20的地址线;即将检查BIOSROM数据区。键盘测试结束。

57.BIOSROM数据区检查了一半;继续进行。.

58.BIOSROM的数据区检查结束;将清除发现<ESC>信息。非设置中断测试。

59.已清除<ESC>信息;信息已显示;即将开始DMA和中断控制器的测试。.

5A..显示按“F2”键进行设置。

5B..测试基本内存地址。

5C..测试640K基本内存。

60设置硬盘引导扇区病毒保护功能。通过DMA页面寄存器的测试;即将检验视频存储器。测试扩展内存。

61显示系统配置表。视频存储器检验结束;即将进行DMA#1基本寄存器的测试。.

62开始用中断19H进行系统引导。通过DMA#1基本寄存器的测试;即将进行DMA#2寄存器的测试。测试扩展内存地址线。

63.通过DMA#2基本寄存器的测试;即将检查BIOSROM数据区。.

64.BIOSROM数据区检查了一半,继续进行。.

65.BIOSROM数据区检查结束;将把DMA装置1和2编程。.

66.DMA装置1和2编程结束;即将使用59号中断控制器作初始准备。Cache注册表进行优化配置。

67.8259初始准备已结束;即将开始键盘测试。.

68..使外部Cache和CPU内部Cache都工作。

6A..测试并显示外部Cache值。

6C..显示被屏蔽内容。

6E..

温馨提示

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

评论

0/150

提交评论