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; //모터 정회전 정지