找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 20541|回复: 60
收起左侧

基于单片机1602和矩阵键盘的密码锁

  [复制链接]
ID:63924 发表于 2014-8-29 15:24 | 显示全部楼层 |阅读模式
/*******************************************************************************************
程序名称:单片机电子密码锁 (可修改设置密码)——基于51单片机与AT24C02与LCD1602显示
————————————————单片机实验课大作业——————————————————
程序介绍:输入正确密码时,液晶屏提示,打开继电器,然后灯泡亮,蜂鸣器开始播放音乐;
                  输入密码错误时, 液晶屏提示,当三次错误时,蜂蜜器发出报警声
作者:walt740
编写日期:2013/12/16       
********************************************************************************************/
#include<reg52.h>
#include<string.h>
#include<intrins.h>
#include<compact.h>
#include<lcd1602.h>
#include<iic.h>
#include<keyboard.h>
#include<sounder.h>

void total_init();                //  总初始化
void lock_process();        // 密码锁 处理过程
/***********************************************************************/
void main()                                                //主函数
{
   total_init();
   while(1)
   {
     lock_process();
   }

}         
/**********************************************************************/
void total_init()                 //  总初始化
{

        beep=0;
        Time0_Init();                        //定时器0中断初始化
        init();                  
    init_lcd();
        delayms(5);
/*------------------------------修改代码(2014.8.29)-------------------------------------------*/

        aa=Recstring(0xa0,1,buffer,6);   //先从EEPROM中接收数据,存入buffer缓存中,
        delayms(5);
        if(buffer[0]==NULL)                                 //如果数组的首个元素为空,则表示EEPROM中未有数据
        {       
                aa=Sendstring(0xa0,1,table2,6);          //执行发送语句,将默认密码存入EEPROM中
                delayms(5);
                aa=Recstring(0xa0,1,buffer,6);          //重新接收数据,存入buffer缓存中,
                delayms(10);
        }        /*首次执行密码锁程序会执行本段程序,以后则直接执行 aa=Recstring(0xa0,1,buffer,6);/

/*---------------------------------------------------------------------------------------------*/       
        P1=0x0f;          
}  
/**********************************************************************/
void lock_process()                        // 密码锁 处理过程
{
          
   if(P1!=0x0f)
        {       
                temp=Keys_Scan();
                switch(temp)
        {
           case 0:  case 1: case 2: case 3: case 4:
           case 5:  case 6: case 7: case 8: case 9:            
                   if (i<=5)             //密码限制在6位以内
                   {
                      Userpassword=temp;
                      DSY_BUFFER='*';
                      Display_String(DSY_BUFFER,0xc0);          
                                  i++;
                   }break;
           case 10: //按A键开锁
                        for(k=0;k<6;k++)
                                {
                                    if(buffer[k]==(Userpassword[k]+48))
                                          flag=1;
                                        else
                                          flag=0;
                            }
                if (flag==1)
                 {
                                   flag=0;
                               i=0;
                   relay=0;  //点亮LED
                   clear_password();
                   Display_String("OPEN    OK!      ",0xc0);
                   IS_valid_user = 1;
                                   j=0;
                                   Play_Song(0);                //播放
                 }
                else
                {
                                   j++;
                   relay=1;   //关闭LED
                   clear_password();
                   Display_String("ERROR!Have try   ",0xc0);
                                   write_com(0xcf);
                                   write_date(0x30+j);
                   IS_valid_user=0;
                }
                 i=0;
                break;

           case 11: //按B键上锁
                   relay=1;   
                   clear_password();
                   Display_String(table,0x80);
                   Display_String("Lock OK!         ",0xc0);
                   i=0;                        
                   IS_valid_user=0;               
                break;

           case 12: //按C键设置新密码
                       //如果是合法用户则提示输入新密码               
                if ( !IS_valid_user)
                                {
                                        i=0;
                                        Display_String("No rights !      ",0xc0);
                                        delayms(1000);
                                        Display_String("Input Password...",0x80);
                                        Display_String("Lock OK!         ",0xc0);
                            }
                else
                {
                    i=0;
                    Display_String("New Password:   ",0x80);
                    Display_String("                ",0xc0);
                }

                break;                        

           case 13: //按D键保存新密码
                if ( !IS_valid_user)
                                {       
                                        i=0;
                                        Display_String("No rights !       ",0xc0);
                                        delayms(1000);
                                    Display_String("Input Password...",0x80);
                                    Display_String("Lock OK!         ",0xc0);
                                }
                else
                {
                                        i = 0;       
                                        init();
                                        delayms(5);
                                        for(k=0;k<6;k++)
                                        {
                                                   Userpassword[k]=Userpassword[k]+48;
                                        }
                    aa=Sendstring(0xa0,1,Userpassword,6);
                                        delayms(5);
                    aa=Recstring(0xa0,1,buffer,6);  
                                        delayms(5);
                    clear_password();                        
                    Display_String(table,0x00);
                    Display_String("Password Saved!   ",0xc0);
                                        delayms(1000);
                                        Display_String("Do lock agian ?   ",0xc0);
                    }               
                break;                        

           case 14: //按E键消除所有输入
                i=0;
                clear_password();
                Display_String("                ",0xc0);            
                            break;

                   case 15:         //清除一位
                            if(i!=0)i--;
                                        for(n=0;n<i;n++)
                                        {
                                           DSY_BUFFER1[n]='*';       
                                        }
                            Display_String(DSY_BUFFER1,0xc0);          
                                          
                }
                P1=0x0f;
        }
        if(j==3)
        {       
                Display_String("THIEF!!!THIEF!!!",0xc0);
                j=0;
                bell();
        }
}                          
/***********************************END**************************************/
音乐数组文件
unsigned char code SONG[] ={      //祝你平安
0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,
0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,
0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,
0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,
0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,
0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,
0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,
0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,
0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,
0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,
0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,
0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,
0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,
0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00,
                                  //路边的野华不要采
0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,
0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,0x20,
0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,
0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,
0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,
0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,
0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30,0x1C,0x10,0x20,
0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,0x1F,
0x05,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,
0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,
0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,
0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0x00,

};
还有很多,你们可以看压缩包里的

