atmega 128에서 74HC595 8bit shift register 를 이용한 FND 컨트롤
회로도 및 데이터시트는 구글링 보면 될 것이고
코드비전을 사용하다가 AVR Studio를 사용하니까 포트 개별 컨트롤이 안되서 애먹었음...
검색해보니 비트 마스크라는 걸 사용한다고 함
일단 1자릿수를 했으니 다음엔 2자릿수 ㄱㄱㅆ!
아 그리고 FND가 Common Anode라 반대라는...;;
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
void HC595write(unsigned char udata){
unsigned char i;
PORTA &= 0b11111110; // DATA 0
PORTA &= 0b11111011; // SHIFT 0
PORTA &= 0b11111101; // LATCH 0
i = 7;
while(i<=7){
PORTA = (udata >> i) & 0x01;// DATA
PORTA |= 0b00000100; // SHIFT 1
PORTA &= 0b11111011; // SHIFT 0
i--;
}
PORTA |= 0b00000010; // LATCH 0
PORTA &= 0b11111101; // LATCH 1
}
int main(void){
DDRA = 0xFF;
while(1){
unsigned char num[10] = {0b11111100, //0
0b01100000, //1
0b11011010, //2
0b11110010, //3
0b01100110, //4
0b10110110, //5
0b00111110, //6
0b11100100, //7
0b11111110, //8
0b11100110 //9
};
for(int i=0;i<10;i++){
HC595write(~num[i]);
_delay_ms(1000);
}
}
}