[B423] 광전자 도트매트릭스 KLM-162CAN 활용 예 > 자료실

본문 바로가기

쇼핑몰 검색

회원메뉴

즐겨찾기 추가

회원로그인

감사합니다


Home 자료실 목록

[B423] 광전자 도트매트릭스 KLM-162CAN 활용 예

페이지 정보

작성자 나름이 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일09-01-27 23:42 조회50,040회 댓글4건

본문

아직 정식 발매를 시작하지는 않았지만 조만간 판매될 만물상닷컴의 AVR 키트 보드를 사용하여 광전자의 도트매트릭스 KLM-162CAN의 활용 예입니다.

AVR 키트 보드에 보이는 점프선들과 다이오드는 정식 기판에는 모두 반영되어 있으므로 필요 없는 것들입니다.

AVR 보드와 각 도트매트릭스에 전원을 넣어 주고, 각 기판들을 12핀 FFC 케이블로 연결해 주면 됩니다.

출력 방식은 AVR의 내부 SRAM 중 1kb를 VRAM으로 할당하여
타이머를 이용하여 1초에 50회 도트매트릭스로 뿌려 주도록 하였습니다.
출력 함수는 출력하고자 하는 내용을 VRAM에 넣어 주기만 하면 됩니다.

각 문자가 16라인을 사용하므로 출력 가능한 문자수는 영문으로 1024 / 16 = 64(자)입니다.
실제로는 출력 함수가 맨 끝 바이트를 NULL로 가정하므로 영문 63자, 한글로는 31.5자가 됩니다.

표현할 문자는 아래에 제시하는 전용 프로그램을 이용하여 PC로부터 시리얼 통신으로 받습니다.
AVR 키트 보드에 USB Serial 기능이 탑재되어 있기 때문에 USB 케이블만 연결하고 PC용 프로그램을 실행하면 쉽게 내용을 바꿀 수 있습니다.

프로그램은 AVR Studio 4.14에서 WinAVR 20080610 버젼으로 작성했습니다.
자세한 것은 나중에 소스가 공개되면 소스 프로그램을 분석하여 활용하시기 바랍니다.

타이머에 의해 주기적으로 도트매트릭스를 갱신하는 함수 DisplayKLM의실행 속도에 상당히 신경을 써야 합니다. 이 함수에서 정수 연산이 많아지면 도트매트릭스에 깜빡 거림이 발생합니다.
어셈블리로 작성하면 훨신 실행 속도가 빨라질 것 같습니다.

소스프로그램을 분석하면 DisplayKLM 함수의 StartPoint 라는 변수가 도트매트릭스에 뿌릴 내용의 VRAM의 시작 번지를 지정하는 역할을 합니다. main 함수에서 이 값을 1식 증가 시키면서 DisplayKLM 함수를 호출함으로써 왼쪽으로 흐르는 효과를 내고 있습니다.

현재는 왼쪽으로 이동하도록 프로그램되어 있습니다만, AVR의 프로그램을 수정하면 우로 이동시킬 수도 있고, 상하 스크롤도 가능하게 할 수 있을 것으로 예상합니다.
이 때에도 역시 DisplayKLM 함수의 실행 속도에 유의해야 합니다.

실험해 본 결과는 수평 방향으로는 매트릭스를 15개까지 달아도 되는 것으로 판정하였습니다만, 실제로는 아래의 사진과 동영상에서 보는 것과 같이 두 개의 도트매트릭스로만 실험해 보았습니다.

15개 이상의 도트매트릭스를 연결하려면 함수들의 매개 변수와 일부 변수들을 BYTE(unsigned char)형에서 int 형으로 바꾸어야 합니다. 뿐만 아니라 DisplayKLM 함수에서 도트매트릭스에 뿌려 주어야 하는 내용이 많아져서 역시 이 함수의 실행 시간을 고려해야 합니다.

현재는 초당 16행을 50회 뿌려주기 때문에 1초에 Timer0의 인터럽트를 800번 걸고 있습니다.(물론 Timer1을 이용하면 더 간단하겠지만 그냥 Timer0을 썼습니다.) AVR의 클럭이 16MHz이니까 DisplayKLM 함수는 적어도 16,000,000 / 800 = 20,000 클럭 이내에 역할을 마쳐야 합니다.


도트메트릭스 전면 사진

AVR 보드와 도트매트릭스를 연결하는 12핀 FFC 케이블의 길이가 짧아서 부득이 AVR 기판을 뒤집어 놓을 수 밖에 없었습니다.

도트메트릭스 후면 사진



동작하는 동영상
<embed src='http://flvs.daum.net/flvPlayer.swf?vid=xD0E0bOqYhw$' width='502px' height='399px' allowscriptAccess='always' type='application/x-shockwave-flash' allowFullScreen='true' bgcolor='#000000' ></embed>

PC용 프로그램


PC용 프로그램은 Visual Studio 2008의 C로 MFC application으로 작성했습니다.
PC 측에서 ESC(0x1B), 'R'을 전송하면 AVR 측에서 가지고 있는 정보를 보내 옵니다.
PC 측에서 AVR 측으로 새로운 내용을 써넣으려면 ESC,'W'를 보낸 후에 새로운 정보를 보냅니다.
새로운 정보를 받은 AVR은 이 내용을 EEPROM에 저장하고 리스타트 합니다.

내용을 EEPROM에 저장하고 다시 시작할 때에는 EEPROM을 읽어 오기 때문에 PC와 연결하지 않아도 독립적으로 실해이 가능합니다.

EEPROM에 데이터를 써 넣는 기능을 넣었을 때에는 전압 불안정이나 전기 공급이 중단되는 경우에 오작동하지 않도록 fuse bir의 brown out detect 기능을 활성화 시켜야 합니다. 이 작품에서도 이 fuse bit를 반드시 활성화 시켜야 합니다.

댓글목록

만물상님의 댓글

만물상 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

신기하네요
도트매트릭스로 구동하니 더멋있어 보이네요
감사합니다


vfd avr킷트는 월요일부터 정식 판매예정입니다

Upuaut님의 댓글

Upuaut 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

AVR킷트라.. 가격은 얼마로 책정하셨는지요?? 요 도트매트릭스 살까 하다가.. 아직은 넘 섯부르지 싶어서 안샀는디..
ㅎㅎ 재마나게 가지고 놀 수 있겠는걸요~~ 기대함돠~~~^^

참, 미리 찜 해놓을 수 있을까요? 워낙 구매력이 좋은 분들이 자주 오셔서리...

도트매트릭스 2~3개쯤, 그리고, AVR킷트 하나~~^^

나름이님의 댓글

나름이 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

휴즈 설정하는 부분을 빠뜨렸습니다.
죄~~송~~~합니다....

댓글이 달리면 수정할 수가 없어서 답글로 휴즈 설정 부분을 올려 놓았습니다.
http://www.manmullsang.com/bbs/board.php?bo_table=file&wr_id=199

휴즈를 설정하지 않으면 제대로 동작하지 않습니다.

위 PC측 프로그램에서 글자색, 배경색의 교체 간격(ms)를 0으로하면 색이 바뀌지 않습니다.

위의 답글에 AVR 측 소스와 실행파일, PC측 소스와 실행파일을 첨부했습니다.

제가 작성한 프로그램으로는 6개까지는 무리없이 사용할 수 있으나, 7개 이상이 되면 깜빡임이 심하다고 합니다. 프로그램 작성시 도트매트릭스 수를 가상으로 15개까지 설정하고 실행시켰을 때에 깜빡거림이 없는 것으로 판정했었는데, 실제로는 깜빡임이 심하다고 합니다.

DisplayKLM 함수의 실행 속도 때문일 것으로 여깁니다. 어셈블리로 작성하면 상당 부분 실행 속도를 개선할 수 있으리라고 봅니다만, C로서는 이 정도가 한계인 것 같습니다.

SECURED BY RapidSSL

회사명 선인만물 주소 경기도 시흥시 수인로2979번길 40
사업자 등록번호 140-02-91346 대표 김원규 전화 010-5253-7691/031-315-8691 팩스 031-315-8692
통신판매업신고번호 시흥 제 2007-4호 개인정보관리책임자 김원규
Copyright © 2001-2013 선인만물. All Rights Reserved.

모바일버전 보기 상단으로