密码锁仿真图

密码锁仿真图

基于单片机密码锁设计 1602 24c02 继电器 蜂鸣器播放音乐.rar

1.28 MB, 下载次数: 742, 下载积分: 黑币 -5

评分

参与人数 3威望 +40 黑币 +50 收起 理由
持勤补拙 + 10 共享资料的黑币奖励!
admin + 35 + 35 共享资料的积分奖励,希望大家多多发布各种.
lizi + 5 + 5 共享资料的积分奖励,希望大家多多发布各种.

查看全部评分

回复

使用道具 举报

ID:63924 发表于 2014-8-29 15:35 | 显示全部楼层
初始密码  123456
回复

使用道具 举报

ID:51025 发表于 2014-8-29 17:39 | 显示全部楼层

今天一上来就看到这么好的作品  当然要给分了
回复

使用道具 举报

ID:63924 发表于 2014-8-29 18:11 | 显示全部楼层
如果密码忘记了可以用其他含有iic的程序覆盖就行了
回复

使用道具 举报

ID:63924 发表于 2014-8-29 18:16 | 显示全部楼层
比如


/*-----------------------------------------------
  名称:IIC协议 EEPROM24c02 存数读取数据
  编写:shifang
  修改:无
  内容:此程序用于检测EEPROM性能,测试方法如下:写入24c02一个数据,然后在内存中改变这些数据,
        掉电后主内存将失去这些信息,然后从24c02中调入这些数据。看是否与写入的相同。这里用8个LED演示
                函数是采用软件延时的方法产生SCL脉冲,固对高晶振频率要作 一定的修改....(本例是1us机器
                周期,即晶振频率要小于12MHZ)
------------------------------------------------*/  
  
              
#include <reg52.h>          //头文件的包含
#include <intrins.h>

#define  _Nop()  _nop_()        //定义空指令

// 常,变量定义区

                                             
sbit SDA=P2^3;            //模拟I2C数据传送位
sbit SCL=P2^2;            //模拟I2C时钟控制位

                          
bit ack;                      //应答标志位
   

void DelayUs2x(unsigned char t);//函数声明
void DelayMs(unsigned char t);

/*------------------------------------------------
uS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
长度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{   
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{
     
while(t--)
{
     //大致延时1mS
     DelayUs2x(245);
         DelayUs2x(245);
}
}

/*------------------------------------------------
                    启动总线
------------------------------------------------*/
void Start_I2c()
{
  SDA=1;   //发送起始条件的数据信号
  _Nop();
  SCL=1;
  _Nop();    //起始条件建立时间大于4.7us,延时
  _Nop();
  _Nop();
  _Nop();
  _Nop();   
  SDA=0;     //发送起始信号
  _Nop();    //起始条件锁定时间大于4μ
  _Nop();
  _Nop();
  _Nop();
  _Nop();      
  SCL=0;    //钳住I2C总线,准备发送或接收数据
  _Nop();
  _Nop();
}
/*------------------------------------------------
                    结束总线
------------------------------------------------*/
void Stop_I2c()
{
  SDA=0;    //发送结束条件的数据信号
  _Nop();   //发送结束条件的时钟信号
  SCL=1;    //结束条件建立时间大于4μ
  _Nop();
  _Nop();
  _Nop();
  _Nop();
  _Nop();
  SDA=1;    //发送I2C总线结束信号
  _Nop();
  _Nop();
  _Nop();
  _Nop();
}




