2021-12-29

AT28C256 免編程 EEPROM

最近設計一些數字顯示工具,又可以因應情況改變數字內容
但使用 Arduino 或 Raspberry Pi Pico 等微控制器,在應用上又有點浪費
因此在下想使用一些操作較直觀、簡單的微控制器
AT28C256 具有 15位元地址,即是共有 32768個地址組合
每個地址能夠保存 8位元資料 ,總共可以保存 262144位元資料
其型號的 256 就是指能夠保存 256K 位元資料

AT28C256 外觀

見下文
AT28C256的正面

見下文
AT28C256的背面

AT28C256 引腳

編號 引腳 方向 用途
1 A14 輸入 第14位元地址
2 A12 輸入 第12位元地址
3 A7 輸入 第7位元地址
4 A6 輸入 第6位元地址
5 A5 輸入 第5位元地址
6 A4 輸入 第4位元地址
7 A3 輸入 第3位元地址
8 A2 輸入 第2位元地址
9 A1 輸入 第1位元地址
10 A0 輸入 第0位元地址
11 IO0 輸入輸出 第0位元輸入輸出
12 IO1 輸入輸出 第1位元輸入輸出
13 IO2 輸入輸出 第2位元輸入輸出
14 GND 接地
15 IO3 輸入輸出 第3位元輸入輸出
16 IO4 輸入輸出 第4位元輸入輸出
17 IO5 輸入輸出 第5位元輸入輸出
18 IO6 輸入輸出 第6位元輸入輸出
19 IO7 輸入輸出 第7位元輸入輸出
20 CE 輸入 低電壓時使用晶片
21 A10 輸入 第10位元地址
22 OE 輸入 低電壓為輸出狀態;高電壓為輸入狀態
23 A11 輸入 第11位元地址
24 A9 輸入 第9位元地址
25 A8 輸入 第8位元地址
26 A13 輸入 第13位元地址
27 WE 輸入 當電壓由高到低時,將資料寫入到地址
28 VCC 接受 4.5V 至 5.5V 電源

線路原型

見下文
原型設計的線路已經很複雜

接駁線路

見下文
實際的線路更加複雜

見下文
主角一如以往,被線路包圍

見下文
雙列開閉掣,用來控制 地址位置 及 寫入或讀取模式

見下文
使用電阻器連接到 接地 及 A0, A1, A2, A3, OE ,當開啟開關掣前,讓訊號保持 低電壓
當開啟開閉掣後,接通電源,由於 100KΩ電阻器令訊號迴避電阻值較高的線路
因此當開啟開關掣令電源接通後,會接通駁到 A0, A1, A2, A3, OE 保持 高電壓

見下文
另一個雙列開關掣,用來控制 地址的資料

見下文
使用電阻器連接到 電源 及 IO引腳 ,當開啟開關掣前,讓訊號保持 高電壓
當開啟開閉掣後,接通接地,令線路接通,電源便不會到達 IO引腳 ,令 IO引腳保持 低電壓

寫入資料

見下文
接駁電源後,通常未寫入資料前,有些地址偶然會有些測試資料

見下文
見下文
將 OE引腳 接駁到高電壓,設定為寫左模式,所有 IO引腳 會改變為 輸入狀態

見下文
設定寫入資料的內容

見下文
按下按壓按鈕,將 WE引腳 從 高電壓 改變為 低電壓,便可以將資料寫入到地址

見下文
重置寫入資料的內容,並將 OE引腳 接駁回 低電壓
設定的內容便可以從選取的地址中讀取

讀取資料

見下文
將 AT28C256 設計成 七段顯示器解碼器

補充資料

以前因為不懂接駁 按壓按鈕,差點將 Arduino UNO 燒毀
(可能之前 維修 Arduino Nano 燒毀的 S4二極體 就是這樣損壞)
這種接駁方法,當未按下 按壓按鈕 時,訊號線會保持 低電壓
但當按下 按壓按鈕 後,電源 及 接地 接通,在接近沒有 電阻 的情況下,便會短路

在下發現很多教學都會使用 10KΩ電阻器 連接,使用 按壓按鈕 或 開關按鈕 都不會發生問題

下拉電阻
當要讓訊號引腳 保持低電壓時 使用 下拉電阻 (Pull-Down Resistor)
按下 按壓按鈕 後,由於 下拉電阻 的 電阻值較大,令電流向 訊號引腳

上拉電阻
當要讓訊號引腳 保持高電壓時 使用 上拉電阻 (Pull-Up Resistor)
按下 按壓按鈕 後,由於 訊號引腳 的 電阻值較大,令電流向 接地
(通常微控制器的引腳在設定為輸入時,都會提供 10KΩ 的上拉電阻,避免電流過大導致引腳以至整粒晶片損壞)
由於 上拉電阻 已經將電流值降低 ,因此不會短路

雙列開關掣
見下文
由於原本的雙列開關掣引腳太短,無法穩定地在麵包板上
因此購買其他類型的雙列關開掣

見下文
見下文
最常見的雙列開關掣,大約港幣2元

見下文
見下文
晶片設計的雙列開關掣,大約港幣7元

見下文
見下文
同樣是晶片設計的雙列開關掣,開關掣凹陷到切換糟中,大約港幣4元(以8位計算)

見下文
雖然晶片設計的雙列開關掣最昂貴,但開關掣最穩固
在麵包板測試時,不容易因為用力推按開關掣導致雙列開關掣而郁動
但購買時要清楚確認雙列開關掣是通孔設計還是表面黏著設計
其實表面黏著設計的雙列開關掣只是將通孔設計的引腳剪短

總結

最初接駁線路時,由於在下想方便接駁,因此拿在手上接駁線路
可能某些線路接駁錯誤產生短路,接通電源後 AT28C256 的麵包板背面異常高溫,在下立即將電源線拔除
然後再觸摸 AT28C256 的表面,溫度比麵包板背面更熱,幸好麵包板未熔化
由於溫度太熱,唯有等待降溫再重新接駁線路才正常運作
雖然可能有機會燙傷,但如果想避免晶片因為接駁錯誤而損壞
通電前,先用手指放在晶片上;通電後,如果晶片表面溫度異常熱,便可以立即拔除電源

最初測試寫入資料時,錯誤地將 WE引腳 電壓變化由低至高 為 寫入,發現會清除原本的資料,新資料卻沒有寫入
最後重新閱讀資料表才發現是將 電壓變化由高至低 才是執行

使用 AT28C256 前,在下想使用 ATmega328P 製作 七段顯示器解碼器
但感覺有點殺雞用牛刀, ATmega328P 可以編寫更複雜的程式內容,而且還要配置 石英晶體振盪器,比較麻煩
雖然有 4511 及 4543 兩種 七段顯示器解碼器,但 4511 只對應 共陰七段顯示器 ,而 4543 只對應 共陽七段顯示器
而且兩者都只支援 BCD格式 ,不支援 十六進制,因此在下使用 AT28C256 自行製作七段顯示器解碼器
最後在下使用 AT28C256 便可以製作出支援 共陽及共陽的七段顯示器解碼器

參考資料

沒有留言 :

張貼留言