文档介绍:华南师范大学实验报告
学生姓名钟文东学号 20072302314
专业电子信息科学与技术年级、班级电师三班
课程名称单片机实验实验项目 EEPROM应用—数字密码锁
实验类型验证设计综合实验时间 2009 年 12 月 10 日
实验指导老师秦笛实验评分
实验五、EEPROM应用—数字密码锁
一、实验目的
2. 学习I2C的使用
。
二、实验设备
PC机一台、实验教学板一块。
三、实验内容及原理
设计数字密码锁的电路和应用程序。密码锁的基本功能如下:
:一是设计密码,放存在ROM中;另一个是使用密码,存于EEPROM中。
2..密码锁的密码用4位有效数字,输入超过4位时以最后输入4位数字为准,数字范围由1~6。
3. 用实验板上K1—K6键作密码数字输入键,分别表示1~6数字,K7,K8键为命令键。其中,K7为密码设置键,K8为开锁键。蜂鸣器用作开锁指示。
4. 开机后进入初始状态,显示器显示“————”且最高一位闪动,闪动位亦表示当前数字输入位,以后每输入一位数字,闪动位向右循环移动。
:在初始状态下,从K1—K6键输入密码,再按K8键。
若输入密码的最后4位数与存EEPROM的使用密码内容相同或与存于ROM中的设计密码相同,则开锁成功,并用蜂码器发声指示。否则输入错误返回初始状态。
开锁状态维持 60秒,超过时间,则自动关闭开锁状态,同时停止声音输出。
,在开锁状态下,用K1~K6键输入4位新的使用密码,若超过4位数则以最后4位数为准,然后按K7键,则完成密码修改。新密码存到 EEPROM中,覆盖原来的使用密码,且新密码闪动三下,表示修改成功。完成后自动回到初始状态。 若不在开锁状态或在开锁状态下数字键输入不足4位,按K7键就无效,返回初始状态。
以上3~6项也可根据自己的喜好自行设计。
四、实验要求
,画出电路原理图。
2. 确定系统功能。
3. 根据给出的程序流程图,设计出相应程序并给程序加上较详细的注释。
4. 在Keil C51编译环境下完成程序编译。
5. 通过下载线和下载软件STC-ISP V39将编译后的程序下载到单片机。
6. 运行程序,用实验结果验证程序的正确性。若不能达到要求,分析原因、查找错误,修改源程序,再次汇编、连接,重新下载、运行,直至达到题目的要求。
思考题
1、编写I2C总线的应用程序时要注意哪些问题?
实验程序:
#include<>
#include<>
#include<>
#include<.h>
#define TRUE 1
#define FALSE 0
sbit SCL=P1^2; ///串行通信//
sbit SDA=P1^0; ///串行通信//
sbit MODE=P1^1;
sbit S=P2^5;
sbit k0=P2^0;
sbit k1=P2^1;
sbit k2=P2^2;
sbit k3=P2^3;
void Write_A_Page(char *buffer,char addr,char N);
void Read_N_Byte(char *buffer,char n,char addr);
void DelayMs(unsigned int number);///延时子程序///
void Delayus(unsigned int number);
void KeyScan();
void display1();
unsigned char d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf/*-*/,0xff/*关显示*/};
unsigned char f[]={10,10,10,10};
unsigned char h[]={8,7,5,2};
unsigned char k[]={1,2,3,4};
unsigned char key=0;
int time=10; //放500ms的变量
int timen=1200;
int i;
int p=1; //系统开关
int v=1; //是否闪动输入位标志位
int j;
void Delayus(unsigned int number)
{ for(;number!=0;number--)
{ }}
void DelayMs(unsigned