FND 시계제작, ATmega128 - 0126
FND 시계제작, ATmega128
[ 간략 설명 ]
◈ FND 시계제작, ATmega128
◈
FND 시계제작, ATmega128
캡쳐내용 넣기~~~~
/* P.120
FND 제어실습 - 시계제작
*/
#include <mega128.h>
#include <delay.h>
char Seg_pat[10] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f };
int Min =0, Sec = 0;
void Time_out();
void main(void)
{
DDRB = 0xff;
DDRF = 0b11110000;
while(1){
Time_out();
Sec++;
if(Sec == 60){
Sec = 0;
Min++;
if(Min == 60) Min = 0;
}
}//endwhile
}//end main
void Time_out(void){
int i, M10, M1, S10, S1;
M10 = Min/10;
M1 = Min%10;
S10 = Sec/10;
S1 = Sec%10;
for( i =0 ; i<50; i++){
PORTF = 0b11100000;
PORTB = Seg_pat[S1];
delay_ms(5);
PORTF = 0b11010000;
PORTB = Seg_pat[S10];
delay_ms(5);
PORTF = 0b10110000;
PORTB = Seg_pat[M1];
delay_ms(5);
PORTF = 0b01110000;
PORTB = Seg_pat[M10];
delay_ms(5);
}//endfor
}
/* P.120
FND 제어실습 - 시계제작
- Stop Watch , 1/100초 표시
*/
#include <mega128.h>
#include <delay.h>
char Seg_pat[10] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f };
int Sec = 0, Msec = 0;
int Run = 0;
void Time_out();
void main(void)
{
unsigned char SW, OLD_SW;
DDRB = 0xff; // B 포트 모든 핀 출력 설정
DDRF = 0b11110000; // PF4-PF7 출력 설정
DDRE = 0b00000010; // PE 포트 입력 설정 (PE1 출력)
OLD_SW = PINE & 0b0011000; // SW8 상태값 추출
while(1){
Time_out();
SW = PINE & 0b00110000;
if(SW != OLD_SW){
if(OLD_SW == 0b00110000 && SW == 0b00100000){ // SW8
Run = (Run +1) %2;
}
else if(OLD_SW == 0b00110000 && SW == 0b00010000){ //SW14
Msec = 0;
Sec = 0;
}
OLD_SW =SW;
}//endif
if(Run == 1){
Msec++;
if(Msec == 100){
Msec = 0;
Sec++;
if(Sec == 60) Sec =0;
}
}//endif
}//endwhile
}//end main
void Time_out(void){
int MS10, MS1, S10, S1;
MS10 = Msec/10;
MS1 = Msec%10;
S10 = Sec/10;
S1 = Sec%10;
PORTF = 0b11100000;
PORTB = Seg_pat[MS1];
delay_ms(2);
delay_us(450);
PORTF = 0b11010000;
PORTB = Seg_pat[MS10];
delay_ms(2);
delay_us(450);
PORTF = 0b10110000;
PORTB = Seg_pat[S1];
delay_ms(2);
delay_us(450);
PORTF = 0b01110000;
PORTB = Seg_pat[S10];
delay_ms(2);
delay_us(450);
}//endTime_out
/* P.123
FND 제어실습 - 74LS147
- 74LS147에서 SW 34~43까지 누르면 FND 0~9 숫자 표시
- 74LS147 소자 없어 확인은 못함
*/
#include <mega128.h>
void main(void)
{
unsigned char Key;
DDRC = 0xff;
DDRB = 0xff;
DDRF = 0xf0;
DDRA = 0b00000000; // PA4-7핀 입력 설정
PORTC = 0xff; // LED모두 OFF
PORTF = 0xef;
while(1){
Key = PINA & 0xf0; // 포트 E 읽어오기
switch(Key){
case 0b01110000: //SW8이 눌리면 FND 0
PORTB = 0x3f;
break;
case 0b10110000:
PORTB = 0x06;
break;
case 0b00110000:
PORTB = 0x5b;
break;
case 0b11010000:
PORTB = 0x4f;
break;
case 0b01010000:
PORTB = 0x66;
break;
case 0b10010000:
PORTB = 0x6d;
break;
case 0b00010000:
PORTB = 0x7d;
break;
case 0b11100000:
PORTB = 0x7f;
break;
}//endswitch
}//endwhile
}//end main
'Edu > 유비쿼터스설비제어과정' 카테고리의 다른 글
LED40, NE555, 순차회로, 프로테우스 - 0208 (0) | 2011.02.09 |
---|---|
LM358, OP 앰프,풍차점멸기 - 0207 (0) | 2011.02.07 |
OP Amp Basic Circuit with Proteus - 0121 (0) | 2011.02.01 |
가변순차기회로, 4017, NE555 - 0131 (0) | 2011.01.31 |
인터럽트, ATmega128 - 0127 (0) | 2011.01.27 |
이미터 접지 증폭회로, Emitter, PCB, Proteus - 0125 (0) | 2011.01.25 |
음악에 따라 연주하는 분수대 회로 설계 (미완성) - 0124 (0) | 2011.01.24 |
C언어 배열, Maxtrix - 0121 (0) | 2011.01.21 |
ATmega128, FND 실습 - 0120 (0) | 2011.01.20 |
FND 7-segment 회로도 - 0119 (0) | 2011.01.19 |