智能ic卡读写的课程设计
- 格式:doc
- 大小:948.66 KB
- 文档页数:27
IC卡读写电路的设计及编程摘要接触式IC卡具有结构简单、成本低廉等优点,因此在我们的生活中还有着非常广泛的应用。
本系统就以德国SIMENS(西门子)公司设计的逻辑加密存储卡SLE4442作为主要研究对象,然后围绕其应用中的周边电路及设备进行讨论。
从硬件和软件两个方面来对系统分别进行设计,最后再对系统的软硬件进行优化,以实现软硬件的完美结合。
完成其功能要求。
首先,本文对IC卡的由来、发展历史、现状以及未来的发展方向进行了简要的介绍。
其次,本文叙述了单片机系统的基本组成以及其工作原理,并介绍了由单片机构成的系统的优点。
再次,讨论了接触式IC卡读写电路实现的基本方法,分析了它的工作原理,并且给出了其实现的具体电路以及IC卡读写电路的软件设计方法。
最后,在附录中,本文还将给出一些必要的系统设计资料,供参考之用。
关键词:IC卡,单片机,射频卡,读写器The IC card reads and writes design and programming of the circuitAuthor : Ma YinshengTutor : Zhang YuxiangAbstractThe contact-type IC card has advantage of simple structure, and the cost is cheap, so there is very extensive application in our life. This system encrypts the storage card SLE4442 as the main research object with the logic that Germany SIMENS Company designs, then organize discussion around peripheral circuit and apparatus in its application. Design the system respectively from hardware and software two respects, optimize the software and hardware of the system afterwards, in order to realize the perfect combination of the software and hardware. Finish its function's requiring.First of all, this text has introduced the brief one to the origin, developing history, current situation and future developing direction of the IC card.Secondly, this text has narrated basic composition of the one-chip computer system and its operation principle, have introduced the advantage of the system become by the single organization.Moreover, it is discussed that the contact-type IC card reads and writes the basic tool that the circuit realizes, has analyzed its operation principle, and concrete circuit and IC card providing its realization read and write the software design method of the circuit.Finally, in the appendix, this text will also provide some essential systems and design the materials, for reference.Key words: IC card, One-chip computer, The radio frequency IC card, Reading and writing device目录1 绪论 (1)1.1 课题背景介绍 (1)1.2 课题研究状况 (1)1.3 课题研究方法 (2)2 设计方案论证 (3)2.1 设计方案论述 (3)2.1.1 由微机实现的IC卡读写电路 (3)2.1.2 由单片机实现的IC卡读写电路 (4)2.2 元器件介绍 (5)2.2.1 AT89S51介绍 (5)2.2.2 SLE4442介绍 (6)2.3 设计方案确定 (9)3 系统硬件设计 (10)3.1 IC卡读写电路介绍 (10)3.1.1 IC卡读写电路的分类 (10)3.1.2 IC卡读写电路的组成 (12)3.2 IC卡读写电路设计 (14)3.2.1 IC卡接口及供电电路设计 (14)3.2.2 单片机处理与控制单元设计 (16)3.2.3 键盘显示电路设计 (17)4 系统软件设计 (19)4.1 IC卡接口电路程序设计 (19)4.1.1 IC卡的插入识别程序设计 (19)4.1.2 IC卡上下电控制程序设计 (20)4.2 IC卡的读写控制程序设计 (22)4.2.1 IC卡的数据读出程序设计 (22)4.2.2 IC卡的数据写入程序设计 (25)4.3 外围辅助电路程序设计 (26)4.3.1 键盘电路程序设计 (26)4.3.2 显示电路程序设计 (27)结论 (29)致谢 (30)参考文献 (31)附录IC卡读写电路硬件电路图 (32)1 绪论1.1 课题背景介绍在当今社会,各种各样的IC卡已经成为了人们生活中不可缺少的一部分,从早期的IC电话卡到现在已经应用非常广泛的手机IC(SIM)卡,而这些IC卡的广泛应用,离不开各种各样的IC卡读写设备的支持,IC卡读写电路的作用就是完成IC卡与应用设备之间的信息的交换。
目录绪论 (2)1、IC卡技术概论 (3)1.1、概述 (3)1.2、身份识别技术概述 (4)2、指纹识别技术 ........... 错误!未定义书签。
2.1、指纹识别技术概述 .. 错误!未定义书签。
2.2、指纹识别技术应用 (5)3、设计 (5)3.1、系统结构及工作过程 (5)3.2、芯片电路原理 (7)3.3、数据结构与通信方式错误!未定义书签。
3.4、芯片版图设计 (9)4、应用 (9)4.1、智能大厦管理系统 .. 错误!未定义书签。
4.2、门禁系统 .......... 错误!未定义书签。
5、心得体会................ 错误!未定义书签。
6、元器件清单.............. 错误!未定义书签。
绪论IC卡(Integrated Circuit Card,集成电路卡),有些国家和地区也称智能卡、智慧卡、微电路卡或微芯片卡等。
它是将一个微电子芯片嵌入符合ISO 7816标准的卡基中,做成卡片形式。
IC卡读写器是IC 卡与应用系统间的桥梁,在ISO国际标准中称之为接口设备IFD。
IFD内CPU通过一个接口电路与IC卡相连并进行通信。
IC卡接口电路是IC卡读写器中至关重要的部分,根据实际应用系统的不同,可选择并行通信、半双工串行通信和I2C通信等不同的IC卡读写芯片。
非接触式IC卡又称射频卡。
IC卡是继磁卡之后出现的又一种新型信息工具。
IC卡是指集成电路卡,一般用的公交车卡就是IC卡的一种,一般常见的IC卡采用射频技术与IC卡的读卡器进行通讯。
IC卡与磁卡是有区别的,IC卡是通过卡里的集成电路存储信息,而磁卡是通过卡内的磁力记录信息。
IC 卡的成本一般比磁卡高,但保密性更好。
非接触式IC 卡又称射频卡,成功地解决了无源(卡中无电源)和免接触这一难题,是电子器件领域的一大突破。
主要用于公交、轮渡、地铁的自动收费系统,也应用在门禁管理、身份证明和电子钱包。
本文介绍了非接触式指纹IC卡身份认证系统的设计与开发,详细分析了系统的原理,相关算法的设计和软硬件的实现。
南京工程学院课程设计课程名称单片机原理及应用B 课题名称IC卡读写器设计院(系、部、中心)通信工程学院专业通信工程班级姓名学号起止日期设计地点微机原理与单片机实验室指导老师岳俊生水恒华单片机原理及应用B摘要IC卡在现代生活中应用非常广泛,IC卡读写器的设计方法有多种,其中,利用单片机外接芯片实现的IC卡读写器具有编程灵活,便于IC卡读写器功能的扩充,运算存储方便等优点。
本文主要介绍用单片机外接24C16EEPROM的方法,利用键盘对24C16进行模拟充值的方法。
本设计由单片机P89V51RD2芯片、24C16EEPROM和LCD液晶显示为核心,辅以必要的电路,构成了一个IC卡读写器,使用起来很方便此IC卡读写器严格按照要求设计,最终达到预期的效果,并且添加了进行挂失,修改密码,低值报警,透支报警等相关功能。
关键词IC卡读写器/单片机 /C51编程The Principle and Applicationof Single Chip MicrocomputerABSTRACTIC card is widely used in modern life。
There are a variety of IC card reader design methods, which use an external chip microcontroller IC card reader with programming flexibility, ease of expansion IC card reader function, operation and easy storage。
This paper describes a method 24C16EEPROM external MCU, using the keyboard to simulate 24C16 recharge methods.Designed by the MCU chip P89V51RD2, 24C16EEPROM and LCD display as the core, supplemented by the necessary circuitry, constitute an IC card reader, easy to use。
基于单片机的IC卡读写系统实验目的:1.学会并掌握可keil软件的使用;2.学会并掌握protues软件的使用;3.实现基于单片机的IC卡读写;4.通过实验巩固单片机相关知识和检验自身动手能力实验要求:掌握单片机相关知识,利用单片机控制和射频模块组合来读写IC卡,并实现软硬件的仿真模拟。
lC卡读卡器以MCS-51系列单片机作为核心构成,主要用于家庭和机构门锁的开关,具有安全稳定的特点,在识别,删除,添加,自动开锁时,用于对IC卡进行读写操作。
实验设备和仪器:1.89c51单片机最小系统2.射频模块RC522,智能IC卡以及其他附加电路实验内容:本次实验设计是由小组五个成员共同完成基于单片机的IC卡读写系统并完成实物搭建和撰写实验报告。
方案一:实验步骤:1.利用protues画电路图,电路图如图1所示:图1:方案一电路图2.模拟刷卡后显示,如图二:图2:方案一实现图3.根据电路图编写C语言代码:代码如下:#include "reg52.h"#include "main.h"#include "mfrc522.h"#include <string.h>#include "LCD1602.h"#include "DS1302.h"#define uchar unsigned char#define uint unsigned intsbit Speak = P2^7;//蜂鸣器sbit RED = P3^4; //红色指示灯sbit GREEN = P3^3;//绿色指示灯sbit Relay = P3^2; //继电器sbit KEY1 = P1^3;//小时加按键sbit KEY2 = P1^4; //小时减按键sbit KEY3 = P1^5; //分钟加按键sbit KEY4 = P1^6; //分钟减按键sbit KEY5 = P1^7; //添加删除卡sbit KEY = P2^6; //开门unsigned char idata RevBuffer[30];unsigned char Card_Num;void iccardcode();//系统初始化void InitializeSystem()//IC卡初始化{PcdReset(); //IC卡初始化PcdAntennaOff(); //IC卡初始化PcdAntennaOn(); //IC卡初始化M500PcdConfigISOType( 'A' );//IC卡初始化}unsigned char idata UID[4],Temp[4];//读取卡号数组unsigned char Table[3];//显示数组unsigned char Num;unsigned char Count,Countf,Count1,Count2,Count3,Count4,Count5,C_flag;//卡序号void Auto_Reader(void) //自动寻卡{if(PcdRequest(0x52,Temp)==0) //找到卡{if(PcdAnticoll(UID)==0){Speak=0;delay_10ms(20);Speak=1;//蜂鸣器提示Table[0]=UID[0]/100+0x30; //卡号显示Table[1]=UID[0]/10%10+0x30; //卡号显示Table[2]=UID[0]%10+0x30; //卡号显示LCD1602_Disp_ZF(0x80+0x40,"Num: ",16); //卡号显示LCD1602_Disp_ZF(0x84+0x40,Table,3); //卡号显示Count = UID[0]; //判断卡是不是有效if((Count==Count1)||(Count==Count2)||(Count==Count3)||(Count==Cou nt4)||(Count==Count5)){LCD1602_Disp_ZF(0x88+0x40,"Welcome",7); //卡有效GREEN = 0;Relay=0;delay_10ms(200);Relay=1;GREEN = 1; //绿灯亮,打开继电器C_flag=1;}else{LCD1602_Disp_ZF(0x88+0x40,"Error ",7);//卡无效RED = 0;delay_10ms(500);RED = 1; //红灯亮C_flag=2;}delay_10ms(200);LCD1602_Disp_ZF(0x80+0x40,"Please Swipecard",16);//显示初始界面}}}uchar DS1302_Table[7]={0}; //读取时间值void Display_LCD2(uchar Dis_Hour,uchar Dis_Min,uchar Dis_Sec)//显示时间值{uchar Dis_Table[8]="11:22:33";Dis_Table[0] = Dis_Hour/10+0x30;Dis_Table[1] = Dis_Hour%10+0x30;Dis_Table[3] = Dis_Min/10+0x30;Dis_Table[4] = Dis_Min%10+0x30;Dis_Table[6] = Dis_Sec/10+0x30;Dis_Table[7] = Dis_Sec%10+0x30;LCD1602_Disp_ZF(0x85,Dis_Table,8);//显示时间值}void Run_DS1302(void){uchar sec, min, hour, day, month, week, year;v_W1302(0x8f, 0);sec = bcdtodec(uc_R1302(0x81)); //读出DS1302中的秒v_W1302(0x8f, 0);min = bcdtodec(uc_R1302(0x83)); //读出DS1302中的分v_W1302(0x8f, 0);hour = bcdtodec(uc_R1302(0x85)); //读出DS1302中的小时v_W1302(0x8f, 0);day = bcdtodec(uc_R1302(0x87)); //读出DS1302中的日v_W1302(0x8f, 0);month = bcdtodec(uc_R1302(0x89)); //读出DS1302中的月v_W1302(0x8f, 0);week = bcdtodec(uc_R1302(0x8b)); //读出DS1302中的星期v_W1302(0x8f, 0);year = bcdtodec(uc_R1302(0x8d)); //读出DS1302中的年DS1302_Table[0]=year;DS1302_Table[1]=month;DS1302_Table[2]=day;DS1302_Table[3]=week;DS1302_Table[4]=hour;DS1302_Table[5]=min;DS1302_Table[6]=sec;Display_LCD2(DS1302_Table[4],DS1302_Table[5],DS1302_Table[6]);//显示时间值}void main(void){InitializeSystem();LCD1602_init();//Money_1=x24c02_read(0X01);//x24c02_write(0X03,Money_3);LCD1602_Disp_ZF(0x80,"Time:",5);//0123456789abcdefLCD1602_Disp_ZF(0x80+0x40,"Please Swipecard",16);//LCD1602_Disp_ZF(0x80+0x40,"Num:",4);//ISP_ERASE(0x2c00); //注意:字节编程时必须要先要擦除整个扇区//for(i=0;i<255;i++)// ISP_PROGRAM(0x2c00+i, 0x00);while (1){//////////////////////////if(!KEY){Speak=0;delay_10ms(20);Speak=1;//蜂鸣器提示LCD1602_Disp_ZF(0x88+0x40,"Welcome",7); //卡有效GREEN = 0;Relay=0;delay_10ms(200);Relay=1;GREEN = 1; //绿灯亮,打开继电器delay_10ms(200);LCD1602_Disp_ZF(0x80+0x40,"Please Swipecard",16);//显示初始界面}Run_DS1302(); //时间显示//delay_10ms(200);if(!KEY1) //调节小时加{delay_10ms(50);if(!KEY1) //调节小时加{DS1302_Table[4]++; //调节小时加Write_DS1302Init(0,0,0,0,DS1302_Table[4],DS1302_Table[5],0); //调节小时加}}if(!KEY2) //调节小时减{delay_10ms(50);if(!KEY2) //调节小时减{ //调节小时减DS1302_Table[4]--; //调节小时减Write_DS1302Init(0,0,0,0,DS1302_Table[4],DS1302_Table[5],0);//调节小时减}}//////////////////////////////////if(!KEY3) //调节分钟加{delay_10ms(50); //调节分钟加if(!KEY3){DS1302_Table[5]++; //调节分钟加Write_DS1302Init(0,0,0,0,DS1302_Table[4],DS1302_Table[5],0); //调节分钟加}}if(!KEY4) //调节分钟减{delay_10ms(50); //调节分钟减if(!KEY4) //调节分钟减{DS1302_Table[5]--; //调节分钟减Write_DS1302Init(0,0,0,0,DS1302_Table[4],DS1302_Table[5],0); //调节分钟减}}if(!KEY5) //添加删除卡{delay_10ms(50);if(!KEY5) //添加删除卡{if(C_flag==2) //添加卡{//0123456789abcdefLCD1602_Disp_ZF(0x80+0x40," Register Card! ",16);Countf++;if(Countf==6)Countf=1;if(Countf==1) Count1 = Count;//记忆卡号if(Countf==2) Count2 = Count; //记忆卡号if(Countf==3) Count3 = Count; //记忆卡号if(Countf==4) Count4 = Count; //记忆卡号if(Countf==5) Count5 = Count;//记忆卡号}if(C_flag==1)//删除卡{//0123456789abcdefLCD1602_Disp_ZF(0x80+0x40," Clean Card! ",16);if(Count==Count1)Count1=0;//删除卡号if(Count==Count2)Count2=0; //删除卡号if(Count==Count3)Count3=0; //删除卡号if(Count==Count4)Count4=0; //删除卡号if(Count==Count5)Count5=0; //删除卡号}Speak=0;delay_10ms(200);Speak=1;LCD1602_Disp_ZF(0x80+0x40,"Please Swipecard",16);C_flag =0;while(!KEY5);}}//////////////////////}}void iccardcode(){unsigned char cmd;unsigned char status;cmd = RevBuffer[0];switch(cmd){case 1: // Halt the card //终止卡的操作status= PcdHalt();;RevBuffer[0]=1;RevBuffer[1]=status;break;case 2: // Request,Anticoll,Select,return CardType(2 bytes)+CardSerialNo(4 bytes)// 寻卡,防冲突,选择卡返回卡类型(2 bytes)+ 卡系列号(4 bytes)status= PcdRequest(RevBuffer[1],&RevBuffer[2]);if(status!=0){status= PcdRequest(RevBuffer[1],&RevBuffer[2]);if(status!=0){RevBuffer[0]=1;RevBuffer[1]=status;break;}}RevBuffer[0]=3;RevBuffer[1]=status;break;case 3: // 防冲突读卡的系列号MLastSelectedSnrstatus = PcdAnticoll(&RevBuffer[2]);if(status!=0){RevBuffer[0]=1;RevBuffer[1]=status;break;}//memcpy(MLastSelectedSnr,&RevBuffer[2],4);RevBuffer[0]=5;RevBuffer[1]=status;break;case 4: // 选择卡 Select Card//status=PcdSelect(MLastSelectedSnr);if(status!=MI_OK){RevBuffer[0]=1;RevBuffer[1]=status;break;}RevBuffer[0]=3;RevBuffer[1]=status;break;case 5: // Key loading into the MF RC500's EEPROM//status = PcdAuthState(RevBuffer[1], RevBuffer[3], DefaultKey, MLastSelectedSnr);// 校验卡密码RevBuffer[0]=1;RevBuffer[1]=status;break;case 6:RevBuffer[0]=1;RevBuffer[1]=status;break;case 7:RevBuffer[0]=1;RevBuffer[1]=status;break;case 8: // Read the mifare card// 读卡status=PcdRead(RevBuffer[1],&RevBuffer[2]);if(status==0){RevBuffer[0]=17;}else{RevBuffer[0]=1;}RevBuffer[1]=status;break;case 9: // Write the mifare card// 写卡下载密码status=PcdWrite(RevBuffer[1],&RevBuffer[2]);RevBuffer[0]=1;RevBuffer[1]=status;break;case 10:PcdValue(RevBuffer[1],RevBuffer[2],&RevBuffer[3]);RevBuffer[0]=1;RevBuffer[1]=status;break;case 12: // 参数设置PcdBakValue(RevBuffer[1], RevBuffer[2]);RevBuffer[0]=1; //contactRevBuffer[1]=0;break;}}4.实物验证结果如图4所示:图4:实物验证结果实物验证可以实现IC卡的读写,由于每个开发板不同,相比仿真程序,对实物验证程序进行了略微的修改,最小系统的LCD1602口不能使用使用外接杜邦线,为了稳定最终选择重新字节焊接板子,最终能达到要求。
基于51单片机的智能IC卡读写器设计本IC卡读写器是以51单片机为核心展开设计。
该单片机是一种低功耗,高性能的8为CMOS型单片机,片内带有可读存储器,片上的PEROM允许在线对程序存储器重新编程。
它具有如下主要的能特点:1、工作电压范围4.2—5V2、256*8位内部RAM3、32条可编程IO口线4、3个可工作于4重模式的16位定时计数器5、6个中断源两个中断优先级6、具有四种工作模式的全双工串行口,可编程串行中断7、低功耗的待机工作模式和掉电工作模式。
IC卡座引脚在8个引脚中,VCC的工作电压为2.5到5V低电压供电。
SCL与SDA是IC卡上与逻辑控制有关的引出端线。
其中,SCL为串行时钟,所有的地址数据及读写控制命令等信号均从SDA端输入输出。
引脚T.P为微动开关的两个触点,此开关在无IC卡状态,处于断开状态,有卡插入时,IC卡插座上得微动开关闭合。
因此,此开关往往是用来判断是否插入IC卡的传感器件。
IC卡座引脚分布(1)单片机的信号通过小功率三极管9012控制系统的5V电源切入IC卡座,如果IC卡上电,则发光二极管被点亮,起读写指示作用。
每次对IC卡读写完成后,便及时下电,以减少插拔时带电的可能性。
(2)为了保证任意拔插IC卡时,IC卡处于断电状态,本读写器将IC卡的拔卡处理设计成由最高级中断程序来实现,且采用边沿触发方式。
同时,利用IC卡座的IC卡微动检测开关及时检测拔卡动作。
为了避免机械触点开关在动合过程中抖动而引起中断重入,甚至引起系统死机。
IC卡工作的基本原理是:射频读写器向IC卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与读写器发射的频率相同,这样在电磁波激励下,LC谐振电路产生共振,从而使电容内有了电荷;在这个电荷的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内存储,当所积累的电荷达到2V时,此电容可作为电源为其它电路提供工作电压,将卡内数据发射出去或接受读写器的数据。
智能卡技术IC卡与RFID标签第三版课程设计一、课程设计简介本课程设计是基于智能卡技术IC卡与RFID标签进行开发与设计的。
本课程设计旨在让学生通过实践操作,深入了解智能卡技术IC卡与RFID标签的原理和运用,提高学生综合应用优化设计与管理能力。
二、课程设计思路2.1 课程教学目标本课程设计主要是帮助学生掌握智能卡技术IC卡与RFID标签操作及应用,掌握智能卡制卡、读写操作、存储等基本原理,以及RFID标签的应用场景、识别距离、标签类型等基本知识。
2.2 课程设计内容本课程设计主要分为以下几个方面:1.智能卡技术IC卡的原理与应用:介绍智能卡技术的发展历史、IC卡的原理和应用场景,以及IC卡读写操作等基本知识。
2.智能卡制卡技术:介绍智能卡制卡技术的发展过程、基本原理和操作流程,学习智能卡的制卡技术。
3.RFID标签的原理与应用:介绍RFID标签的基本原理、应用场景以及识别距离、标签类型等基本知识。
4.RFID标签的读写操作:学习RFID标签的读写操作,掌握RFID标签的编程技巧和应用技术。
5.智能卡与RFID标签的优化应用:通过实践操作,熟练掌握智能卡与RFID标签的优化应用技术。
三、课程设计实施方案3.1 实施步骤本课程设计主要实施步骤如下:1.制定课程设计计划,明确教学目标和具体实施方案;2.学生进行智能卡技术IC卡和RFID标签的基础理论学习,在教师指导下完成基本的实践操作;3.学生根据课程设计任务完成个人或小组实践项目;4.学生进行课程设计成果展示和实验报告撰写。
3.2 实施条件1.实验室设施齐全,包括智能卡读写器、RFID标签读写器等必要设备;2.教师需要具有扎实的智能卡技术和RFID标签应用知识,并具有一定的实践操作经验;3.学生需要具有一定的计算机基础知识,能够使用编程工具、调试硬件等基本操作。
四、课程设计目标评估本课程设计主要从以下方面进行评估:1.学生实践操作水平:通过学生实验成果和实验报告对学生的实践操作水平进行评估;2.学生综合应用能力:学生完成个人或小组实践项目,能够实现智能卡技术IC卡和RFID标签相应的应用功能;3.学生自主学习能力:学生需要在指导下进行实践操作,同时也需要独立查阅相关资料完成任务。
基于单片机的IC卡读写系统实验目的:1.学会并掌握可keil软件的使用;2.学会并掌握protues软件的使用;3.实现基于单片机的IC卡读写;4.通过实验巩固单片机相关知识和检验自身动手能力实验要求:掌握单片机相关知识.利用单片机控制和射频模块组合来读写IC卡.并实现软硬件的仿真模拟。
lC卡读卡器以MCS-51系列单片机作为核心构成.主要用于家庭和机构门锁的开关.具有安全稳定的特点.在识别.删除.添加.自动开锁时.用于对IC卡进行读写操作。
实验设备和仪器:1.89c51单片机最小系统2.射频模块RC522.智能IC卡以及其他附加电路实验内容:本次实验设计是由小组五个成员共同完成基于单片机的IC卡读写系统并完成实物搭建和撰写实验报告。
方案一:实验步骤:1.利用protues画电路图.电路图如图1所示:图1:方案一电路图2.模拟刷卡后显示.如图二:图2:方案一实现图3.根据电路图编写C语言代码:代码如下:#include "reg52.h"#include "main.h"#include "mfrc522.h"#include <string.h>#include "LCD1602.h"#include "DS1302.h"#define uchar unsigned char#define uint unsigned intsbit Speak = P2^7;//蜂鸣器sbit RED = P3^4; //红色指示灯sbit GREEN = P3^3;//绿色指示灯sbit Relay = P3^2; //继电器sbit KEY1 = P1^3;//小时加按键sbit KEY2 = P1^4; //小时减按键sbit KEY3 = P1^5; //分钟加按键sbit KEY4 = P1^6; //分钟减按键sbit KEY5 = P1^7; //添加删除卡sbit KEY = P2^6; //开门unsigned char idata RevBuffer[30];unsigned char Card_Num;void iccardcode();//系统初始化void InitializeSystem()//IC卡初始化{PcdReset(); //IC卡初始化PcdAntennaOff(); //IC卡初始化PcdAntennaOn(); //IC卡初始化M500PcdConfigISOType( 'A' );//IC卡初始化}unsigned char idata UID[4],Temp[4];//读取卡号数组unsigned char Table[3];//显示数组unsigned char Num;unsigned char Count,Countf,Count1,Count2,Count3,Count4,Count5,C_flag;//卡序号void Auto_Reader(void) //自动寻卡{if(PcdRequest(0x52,Temp)==0) //找到卡{if(PcdAnticoll(UID)==0){Speak=0;delay_10ms(20);Speak=1;//蜂鸣器提示Table[0]=UID[0]/100+0x30; //卡号显示Table[1]=UID[0]/10%10+0x30; //卡号显示Table[2]=UID[0]%10+0x30; //卡号显示LCD1602_Disp_ZF(0x80+0x40,"Num: ",16); //卡号显示LCD1602_Disp_ZF(0x84+0x40,Table,3); //卡号显示Count = UID[0]; //判断卡是不是有效if((Count==Count1)||(Count==Count2)||(Count==Count3)||(Count==Cou nt4)||(Count==Count5)){LCD1602_Disp_ZF(0x88+0x40,"Welcome",7); //卡有效GREEN = 0;Relay=0;delay_10ms(200);Relay=1;GREEN = 1; //绿灯亮.打开继电器C_flag=1;}else{LCD1602_Disp_ZF(0x88+0x40,"Error ",7);//卡无效RED = 0;delay_10ms(500);RED = 1; //红灯亮C_flag=2;}delay_10ms(200);LCD1602_Disp_ZF(0x80+0x40,"Please Swipecard",16);//显示初始界面}}}uchar DS1302_Table[7]={0}; //读取时间值void Display_LCD2(uchar Dis_Hour,uchar Dis_Min,uchar Dis_Sec)//显示时间值{uchar Dis_Table[8]="11:22:33";Dis_Table[0] = Dis_Hour/10+0x30;Dis_Table[1] = Dis_Hour%10+0x30;Dis_Table[3] = Dis_Min/10+0x30;Dis_Table[4] = Dis_Min%10+0x30;Dis_Table[6] = Dis_Sec/10+0x30;Dis_Table[7] = Dis_Sec%10+0x30;LCD1602_Disp_ZF(0x85,Dis_Table,8);//显示时间值}void Run_DS1302(void){uchar sec, min, hour, day, month, week, year;v_W1302(0x8f, 0);sec = bcdtodec(uc_R1302(0x81)); //读出DS1302中的秒v_W1302(0x8f, 0);min = bcdtodec(uc_R1302(0x83)); //读出DS1302中的分v_W1302(0x8f, 0);hour = bcdtodec(uc_R1302(0x85)); //读出DS1302中的小时v_W1302(0x8f, 0);day = bcdtodec(uc_R1302(0x87)); //读出DS1302中的日v_W1302(0x8f, 0);month = bcdtodec(uc_R1302(0x89)); //读出DS1302中的月v_W1302(0x8f, 0);week = bcdtodec(uc_R1302(0x8b)); //读出DS1302中的星期v_W1302(0x8f, 0);year = bcdtodec(uc_R1302(0x8d)); //读出DS1302中的年DS1302_Table[0]=year;DS1302_Table[1]=month;DS1302_Table[2]=day;DS1302_Table[3]=week;DS1302_Table[4]=hour;DS1302_Table[5]=min;DS1302_Table[6]=sec;Display_LCD2(DS1302_Table[4],DS1302_Table[5],DS1302_Table[6]);//显示时间值}void main(void){InitializeSystem();LCD1602_init();//Money_1=x24c02_read(0X01);//x24c02_write(0X03,Money_3);LCD1602_Disp_ZF(0x80,"Time:",5);//0123456789abcdefLCD1602_Disp_ZF(0x80+0x40,"Please Swipecard",16);//LCD1602_Disp_ZF(0x80+0x40,"Num:",4);//ISP_ERASE(0x2c00); //注意:字节编程时必须要先要擦除整个扇区//for(i=0;i<255;i++)// ISP_PROGRAM(0x2c00+i, 0x00);while (1){//////////////////////////if(!KEY){Speak=0;delay_10ms(20);Speak=1;//蜂鸣器提示LCD1602_Disp_ZF(0x88+0x40,"Welcome",7); //卡有效GREEN = 0;Relay=0;delay_10ms(200);Relay=1;GREEN = 1; //绿灯亮.打开继电器delay_10ms(200);LCD1602_Disp_ZF(0x80+0x40,"Please Swipecard",16);//显示初始界面}Run_DS1302(); //时间显示//delay_10ms(200);if(!KEY1) //调节小时加{delay_10ms(50);if(!KEY1) //调节小时加{DS1302_Table[4]++; //调节小时加Write_DS1302Init(0,0,0,0,DS1302_Table[4],DS1302_Table[5],0); //调节小时加}}if(!KEY2) //调节小时减{delay_10ms(50);if(!KEY2) //调节小时减{ //调节小时减DS1302_Table[4]--; //调节小时减Write_DS1302Init(0,0,0,0,DS1302_Table[4],DS1302_Table[5],0);//调节小时减}}//////////////////////////////////if(!KEY3) //调节分钟加{delay_10ms(50); //调节分钟加if(!KEY3){DS1302_Table[5]++; //调节分钟加Write_DS1302Init(0,0,0,0,DS1302_Table[4],DS1302_Table[5],0); //调节分钟加}}if(!KEY4) //调节分钟减{delay_10ms(50); //调节分钟减if(!KEY4) //调节分钟减{DS1302_Table[5]--; //调节分钟减Write_DS1302Init(0,0,0,0,DS1302_Table[4],DS1302_Table[5],0); //调节分钟减}}if(!KEY5) //添加删除卡{delay_10ms(50);if(!KEY5) //添加删除卡{if(C_flag==2) //添加卡{//0123456789abcdefLCD1602_Disp_ZF(0x80+0x40," Register Card! ",16);Countf++;if(Countf==6)Countf=1;if(Countf==1) Count1 = Count;//记忆卡号if(Countf==2) Count2 = Count; //记忆卡号if(Countf==3) Count3 = Count; //记忆卡号if(Countf==4) Count4 = Count; //记忆卡号if(Countf==5) Count5 = Count;//记忆卡号}if(C_flag==1)//删除卡{//0123456789abcdefLCD1602_Disp_ZF(0x80+0x40," Clean Card! ",16);if(Count==Count1)Count1=0;//删除卡号if(Count==Count2)Count2=0; //删除卡号if(Count==Count3)Count3=0; //删除卡号if(Count==Count4)Count4=0; //删除卡号if(Count==Count5)Count5=0; //删除卡号}Speak=0;delay_10ms(200);Speak=1;LCD1602_Disp_ZF(0x80+0x40,"Please Swipecard",16);C_flag =0;while(!KEY5);}}//////////////////////}}void iccardcode(){unsigned char cmd;unsigned char status;cmd = RevBuffer[0];switch(cmd){case 1: // Halt the card //终止卡的操作status= PcdHalt();;RevBuffer[0]=1;RevBuffer[1]=status;break;case 2: // Request,Anticoll,Select,return CardType(2 bytes)+CardSerialNo(4 bytes)// 寻卡.防冲突.选择卡返回卡类型(2 bytes)+ 卡系列号(4 bytes)status= PcdRequest(RevBuffer[1],&RevBuffer[2]);if(status!=0){status= PcdRequest(RevBuffer[1],&RevBuffer[2]);if(status!=0){RevBuffer[0]=1;break;}}RevBuffer[0]=3;RevBuffer[1]=status;break;case 3: // 防冲突读卡的系列号MLastSelectedSnrstatus = PcdAnticoll(&RevBuffer[2]);if(status!=0){RevBuffer[0]=1;RevBuffer[1]=status;break;}//memcpy(MLastSelectedSnr,&RevBuffer[2],4);RevBuffer[0]=5;RevBuffer[1]=status;break;case 4: // 选择卡 Select Card//status=PcdSelect(MLastSelectedSnr);if(status!=MI_OK){RevBuffer[0]=1;RevBuffer[1]=status;break;}RevBuffer[0]=3;RevBuffer[1]=status;break;case 5: // Key loading into the MF RC500's EEPROM//status = PcdAuthState(RevBuffer[1], RevBuffer[3], DefaultKey, MLastSelectedSnr);// 校验卡密码RevBuffer[0]=1;RevBuffer[1]=status;break;case 6:RevBuffer[0]=1;RevBuffer[1]=status;break;case 7:RevBuffer[0]=1;break;case 8: // Read the mifare card// 读卡status=PcdRead(RevBuffer[1],&RevBuffer[2]);if(status==0){RevBuffer[0]=17;}else{RevBuffer[0]=1;}RevBuffer[1]=status;break;case 9: // Write the mifare card// 写卡下载密码status=PcdWrite(RevBuffer[1],&RevBuffer[2]);RevBuffer[0]=1;RevBuffer[1]=status;break;case 10:PcdValue(RevBuffer[1],RevBuffer[2],&RevBuffer[3]);RevBuffer[0]=1;RevBuffer[1]=status;break;case 12: // 参数设置PcdBakValue(RevBuffer[1], RevBuffer[2]);RevBuffer[0]=1; //contactRevBuffer[1]=0;break;}}4.实物验证结果如图4所示:图4:实物验证结果实物验证可以实现IC卡的读写.由于每个开发板不同.相比仿真程序.对实物验证程序进行了略微的修改.最小系统的LCD1602口不能使用使用外接杜邦线.为了稳定最终选择重新字节焊接板子.最终能达到要求。
毕业论文声明本人郑重声明:1.此毕业论文是本人在指导教师指导下独立进行研究取得的成果。
除了特别加以标注地方外,本文不包含他人或其它机构已经发表或撰写过的研究成果。
对本文研究做出重要贡献的个人与集体均已在文中作了明确标明。
本人完全意识到本声明的法律结果由本人承担。
2.本人完全了解学校、学院有关保留、使用学位论文的规定,同意学校与学院保留并向国家有关部门或机构送交此论文的复印件和电子版,允许此文被查阅和借阅。
本人授权大学学院可以将此文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本文。
3.若在大学学院毕业论文审查小组复审中,发现本文有抄袭,一切后果均由本人承担,与毕业论文指导老师无关。
4.本人所呈交的毕业论文,是在指导老师的指导下独立进行研究所取得的成果。
论文中凡引用他人已经发布或未发表的成果、数据、观点等,均已明确注明出处。
论文中已经注明引用的内容外,不包含任何其他个人或集体已经发表或撰写过的研究成果。
对本文的研究成果做出重要贡献的个人和集体,均已在论文中已明确的方式标明。
学位论文作者(签名):年月关于毕业论文使用授权的声明本人在指导老师的指导下所完成的论文及相关的资料(包括图纸、实验记录、原始数据、实物照片、图片、录音带、设计手稿等),知识产权归属华北电力大学。
本人完全了解大学有关保存,使用毕业论文的规定。
同意学校保存或向国家有关部门或机构送交论文的纸质版或电子版,允许论文被查阅或借阅。
本人授权大学可以将本毕业论文的全部或部分内容编入有关数据库进行检索,可以采用任何复制手段保存或编汇本毕业论文。
如果发表相关成果,一定征得指导教师同意,且第一署名单位为大学。
本人毕业后使用毕业论文或与该论文直接相关的学术论文或成果时,第一署名单位仍然为大学。
本人完全了解大学关于收集、保存、使用学位论文的规定,同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、扫描、数字化或其它手段保存或汇编本学位论文;学校有权提供目录检索以及提供本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有关部门或者机构送交论文的复印件和电子版,允许论文被查阅和借阅。
南京工程学院课程设计课程名称单片机原理及应用B课题名称IC卡读写器设计院(系、部、中心)通信工程学院专业通信工程班级姓名学号起止日期设计地点微机原理与单片机实验室指导老师岳俊生水恒华单片机原理及应用B摘要IC卡在现代生活中应用非常广泛,IC卡读写器的设计方法有多种,其中,利用单片机外接芯片实现的IC卡读写器具有编程灵活,便于IC卡读写器功能的扩充,运算存储方便等优点。
本文主要介绍用单片机外接24C16EEPROM的方法,利用键盘对24C16进行模拟充值的方法。
本设计由单片机P89V51RD2芯片、24C16EEPROM和LCD液晶显示为核心,辅以必要的电路,构成了一个IC卡读写器,使用起来很方便此IC卡读写器严格按照要求设计,最终达到预期的效果,并且添加了进行挂失,修改密码,低值报警,透支报警等相关功能。
关键词IC卡读写器/单片机 /C51编程The Principle and Applicationof Single ChipMicrocomputerABSTRACTIC card is widely used in modern life。
There are a variety of IC card reader design methods, which use an external chip microcontroller IC card reader with programming flexibility, ease of expansion IC card reader function, operation and easy storage。
This paper describes a method 24C16EEPROM external MCU, using the keyboard to simulate 24C16 recharge methods.Designed by the MCU chip P89V51RD2, 24C16EEPROM and LCD display as the core, supplemented by the necessary circuitry, constitute an IC card reader, easy to use。
IC卡读写控制设计内容提要:随着全球信息化的发展, IC卡在全球的应用越来越广泛。
IC卡是一个正蓬勃发展的边缘产业,一个与我们的生活正越来越密切的产业。
在普及因特网和计算机的大潮涌来时,IC卡扮演着越来越重要的角色。
本论文围绕“IC卡读写控制设计”这一热点课题,阐述了相应的IC卡读写控制的设计方案、开发方法和开发过程,在设计中利用Siemens公司的SLE4442芯片。
2008年乃至今后5年,是我国IC卡应用向纵深发展的时期。
我国IC卡市场格局必将由无序走向有序,市场竞争必将由有限走向无限,IC卡市场将逐步走向成熟,进入微利时代。
在这种形势下,单纯的发卡量和新产品的数量并不能衡量IC卡产业与市场的发展水平,市场发展的程度最终取决于IC卡的应用水平及其带来的社会效益。
从可持续发展的角度讲,加强行业规范,推动IC卡企业由产品和技术型转向应用和服务型,将成为我国IC卡市场发展的重要趋势。
关键词:读卡器 SLE4442卡单片机 PSC I2C总线IC card reader control designAbstract :With the development of global information, IC card application in the world more and more widely. IC card is a positive edge of booming industries, a U.S. life industry is increasingly close. Popularization of the Internet and at the computer when the flood tide, IC card to play an increasingly important role.In this paper, around the "IC card reader control design," the hot topic on the corresponding IC card reader-controlled design, development methodology and development process, the use of Siemens in the design of the company's SLE4442 chip.In 2008 and even the next 5 years, China's IC card applications are to develop in depth period. China's IC card market will move from disorder and orderly market competition from limited to unlimited will, IC card market will gradually mature, time to enter the low-profit. Under such circumstances, a simple card-issuing volume and quantity of new products and should not measure the IC card industry and the market level of development, market development ultimately depend on the extent of the level of application of IC cards and the associated social benefits. From the perspective of sustainable development, the strengthening of industry norms, and promote enterprise by the IC card products and technology-based applications and services shift type, will become China's IC card market in the development of important trends.Keywords:SLE4442 card 51Singlechip PSC I2C bus目录一、引言 (4)(一) IC卡技术及其发展 (4)(二) IC卡的概念 (5)(三) IC卡的主要特点 (5)(四) IC卡的分类 (6)二、 IC卡的安全问题 (8)(一)概述 (8)(二)数据加密 (8)IP置换 (10)F函数 (10)E扩展置换 (11)S替代选择 (11)P置换 (11)DES算法的解密 (12)1.密码安全及存储数据安全 (12)2.数据的完整性 (13)1.IC卡卡座 (18)2.单片机和存储器 (19)3.接口电路和外围设备 (19)六、结论 (21)致谢 (22)参考文献 (54)一、引言(一)IC卡技术及其发展IC卡的最初设想是由日本人提出来的。
IC考勤卡课程设计一、课程目标知识目标:1. 学生理解IC考勤卡的基础知识,掌握其工作原理和应用场景。
2. 学生能够描述IC考勤卡的数据存储、读取和传输过程。
3. 学生了解我国智能卡行业的发展现状及未来趋势。
技能目标:1. 学生能够独立操作IC考勤卡,进行数据读取和写入。
2. 学生通过实践,掌握使用IC考勤卡进行考勤的基本操作流程。
3. 学生能够运用所学知识解决实际问题,设计简单的IC考勤卡应用方案。
情感态度价值观目标:1. 学生培养对智能化产品的兴趣,提高对科技创新的热情。
2. 学生通过学习,认识到科技进步对日常生活的影响,增强社会责任感。
3. 学生在团队协作中,培养沟通、合作意识,提高集体荣誉感。
本课程针对中学生设计,结合信息技术课程特点,以实用性和操作性为核心,注重培养学生的动手能力和实际应用能力。
通过本课程的学习,使学生能够将所学知识与实际生活相结合,提高学生的信息素养,为未来社会的发展做好准备。
二、教学内容1. IC考勤卡概述:介绍IC考勤卡的定义、分类、发展历程及其在生活中的应用。
相关教材章节:第一章 智能卡概述2. IC考勤卡工作原理:讲解IC考勤卡的数据存储、读取、写入和传输原理。
相关教材章节:第二章 智能卡工作原理3. IC考勤卡的操作流程:详细讲解如何使用IC考勤卡进行考勤,包括硬件设备连接、软件操作等。
相关教材章节:第三章 智能卡应用实例4. 实践操作:组织学生进行IC考勤卡操作实践,巩固所学知识,提高动手能力。
相关教材章节:第四章 实践操作5. 应用案例分析:分析IC考勤卡在实际应用中的典型案例,让学生了解其在不同场景的应用。
相关教材章节:第五章 智能卡行业应用案例6. 行业发展趋势:介绍我国IC考勤卡及智能卡行业的发展现状和未来趋势。
相关教材章节:第六章 智能卡行业发展趋势教学内容按照以上六个方面进行组织,注重理论与实践相结合,使学生能够在掌握基本知识的基础上,深入了解IC考勤卡的应用和发展。
南京工程学院课程设计课程名称单片机原理及应用B课题名称IC卡读写器设计院(系、部、中心)通信工程学院专业通信工程班级姓名学号起止日期设计地点微机原理与单片机实验室指导老师岳俊生水恒华单片机原理及应用B摘要IC卡在现代生活中应用非常广泛,IC卡读写器地设计方法有多种,其中,利用单片机外接芯片实现地IC卡读写器具有编程灵活,便于IC卡读写器功能地扩充,运算存储方便等优点.本文主要介绍用单片机外接24C16EEPROM地方法,利用键盘对24C16进行模拟充值地方法.本设计由单片机P89V51RD2芯片、24C16EEPROM和LCD液晶显示为核心,辅以必要地电路,构成了一个IC卡读写器,使用起来很方便此IC卡读写器严格按照要求设计,最终达到预期地效果,并且添加了进行挂失,修改密码,低值报警,透支报警等相关功能.关键词IC卡读写器/单片机 /C51编程The Principle and Applicationof Single ChipMicrocomputerABSTRACTIC card is widely used in modern life.There are a variety of IC card reader design methods, which use an external chip microcontroller IC card reader with programming flexibility, ease of expansion IC card reader function, operation and easy storage.This paper describes a method 24C16EEPROM external MCU, using the keyboard to simulate 24C16 recharge methods.Designed by the MCU chip P89V51RD2, 24C16EEPROM and LCD display as the core, supplemented by the necessary circuitry, constitute an IC card reader, easy to use. This IC card reader in strict accordance with the requirements of the design, and ultimately achieve the desired effect, and add report the loss, change passwords, low alarm, alarm and other related functions overdraft.KeywordsIC card reader /P89V51RD2 single-chip computer /C51 programming目录一、课程设计目地 (1)二、基本思路 (1)三、实验方案 (1)四、实验开发环境及元器件 (1)1 、开发工具及开发环境简介 (1)1.1 单片机 (1)1.2 Proteus (1)1.3 KEIL (2)2、P89V51RD2 (2)3、24C16EEPROM (2)4.、LCD1602 (2)(1)简介 (3)(2)管脚功能 (3)(3)16进制ASCII码表 (3)(4)特性 (4)五、系统分析与设计 (4)1、系统框图 (4)2、软件设计 (4)(1)软件程序内容 (4)(2)软件设计流程图 (5)(3)程设计步骤 (8)(4)电路连线图 (9)六、具体程序设计及步骤 (9)1、头文件: (9)2、各个.C文件: (11)3、程序调试及结果: (26)⑴调试步骤 (26)⑵实验现象 (26)七、课程设计体会 (26)八、参考文献 (28)一、课程设计目地本课程设计是在《单片机原理及应用B》课程主要内容学习之后,通过一个单片机应用系统地设计和调试,训练学生综合运用本课程知识,独立解决工程实际问题地能力;使学生加深对单片机结构、工作原理地理解,提高学生综合应用知识地能力、分析解决问题地能力和单片机应用系统地设计技能;同时培养学生查阅科技资料和撰写科技报告地能力.二、基本思路通过此次课程设计掌握I2C总线地基本特点和通信协议,掌握24xx系列EEPROM地基本特点及总线控制协议,掌握单片机IO端口模拟I2C时序控制程序地编写方法.单片机通过P1.0和P1.1分别连接24C16地SDA和SCL,编写单片机通过IO端口模拟I2C时序控制24C16读写地程序.通过键盘对24C16EEPROM进行模拟充值,通过LED/LCD实时显示卡内实际金额.三、实验方案在进行头文件配置完之后,建立一个while(1),死循环,在这个死循环中不断检测键盘输入,检测到键盘输入后,根据键盘地值,执行相应地子函数.并通过1602LCD显示出来相应地过程.四、实验开发环境及元器件1 、开发工具及开发环境简介1.1 单片机单片微型计算机简称单片机,是典型地嵌入式微控制器(Microcontroller Unit),常用英文字母地缩写MCU表示单片机,它最早是被用在工业控制领域.单片机由芯片内仅有CPU地专用处理器发展而来.最早地设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂地而对体积要求严格地控制设备当中.INTEL地Z80是最早按照这种思想设计出地处理器,从此以后,单片机和专用处理器地发展便分道扬镳.1.2 ProteusProteus软件是Labcenter Electronics公司地一款电路设计与仿真软件,它包括ISIS、ARES等软件模块,ARES模块主要用来完成PCB地设计,而ISIS模块用来完成电路原理图地布图与仿真.Proteus地软件仿真基于VSM技术,它与其他软件最大地不同也是最大地优势就在于它能仿真大量地单片机芯片,比如MCS-51系列、PIC系列等等,以及单片机外围电路,比如键盘、LED、LCD等等.通过Proteus软件地使用我们能够轻易地获得一个功能齐全、实用方便地单片机实验室.1.3 KEIL单片机开发中除必要地硬件外,同样离不开软件,我们写地汇编语言源程序要变为CPU可以执行地机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编地方法了.机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机地汇编软件有早期地A51,随着单片机开发技术地不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机地开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机地软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出.Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大地仿真调试器等在内地完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起.运行Keil软件需要Pentium或以上地CPU,16MB或更多RAM、20M以上空闲地硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统.掌握这一软件地使用对于使用51系列单片机地爱好者来说是十分必要地,如果你使用C语言编程,那么Keil几乎就是你地不二之选(目前在国内你只能买到该软件、而你买地仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用地集成环境、强大地软件仿真调试工具也会令你事半功倍.Keil C51生成地目标代码效率非常之高,多数语句生成地汇编代码很紧凑,容易理解.在开发大型软件时更能体现高级语言地优势2、P89V51RD2P89V51RD2是Philips公司生产地一款80C51微控制器,包含64KB Flash和1024字节地数据RAM.P89V51RD2地典型特性是它地X2方式选项.利用该特性,设计者可使应用程序以传统地80C51时钟频率(每个机器周期包含12个时钟)或X2 方式(每个机器周期包含6个时钟)地时钟频率运行,选择X2方式可在相同时钟频率下获得2倍地吞吐量.从该特性获益地另一种方法是将时钟频率减半来保持特性不变,这样可以极大地降低EMI.Flash程序存储器支持并行和串行在系统编程(ISP),ISP允许在软件控制下对成品中地器件进行重复编程.应用固件地产生/更新能力实现了ISP地大范围应用. 5V地工作电压,操作频率为0~40MHz.3、24C16EEPROMEEPROM(带电可擦写可编程只读存储器)是用户可更改地只读存储器(ROM),其可通过高于普通电压地作用来擦除和重编程(重写).不像EPROM芯片,EEPROM不需从计算机中取出即可修改.在一个EEPROM中,当计算机在使用地时候可频繁地反复编程,因此EEPROM地寿命是一个很重要地设计考虑参数.EEPROM是一种特殊形式地闪存,其应用通常是个人电脑中地电压来擦写和重编程.4.、LCD1602(1)简介1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等地点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符.每位之间有一个点距地间隔每行之间也有间隔起到了字符间距和行间距地作用,正因为如此所以他不能显示图形.1602LCD是指显示地内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字).(2)管脚功能1602采用标准地16脚接口,其中:第1脚:VSS为电源地第2脚:VDD接5V电源正极第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K地电位器调整对比度).第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器.第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作.第6脚:E(或EN)端为使能(enable)端.第7~14脚:D0~D7为8位双向数据端.第15~16脚:空脚或背灯电源.15脚背光正极,16脚背光负极.(3)16进制ASCII码表字符集1602液晶模块内部地字符发生存储器(CGROM)已经存储了160个不同地点阵字符图形,这些字符有:阿拉伯数字、英文字母地大小写、常用地符号、和日文假名等,每一个字符都有一个固定地代码,比如大写地英文字母“A”地代码是01000001B (41H ),显示时模块把地址41H 中地点阵字符图形显示出来,我们就能看到字母“A”.在单片机编程中还可以用字符型常量或变量赋值,如'A’.因为CGROM 储存地字符代码与我们PC 中地字符代码是基本一致地,因此我们在向DDRAM 写C51字符代码程序时甚至可以直接用P1=‘A’这样地方法.PC 在编译时就把'A'先转换为41H 代码了.(4)特性3.3V 或5V 工作电压,对比度可调内含复位电路提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能有80字节显示数据存储器DDRAM内建有192个5X7点阵地字型地字符发生器CGROM8个可由用户自定义地5X7地字符发生器CGRAM五、系统分析与设计1、系统框图2、软件设计(1)软件程序内容本设计地软件程序包括主程序、充值子程序、消费子程序、挂失子程序、修改密码程序和报警子程序等等.另外,还设计了LCD显示子程序.(2)软件设计流程图主程序框图充值子程序消费子程序挂失子程序解锁子程序修改密码子程序(3)程设计步骤①进行头文件配置,设置相应地端口名②采用死循环,通过查询方式检测是否有键按下③根据键盘地值执行相应地子程序④在执行过程中控制LCD显示相应地内容⑤在子程序执行完后返回主程序⑥在子程序中进行相应地数值运算⑦挂失和修改密码地子程序将改变存储在存储器中地密码值,使之从主程序中跳出来,待重新启用成功购在回到主循环中(4)电路连线图六、具体程序设计及步骤1、头文件:at24co2.h#ifndef __AT24C02__#define __AT24C02__#include "main.h"#include<reg52.h>sbit SCL=P1^7。