Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Germany
- Kodak 400TX
- fujifilm velvia 50
- kodak t-max 400
- Nikon 28Ti
- ZeissIkon ZI
- Kentmere 400
- G28/2.8
- 2019 유럽여행
- Kodak T-Max 100
- GRD2
- FujiFilm GFX50s
- Kodak Ektar 100
- Minolta CLE
- Minolta TC-1
- Kodak 5222
- Mamiya 7
- 4870
- Contax G2
- Hasselblad 500cm
- Leica M7
- FujiFilm C200
- Rollei35s
- M-Rokkor 40/2
- SONY A7
- N80/4
- cs50/2.5
- cf80/2.8
- cf50/4 fle
- 2018 미국출장
Archives
- Today
- Total
J 창고
[Atmega128] 4Digit FND Count 본문
회로도는
에 있으며 저기에 더 추가해서 총 4 Digit으로 구성했다
다만 상위 2 Digit은 Common Cathode 이고
하위 2 Digit은 Common Anode 이다
그래서 하위 2 Digit을 HC595write 함수에 전달할 때 반전 시켜준다.
배선은
PORTA.0 <========> DS (DATA)
PORTA.1 <========> STCP (LATCH)
PORTA.2 <========> SHCP (CLOCK)
로 구성했다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | /* * StopWatch.c * * Created: 2015-01-04 오후 1:46:41 * Author: user * DATA DS <-----> PORTA.0 CLOCK SHCP <-----> PORTA.2 LATCH STCP <-----> PORTA.1 Digit 4,3 = Common Cathode Type FND Digit 2,1 = Common Anode Type FND */ #include <avr/io.h> #include <util/delay.h> void HC595write(unsigned char udata){ unsigned char i; i = 0; while(i<=7){ PORTA = ( udata >> i) & 0x01; // DATA PORTA |= 0b00000100; // SHIFT 1 PORTA &= 0b11111011; // SHIFT 0 i++; } } void HC595write_4byte(unsigned int udata){ unsigned char digit_common_cathode[10] = { 0b11111100, //0 0b01100000, //1 0b11011010, //2 0b11110010, //3 0b01100110, //4 0b10110110, //5 0b00111110, //6 0b11100100, //7 0b11111110, //8 0b11100110 //9 }; PORTA &= 0b11111110; // DATA 0 PORTA &= 0b11111011; // SHIFT 0 PORTA &= 0b11111101; // LATCH 0 unsigned char d1000 = digit_common_cathode[udata/1000]; unsigned char d100 = digit_common_cathode[(udata%1000)/100]; unsigned char d10 = digit_common_cathode[(udata%100)/10]; unsigned char d1 = digit_common_cathode[udata%10]; HC595write(d1000); HC595write(d100); HC595write(~d10); HC595write(~d1); PORTA |= 0b00000010; // LATCH 0 PORTA &= 0b11111101; // LATCH 1 } int main(void){ DDRA = 0xFF; unsigned int num_buf = 0; while(1){ HC595write_4byte(num_buf); _delay_ms(10); num_buf++; if(num_buf>9999) num_buf = 0; } } | cs |
Comments