-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
-
42
-
43
-
44
-
45
목차
1. 서론
1.1 보고서 구성
2. 본론
2.1 선행기술
2.2 개발 환경
2.3 구현원리
3. 결과
3.1 구현방식
4. 문제점 및 결론
5. 참고문헌
부록 프로그램 코드
1.1 보고서 구성
2. 본론
2.1 선행기술
2.2 개발 환경
2.3 구현원리
3. 결과
3.1 구현방식
4. 문제점 및 결론
5. 참고문헌
부록 프로그램 코드
본문내용
abled = False
CmdUpdate.Enabled = False
End Sub
Private Sub CmdEnd_Click()
ds.Close
db.Close
Unload Me
StartPage.Show
End Sub
3. AVR 프로그램
#include <90s8515.h>
#include
#include
#define FUNCSET0x28// Function Set
#define ENTMODE0x06// Entry Mode Set
#define ALLCLR0x01// All Clear
#define DISPON0x0c // Display On
#define LINE20xC0// 2nd Line Move
char receive=0;
char rx;
char str[5];
char cScore;
unsigned k_s;
unsigned j_s;
unsigned char led = 0xFE;
int cPacketNo=0;
// 시간 지연 함수
void Busy(void)
{delay_ms(2);// 2ms간 지연}
// 인스트럭션 쓰기 함수
void Command(unsigned char byte)
{Busy();// 시간 지연 함수 호출
// 인스트럭션 상위 바이트
PORTC = (byte & 0xF0);// 데이터
PORTC &= 0xFE;//RS = 0;
PORTC &= 0xFD;//RW = 0;
delay_us(1);
PORTC |= 0x04;//E = 1;
delay_us(1);
PORTC &= 0xFB;//E = 0;
// 인스트럭션 하위 바이트
PORTC = ((byte<<4) & 0xF0);// 데이터
PORTC &= 0xFE;//RS = 0;
PORTC &= 0xFD;//RW = 0;
delay_us(1);
PORTC |= 0x04;//E = 1;
delay_us(1);
PORTC &= 0xFB;//E = 0;}
//데이터 쓰기 함수
void Data(unsigned char byte)
{Busy();
// 데이터 상위 바이트
PORTC = (byte & 0xF0);// 데이터
PORTC |= 0x01;//RS = 1;
PORTC &= 0xFD;//RW = 0;
delay_us(1);
PORTC |= 0x04;//E = 1;
delay_us(1);
PORTC &= 0xFB;//E = 0;
// 데이터 하위 바이트
PORTC = ((byte<<4) & 0xF0); // 데이터
PORTC |= 0x01;//RS = 1;
PORTC &= 0xFD;//RW = 0;
delay_us(1);
PORTC |= 0x04;//E = 1;
delay_us(1);
PORTC &= 0xFB;//E = 0;}
// LCD 초기화
void LCD_init(void)
{ DDRC = 0xFF;// PORTC의 모든 포트를 출력으로 설정
PORTC &= 0xFB;//E = 0;
delay_ms(15);
Command(0x20);
delay_ms(5);
Command(0x20);
delay_us(100);
Command(0x20);
Command(FUNCSET);
Command(DISPON);
Command(ALLCLR);
Command(ENTMODE);}
// 아스키 값을 16진수로 변환함수
int asc2hex(char ch)
{if ( (ch >= '0') && (ch<='9')) return (ch-'0');
else if( (ch >= 'a') && (ch<='f')) return (ch-'a'+10);
else if( (ch >= 'A') && (ch<='F')) return (ch-'A'+10);
return 0;}
// 대전국 출력 함수
void LCD_String(char flash str[])
{char flash *pStr=0;
pStr = str;
while(*pStr) Data(*pStr++);}
// 스코어 출력함수
void LCD_Score(char str[])
{while(*str) Data(*str++);}
interrupt [UART_RXC] void uart_rxc(void)
{rx = UDR; // 수신된 UART 데이터 레지스터를 rx에 저장
UCR |= 0x20;// UART 데이터 레지스터 empty 인터럽트 인에이블 UDRIE = '1'
receive =1;}
interrupt [UART_DRE] void uart_dre(void)
{ UDR = rx;// 수신된 rx를 UART 데이터 레지스터에 전송
UCR &= 0xDF;// UART 데이터 레지스터 empty 인터럽트 디스에이블 UDRIE = '0'}
void main(void)
{
UCR |= 0x80;
UCR |= 0x10;// 수신 인에이블 RXEN = '1'
UCR |= 0x08;// 송신 인에이블 TXEN = '1'
UBRR = 51; // X-TAL = 8MHz 일때, BAUD = 9600
#asm ("sei")
LCD_init(); // LCD 초기화
DDRB = 0xFF; // B 포트 모든 핀을 출력으로 설정
PORTB = led;// B 포트에 초기값 출력 while(1)
{
if( receive ) // 수신된 rx DATA를 이용하여 LCD에 디스플레이
{ rx &= 0xff;
if( rx == 'H' )
{
if( cPacketNo >= 2 )
{
k_s=asc2hex(cScore[0]);
// 수신된 아스키 값을 정수 값으로 변환
j_s=asc2hex(cScore[1]);sprintf(str,"% 01u : %01u", k_s, j_s); //변환된 정수 값을 스트링으로 변환Command(0x02);
LCD_String("Korea : Japan ");
// 대전팀 디스플레이
Command(LINE2); // 두 번째 라인에 출력
LCD_Score(str);
// 스코어 디스플레이
}
cPacketNo = 0;
}
else if( rx == 'G' )
{PacketNo = 0;}
else
{cScore[cPacketNo++] = rx;}
receive=0;
}
}
}
CmdUpdate.Enabled = False
End Sub
Private Sub CmdEnd_Click()
ds.Close
db.Close
Unload Me
StartPage.Show
End Sub
3. AVR 프로그램
#include <90s8515.h>
#include
#include
#define FUNCSET0x28// Function Set
#define ENTMODE0x06// Entry Mode Set
#define ALLCLR0x01// All Clear
#define DISPON0x0c // Display On
#define LINE20xC0// 2nd Line Move
char receive=0;
char rx;
char str[5];
char cScore;
unsigned k_s;
unsigned j_s;
unsigned char led = 0xFE;
int cPacketNo=0;
// 시간 지연 함수
void Busy(void)
{delay_ms(2);// 2ms간 지연}
// 인스트럭션 쓰기 함수
void Command(unsigned char byte)
{Busy();// 시간 지연 함수 호출
// 인스트럭션 상위 바이트
PORTC = (byte & 0xF0);// 데이터
PORTC &= 0xFE;//RS = 0;
PORTC &= 0xFD;//RW = 0;
delay_us(1);
PORTC |= 0x04;//E = 1;
delay_us(1);
PORTC &= 0xFB;//E = 0;
// 인스트럭션 하위 바이트
PORTC = ((byte<<4) & 0xF0);// 데이터
PORTC &= 0xFE;//RS = 0;
PORTC &= 0xFD;//RW = 0;
delay_us(1);
PORTC |= 0x04;//E = 1;
delay_us(1);
PORTC &= 0xFB;//E = 0;}
//데이터 쓰기 함수
void Data(unsigned char byte)
{Busy();
// 데이터 상위 바이트
PORTC = (byte & 0xF0);// 데이터
PORTC |= 0x01;//RS = 1;
PORTC &= 0xFD;//RW = 0;
delay_us(1);
PORTC |= 0x04;//E = 1;
delay_us(1);
PORTC &= 0xFB;//E = 0;
// 데이터 하위 바이트
PORTC = ((byte<<4) & 0xF0); // 데이터
PORTC |= 0x01;//RS = 1;
PORTC &= 0xFD;//RW = 0;
delay_us(1);
PORTC |= 0x04;//E = 1;
delay_us(1);
PORTC &= 0xFB;//E = 0;}
// LCD 초기화
void LCD_init(void)
{ DDRC = 0xFF;// PORTC의 모든 포트를 출력으로 설정
PORTC &= 0xFB;//E = 0;
delay_ms(15);
Command(0x20);
delay_ms(5);
Command(0x20);
delay_us(100);
Command(0x20);
Command(FUNCSET);
Command(DISPON);
Command(ALLCLR);
Command(ENTMODE);}
// 아스키 값을 16진수로 변환함수
int asc2hex(char ch)
{if ( (ch >= '0') && (ch<='9')) return (ch-'0');
else if( (ch >= 'a') && (ch<='f')) return (ch-'a'+10);
else if( (ch >= 'A') && (ch<='F')) return (ch-'A'+10);
return 0;}
// 대전국 출력 함수
void LCD_String(char flash str[])
{char flash *pStr=0;
pStr = str;
while(*pStr) Data(*pStr++);}
// 스코어 출력함수
void LCD_Score(char str[])
{while(*str) Data(*str++);}
interrupt [UART_RXC] void uart_rxc(void)
{rx = UDR; // 수신된 UART 데이터 레지스터를 rx에 저장
UCR |= 0x20;// UART 데이터 레지스터 empty 인터럽트 인에이블 UDRIE = '1'
receive =1;}
interrupt [UART_DRE] void uart_dre(void)
{ UDR = rx;// 수신된 rx를 UART 데이터 레지스터에 전송
UCR &= 0xDF;// UART 데이터 레지스터 empty 인터럽트 디스에이블 UDRIE = '0'}
void main(void)
{
UCR |= 0x80;
UCR |= 0x10;// 수신 인에이블 RXEN = '1'
UCR |= 0x08;// 송신 인에이블 TXEN = '1'
UBRR = 51; // X-TAL = 8MHz 일때, BAUD = 9600
#asm ("sei")
LCD_init(); // LCD 초기화
DDRB = 0xFF; // B 포트 모든 핀을 출력으로 설정
PORTB = led;// B 포트에 초기값 출력 while(1)
{
if( receive ) // 수신된 rx DATA를 이용하여 LCD에 디스플레이
{ rx &= 0xff;
if( rx == 'H' )
{
if( cPacketNo >= 2 )
{
k_s=asc2hex(cScore[0]);
// 수신된 아스키 값을 정수 값으로 변환
j_s=asc2hex(cScore[1]);sprintf(str,"% 01u : %01u", k_s, j_s); //변환된 정수 값을 스트링으로 변환Command(0x02);
LCD_String("Korea : Japan ");
// 대전팀 디스플레이
Command(LINE2); // 두 번째 라인에 출력
LCD_Score(str);
// 스코어 디스플레이
}
cPacketNo = 0;
}
else if( rx == 'G' )
{PacketNo = 0;}
else
{cScore[cPacketNo++] = rx;}
receive=0;
}
}
}
추천자료
- [게임공학] 게임 기획서 (프로젝트 작업)
- [프로젝트][컴퓨터학과 프로젝트] 오델로 게임 완결편 !!!(소스 포함)
- 가치공학 (제품의 개선후의 판매 프로젝트) - 유닉스전자
- IDEO의 나이트라인 프로젝트
- 경영과학 프로젝트(네트워크를 이용한 물 공급 문제)
- 지구환경과학-기후변화(학기프로젝트)
- 중국의 동북공정 프로젝트와 한국의 대응방안
- 식스시그마 프로젝트
- 삼성물산 재무분석 프로젝트 자료(PPT)
- 핏암발 Fit am Ball 프로젝트를 통한 독일학교체육 활성화
- 이화여자대학교 컴퓨터학과에서의 졸업 프로젝트 운영 경험
- 코일건(Coil-Gun 제작) 프로젝트
- 자바 프로젝트 소스(가계부)
소개글