Page 254 - MDP2020-3
P. 254

248
                      |    인천전자마이스터고등학교  ·············································································································

            제  5  장  소스




                가.  소스코드
                  1)  키  매트릭스를  이용한  도어락  제어  및  LCD  임시  상태  표시
            #include  <mega128.h>

            #include  <delay.h>


            int  KeyMatrix(unsigned  char  j);
            unsigned  int  b=0;  //키매트릭스  입력  눌렀을  때  동작을  하게  하기  위한  변수
            void  main(void)

            {
                    int  i,  keymatrix,  count  =  0,  cnt=0;      //count는  비밀번호가  맞는지  확인하는  용도,  cnt는
            배열에  넣을  변수
                    unsigned  char  matrix,  comparePW[1000];
                    unsigned  char  fnd[17]  =  {0xc0,  0xf9,  0xa4,  0xb0,  0x99,  0x92,  0x82,  0xd8,  0x80,

            0x90,  0x88,  0x83,  0xc6,  0xa1,  0x86,  0x8e};        //FND  0~F  까지  설정
                    unsigned  char  rightPW[4]  =  {1,  2,  3,  4};
                    DDRA  =  0xFF;    //led  설정
                    DDRB  =  0xFF;    //DC  모터  설정
                    DDRC  =  0xFF;    //a~dp  설정

                    DDRD  =  0x0F;    //매트릭스  설정  (D포트에  0~3은  출력,  4~7은  입력  설정)
                    DDRF  =  0xFF;    //FND  개수  설정

                    PORTA  =  0xFF;  //A포트  출력  설정
                    PORTB  =  0x00;  //B포트  입력  설정

                    PORTC  =  0xFF;  //C포트  출력  설정
                    PORTD  =  0xFF;  //D포트  출력  설정
                    PORTF  =  0xFE;  //FND1만  킴
                    while  (1)
                            {

                                    if  (b==1){                                                                                          //도어락을  눌렀을  때
                                            for(i=0;i<4;i++){                                //4번  누르니까  0부터  3까지  1씩  증가
                                                    if(rightPW[i]==comparePW[i]){  //누르면  도어락  누른  게  하나씩  카운트
                                                            count+=1;
                                                    }

                                            }
                                            if(count==4)  {                                                                          //비밀번호가  맞으면
                                                    PORTA=0x00;                                                                        //led를  켜지게  함
                                                    PORTB.0=1;                                                                          //모터  정회전  동작
                                                    PORTB.1=0;                                                                          //모터  정회전  정지
   249   250   251   252   253   254   255   256   257   258   259