开放性实验
开开开开开开开放目告
开目名称 信息禁系开开开开开
学院 开 子科学与工程学院
指老开开开 开 毅
姓
汪炳星
学号 B10020319
日期 2011 年 12 月 30 号
目开
一、引言?????????????????????????????????????????????????????????????????3
二、开开目的?????????????????????????????????????????????????????????3
(1)、目开开开
(2)????????????????????????????????????????????????????3
(3)、具体要求????????????????????????????????????????????????????3三、开开内容?????????????????????????????????????????????????????????3
(1)、主要硬件介开开??????????????????????????????????????????????4
1.AT89C52简介??????????????????????????????????????????????4
2.AT24C1024简介???????????????????????????????????????????4
3.iButton简介????????????????????????????????????????????????5
(2)、主要介开开开开??????????????????????????????????????????????5
1.1-wire简介??????????????????????????????????????????????????5
2.I2C简介??????????????????????????????????????????????????????5
(3)、路开开开开开开??????????????????????????????????????????????6
(4)、的流程开开开开开开??????????????????????????????????????????????7
(5)、部分模程序开开开??????????????????????????????????????????????7
(6)、仿真果展示开开开开??????????????????????????????????????????????11四、开开开小?????????????????????????????????????????????????????????111、引言
本系中采用简简简简DS1990A型号的卡作简简“简简”简禁系的匙,此“简”匙一晶片上每都刻有独一无二的64位二制简简 ID号数可达简简简简简简280万个具有不可造简简简简简简简简性,在生程中用激光工永久刻在 简简简简简简简简简简简简简ROM上,并加了保,任何企简简简简简简简简简简简更改此号都会使CRC校程出。极大的提高了系的简简简简简简简简简简简简简简简安全性。 iButton 简简简简简简简简简简品数百万次的操作,仍然能保精确可靠的简简简简简简简写。它所具有安全、方便、耐用、先性的特点简简简简简,可广泛用于金融、子收简简简简简简简简简简简简简简简简简简简简简简简简简简、子件、子安全系以及源使用授等各
需要信息加密的域。正是因简简简简简简简简简简 iButton 具磁卡、,,简简简简简简卡的功能而又有着明的简简简简,它常常被制作成公交月票卡、工考勤简简简简简简简简简卡、各子收卡等等简简简简简简简简,简简简简简简称,,卡。iButton是一个封装在16mm 厚的不简简简简简简简简简简简简简简简简简简外壳内的算机芯片。由于其采用独特的固4外壳,可以将最新信息随人或目物体携到任何地方。上由于制的简简简简简简简简简简简简简简简简简简简 iButton 外壳足固,可承受室内或室外的各苛刻境,使得简简简简简简简简简简简简简简简简简简简简简简iButton 几乎可以安装在任何地方。iButton 十分的小巧便,可以附着在匙、戒简简简简简简简简简简简简简指、手
或其他个人物品上,非常适合在日简简简简简简简简简简简简简简简简简简简
常生活中控制如建筑物及算机、管理以及各数据的限。简简简简简简简简简简简简简简简简简简简简简简简简简简简简2、开开目的
(1)、目开开开开
1.了解1-wire简简原理
2.了解I2C简简的原理
3.简用ATC89C52简程
4.掌握以上的用简简简简简简简
5.增加子的简简简简简简简
(2)、具体要求
使用使用AT89C52做控制器,使用AT24C1024做存器,使用简简简简简DS1990做简“简”简简简简简简简简简简简简简简简简禁匙,信息禁系。始,以与51相的判断志,简简简简简简简简简简简简禁系做初始化,即将简“简”简简简简简简匙的序列号出,再存到AT24C1024中。之后,将简简简“简” 简简简断。次匙来每51都简DS1990简简简简简简简简简简简简简简行取序列号操作,同也取AT24C1024的序列号,判断匙的序列号与内的序列号是否匹配。如果“简”“简简”
匹配,,即点亮灯。如果不匹配,蜂器响起,提示人注意:简“简简”简简简简简简简简简简简简简简简简简简简简简简简3、开开内容
(1)、主要硬件介开开
1.AT89C52简介
AT89S52是一低功耗、高性能简简简简简简简简CMOS8位微控制器,具有8K 在系可简简简程 Flash 存器。使用简简简简简 Atmel 公司高密度非易失性存器简简简简简简技制造,与工简 80C51 简品指令和引脚完全兼容。片上Flash允简简简简简简简程序存器在系可程,简简简简简简简简简简简简简简简简简简简简简简亦适于常程器。在芯片上,有
灵巧的 8 位 CPU 和在系可程简简简简Flash,使得 AT89S52简简简众多嵌入式控制用系提简简简简简简简简简简简简简简简供高灵活、超有效的解决方。AT89S52具有以下准简简简简简功能:8k字简Flash, 256字简RAM,32 位 I/O 口简简简简简简简简简,看狗定器,2 个数据指,三简简简个 16 位定简简器/简数器,一个6向量 2简简简简简简简简简简中断构,全双工串行口,片内晶振及路。简简简简简简简简另外,AT89S52 可降至 0Hz 静简简简简简简简简操作,支持2简简件可模简简简简简简简简简简简简简式。空模式下,CPU停止工作,允简RAM、定简简器/简数器、串口、中断工作。简简简简简简简简简简简简简掉保方式下,RAM内容被保存,振简简简简简器被,简简简简简简片机一切工作停止,直到下一个中断或硬件位止。
2.AT24C1024简介
AT24C1024是由ATMEL公司提供的,I2C简简串行EEPROM,其容量简2Kbit,256B,,工作在简简简2.7V,5.5V之,生工是简简简简简简简CMOS工。简简 各引脚功能如下。
A2,A0:器件地址简简简简简简简引脚。将3个引脚配置成不同的,在同一简简简简简简简串行上最简简简简简简简简多可充8片同一容量或不同容量的24系列串行EEPROM芯片。SDA:串行数据简简简简简简简简简简简简简简简简简简入出口,是一个双向的漏极路构
的引脚,容量简简简简简简简简展可以将多片24系列的SDA引脚直接相。简简SCL:串行移位控制简简简简简简简简简简简简简简简简简简简简简简简简简简端。写入上升沿起作用,出下降沿起作用。
WP:硬件写保控制引简简简简简简简简简简简简简简简简简简简简简简简简简简脚。当其低平,正常写操作,高平,EEPROM部分存简简简简简简简简简简简简简简简简简简简简简简简简简简简区域提供硬件写保功能,即被保区域只能不能写。GND:接地。
VCC:接+5V简简
iButton简介3.
信息简简,iButton,information button的写简简简简简简简简简简,,即信息扣,信息是一个简简简简简简简简简简简简简简简简简简简简简简简简简简简简简简似于智能卡中使用的微芯片,不个微芯片是放在大小17.35mm×3.1mm,89mm,功能不同,尺寸也不同,的简简简简简简简简形不扣中。信息是由简简简Dallas半简简简简简简简简简简简简简简简简简简简简体公司明并独家生的,主要用于在劣苛酷的使用境中工作的简简简简 简简 施。
iButton是一个封装在16mm厚的不外壳内的算机芯片。简简简简简简简简简简简简由于其采用独特的固外壳,可以将最新信息随人或简简简简简简简简简简简简简简简
目物体携到任何地方。上由于制的简简简简简简简简简简简简简简简简简简简iButton外壳足固,可简简简简简承受室内或室外的各苛刻境,使得简简简简简简简简iButton几乎可以安装在任何地方。iButton十分的小巧便,可以附着在匙、戒指、手简简简简简简简简简简简简简简简简简
表或其他个人物品上,非常适合在日常生活中控制如建筑物及算简简简简简简简简机、管理以及各数据的限。简简简简简简简简简简简简简简简简简简
(2)、主要介开开开开
1.1-wire简简简介
1-wire 简简简 是Maxim 全子公简简简简 司Dallas 的一有简简简简简简简技,与目前多数简简简简简简简简简简简简准串行数据通信方式如:SPI/I2C/MICROWIRE不同,它采用简简根信号,简简简简简简简简简简简简简简简简简简简简简简简简简简简简简既又数据。而且数据是双向的。它具有省I/O口简简简简简简简简简简简简简简简简简简简简简简简简简简简源、构、成本低廉、便于展和等多点。1-wire 简简简适用于个主机系,能控制一个或简简简简简简简简简简简简简简简简简简简简简多个从机。
当只有一个从机位于上,系可简简简简简简简简简简简简简简简简简简按照点系操作,
而当多个从机位于上,系简简简简简简简简简简简简简简简简简简按照多点系操作。
2.I2C简简简介
I2c简简 是Philips 公司首先推出的一简简简简简简简简简简简简简两制串行。它由一根数据简简,SDA,和一根, 简简简SDL,简简简成。i2c简简简简简简简简的数据程如3所示,基本程简简简简:
1)主机出始信号。简简简简简简简
2)主机接着送出1字简简简简简简简简简简简简简简简简简简简简简的从机地址信息,其中最低位写控制,1简简、0
简写,,高7位简简简简简简简简简简从机器件地址代。
3)从机出可信号。简简简简简简简
4)主机始简简简简简简简简简简简简简简简简简简简简简简简简简简完一每送字信息,后,从机出可信号主机。
5)主机出简简简简简简简停止信号。
I2C简简简简简上各信号的具体明:
简始信号:在简简简简,SCL,简简简简简简简简简简简高平其,数据,SDA,由高低,简简简将生一个始信号。简简简简简简简简简
停止信号:在简简简简,SCL,简简简简简简简简简简简高平其,数据,SDA,由低高,简简简将生一个简简简简简简简简简停止信号。
简答信号:既简简简简简简简简简简简简写可信号,主机写完一字,如果正确从机每
从机将在下一个简简简简简简简简简周期将数据,SDA,拉 简简简简简简低,以告主机操作有效。在主机简简简简简简简简简简简简简简简简简简简从机正确完一字后,主机在下一个
简简简简简简简简简简周期同也要将数据,SDA,拉低,出可信号,告简简简简简简简简简简从
机所数据简简简简简简简简已收妥。
(3)、路开开开开开开
简始
简简简
、的流程开开开开开开
AT89C52简取AT24C1024AT89C52简取中的序列号DS1990中的序列
号否AT89C52蜂器简简简取DS1990
中的序列号响起
AT89C52将到简简
的序列号存入
AT24C1024序列号相等
是
点亮灯开开
否
是
(4)、部分模程序开开开
1.主控模简
#include
//DS1990.h使用到_nop_
#include
#include
#define uchar unsigned char#define uint unsigned int
//简简简简简简简简简简简简简简用文件:各个功能模及函数
//#include"at24c08.h"
#include"ds1990.h"
uchar juge(uchar *p1,uchar *p2); //判断序列号是否一简
sbit bizz = P0^2; //控制蜂器响简简简
sbit swich = P0^7; //简简简初始化,或序列号比
void main()
{
uchar i = 0; //循简序号
uchar judge = 0; //判断序号是否简简
uchar sf1[8] = {0,66,56,67,53,50,67,0}; //写入AT24C08的序列号
uchar sf2[8] = {0}; //存简简简当前DS1990的序列号
while(1)
{
if(swich)//如果,简简简简简简简简就初始化
{
Read_DS1990(sf1,8); //简出DS1990序列号到sf1[]
Write24c(sf1,0x00,8); //把sf1[]写入AT24C
}
Read24c(sf1,0x00,8);
Read_DS1990(sf2,8); //简出DS1990序列号到sf2[]
judge = juge(sf1,sf2); //判断序列号是否一致
if(judge) //如果序列号一致,响蜂器简简
{
bizz = 0;
}
}
}
uchar juge(uchar *p1,uchar *p2){
uchar i = 0;
for(i=1;i<7;i++)
{
if(p1[i]!=p2[i])
{
return 0;
}
}
return 1;
}
2.DS1990的使用模简
/*************************DS1990的使用模***************************/
#ifndef DS1990
#define DS1990
/**************************硬件引简简简*******************************/
sbit DQ = P1^0; //DS1990
简接到P2^3
/***********************各个功能函数声明****************************/
void Init_DS1990(void); //DS1990初始化函数
uchar Readbyte_DS(void); //DS1990简简出一个字
void Writebyte_DS(uchar dat); //DS1990写入一个字简
void DelayUs(uint s); //延函简简简简简简数,延s Usvoid Read_DS1990(uchar *p,uchar n); //将序列号到简简p指向的地址/******************************************************************/
/*************DS1990A初始化函数*************/void Init_DS1990(void)
{
uchar i = 0;
DQ=0; //置低
DelayUs(480); //延简480us
DQ=1; //简放
DelayUs(60); //延简85us
for (i=0;i<240;i++)
{
if (DQ==0) //等待从机响简
{
break;
}
}
}
/***********从DS1990A简简简简一个字函数*********/uchar Readbyte_DS(void){
uchar i=0;
uchar temp=0;
for (i=0;i<8;i++)
{
DQ=0;
_nop_();
DQ=1; //主机简简答
1,始操简简简简
_nop_();
if (DQ) //由低位到高位出简简
{
temp=temp|0x80;
}
temp=temp>>1;
DelayUs(61);
}
return(temp);
}
/**********向DS1990A写一个字**********/简
void Writebyte_DS(uchar dat){
uchar i=0,send=0;
for (i=0;i<8;i++)
{
DQ=0; //拉低使能
send=dat&0x01; //由低位到高位写入
if (send==0x01) //如果简简简简入高
{
DQ=1; //简简简高隙
DelayUs(61);
}
else //简简简低隙
{
DelayUs(61); //拉低的简简
DQ=1;
}
dat>>=1;
}
DelayUs(8);
}
void Read_DS1990(uchar *p,uchar n)
{
uchar i = 0;
Init_DS1990();
Writebyte_DS(0x33);
for(i=0;i