질문게시판 > 세그먼트 숫자가 같을시 LED 깜박거리기

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 질문게시판

세그먼트 숫자가 같을시 LED 깜박거리기

페이지 정보

작성자 홍구 작성일19-12-06 18:29 조회119회 댓글1건

본문

지식인에서 알려주신대로

#include <mega128.h>
#include <delay.h>

typedef unsigned char u_char;

flash u_char seg_pat[10]= {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};

u_char N1 = 0, N10 = 0, N100 = 0, N1000 = 0;


void Seg4_out(void);
void main (void)
{
 DDRB = 0xF0;
 DDRD = 0xF0;
 DDRG = 0x0F;
  DDRC = 0x01;
PORTC = 0x55;
 
 
 
 
 //인터럽트 초기화
 EIMSK = 0b11110000;
 EICRB = 0b10101010;
 SREG = 0x80;
 char i; 

while(1){

if(N1==N10 && N1==N100 && N1==N1000){

PORTG=0; // 포트G만 꺼도 세그먼트 OFF 됨

delay_ms(500); // 500ms 동안 OFF

}

//             

for(i=0;i<25;i++)Seg4_out(); // 20ms*25=500ms    <<알려주신것

}
 }
 
 //네자리 출력
 void Seg4_out(void)
 {
 PORTG = 0b00001000; //1자리
 PORTD = ((seg_pat[N1] & 0x0F) << 4) | (PORTD & 0x0F);
 PORTB = (seg_pat[N1] & 0x70) | (PORTB & 0x0F);
 delay_ms(5);
 
 PORTG = 0b00000100; //10자리
 PORTD = ((seg_pat[N10] & 0x0F) << 4) | (PORTD & 0x0F);
 PORTB = (seg_pat[N10] & 0x70) | (PORTB & 0x0F);
 delay_ms(5); 
 
  PORTG = 0b00000010; //100자리
 PORTD = ((seg_pat[N100] & 0x0F) << 4) | (PORTD & 0x0F);
 PORTB = (seg_pat[N100] & 0x70) | (PORTB & 0x0F);
 delay_ms(5);     
 
  PORTG = 0b00000001; //1000자리
 PORTD = ((seg_pat[N1000] & 0x0F) << 4) | (PORTD & 0x0F);
 PORTB = (seg_pat[N1000] & 0x70) | (PORTB & 0x0F);
 delay_ms(5);        
 
 }
 
 
 interrupt [EXT_INT4] void external_int4(void)
 {
 N1 = (N1 + 1 ) % 10;
 
  }
 
  interrupt [EXT_INT5] void external_int5 (void)
  {
     N10 = (N10 + 1) % 10;
  }
  interrupt [EXT_INT6] void external_int6 (void)
  {
     N100 = (N100 + 1) % 10;
  }
 interrupt [EXT_INT7] void external_int7 (void)
  {
     N1000 = (N1000 + 1) % 10;
  }

  이런 프로그램을 만드려고하는데

- KEY1을 입력하면 세그먼트1의 수를 증가시키고, KEY2를 입력하면 세그먼트2의 수를 증가, KEY3을 입력하면 세그먼트3의 수를 증가,  KEY4를 입력하면 세그먼트4의 수를 증가시킬 것

- 모든 세그먼트의 숫자가 같을 경우, 각 해당 숫자만큼의 시간간격으로 LED를 깜빡일 것.(예 : 1111일 경우 1초마다 LED를 깜빡임.)

- 세그먼트의 숫자가 전부 같지 않는 경우엔 LED를 끌 것

무엇때문에 노란 LED가 아닌 세그먼트불이 깜빡거릴까요 ? ㅠㅠ

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

댓글 : 1

조회수 : 119

master님의 댓글

master 작성일

세그먼트를 깜박이게 해달라는 것이 아니었군요?
  DDRC = 0x01;
PC0가 LED인가보죠?
아래처럼 수정해보세요

char i=0;
while(1){
  if(N1==N10&&N1==N100&&N1==N1000){
    if(i<25)PORTC=1; // 0.5초 ON
    else    PORTC=0; // 0.5초 OFF
    //
    if(++i>=50)i=0;
  }
  //
  Seg4_out();
}

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[10] master  17-10-29
공지 [무료 공개] 소스코드 하이라이트 v2.0 beta [… 댓글[1] 첨부파일master  18-01-23
질문 적외선 DC모터 제어 아두이노배우기 새글 14:19
답변 답변 : 적외선 DC모터 제어 master 새글 16:34
질문 아두이노 IDE (ino파일) 로 업로드 하면 작동되는… 댓글[1] 첨부파일이츠라 새글 14:12
질문 atmega128 while 속 if문 실행 문제 이동욱 새글 20-02-24
답변 답변 : atmega128 while 속 if문 실행 … master 새글 20-02-24
질문 Limit Sensor 를 이용한 LED의 자동 작동에… 첨부파일아두이프로 새글 20-02-24
답변 답변 : Limit Sensor 를 이용한 LED의 자… 댓글[1] master 새글 20-02-24
질문 HC-11을 이용하여 1:N 통신중입니다. 댓글[4] 아두이노배우기 새글 20-02-23
질문 스텝모터 정지 댓글[2] 아두이노배우기  20-02-23
답변 답변 : 스텝모터 정지 댓글[2] master  20-02-23
질문 정말 감사합니다. 박취  20-02-19
질문 ov9655카메라와 stm32f4 보드를 이용한 영상처… 댓글[7] flap  20-02-19
질문 GLCD 텍스트 출력 댓글[2] 전자학습자  20-02-17
질문 아두이노 HC-11 통신관련입니다. 아두이노배우기  20-02-15
답변 답변 : 아두이노 HC-11 통신관련입니다. master  20-02-16
답변 답변 : 답변 : 아두이노 HC-11 통신관련입니다. 아두이노배우기  20-02-16
질문 led 불켜기 마스터 슬레이브 댓글[1] 공용  20-02-12
답변 답변 : led 불켜기 마스터 슬레이브 master  20-02-12
질문 아두이노 코딩 관련 질문입니다. bbeuniii  20-02-12
답변 답변 : 아두이노 코딩 관련 질문입니다. master  20-02-12
질문 uart 관련 질문 (wiegand통신) 댓글[9] 첨부파일jhyun8624  20-02-11
질문 회로, 코딩 문제 첨부파일공기구함  20-02-10
답변 답변 : 회로, 코딩 문제 댓글[2] master  20-02-10
질문 회로, 코딩문제 댓글[2] 첨부파일공기구함  20-02-10
질문 코딩어레이 질문 master  20-02-07
질문 컴파일 오류가나는데, 이유를 모르겠습니다. 댓글[5] 창고지기  20-02-06
질문 IR센서 2개로 LED, DC모터 제어 (입문자입니다 … 창고지기  20-02-05
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전