BASIC4MCU | 질문게시판 | ATMEGA128/CLCD/키패드 활용한 도어락
페이지 정보
작성자 JJEI 작성일2019-05-30 10:34 조회6,735회 댓글0건본문
다음 회로도와는 다른 ATMEGA 128 CPU만 사용하고 있고 키패드도 4X4 키패드를 사용하여 도어락을 구성하려고 합니다.
현재 첫번째 줄에 PASSWARD: 라는 문구를 표현하였고 이문구 뒤에 키패드 입력을 LCD에 표현 하려고 합니다.
도와주세요 ㅜㅜ
#include
#define F_CPU 16000000UL
#include
#define LCD_DB_DDR DDRA
#define LCD_DB_PORT PORTA
#define LCD_DB_PIN PINA
#define LCD_CT_DDR DDRC
#define LCD_CT_PORT PORTC
#define LCD_CT_PIN PINC
#define LCD_EN 0x01 // "H"= ON, "L"= OFF
#define LCD_RS 0x02 // "H"= 데이터, "L"= 명령어
#define LCD_RW 0x03 // "H"= 읽기, "L"= 쓰기
#define LCD_OFF 0xf8 // 1111 1000
void initialize_text_lcd(void);
void lcd_control_write(unsigned char data);
void lcd_char_data_write(unsigned char data);
int main(void)
{
LCD_DB_DDR = 0xff; // 포트 A를 출력으로 사용
LCD_CT_DDR = 0xff; // 포트 C를 출력으로 사용
LCD_DB_PORT = 0xff; // 포트A의 출력
LCD_CT_PORT = 0xff; // 포트B의 출력
_delay_ms(10); //시간 지연
initialize_text_lcd(); //LCD 초기화
lcd_char_data_write('P'); //LCD에 'PASSWARD:' display
lcd_char_data_write('A');
lcd_char_data_write('S');
lcd_char_data_write('S');
lcd_char_data_write('W');
lcd_char_data_write('A');
lcd_char_data_write('R');
lcd_char_data_write('D');
lcd_char_data_write(':');
while(1);
}
void initialize_text_lcd(void) //초기화...
{
lcd_control_write(0x38); //8-bit 인터페이스와 2줄에 걸쳐 출력하는 모드 설정
lcd_control_write(0x02); //커서를 1행 1열로 이동
lcd_control_write(0x01); //화면 클리어
lcd_control_write(0x06); //커서의 어드레스가 증가 - 오른쪽으로 이동
lcd_control_write(0x0f); //표시 on, 커서 on, 점멸 on
}
void lcd_control_write(unsigned char data)
{
LCD_CT_PORT = LCD_EN; //0x01; rs를 주지 않아 명령 레지스트로 설정
LCD_DB_PORT = data; //LCD에 명령어 출력
LCD_CT_PORT = LCD_OFF;
_delay_ms(5); //시간 지연
}
void lcd_char_data_write(unsigned char data)
{
LCD_CT_PORT = LCD_EN | LCD_RS; //0x03 , lcd_rs를 통해 데이터 레지스트로 설정함
LCD_DB_PORT = data; //LCD에 data 출력
LCD_CT_PORT = LCD_OFF;
_delay_us(100); //시간 지연
}
댓글 0
조회수 6,735등록된 댓글이 없습니다.