[DIY详解] DIY制作单片机断电密码保存电子锁,含原理图,PCB图

[复制链接]
查看4061 | 回复15 | 2013-5-22 22:40:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
DIY
单片机
断电密码保存
电子
锁电子密码锁是集计算机技术、电子技术、数字密码技术为一体的机电一体化高科技产品,具有安全性高,使用方便等优点。本论文从电子密码锁系统的功能,硬件
电路
设计,软件设计分别论述这一系统。通过使用单片机AT89S52作为控制核心,连接外部存储器AT24C02,实现密码断电保存,制作一种密码锁。


                               
登录/注册后可看大图

                               
登录/注册后可看大图
回复

使用道具 举报

老吴 | 2013-5-22 22:41:19 | 显示全部楼层
请尊重原创,引用本文发表者,请注明出处.
作者:彬
qq:243280383  870035775
邮箱: 870035775@QQ.COM
博客:    http://blog.sina.com.cn/vision243280383



单片机断电密码保存电子锁 (2008-09-15 11:02:08)


作品简介:电子密码锁是集计算机技术、电子技术、数字密码技术为一体的机电一体化高科技产品,具有安全性高,使用方便等优点。本论文从电子密码锁系统的功能,硬件电路设计,软件设计分别论述这一系统。通过使用单片机AT89S52作为控制核心,连接外部存储器AT24C02,实现密码断电保存,制作一种密码锁。
下面共享AT24C02的驱动程序:
(AT24C02的三个引脚都接地 所以写入的地址是0xa0 ,写容许引脚接地)
void Start(void)       /
{
        Sda=0;
        Scl=1;
        _nop_ ();      //根据时序图尽心延时
        _nop_ ();
        _nop_ ();
        _nop_ ();
        Sda=1;
        _nop_ ();
        _nop_ ();
        _nop_ ();
        _nop_ ();
}
void Ack(void)
{
        Sda=0;
         _nop_ ();
        _nop_ ();    //延时 根据时序图
        _nop_ ();
        _nop_ ();
        Scl=1;
        _nop_ ();
        _nop_ ();
        _nop_ ();
        _nop_ ();
        Scl=0;
}
void  NoAck(void)      
{
        Sda=1;
        _nop_ ();    //根据时序图进行延时
        _nop_ ();
        _nop_ ();
        _nop_ ();
        Scl=1;
        _nop_ ();
        _nop_ ();
        _nop_ ();
        _nop_ ();
        Scl=0;
}
void Send(uchar Data)  
{        
        uchar BitCounter=8;      
        uchar temp;   
        do
        {
           temp=Data;
           Scl=0;
           _nop_ ();
           _nop_ ();
           _nop_ ();
           _nop_ ();
           if((temp&0x80)==0x80)
                Sda=1;
           else
                Sda=0;        //如果最高位是0就发送0
           Scl=1;
           temp=Data<<1;      
           Data=temp;      
           BitCounter--;       //没发完一位数据就减一
         }while(BitCounter);    //如果发送完8位后跳出循环
         Scl=0;               //释放总线           
}
uchar Read(void)
{
        uchar temp=0;
        uchar temp1=0;
        uchar BitCounter=8;   //定义从存储器读出的数据位数
        Sda=1;
        do{
          Scl=0;
          _nop_ ();
          _nop_ ();
          _nop_ ();
          _nop_ ();
          Scl=1;
          _nop_ ();
          _nop_ ();
          _nop_ ();
          _nop_ ();
          if(Sda)      
                temp=temp|0x01;
          else
                temp=temp&0xfe;
          if(BitCounter-1)
          {   temp1=temp<<1;       //逐位的读出
              temp=temp1;
          }
          BitCounter--;
        }while(BitCounter);   //读出8位后跳出循环
        return(temp);         //返回读出的数据
}
void WrToROM(uchar Data,uchar Address)   //向存储器写一字节的数据 函数
{
     uchar i=0;
   
     Start();             //调用起始条件函数
     Send(0xa0);       // 发送命令,准备写入数据到存储器,让存储器做好准备
     Ack();            //  调用应答函数
     Send(Address);    // 先发送要写入数据的的存储器内存地址
     Ack();            // 调用应答函数
   
      Send(Data);      // 开始发送要写入到存储器中的数据
        Ack();         // 调用应答函数
  
     Stop();           // 调用停止发送函数,表示发送完毕
}
uchar  RdFromROM(uchar Address)  //  从存储器读出一字节的数据
{
     uchar i;
  
        Start();                //调用起始条件函数
        Send(0xa0);           //  让存储器准备接受命令
        Ack();   
        Send(Address);        //  发送要读出来的数据地址
        Ack();
        Start();              //   重新调用起始函数
        Send(0xa1);          //   发送读出数据的命令
        Ack();
        i=Read ( );          // 开始读出数据
        Scl=0;
        NoAck();             // 读出数据成功。返回信号成功信号给存储器
        Stop();
    return (i);             //  返回读出的数据
}


                               
登录/注册后可看大图

相关链接:http://blog.sina.com.cn/vision243280383
回复

使用道具 举报

randy1022 | 2013-8-11 01:12:46 | 显示全部楼层
回复

使用道具 举报

jie514 | 2014-9-26 12:47:12 | 显示全部楼层
回复

使用道具 举报

asp79 | 2014-9-29 09:12:28 | 显示全部楼层
回复

使用道具 举报

意林飞笑 | 2015-2-28 16:12:18 | 显示全部楼层
回复

使用道具 举报

ggbbww0123 | 2015-4-5 13:41:25 | 显示全部楼层
回复

使用道具 举报

mirage | 2016-11-21 08:42:17 | 显示全部楼层
回复

使用道具 举报

wangdanq | 2016-11-24 09:08:24 | 显示全部楼层
回复

使用道具 举报

_岩_松 | 2016-12-2 19:37:54 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则