2008年1月15日 星期二

用 8051 控制 LED 矩陣字幕機

本文在 2008/01/15 16:45 發表於 Yahoo!奇摩部落格
因Yahoo!奇摩部落格將於2013年12月26日終止服務故遷移至此


新玩具入荷




相當大片,橫向拍攝

LED跑道?XD

這玩具叫做字幕機
就是常常在商家門口看到的文字走馬燈
訊息就在上面動態顯示出來
這東西相當昂貴
先看看上面的LED矩陣
單一小片的,5x8,常常要價60-70元
這機器由32片5x8大片雙色LED矩陣構成
乘一乘就不少啦
再加上底板PCB和安裝人工
相當昂貴
不過這是拍賣上弄到的二手品
價位比較好看
但是就只有裸板
沒有程式,沒有控制器
相當專業難搞XD
於是掃幾片下來研究
翻開背後圖


黑色PCB部分有兩排對稱的IC和電阻
IC部分有兩種
圖上兩排電阻下方的都是ULN2003
露在外面的兩排IC則是74164
ULN2003是達靈頓陣列
很明顯的,用來放大信號用的
74164 則是 8-bit parallel-out, serial shift registers
當有 clock 時,74164會不斷的 shift bit
一開始看不懂這東西能做啥
且黑色板為雙面板
看不到被LED蓋住的線路
先不理它,再往上看
黑色板子上方還有塊綠色的子板


上面一樣有達靈頓陣列ULN2003
另一IC則是74138,3對8解碼器
共有兩顆,可組成 4 對 16 解碼器
trace 一下線路發現它們解碼的結果分別先送入ULN2003
接著再送給上下兩排的功率晶體
然後輸出到左側的排針傳進黑色PCB
而這張板子的LED矩陣為兩排5x8的矩陣
正好就是寬16
看到這就可以知道這16條線應該就是選擇每列LED
列選完了,就輪到"行"了
若要用 74164 去選
可以想像要先點一把火
把一個 bit 送進去
然後送 clock 讓它燒過去
像這樣:

74164 在下方不斷的 shift 這個傳入的 bit
這樣就可以掃到每一行
而每掃到一行,就接著填入列的資料
以上圖為例,共 8 列
要點亮第三列
就送 010 給解碼器
第 3 列就被選上
然而,整個片 LED 矩陣的第三列並不會都被點亮
因為只有被選取的那行的第三列有效
一次只掃 1 bit 就只會選取一行
也可以一次拉兩個 bit
不過我想應該沒這必要
除非是全域著色
shift 完畢後這 bit 就消失了
因此每掃完一次就必須重新點火
在第一列那裡再拉起一次
黑色板子在第一列處正好就有被剪斷的線
相信正是用來點火的點
上面安裝有對稱的 74164
因此每一種顏色就一個 74164 來控制

然而,這種做法並不好
因為一次只掃一個點
總共 80x16 個點,共需掃 1280 次才能掃完
然而,那是掃完的次數,並只考慮單色
速度若不夠快
它就看起來不像圖了
就只會看到一個點在那裡跑來跑去
要快,那就沒閒接收資料
可是又不能太快
跑得太快,處理資料慢
那就會導致亮度不夠
像這樣

比較亮的是停留 16 次的
比較暗的則是停留 1 次的

雖然我不知道正確的線路
但工作原理簡單
還是可以用猜的
trace 完工, 隨便畫線:


亮度不是很夠
要關燈才看得出圖
我只用 1A 不到的變壓器
此時變壓器變得火熱XD
看來是電流不夠的樣子
手邊沒有大電流的 5V 變壓器
有的只有音響用 44-0-44, 4.5A 的玩具XD
有閒錢再繼續測
並試著以 parallel 的方式指定列
也就是用 8051 的 2 port 直入,移除 74138 解碼器
目前僅用 1 個 port 就可以控制全部

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。