/*----------------------------------------------------------------
                 字节数据传送函数               
函数原型: void  SendByte(unsigned char c);
功能:  将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对
     此状态位进行操作.(不应答或非应答都使ack=0 假)     
     发送数据正常,ack=1; ack=0表示被控器无应答或损坏。
------------------------------------------------------------------*/
void  SendByte(unsigned char c)
{
unsigned char BitCnt;

for(BitCnt=0;BitCnt<8;BitCnt++)  //要传送的数据长度为8位
    {
     if((c<<BitCnt)&0x80)SDA=1;   //判断发送位
       else  SDA=0;               
     _Nop();
     SCL=1;               //置时钟线为高,通知被控器开始接收数据位
      _Nop();
      _Nop();             //保证时钟高电平周期大于4μ
      _Nop();
      _Nop();
      _Nop();         
     SCL=0;
    }
   
    _Nop();
    _Nop();
    SDA=1;               //8位发送完后释放数据线,准备接收应答位
    _Nop();
    _Nop();   
    SCL=1;
    _Nop();
    _Nop();
    _Nop();
    if(SDA==1)ack=0;     
       else ack=1;        //判断是否接收到应答信号
    SCL=0;
    _Nop();
    _Nop();
}







/*----------------------------------------------------------------
                 字节数据传送函数               
函数原型: unsigned char  RcvByte();
功能:  用来接收从器件传来的数据,并判断总线错误(不发应答信号),
     发完后请用应答函数。  
------------------------------------------------------------------*/        
unsigned char  RcvByte()
{
  unsigned char retc;
  unsigned char BitCnt;
  
  retc=0;
  SDA=1;             //置数据线为输入方式
  for(BitCnt=0;BitCnt<8;BitCnt++)
      {
        _Nop();           
        SCL=0;       //置时钟线为低,准备接收数据位
        _Nop();
        _Nop();      //时钟低电平周期大于4.7us
        _Nop();
        _Nop();
        _Nop();
        SCL=1;       //置时钟线为高使数据线上数据有效
        _Nop();
        _Nop();
        retc=retc<<1;
        if(SDA==1)retc=retc+1; //读数据位,接收的数据位放入retc中
        _Nop();
        _Nop();
      }
  SCL=0;   
  _Nop();
  _Nop();
  return(retc);
}



/*----------------------------------------------------------------
                     应答子函数
原型:  void Ack_I2c(void);

----------------------------------------------------------------*/
void Ack_I2c(void)
{
  
  SDA=0;     
  _Nop();
  _Nop();
  _Nop();      
  SCL=1;
  _Nop();
  _Nop();              //时钟低电平周期大于4μ
  _Nop();
  _Nop();
  _Nop();  
  SCL=0;               //清时钟线,钳住I2C总线以便继续接收
  _Nop();
  _Nop();   
}
/*----------------------------------------------------------------
                     非应答子函数
原型:  void NoAck_I2c(void);

----------------------------------------------------------------*/
void NoAck_I2c(void)
{
  
  SDA=1;
  _Nop();
  _Nop();
  _Nop();      
  SCL=1;
  _Nop();
  _Nop();              //时钟低电平周期大于4μ
  _Nop();
  _Nop();
  _Nop();  
  SCL=0;                //清时钟线,钳住I2C总线以便继续接收
  _Nop();
  _Nop();   
}






/*----------------------------------------------------------------
                    向无子地址器件发送字节数据函数               
函数原型: bit  ISendByte(unsigned char sla,ucahr c);  
功能:     从启动总线到发送地址,数据,结束总线的全过程,从器件地址sla.
           如果返回1表示操作成功,否则操作有误。
注意:    使用前必须已结束总线。
----------------------------------------------------------------*/
/*bit ISendByte(unsigned char sla,unsigned char c)
{
   Start_I2c();               //启动总线
   SendByte(sla);             //发送器件地址
     if(ack==0)return(0);
   SendByte(c);               //发送数据
     if(ack==0)return(0);
  Stop_I2c();                 //结束总线
  return(1);
}
*/

