/*
* FNDexample.c
*
* Created: 2020-12-07 오전 9:31:46
* Author : User
*/
#include <avr/io.h>
unsigned char digit[] = {0x77, 0x41, 0x3B, 0x5B, 0x4D, 0x5E, 0x7C, 0x43, 0x7F, 0x4F};
void display_7segled(unsigned char led[], unsigned int number){
PORTB = led[number];
}
int main(void)
{
DDRB = 0xFF;
display_7segled(digit, 4);
return 0;
}
https://kocoafab.cc/tutorial/view/351
3-1. common anode로 0~9까지 차레대로 켜기
#include <avr/io.h>
#include <util/delay.h>
unsigned char num[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int main(void)
{
DDRE = 0xFF;
int i = 0;
while (1)
{
PORTE = num[i];
_delay_ms(500);
i++;
if(i==10){
i=0;
}
}
}
3-1. common cathode로 0~9까지 차레대로 켜기
#include <avr/io.h>
#include <util/delay.h>
unsigned char num[10] = {0x06,0x5B,0x4F,0x66,0x06D,0x7D,0x27,0x7F,0x6F};
int main(void)
{
DDRE = 0xFF;
int i = 0;
while (1)
{
PORTE = num[i];
_delay_ms(500);
i++;
if(i==10){
i=0;
}
}
}
2. 7segment 칸 하나씩 켜기
1)캐소드 연결일 때 ? 실제 atmega128에 연결해 시도해보니 잘됨
#include <avr/io.h>
#include <util/delay.h>
unsigned char num[8] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
int main(void)
{
DDRE = 0xFF;
PORTE = 0x00;
int i = 0;
while (1)
{
PORTE = num[i];
_delay_ms(1000);
i++;
if(i==8){
i=0;
}
}
}
2. 애노드 연결일 ㄸ ㅐ . 잘 됨
#include <avr/io.h>
#include <util/delay.h>
unsigned char num[8] = {0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
int main(void)
{
DDRE = 0xFF;
int i = 0;
while (1)
{
//PORTE = 0x00;
PORTE = num[i];
_delay_ms(500);
i++;
if(i==7){
i=0;
}
}
}
'임베디드 > Atmega128' 카테고리의 다른 글
도트매트릭스 8x8 차례대로 켜기 / ㄹ 모양으로 흐르게 하기 (0) | 2020.12.09 |
---|---|
프로테우스 7.0 설정 (아트멜 스튜디오에서 코드 올릴 때) (0) | 2020.12.09 |
74LS47IC (0) | 2020.12.08 |
LED8개 차례대로 켜기 시프트 (0) | 2020.12.07 |
201203 프로테우스회로 / 코드리뷰 (0) | 2020.12.03 |