BASIC4MCU | 질문게시판 | atmega 128 신호등 2자리수
페이지 정보
작성자 이름뭐냐 작성일2021-04-15 10:08 조회3,387회 댓글2건본문
#include <avr/io.h>
#define F_CPU 16000000UL
#include <util/delay.h>unsigned char digit[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67};
unsigned char fnd_sel[4] = {0x01, 0x02, 0x04, 0x08};
unsigned char fnd[4];int main()
{
int i=0;
DDRA = 0xff;
DDRC = 0xff;
DDRG = 0x0f;
while (1)
{
PORTA= 0x80; //빨간불 켜짐
PORTG= 0x01; //FND 자릿수
PORTC= 0x00; //공백으로 만들어 줘라
_delay_ms(40000); //PORTA=0x01; //녹색불 온
PORTG=0x01; //for(i=1; i<11; I++)
{
PORTC = digit[10-i]; //
_delay_ms(1000); //
}
}
}요렇게 만들엇는데 fnd가 한자릿수만 나오는데 2자릿수는 어떻게 만드나요?
댓글 2
조회수 3,387master님의 댓글
master 작성일
for(i=1;i<11;I++){
1부터 10까지 증가하는데요
15부터 1까지 감소한 후에 꺼지려면
for(i=15;i>0;I--){
이렇게 하면 되겠죠?
master님의 댓글
master 작성일
#include <avr/io.h>
#define F_CPU 16000000UL
#include <util/delay.h>
//
unsigned char digit[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67};
unsigned char fnd[4];
//
int main(){
int i=0,k;
DDRA = 0xff; DDRC = 0xff; DDRG = 0x0f;
while (1){
PORTC= 0x00; PORTG= 0x01; //FND OFF
PORTA= 0x80; //빨간불
_delay_ms(40000);
//
PORTA=0x01; //녹색불
for(i=15;i>0;I--){
for(k=0;k<500;k++){ // 2ms * 500 = 1000ms
PORTC=digit[i/10]; PORTG=2; _delay_ms(1); PORTG=0; // 10자리
PORTC=digit[i%10]; PORTG=1; _delay_ms(1); PORTG=0; // 1자리
}
}
}
}