📄 12键盘密码锁设计报告.txt
字号:
#include <msp430x44x.h>
#define KEY_BOARD 1
unsigned char key_Pressed,
key_val,
key_Flag;
unsigned char key_Map[12] ={
1,2,3,10,4,5,
6,0,7,8,9,11
};
void init_Keyboard(void){
P1DIR &= 0x01;
P1DIR |= 0x0E;
P1OUT |= 0x0E;
key_Flag = 0;
key_Pressed = 0;
}
void check_Key(void){
unsigned char row ,col,tmp1,tmp2;
tmp1 = 0x08;
for(row=0;row<3;row++){
P1OUT |= 0x0E;
P1OUT -= tmp1;
tmp1 = tmp1/2;
if ((P1IN & 0xf0) < 0xf0){
tmp2 = 0x80;
for(col =0;col<0x04;col++){
if((P1IN & tmp2)==0x00){
key_val =key_Map[ row*4 +col] ;
return;
}
tmp2 /= 2;
}
}
}
}
void delay(unsigned char i)
{
while(i!=0)i--;
}
void key_Event(void){
unsigned char tmp;
P1OUT &= 0x01;
tmp = P1IN;
if ((key_Pressed ==0x00)&&((tmp & 0xf0) < 0xf0))
{
key_Pressed = 1;
delay(500);
check_Key();
}else if ((key_Pressed ==1)&&((tmp & 0xf0) == 0xf0))
{
key_Pressed = 0;
key_Flag = 1;
}
}
#define LED_IN_USE 6
const unsigned char NUM_LED[17]=
{0xd7,0x14,0xcd,0x5d,0x1E,
0x5b,0xdb,0x15,0xdf,0x5f,
0x9f,0xda,0xc3,0xcc,0xcf,
0x8b,0x00};
unsigned char led_Buf[LED_IN_USE];
unsigned char led_Ctrl;
void init_LED(void){
char tmpv;
P3DIR = 0xff;
P3OUT = 0x00;
P4DIR |= 0x03;
P4OUT &= 0xfc;
led_Ctrl = 0;
for(tmpv=0;tmpv<LED_IN_USE;tmpv++)
{
led_Buf[tmpv] = 0;
}
}
void led_Display(){
unsigned tmp ;
tmp = 0x01;
P3OUT = NUM_LED[led_Buf[led_Ctrl]];
P4OUT |= 0x02;
P4OUT &= 0XFD;
P3OUT = ~(tmp<<led_Ctrl);
P4OUT |= 0x01;
P4OUT &= 0XFE;
led_Ctrl= (led_Ctrl +1) % LED_IN_USE;
}
void main(void)
{
unsigned char keyin[]={1,2,3,4,5,6};
WDTCTL = WDTHOLD + WDTPW ;
kkk:P5DIR |= 0x02;
P5OUT &=0X00;
char k[6]={0};
init_Keyboard();
while(1)
{
for(int i=0;i<6;)
{
key_Event();
if (key_Flag == 1)
{
k[i]=key_val;
i++;
key_Flag= 0;
}
}
if( k[0] == keyin[0])
if( k[1] == keyin[1])
if( k[2] == keyin[2])
if( k[3] == keyin[3])
if( k[4] == keyin[4])
if(k[5] == keyin[5])
{
P5OUT |=0X02;
while(1)
{
key_Event();
if (key_Flag == 1) goto kkk;
}
}
else
P5OUT &=~0X02;
else
P5OUT &=~0X02;
else
P5OUT &=~0X02;
else
P5OUT &=~0X02;
else
P5OUT &=~0X02;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -