728x90
7 segment 숫자와 알파벳 출력
캐소드 구동방식은 FND의 세그먼트중 켜길 원하는 비트가 0, 끄길 원하는 비트가 1이 된다.
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
unsigned char fnd[16] =
{0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xd8,
0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E};
volatile unsigned char i;
DDRF=0xFF;
while(1)
{
for(i=0; i<16; i++)
{
_delay_ms(20);
PORTF = fnd[i];
}
}
} |
// PORTF = 0b1000000; //0
// PORTF = 0b1111001; //1
// PORTF = 0b0100100; //2
// PORTF = 0b0110000; //3 B0
// PORTF = 0b0011001; //4 99
// PORTF = 0b0010010; //5 92
// PORTF = 0b0000010; //6 82
// PORTF = 0b1011000; //7 E8
// PORTF = 0b0000000; //8 80
// PORTF = 0b0010000; //9 90
// PORTF = 0b0001000; //A 88
// PORTF = 0b0000011; //b 83
// PORTF = 0b1000110; //c c6
// PORTF = 0b0100001; //d a1
// PORTF = 0b0000110; //e 86
// PORTF = 0b0001110; //f 8e
애노드 구동방식은 FND의 세그먼트중 켜길 원하는 비트가 1, 끄길 원하는 비트가 0이 된다.
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
unsigned char fnd[10] = // 0~9
{0xC0, 0xF9, 0xA4, 0xB0, 0x99,
0x92, 0x82, 0xd8, 0x80, 0x90};
unsigned char n10;
unsigned char n1;
unsigned char num=0;
DDRH=0xFF; // 7 Segment의 Data Line
DDRJ=0xFF; // 7 Segment의 자릿수 ON/OFF
while(1)
{
n10 = num / 10; // 십의 자리
n1 = num % 10; // 일의 자리
PORTJ = 0x00; // ON
PORTH = fnd[n10]; // Data
PORTJ = 0x01; // OFF
_delay_ms(2);
PORTJ = 0x00;
PORTH = fnd[n1];
PORTJ = 0x02;
_delay_ms(2);
PORTJ = 0x00;
num++;
num = num % 100;
}
return 0;
} |
'Study > Embedded' 카테고리의 다른 글
5/26 업무일지 PC PWM을 이용한 LED 밝기 조절 (0) | 2016.05.26 |
---|---|
2016-05-19 업무일지-Atmega2560_LCD출력 (0) | 2016.05.19 |
7 Segment 출력(proteus시뮬) (0) | 2016.05.16 |
5/12 avr 업무일지 (0) | 2016.05.12 |
5/2 디지털이란? / 저항, 인덕터, 캐패시터 (0) | 2016.05.02 |