⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 +_-

📁 avr单片机icc写的密码锁
💻
字号:
/****************************************************************
                451LED、矩阵(中断式)                             
*****************************************************************/
//端口设置
#define ch451din0 PORTB&=~BIT(PB0)
#define ch451din1 PORTB|=BIT(PB0)
#define ch451dclk0 PORTB&=~BIT(PB1)
#define ch451dclk1 PORTB|=BIT(PB1)
#define ch451load0 PORTB&=~BIT(PB2)
#define ch451load1 PORTB|=BIT(PB2)
#define ch451dout0 PORTD&=~BIT(PD2)
#define ch451dout1 PORTD|=BIT(PD2)
// ch451控制命令集
#define CH451_RESET     0x0201               //复位
#define CH451_LEFTMOV   0x0300             //设置移动方式-左移
#define CH451_LEFTCYC   0x0301             //设置移动方式-左循
#define CH451_RIGHTMOV  0x0302             //设置移动方式-右移
#define CH451_RIGHTCYC  0x0303             //设置移动方式-右循        
#define CH451_SYSOFF    0x0400             //关显示、键盘、看门狗
#define CH451_SYSON1    0x0401             //开显示
#define CH451_SYSON2    0x0403             //开显示、键盘
#define CH451_SYSON3    0x0407             //开显示、键盘、看门狗功能
#define CH451_DSP       0x0500            //设置默认显示方式
#define CH451_BCD       0x058f             //设置BCD译码方式
#define CH451_BCD1      0x05f5           //
#define CH451_TWINKLE 0X0600           //设置闪烁控制
#define CH451_ONE 0x0603                 //1、2位闪烁
#define CH451_FOUR 0x0618                 //4、5位闪烁
#define CH451_SEVEN 0x06c0                //7、8位闪烁
//#define CH451_ATWINKLE  0X06ff    //全闪

// 数码管各位显示

#define CH451_DIG0 0x0800
#define CH451_DIG1 0x0900
#define CH451_DIG2 0x0a00
#define CH451_DIG3 0x0b00
#define CH451_DIG4 0x0c00
#define CH451_DIG5 0x0d00
#define CH451_DIG6 0x0e00
#define CH451_DIG7 0x0f00
//键盘控制
#define keycode_s1 0x45
#define keycode_s2 0x4d
#define keycode_s3 0x55
#define keycode_s4 0x5d
#define keycode_s5 0x65
#define keycode_s6 0x6d
#define keycode_s7 0x75
#define keycode_s8 0x7d
#define keycode_s9 0x46
#define keycode_s10 0x4e
#define keycode_s11 0x56
#define keycode_s12 0x5e
#define keycode_s13 0x66
#define keycode_s14 0x6e
#define keycode_s15 0x76
#define keycode_s16 0x7e
#define keycode_s17 0x47
#define keycode_s18 0x4f
#define keycode_s19 0x57
#define keycode_s20 0x5f
#define keycode_s21 0x67
#define keycode_s22 0x6f
#define keycode_s23 0x77
#define keycode_s24 0x7f

//端口初始化
void port_init451()
{  
   CLI();
   MCUCR=0X00;
   MCUCSR=0X80;
   GICR=0X00;
   DDRB=0x07;
   PORTB=0x07;

   
}

//定义一个无符号整型变量存储12字节的命令字
//写指令程序
void ch451_write(uint com)
{
    uchar i,a;
    ch451load0;
	for(i=0;i<12;i++)
	{
	   a=com&1;
       if(a)
       {
          ch451din1;
	   }
       else
       {
          ch451din0;
       }
       ch451dclk0;
       ch451dclk1;
	   com>>=1;
    }
       ch451load1;

}
//读按键指令
uchar ch451_read()
{
    uchar i,temp,com,keycode,j;
    ch451load0;
//读行数
    com=0x07;
    for(i=0;i<4;i++)
    {
        if(com&0x01)
		{ 
		   ch451din1;
        }
		else 
		{
		   ch451din0;
        }
		com>>=1;
        ch451dclk0;
		ch451dclk1;
	}
        ch451load1;
//读按键
    keycode=0;
    for(i=0;i<7;i++)
    {
      keycode<<=1;
	  j=PIND;
	  
	  if(j&BIT(2))
	     keycode++;
	  
	  ch451dclk0;
	  ch451dclk1;  
    }
     return keycode;
}
void ch451_init()
{
   ch451din0;
   ch451din1;
}
//中断初始化
void int0_init()
{
   PORTD|=BIT(2);
   DDRD&=~BIT(2);
   MCUCR|=0X00;
   MCUCSR|=0X00;
   GICR|=0X40;
   SREG|=BIT(7);
}


 /*port_init451();
   int0_init();
   ch451_init();
   ch451_write(CH451_RESET);
   ch451_write(CH451_SYSON2);
   ch451_write(CH451_TWINKLE);
   ch451_write(CH451_BCD);*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -