Professional Documents
Culture Documents
설치 사진
153
제2부. CodeVisionAVR C 컴파일러 RealSYS
제3장. <ATmega8535>예제5: 스위치 입력 LCD에 표시하기
www.realsys.co.kr
연결 회로도
1
CN2
CN_PB VCC
8
7
6
5
4
3
2
1
U1 AT90S8535
VCC 1 40
2 PB0(T0) PA0(ADC0) 39 1
PB1(T1) PA1(ADC1) 2
1
AR1 3 38
4.7Kx4 4 PB2(AIN0) PA2(ADC2) 37 3
CN6 5 PB3(AIN1) PA3(ADC3) 36 4 CN3
MISO1 6 PB4(SS) PA4(ADC4) 35 5 CN_PA
2
3
4
5
1 VCC 7 PB5(MOSI) PA5(ADC5) 34 6
2 SCK1 8 PB6[MISO) PA6(ADC6) 33 7
3 MOSI1 9 PB7[SCK) PA7(ADC7) 32 8
4 /RESET1 10 RESET ARef 31
5 11 Vcc AGnd 30 CN9
6 X1 12 GND AVcc 29
ISP_40P 4MHz CN10 13 XTAL2 PC7(TOSC2) 28 8
14 XTAL1 PC6(TOSC1) 27 7
C3 1 15 PD0(RxD) PC5 26 6
C2 2 16 PD1(TxD) PC4 25 5
20pF 20pF 3 17 PD2(INT0) PC3 24 4 1
4 18 PD3(INT1) PC2 23 3
5 19 PD4(OC1B) PC1(SDA) 22 2
6 20 PD5(OC1A) PC0(SCL) 21 1 1
7 PD6(ICP) PD7(OC2) CN_PC
8
CN_PD
RXD
TXD
LCD Display
U8 LCD(16x2)
VCC
AR5
VCC
VSS
R/W
1
4.7Kx8
RS
D0
D1
D2
D3
D4
D5
D6
D7
VL
L+
L-
E
4핀
케이블
10
11
12
13
14
15
16
CN30
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
8
VCC 접속
7
3
6 VR1 2
5 5k
4 R24 VCC
3
1
2
1 1 20
CN_KEY SW1 SW2 SW3 SW4 SW5 SW6 SW7 SW8
CN31 CN32
1
2
3
4
1
2
3
4
5
6
7
8
CN_LCD4 CN_LCD8
1
1
소스 프로그램
/*********************************************
file name: lcd_key.c
BY RealSYS KCO 2001.1.2
154
제2부. CodeVisionAVR C 컴파일러 RealSYS
제3장. <ATmega8535>예제5: 스위치 입력 LCD에 표시하기
www.realsys.co.kr
#include <delay.h>
void sw_process(void);
/* 사용자 정의 문자 테이블 */
flash byte char0[8]={
0b0000100,
0b0000100,
0b0000100,
0b0000100,
0b0011111,
0b0001110,
0b0000100,
0b0000000
};
void main(void)
{
// Declare your local variables here
// Port B
DDRB=0x00;
PORTB=0xff;
155
제2부. CodeVisionAVR C 컴파일러 RealSYS
제3장. <ATmega8535>예제5: 스위치 입력 LCD에 표시하기
www.realsys.co.kr
m_cnt++;
lcd_gotoxy(0,0);
/* display used defined char 0 */
lcd_putchar(0);
sprintf(sbuf,"Press KEY: %04X",m_cnt);
lcd_puts(sbuf);
sw_process();
delay_ms(100);
};
}
void sw_process(void){
char tmp[17];
if(PINB == 0xff) sprintf(tmp," No Key Press ");
else if(PINB.0==0) sprintf(tmp,"SW8(PB.0) Press");
else if(PINB.1==0) sprintf(tmp,"SW7(PB.1) Press");
else if(PINB.2==0) sprintf(tmp,"SW6(PB.2) Press");
else if(PINB.3==0) sprintf(tmp,"SW5(PB.3) Press");
else if(PINB.4==0) sprintf(tmp,"SW4(PB.4) Press");
else if(PINB.5==0) sprintf(tmp,"SW3(PB.5) Press");
else if(PINB.6==0) sprintf(tmp,"SW2(PB.6) Press");
else if(PINB.7==0) sprintf(tmp,"SW1(PB.7) Press");
lcd_gotoxy(0,1);
lcd_puts(tmp);
}
실행 화면
0.1초
사용자
간격으로 증가
문자
156