2021-10-25

89S52模組 及 通過ICSP寫入資料

每次寫入資料到 AT89S52 都要重新接駁一大堆線在下覺得非常麻煩
因此在下尋找一些模組及配件可以方便安裝 AT89S52 並寫入資料的工具

AT89S52模組

見下文
AT89S52模組

電路板
見下文
電路板 正面

見下文
電路板 背面

見下文
紅色LED 綠色LED 220uF電解電容 10uF電解電容 30pF陶瓷電容 30pF陶瓷電容 104pF陶瓷電容 1KΩ電阻 1KΩ電阻 10KΩ電阻 10KΩ電阻 9針10KΩ排阻 開關按鈕 按壓按鈕 內徑2.1mm外徑5.5mm DC電源插口 2x5 IDC連接器 1排3孔IC連接器 1x4引腳插頭 2x4引腳插頭 1x19引腳插頭 1x17引腳插頭 40針ZIF插座
在下在電路板的相片上標籤零件名稱,方便了解零件佈局

電阻
見下文
見下文
見下文
2粒1KΩ電阻 及 2粒10KΩ電阻

陶瓷電容
見下文
見下文
見下文
1粒104pF陶瓷電容 及 2粒30pF陶瓷電容

排阻
見下文
見下文
見下文
9針10KΩ排阻
焊接時要留意排阻的 第1引腳標示,避免焊接錯誤的方向
印有點的方向為第1引腳,其餘的都是連著電阻
103 是 SMD電阻的數字碼,意思是 10 * 10^3 = 10000

IC連接器 及 石英晶體振盪器
見下文
1排3孔IC連接器

見下文
1粒11.0592MHz石英晶體振盪器

見下文
石英晶體振盪器 連接到 IC連接器

