본문 바로가기
임베디드/Atmega128

도트매트릭스 8x8 차례대로 켜기 / ㄹ 모양으로 흐르게 하기

by sj0020 2020. 12. 9.

https://kogun.tistory.com/12

 

 

AVR(ATmaga128)로 LED 매트릭스 장난하기

안녕하세요 고군입니다. 이번시간에는 디스플레이 장치 중 문자 또는 그림까지도 디스플레이 할 수 있는 장치인 LDM(LED Dot Matrix)에 대해 알아보고 프로그램을 통해 표시해 보겠습니다. 1. LED 매트

kogun.tistory.com

dot matrix-LM23088AB Datasheet.pdf
0.22MB

 

더보기

2. 도트 매트릭스에 대해서 행과 열 개념을 이해하셔야 도트 매트릭스를 켤 수 있습니다. 이부분에 대해서 레포트 작성해주세요. 
3. 도트매트릭스의 불빛 하나를 켜서 ㄹ 모양으로 불빛이 움직이게 프로그램을 작성해주세요. 
4. 도트매트릭스에 0~9까지 숫자를 찍어서 나타나게 해주세요.

 

#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>

int main (void)
{
	DDRE = DDRF = 0xFF;
	int i, j = 0;
	
	while(1)
	{
		PORTF = 0b11111110;//~0b00000001; Gnd/행
		PORTE = 0x00000001; //전원/열
		
		
	}
}

E는 0000 0001 F는 1111 1110 이라서 1(전원)에서 0(GND)로 흘러간다. 그래서 도트매트릭스의 1행1열 칸에 불이 켜짐


#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>

int i,j = 0;

int main (void)
{
	DDRF= DDRE = 0xFF; 
	
	while(1)
	{
		for (i = 0; i < 8; i++)
		{
			PORTF = ~0b00000001 << i;  // 접지 / 행
			for (j = 0; j < 8; j++)
			{
				PORTE = 0b00000001 << j;  //전원 / 열
				_delay_ms(500);
			}
		}
	}
}

 

#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>

int i,j = 0;

int main (void)
{
	DDRF= DDRE = 0xFF; 
	
	while(1)
	{
		for (i = 0; i < 8; i++)
		{
			PORTF = ~(0b00000001 << i);  // 접지 / 행
			for (j = 0; j < 8; j++)
			{
				PORTE = 0b00000001 << j;  //전원 / 열
				_delay_ms(150);
			}
		}
	}
}


#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>

int i,j = 0;

int main (void)
{
	DDRF= DDRE = 0xFF; 
	
	while(1)
	{
		for (i = 0; i < 8; i++)
		{
			PORTF = ~(0b00000001 << i);  // 접지 / 행
			if (i%2==0){
				for (j=0; j<8; j++){
				PORTE = 0b00000001 << j; //전원 / 열
				_delay_ms(150);	  // 없으면 가운데 매번 칸 씩 불이 안들어옴
				}
			}
			else {
				for (j=0; j<8; j++){
				PORTE = 0b10000000 >> j; //전원 / 열
				_delay_ms(100);	// 없으면 가운데 매번 칸 씩 불이 안들어옴
				}
			}
			
			_delay_ms(100); // 없어도 동작하는데 문제 없다. 있으면 다음 행으로 넘어갈 때 딜레이 추가됨.	
		}
	}
}