FND 제어실습 - P.106
맨 우측 7-segment 의 7개 led a,b,c,d,e,f,g를 순차적으로 점멸 시키는 프로그램
[소스 코드]
/*
AVR ATmega 128 교제 P.106
FND 제어실습
맨 우측 7-segment 의 7개 led a,b,c,d,e,f,g를 순차적으로 점멸 시키는 프로그램
*/
#include <mega128.h>
#include <delay.h>
void main(void)
{
char i, val;
DDRB = 0xff; //포트 B출력 설정
DDRF = 0b11110000; //짶F4-PF7 출력 설정
PORTF = 0b11100000; //맨 우측 7-Segment SEG1 On(PF4=0)
while(1){
val = 0b00000001;
for(i=0; i<7; i++){
PORTB = val;
delay_ms(500);
val = val <<1;
}
}
}//end main
FND 제어실습 - P.107
맨 우측 7-segment 의 7개 led a,b,c,d,e,f,g를 순차적으로 점멸 시키는 프로그램
[소스 코드]
/*
AVR ATmega 128 교제 P.107
FND 제어실습
맨 우측 7-segment 의 7개 led a,b,c,d,e,f,g를 순차적으로 점멸 시키는 프로그램
*/
#include <mega128.h>
#include <delay.h>
void main(void)
{
int k =0;
char i, val;
DDRB = 0xff; //포트 B출력 설정
DDRF = 0b11110000; //PF4-PF7 출력 설정
PORTF = 0b111100000; //맨 우측 7-Segment SEG1 ON (PF4=0)
while(k<50){
val = 0b00000001;
for( i=0; i<7; i++){
PORTB = val;
delay_ms(100);
val = val << 1;
k++;
}
}
}//end main
FND 제어실습 - P.108
맨 우측 7-Segment 부터 좌측의 7-Segment로 이동해 가며 모든 led가 0.5[sec]씩 on, off 시키는 프로그램
[코드 소스]
/*
AVR ATmega 128 교제 P.108
FND 제어실습 - P.108
맨 우측 7-Segment 부터 좌측의 7-Segment로 이동해 가며 모든 led가 0.5[sec]씩 on, off 시키는 프로그램
*/
#include <mega128.h>
#include <delay.h>
void main(void)
{
DDRB = 0xff; //포트 B 출력 설정
DDRF = 0b11110000; //PF4-PF7 출력 설정
while(1){
PORTF = 0b11100000; //SEG1 7-Segment On (PF4=0)
PORTB = 0b01111111; //LED all ON
delay_ms(500);
PORTB = 0b00000000; //LED all OFF
delay_ms(500);
PORTF = 0b11010000; //SEG2 7-Segment ON (PF5=0)
PORTB = 0b01111111; //LED all ON
delay_ms(500);
PORTB = 0b00000000; //LED all OFF
delay_ms(500);
PORTF = 0b10110000; //SEG3 7-Segment ON (PF6=0)
PORTB = 0b01111111;
delay_ms(500);
PORTB = 0b00000000;
delay_ms(500);
PORTF = 0b01110000; //SEG4 7-Segment ON (PF7=0)
PORTB = 0b01111111;
delay_ms(500);
PORTB = 0b00000000;
delay_ms(500);
}
}//end main
FND 제어실습 - P.110
우측 7-Segment에 대해 16진수 값 0~F를 순차 표시하는 프로그램
[소스 코드]
/*
AVR ATmega 128 교제 P.110
FND 제어실습 - P.110
우측 7-Segment에 대해 16진수 값 0~F를 순차 표시하는 프로그램
*/
#include <mega128.h>
#include <delay.h>
char seg_pat[16]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};
void main(void)
{
int i;
DDRB = 0xff; //포트 B 출력 설정
DDRF = 0b11110000; //PF4-PF7 출력 설정
PORTF = 0b11100000; //맨 오른쪽 7-Segment On (PF4=0)
while(1){
for( i=0; i<16 ;i++){
PORTB = seg_pat[i];
delay_ms(1000);
}
}
}//end main
FND 제어실습 - 99진 UP 카운터 - P.111
맨 우측 2개의 7-Segment를 이용하여 0~99까지 표시하는 프로그램
[소스 코드]
/*
AVR ATmega 128 교제 P.111
FND 제어실습 - 99진 UP 카운터 - P.111
맨 우측 2개의 7-Segment를 이용하여 0~99까지 표시하는 프로그램
*/
#include <mega128.h>
#include <delay.h>
char seg_pat[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
void seg2_out(int); //두 자리 정수 출력
void main(void)
{
int num = 0;
DDRB = 0xff; //포트 B 출력 설정
DDRF = 0b11110000; //PF4-PF7 출력 설정
while(1){
seg2_out(num);
num++;
if( num>99){
num=0;
}
}
}//end main
//두자리 정수 출력
void seg2_out(int num){
int i, N10, N1;
N10 = num/10; //10자리 추출
N1 = num%10; //1자리 추출
for( i=0; i<49; i++){
PORTF = 0b11100000; //SEG1 ON (PF4=0)
PORTB = seg_pat[N1];
delay_ms(10);
PORTF = 0b11110000;
PORTF = 0b11010000; //7-Segment SEG2 ON (PF5 = 0)
PORTB = seg_pat[N10];
delay_ms(10);
PORTF = 0b11110000;
}
}//end seg2_out