見下文
方便替換 石英晶體振體器`

LED
見下文
綠色LED 顯示測試訊號

見下文
紅色LED 顯示電源狀態訊號

見下文
焊接 LED 前,要注意方向
正常設計上 LED 正極引腳較長,負極引腳較短,但不要依靠引腳的長短判斷正負極,因為引腳可以被剪裁
LED 外環並非完整的圓形,正極方向外環為圓形,負極方向外環被削平
有部分 LED 外環是方形設計,無法用外觀區分,便要觀察 LED內部 ,正極方向較小,負極方向較大
(圖片來源:維基百科)

IDC連接器
見下文
見下文
方便將資料寫入到 89S52 的連接器

外接電源及接地引腳
見下文
見下文
見下文
模組有很多外接電源及接地引腳方便讓外接裝置連接

開關按鈕
見下文
見下文
連接主電源時的開關按鈕

按鍵按鈕
見下文
見下文
連接主電源時的重新啟動按鈕

電解電容
見下文
見下文
1粒 470uF 16V 電解電容 及 1粒 10uF 50V 電解電容

見下文
見下文
由於 電路板 上顯示 220uF ,因此在下將 470uF 的 電解電容 替換成 220uF 的 電解電容
留意:電解電容器(Electrolytic Capacitor) 的引腳 區分極性,負極有標示負號
另外使用高電壓的電容器要小心
高電壓電容器流電能夠令人死亡
使用電容器必須先放電,避免觸電

電源插口
見下文
見下文
1個 內徑2.1mm外徑5.5mm DC電源插口

ZIF IC插座
見下文
見下文
見下文
見下文
一種方便安裝及卸除 IC 的 IC插座

訊號引腳
見下文
見下文
見下文
讓 89S52 傳送及接受訊號的引腳
(通常建議將訊號引腳焊接到正面,但在下喜歡將零件接駁到麵包板上使用
因此在下將訊號引腳焊接到背面,閣下不一定使用在下相同焊接方向)

安裝 89S52

見下文
將 89S52 安裝到 模組上

ICSP

見下文
ICSP 稱為 電路序列編程 (In-Circuit Serial Programming)
是一種比 ISP 進階的晶片編程方法

ICSP 佈局
ICSP 有兩種引腳排列方式,分別是:
  • ICSP 6 或 PIC ICSP
  • ICSP 10 或 AVR ICSP

ICSP 6 (PIC ICSP) ICSP 10 (AVR ICSP)
1 2 3 4 5 6 1 2 3 4 5 6 7 8 9 10

ICSP 引腳
引腳 ICSP 6 (PIC ICSP) ICSP 10 (AVR ICSP)
1 MISO MOSI
2 VCC VCC
3 SCK NC
4 MOSI GND
5 RST RST
6 GND GND
7 SCK
8 GND
9 MISO
10 GND

接駁 Arduino UNO

不論是 Arduino UNO 或 Arduino UNO 兼容板,都有一組 ICSP 作為從機將資料寫入到 ATmega328P
亦可以作為主機將資料寫入到其他支援 ICSP 寫入的晶片
(由於 RST引腳 是為作 從機 被寫入資料時接駁,因此作為 主機 時 RST引腳 不需要接駁)

線路原型

見下文
其實接駁方法與平常的 SS(10), MOSI(11), MISO(12), SCK(13)

接駁線路

見下文
除了接駁 ICSP 的線路,還要替 89S52 的 EA引腳 接駁 5V電源,令 89S52 能在 5V電源下編程

見下文
接通電源後, 89S52模組 的 紅色LED 會亮著

見下文
在下使用 2粒 超光LED 在 Port 2 測試
#include <8052.h>

unsigned int i;

void main() {
	while (1) {
		P2 = 0x01;
		for (i = 0; i < 50000; i++);
		P2 = 0x10;
		for (i = 0; i < 50000; i++);
	}
}

見下文
另一個使用 測試用的 綠色LED
#include <8052.h>

unsigned int i;

void main() {
	while (1) {
		P1 = 0x00;
		for (i = 0; i < 50000; i++);
		P1 = 0x01;
		for (i = 0; i < 50000; i++);
	}
}

測試發現當 Port 1 Bit 0 為低電壓時,綠色LED 才會亮著

見下文
與 Arduino UNO 相同,可以使用 內徑2.1mm外徑5.5mm DC插頭 提供電源
當使用 DC插頭,還需要按下開關按鈕才正式向 AT89S52 提供電源 (紅色LED 會亮著)

補充資料

既然已經製作了 89S52模組,便再方便一點,製作一條方便連接到 89S52模組 的接駁線

見下文
基本上就是剛才的接駁線,只是將對應的引腳線路排列妥當再固定

見下文
由於 ICSP 6 端會作為 主機 向 AT89S52 寫入程式,因此不需要接駁 RST引腳
5支引腳座用超能膠固定,再用熱縮管加熱覆蓋外圍加強穩固效果
如果擔心熱縮管收縮不平均,可以在 RST引腳 的位置添加空引腳座,令受力平均

見下文
ICSP 10 端是 從機 ,因此需要接駁 RST引腳
由於 NC引腳 是不需要連接,因此在下偷懶一點,減少一條線路
同樣如果擔心受力不平均,同樣可以加上空引腳座
(原則上 ICSP 10 共有 4支GND引腳,其實只需要接駁其中 1支GND引腳 即可
亦即是同樣只需要用 6支引腳,只是排列方式不同)

見下文
在下方便辨識 ICSP 6 端的 SS引腳 連接到 Arduino UNO ,在跳線上加上識別

見下文
見下文
線路 ICSP 6 端連接到 Arduino UNO 的 ICSP 6

見下文
見下文
線路 ICSP 10 端連接到 Arduino UNO 的 ICSP 10

見下文
ICSP 6 連接 ICSP 10
由於在下想偷懶一點,不接駁到麵包板,只使用測試用的 LED
因此直接在 ZIF IC座 上使用 跳線 將 AT89S52 的 EA引腳 連接到 VCC引腳

見下文
透過 ArduinoISP 將程式寫入到 AT89S52
(在下將一些測試用的 ihx檔案 保留,方便日後測試其他 AT89S52)
(其實編譯 Sketch 後都會建立 hex檔案 於暫存目錄中,可以用相同方法將 hex檔案 保留及寫入到 Arduino 上的 ATmega328P)

總結

在下第一次焊接相對複雜的電路板,總共22件零件,總共145支引腳,大約使用30分鐘焊接

焊接時在下又學會一些焊接方法,可以焊接得更好更準確
在下發現焊接引腳時,使用焊接器倚在焊墊及引腳加熱後,將錫線圍繞引腳熔解,焊接時會更快,效果亦更好

焊接通孔零件時,因為引腳需要穿過電路板,到另一邊焊接
但反轉會使用零件掉下,因此通常都會將引腳折曲,避免掉下
零件與電路板之間仍然會少許空位,在下希望零件與電路板之間沒有空位
當焊接引腳後,將零件壓向電路板再焊接引腳,將零件與電路板之間的空位減至最少
如果零件超過2支引腳,便將最後的引腳或對角的引腳用相同方法焊接,便可以將零件焊接到非常貼近電路板

焊接時大量零件到電路板時,零件可以借助其他表面支撐,因此零件由小至大焊接會較方便
另外由於在下焊接的零件都是通孔設計,因此全部焊接工序都是在電路板背面處理
如果零件是表面黏著設計,需要在電路板正面處理,否則大零件會妨礙小零件焊接

參考資料

沒有留言 :

張貼留言