avr질문이요
페이지 정보
작성자 다빈 작성일18-06-05 17:20 조회11,691회 댓글4건본문
#include<avr/io.h>
#include<util/delay.h>
#include"LCD.h"
#define SIG 0x01
unsigned char password[4] = "1234"; //패스워드
unsigned char pass_buf[4] = "0000"; //현재의 패스워드를 저장 할 버퍼
unsigned char msg1[ ] = "Password : ";
unsigned char msg2[ ] = "Correct pass!!";
unsigned char msg3[ ] = "Incorrect pass!!";
unsigned char cnt=0,loop=1;
void Port_init(void)
{
DDRB = 0xff; PORTB=0x00;
DDRE = 0xff; PORTE=0x00;
DDRF = 0x1f; PORTF=0xff;
}
unsigned char scan_key(void)
{
unsigned char Scan_signal=0, scan_value=0;
unsigned int i;
for(i=0;i<4;i++)
{
Scan_signal = ~(SIG << i);
PORTF = Scan_signal;
if((PINF & 0xe0) != 0xe0)
{
scan_value= (PINF & 0xe0)|(Scan_signal & 0x0f);
}
while((PINF & 0xe0) != 0xe0); //키가 눌려 있을 경우
}
return scan_value;
}
void save_buf(unsigned char number)
{
pass_buf[cnt++] = number;
LCD_data(number);
}
void display_key(unsigned char input)
{
switch(input)
{
case 0xce : save_buf(0x30+1); break;// 1
case 0xae : save_buf(0x30+2); break;// 2
case 0x6e : save_buf(0x30+3); break;// 3
case 0xcd : save_buf(0x30+4); break;// 4
case 0xad : save_buf(0x30+5); break;// 5
case 0x6d : save_buf(0x30+6); break;// 6
case 0xcb : save_buf(0x30+7); break;// 7
case 0xab : save_buf(0x30+8); break;// 8
case 0x6b : save_buf(0x30+9); break;// 9
case 0xc7 : save_buf(0x23); break;// #
case 0xa7 : save_buf(0x30); break;// 0
case 0x67 : save_buf(0x2A); break;// *
}
}
void compare_pw(void)
{
if(cnt==4)
{
unsigned int i, pw_error=0;
for(i=0;i<4;i++) // 패스워드 비교
{
if(password[i]!=pass_buf[i])pw_error++;
}
if(pw_error==0) //패스워드가 맞을 때
{
LCD_cmd(0x00); _delay_ms(2); //display clear;
LCD_cmd(0x01); _delay_ms(2); //cursor return home;
LCD_str_out(msg2); _delay_ms(100);
cnt=0;
loop=0;
LCD_cmd(0x00); _delay_ms(2);
LCD_cmd(0x01); _delay_ms(2);
}
else //패스워드가 틀릴 때
{
LCD_cmd(0x00); _delay_ms(2); //display clear;
LCD_cmd(0x01); _delay_ms(2); //cursor return home;
LCD_str_out(msg3); _delay_ms(100);
cnt=0;
loop=1;
LCD_cmd(0x00); _delay_ms(2);
LCD_cmd(0x01); _delay_ms(2);
LCD_str_out(msg1);
}
}
}
void main()
{
Port_init();
LCD_init();
while(1)
{
LCD_str_out(msg1);
while(loop)
{
display_key(scan_key());
compare_pw();
}
loop=1;
}
}
오류가 떠요
댓글 : 4
조회수 : 11,691
master님의 댓글
master 작성일
오류(에러)에 보면
../main.c:3:16: error: LCD.h: No such file or directory
적색으로 표시되어 있고
더블 클릭하면
#include"LCD.h" 커서가 이리로 갑니다.
헤더파일이 없다는 에러입니다.
다빈님의 댓글
다빈 작성일그건 알겠는데 걔를 없애면 수많은 오류들이 탄생해요
master님의 댓글
master
당연히 LCD 관련 코드들이 전부 반란을 일으키겠죠?
헤더파일 구해서 작업폴더에 넣으세요
master님의 댓글
master
LCD 사용하지 않으면
LCD 관련 코드를 모두 삭제하세요