/*----------------------------------------------------------------
                    向有子地址器件发送多字节数据函数               
函数原型: bit  ISendStr(unsigned char sla,unsigned char suba,ucahr *s,unsigned char no);  
功能:     从启动总线到发送地址,子地址,数据,结束总线的全过程,从器件
          地址sla,子地址suba,发送内容是s指向的内容,发送no个字节。
           如果返回1表示操作成功,否则操作有误。
注意:    使用前必须已结束总线。
----------------------------------------------------------------*/
bit ISendStr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no)
{
   unsigned char i;

   Start_I2c();               //启动总线
   SendByte(sla);             //发送器件地址
     if(ack==0)return(0);
   SendByte(suba);            //发送器件子地址
     if(ack==0)return(0);

   for(i=0;i<no;i++)
    {   
     SendByte(*s);            //发送数据
       if(ack==0)return(0);
     s++;
    }
Stop_I2c();                  //结束总线
  return(1);
}

/*----------------------------------------------------------------
                    向无子地址器件读字节数据函数               
函数原型: bit  IRcvByte(unsigned char sla,ucahr *c);  
功能:     从启动总线到发送地址,读数据,结束总线的全过程,从器件地
          址sla,返回值在c.
           如果返回1表示操作成功,否则操作有误。
注意:    使用前必须已结束总线。
----------------------------------------------------------------*/
/*bit IRcvByte(unsigned char sla,unsigned char *c)
{
   Start_I2c();                //启动总线
   SendByte(sla+1);            //发送器件地址
     if(ack==0)return(0);
   *c=RcvByte();               //读取数据
     NoAck_I2c();              //发送非就答位
     Stop_I2c();               //结束总线
  return(1);
}

*/
/*----------------------------------------------------------------
                    向有子地址器件读取多字节数据函数               
函数原型: bit  ISendStr(unsigned char sla,unsigned char suba,ucahr *s,unsigned char no);  
功能:     从启动总线到发送地址,子地址,读数据,结束总线的全过程,从器件
          地址sla,子地址suba,读出的内容放入s指向的存储区,读no个字节。
           如果返回1表示操作成功,否则操作有误。
注意:    使用前必须已结束总线。
----------------------------------------------------------------*/
bit IRcvStr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no)
{
   unsigned char i;

   Start_I2c();               //启动总线
   SendByte(sla);             //发送器件地址
     if(ack==0)return(0);
   SendByte(suba);            //发送器件子地址
     if(ack==0)return(0);

   Start_I2c();
   SendByte(sla+1);
      if(ack==0)return(0);

   for(i=0;i<no-1;i++)
    {   
     *s=RcvByte();              //发送数据
      Ack_I2c();                //发送就答位
     s++;
    }
   *s=RcvByte();
    NoAck_I2c();                 //发送非应位
   Stop_I2c();                    //结束总线
  return(1);
}
/*------------------------------------------------
                    主函数
------------------------------------------------*/
void main()
        {
         unsigned char flye;       // 定义临时变量
         unsigned char i;
         
         IRcvStr(0xae,4,&flye,1);  //调用存储数据
         
         while(1)
              {  
                  P1=flye;             //数值用二进制显示,直接用8个LED表示
          for(i=0;i<5;i++)   
              DelayMs(200);
          flye++;              //1s钟变量自加1,改变值后存储到24c02
                                 //下次开机时将显示当前数值
          ISendStr(0xae,4,&flye,1); //写入24c02
                  }
}



评分

参与人数 1威望 +5 黑币 +5 收起 理由
feng69635 + 5 + 5

查看全部评分

回复

使用道具 举报

ID:63924 发表于 2014-8-29 18:18 | 显示全部楼层
lizi 发表于 2014-8-29 17:39
今天一上来就看到这么好的作品  当然要给分了

好的,谢谢你
回复

使用道具 举报

ID:63924 发表于 2014-8-29 22:18 | 显示全部楼层
实物初始密码,000000
回复

使用道具 举报

ID:63924 发表于 2014-8-29 22:18 | 显示全部楼层
实物初始密码,000000
回复

使用道具 举报

ID:66341 发表于 2014-9-19 16:20 | 显示全部楼层
今天一上来就看到这么好的作品  当然要给分了
回复

使用道具 举报

ID:66574 发表于 2014-9-24 12:28 | 显示全部楼层
好!值得顶起
回复

使用道具 举报

ID:65893 发表于 2014-10-5 21:11 | 显示全部楼层
值得学习大的作品啊,谢谢楼主
回复

使用道具 举报

