소개글
ATMEGA128 CPU와 breadboard를 활용한 CLCD(2x16) 행맨 구현 프로그램입니다. CLCD나 조건이 달라도 필요한 부분만 응용 하시면 큰 도움될거라 생각합니다.
기말과제에서 50명중 1등으로 A+을 받았으며 배열을 이용하여 쉽게 구현하였습니다. 이 브레드보드를 구성하여 이 프로그램을 복사 붙여넣기 하셔도 되지만, 필요한 부분만 골라서 쓰셔도 큰 도움 될거라 생각합니다.
기능설명서
1. 기본행맨 기능(버튼조작으로 알파벳설정, 인터럽트1 버튼으로 정답, 오답 비교)
2. 틀렸을 때 문자출력, 라이프-1, 게임오버됐을 때 문자출력 및 자동 재시작
3. 버튼 입력 제한시간 타이머, 시간다되면 타임오버, 라이프-1(버튼 누를시 초기화), 5초 미만일시 깜빡임 추가
4. LED로 남은 라이프 표시(처음 9로 시작 8, 7, 6, ...)
5. 버튼1 알파벳+, 버튼2 알파벳-, 버튼3 사용자 편의를 위해 알파벳 n으로 건너감
6. 인터럽트1 엔터 기능(정답인지 오답인지 비교 및 게임오버 여부 확인까지, 오답일시 라이프-1, 정답일시 다음레벨으로)
7. 인터럽트2 교수대 구현(오답일 때, 타임오버일 때 라이프가 깎이면 자동 표시, 인터럽트버튼으로도 확인가능)
8. 인터럽트3 단어 맞출 때 사용된 알파벳 확인 기능
9. 인터럽트4 현재 레벨 정답 확인 기능
10. 인터럽트5 단어 레벨 구현 및 조정 기능(총 9단계 단어)
11. 인터럽트6 힌트 기능, 현재레벨 단어 몇 개만 보여주기
12. 인터럽트7 성공, 실패횟수, 스코어 등 기록화면
13. 인터럽트8 사용자 단어모드, 단어입력 받아서 문제 만들기 기능(바꾸고 싶은 레벨의 단어를 수정가능
목차
없음
본문내용
#include <iom128v.h>
#include <avrdef.h>
void delay_ms(unsigned int m);
void delay_us(unsigned int u);
void write_data(char d);
void write_instruction(char i);
void init_lcd(void);
void null_lcd(void);
void start_game(void);
void main_game(void);
void compare_word(void);
void time_over_check(void);
void game_over_check(void);
void scaffold(void);
void underbar_make(void);
void alphabet_control(void);
unsigned int count = 0;//unsigned int 0~65534, 오버플로우 발생시 카운트세는 변수
void timer0_ovf_isr(void);//오버플로우 발생 시 작동하는 인터럽트 함수 선언
char opening[35] = {"WELCOME TO HANG MAN MADE BY PARK"};
char alphabet[27] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
char word_level[9][10] = {"dog","apple","banana","swing","faith","patience","physics","stripper","elements"}; //[9] 배열개수, [10]하나의 배열당 길이
char word_hint[9][10] = {"d_g","a_pl_","b_na_a","_wi_g","fai__","p_ti_nc_","_hy_i_s","_tr_pp_r","e_e_en_s"}; //[9] 배열개수, [10]하나의 배열당 길이
char CLCD[32];
char answer[15] = {"YOUR ANSWER => "};
참고 자료
없음