도트 매트릭스 LED 로 전광판처럼 만들고 싶을때...

2007. 7. 5. 00:08Work/Robot

제목 : 도트 매트릭스 LED 로 전광판처럼 만들고 싶을때...

간단하게 이렇게 설명을시작해 보자...

예전에 필자는 286 컴퓨터를 사용했다. 그 컴퓨터는 당시로서는 (1990년) 고급 사양의 PC 였다. 최고급 PC가 386이던 시절이고, 학교내 전산실에는 XT 에 플로피 두장을 끼워넣고 프로그램하던 시절이었으니 286 에 하드 20메가면, 아주 부러워할만한 PC 였다.

하지만 세월이 지나고 지금은 286은 골동품상점에나 가야 볼수 있을 시절이 되었다. 사실 8051 이 8비트 컴퓨터라고 생각해도 된다. 그러면 XT 라고 불리던 것과 별로 차이가 없는 프로세서이기도 하다.

286에 윈도우XP를 설치한다고 생각해보자. 가능할까? ^^

우선 CPU가 지원을 못하니 설치가 안될것이고, 된다고 하더라도 워낙 느린 CPU (당시로는 빨랐겠지만, 지금의 관점에서 보면 굉장히 느린 놈이 되었다..) 다 보니 설치가 되도 프로그램 실행하는데 한시간쯤 걸릴게다.

결국은 XP 라는 운영체가가 가진 성능을 발휘하지 못하는 CPU라는 이야기다.

왜 이런말을 하는고 하니 도트 매트릭스로 전광판 같은 것을 만들어 보고 싶어하는 마음을 안고 8051로 프로그램해서 전광판을 보이고 싶다. 하지만 기본적으로 도트 매트릭스는 16*16 인 경우 256개의 LED를 순차적으로 하나씩(혹은 한 행씩) 켜고 끄는 작업을 반복해야만 한다. 그리고 그 간격이 매우 짧아야 256개의 LED가 한꺼번에 켜지고 꺼지는 것처럼 보일수 있는 것이다. 그 간격이 조금이라도 늘어지면 눈에 깜박이는 것이 보이게 된다.
 

이미지를 클릭하시면 원본크기로 보실수 있습니다.

 편의상 인터넷에서 구한 5*&짜리 도트 매트릭스이다. 8*8 짜리나 16*16 짜리도 이와 동일하다.

기본적으로 위와 같은 구조로 되어 있고, 여기에 불을 켜기 위해서는 .... (회발유를 붓고 성냥을 댕긴다? ^^;)

가로축 1-5 사이에 있는 1번에 +5V 를 넣고, 세로축 1-7 에 각각 0 또는 +5V 를 넣어서 첫번째 줄 1-7까지의 LED에 불을 켜면 된다. 그 다음 가로2번에 =5V, 세로 1-7에 0 또는 =5V를 각각 넣는다(물론 세로축에 달든 아니면 가로축에 달든 저항을 집어넣어줘야한다... 이건 당연한 거니까 설명안한다. 만약 이것도 잘 모르겠으면 도트 매트릭스로 뭘 해보겠다는 생각은 잠시 접어라.... 조금 더 공부한 다음에 다시 시도하는 것이 스스로의 정신건강에 좋다. ^^)

결론은 16*16 짜리 도트를 구동시키려면 16줄을 순차적으로 반복해서 신호를 넣어줘야 한다는 말이다. 만약 16*16 짜리 6개를 구동하겠다면? 역시 그에 합당한 회로를 설계할 수 있어야 하고(이거 해달라는 사람은 문제있는거다. ^^ 직접하든지 아니면 할수 있는 사람에게 설계를 맡기고 돈을 지불하든지 해야 하는 거다 ^^. 물론 간단한 회로들은 이미 책이나 인터넷에 많이 공개되서 돌아다니니 인터넷 검색을 잘해보면 원하는 정도의 회로는 쉽게 찾을수 있을 것이다), 프로그램할수 있어야 한다.

그리고 요즘 나오는 16*16 정도의 도트매트릭스는 보통 드라이브모듈을 장착하고 있는 경우가 많다. 필자가 만들어봤던 것도 드라이버모듈이 내장된 것이다. 물론 각각의 드라이버모듈은 다 틀리니까 자신이 구입한 것을 데이타시트를 보고 구동방법을 익혀야만 한다.

드라이버내장된 도트매트릭스는 아무래도 사용이 간편한다. 필자가 사용한 SLM1606M 의 경우 16*16 에 2 color 짜리 도트매트릭스다. 이건 LED 256개에 하나씩 정보를 전달한 다음 한꺼번에 켜고 끌수 있게 되어 있다. 그래서 필자는 별 어려움없이, 드라이버 사용법만 조금 더 신경을 쓰고 그냥 프로그램할수 있었다. 256개 LED에 들어갈 정보를 전달하는 동안 이전 정보에 따라 LED는 켜져 있다. 그리고 256개의 정보가 다 전달되면 다시 새로운 정보로 LED를 켜라는 명령을 주면 LED는 무리없이 새로운 정보로 불을 켜준다.

이정도면 8051로도 충분히 도트매트릭스를 여러개 구동할수도 있다. 여러개 구동하기 위해서는 역시 데이타이트를 잘 보면 뒷부분에 어떻게 해야 하는지가 잘 나온다. ^^

결론은...

8051로 도트 매트릭스를 구동해보고 싶다면, 속도가 조금 느린 프로세서이므로 가능하면 드라이버 모듈이 장착된 도트매트릭스를 구동해볼 것을 권한다. 두번째로 그래도 16*16짜리 핀이 나온것을 써야 한다면... 그나마 TY52 보드는 24MHz 의 크리스탈을 사용하므로 11.05.. 짜리보다 두배이상의 속도가 나온다. 1개 정도는 무리없이 C로도 프로그램할 수 있을 것이다. 2개 이상의 모듈을 사용하고 싶다면, 우선 C로 프로그램해보고, 혹시 깜박이는 것이 느껴지면 구동부분의 어셈블러를 사용해서 최적화해야한다. 사실 이부분은 조금 힘든 부분이 될 것이다. 어셈블러는 계속 사용하는 사람의 입장에서는 별것이 아니지만 처음 써 보는 사람에게는 워낙 생소한 것이 되어놔서 말이다... ^^