ID:67760 发表于 2014-10-22 07:35 | 显示全部楼层
刚有做这个实验的想法,感谢分享
回复

使用道具 举报

ID:63924 发表于 2014-10-22 13:58 | 显示全部楼层
不用谢
回复

使用道具 举报

ID:66501 发表于 2014-10-24 14:03 | 显示全部楼层
掘墓高手,专挖古墓,一挖一个坑,坑坑见墓。。
回复

使用道具 举报

ID:63924 发表于 2014-10-25 08:05 | 显示全部楼层
什么的
回复

使用道具 举报

ID:68421 发表于 2014-11-6 00:05 | 显示全部楼层
非常好的学习例程 感谢楼主
回复

使用道具 举报

ID:63924 发表于 2014-11-6 00:25 | 显示全部楼层
不用谢,
回复

使用道具 举报

ID:65916 发表于 2014-11-6 21:25 | 显示全部楼层
非常给力
回复

使用道具 举报

ID:70255 发表于 2014-12-27 18:44 | 显示全部楼层
厉害着都做得出来a
回复

使用道具 举报

ID:71889 发表于 2015-1-9 00:00 | 显示全部楼层
赞一个
回复

使用道具 举报

ID:70129 发表于 2015-1-11 17:20 来自手机 | 显示全部楼层
谢谢楼主分享,和,很优秀的作品。
回复

使用道具 举报

ID:79247 发表于 2015-5-7 22:23 | 显示全部楼层
请问各位大神,基于51单片机的电子密码锁,4*4按键没反应有可能是什么原因啊,程序是别人做成功过的,电路也是照着焊的,查了好多遍,电路是通的,没有短路,求大神指导
回复

使用道具 举报

ID:75461 发表于 2015-5-7 23:09 | 显示全部楼层
好资料,顶起。。。
回复

使用道具 举报

ID:80646 发表于 2015-5-20 22:46 | 显示全部楼层
好资料,下下来看看
回复

使用道具 举报

ID:81073 发表于 2015-5-25 16:43 | 显示全部楼层
为什么我输入密码123456和000000都不对呢
回复

使用道具 举报

ID:63924 发表于 2015-6-3 18:14 | 显示全部楼层
xxxxx111 发表于 2015-5-25 16:43
为什么我输入密码123456和000000都不对呢

你好,因为我近端来都没有上论坛,没有能看,你的问题你先仿真,键盘的和实际的有差别。
回复

使用道具 举报

ID:63924 发表于 2015-6-3 18:14 | 显示全部楼层

谢谢,,,。
回复

使用道具 举报

ID:44267 发表于 2015-9-7 09:08 | 显示全部楼层
怎么不行啊
回复

使用道具 举报

ID:79034 发表于 2015-9-11 19:08 | 显示全部楼层
好东西,值得学习。。
回复

使用道具 举报

ID:93718 发表于 2015-10-27 10:54 | 显示全部楼层
新手报道 学习学习
回复

使用道具 举报

ID:64089 发表于 2015-12-22 18:03 | 显示全部楼层
GOOD JOB.I LIKE IT VERY MUCH!
回复

使用道具 举报

ID:100253 发表于 2015-12-24 09:02 | 显示全部楼层
PROTEUS 完整的设计图可以发下么?仿真文件,打不开
回复

使用道具 举报

ID:99692 发表于 2015-12-24 09:38 | 显示全部楼层
好东西值得学习。谢谢楼主分享
回复

使用道具 举报

ID:111090 发表于 2016-3-28 09:41 | 显示全部楼层
谢谢楼主,收藏了
回复

使用道具 举报

ID:116631 发表于 2016-4-25 19:00 | 显示全部楼层
大赞楼主,给力给力
回复

使用道具 举报

ID:92231 发表于 2016-4-28 09:26 | 显示全部楼层
杩欎箞瀹屾暣鐨勫伐绋嬶紝瀛︿範浜嗭紝璋㈣阿妤间富寮
回复

使用道具 举报

ID:92231 发表于 2016-4-28 09:27 来自手机 | 显示全部楼层
怎么出现乱码了!
回复

使用道具 举报

ID:63924 发表于 2016-4-29 22:09 | 显示全部楼层
怎么回事,是仿真时候还是程序
回复

使用道具 举报

ID:63924 发表于 2016-4-30 12:00 | 显示全部楼层
密码为:123456  最右边的有提示
回复

使用道具 举报

ID:63924 发表于 2016-4-30 12:01 | 显示全部楼层
whengfu 发表于 2016-4-28 09:27
怎么出现乱码了!

你好,我的仿真和keil都没有出现乱码
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表