J 창고

[Atmega128] 74HC595, FND, Atmega128 본문

컴퓨터/Firmware

[Atmega128] 74HC595, FND, Atmega128

JSFamily 2014. 6. 13. 23:42









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);

}

    }

}



Comments