질문게시판 > atmega128 code vision led와 세그먼트 동시코딩

TODAY775 TOTAL340,638
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | 질문게시판 | atmega128 code vision led와 세그먼트 동시코딩

페이지 정보

작성자 프로미스애인 작성일2018-11-14 16:29 조회4,879회 댓글10건

본문

	복수전공이다보니 해내기가 너무 힘들어서 부탁드립니다

코딩은 일단 led쪽 스위치를 눌렀다 떼면(PIND.2==0), 세그먼트가 시계처럼 초단위 카운팅이 되다가  6초가 되었을때 led8개가 0.1초 간격으로 깜박깜박거리기 시작해야합니다 그러고 3초가 지나면 깜박거리던 led가 전부 다 꺼져야 합니다

위에 과정이 반복이 되고(led가 꺼진후 3초뒤에 led가 다시 깜박거려야합니다) 스위치를 한번 더 눌렀다 떼면 (PIND.2==0), 그 상태에서 정지가 되어야 합니다 led와 세그먼트가 동시에 구동이 되야하는데 작성하다가 뇌정지가 왔네용

#include <io.h>

int bjt[]={0x0e,0x0d,0x0b,0x07}; //BJT 배열

char seg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //섹그먼트 배열
int n=0; //LED 시간변수
int a=0; //LED 배열에 들어갈 값
bit stop=0; //정지 변수
void main(void)

 DDRA=0x0f;
 DDRB=0xff;
 PORTC=0xff;
 DDRC=0xff; 
 TCCR0=0x04;                                     
 TCNT=0x06;
 TIMSK=1;
 SREG=0x80;
while(1){}
}

interrupt[TIM0_OVF]void timer0_ovf_isr(void)
{
static int ms=0;
static char s=0,m=0;

PORTA=0x0f;
if(++ms>999){ms=0;
if(++s>59){s=0;
if(++m>59){m=0;
                                               
}
}
}
if(PIND.2==0){ //세번째 스위치를 처음 눌렀다 떘을때 시작, 한번 더 눌렀다 떼면 그 상태에서 정지
if(PORTB==seg[s%10]){  //세그먼트 초단위 출력
PORTA=~1;  //세그먼트 출력
if(//6초가 되었을때를 가정해야하는데 무엇을 넣어야 하나요?){
if(++n==100){//led가 0.1초마다 깜박거려야 함

PORTC=0x00;  //led 8개가 다 켜짐
PORTC=0xff;  //led 8개가 다 꺼짐
if(++n==3000){ //3초가 지나면 아예 꺼져아 함
PORTC=0xff;
}

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

댓글 10

조회수 4,879

프로미스애인님의 댓글

프로미스애인 작성일

led가 꺼진 후 3초뒤에 led깜박거리는것이 다시 시작되야합니다

master님의 댓글

master 작성일

기본예제가 있으면 답글로 첨부해보세요

프로미스애인님의 댓글

프로미스애인 댓글의 댓글 작성일

죄송합니다 구두로 설명받은 것이라 기본예제는 따로 가지고있지가 않습니다

프로미스애인님의 댓글

프로미스애인 댓글의 댓글 작성일

초 표시는 있는데 led가 깜빡깜빡하게 하는 예제는 없는것 같습니다....

master님의 댓글

master 댓글의 댓글 작성일

만들어야 하는 것 말고 받은 예제를 첨부하면 됩니다.
전에 제가 답변을 적어드린 적이 있다면 링크를 걸어보세요
비슷한 예제를 몇번 작성해드린 것 같은데요
없으면 회로도 보고 만들어야 하는데 불필요하게 시간을 낭비하게 되니까 한번 찾아보세요

프로미스애인님의 댓글

프로미스애인 댓글의 댓글 작성일

링크는 세그먼트가 하나씩 0부터9까지 카운팅되는것에 답변해주신것인데
나눠서 말고 한번에 0000 0001 0002 0003 0004 ~ 9999 이렇게 되면 됩니다

프로미스애인님의 댓글

프로미스애인 댓글의 댓글 작성일

https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=4341&sfl=wr_subject&stx=led&sop=and&device=pc

led가 시프팅되다가 정지되는 것인데 이번것은 시프팅없이 led 8개가 깜박깜박 거렷다가 꺼지고 스위치를 한번 더 누르면 정지되는것입니다

프로미스애인님의 댓글

프로미스애인 댓글의 댓글 작성일

번거롭게 해드려서 죄송합니다
그리고 잘못된과제를 제가 올렷는데요
위에 글 처럼 동작되는것이 아니라 오른쪽에서 세번째 스위치(PIND.2)를 눌렀다떼면
LED가 3초동안 0.1초 간격으로 깜박거리다가 3초가 지나면 3초 꺼져있게 하는걸 반복하면 되고 동시에 세그먼트는 0000 0001 0002 ~~~ 9999까지 카운팅 되기만 하면 됩니다
스위치 한번 더 누르면 정지하는건 그대로구여

질문게시판HOME > 질문게시판 목록

MCU, AVR, 아두이노 등 전자공학에 관련된 질문을 무료회원가입 후 작성해주시면 전문가가 답변해드립니다.
ATMEGA128PWMLED초음파
아두이노AVR블루투스LCD
UART모터적외선ATMEGA
전체 스위치 센서
게시물 검색

Privacy Policy
MCU BASIC ⓒ 2017
모바일버전으로보기