單晶片,很高興見到你。

單晶片(Single Chip),又稱微控制器(Microcontroller,µC)是我一直在探索與研究的領域之一。我記得與他的初次見面是在國二的樣子,至於發現過程是如何…這我還得要想想,似乎是因為書本上提到這玩意的關係而使我去找尋與研究。
總之,這東西現在是我專研的領域之一,同時也是我學習組合語言的開始。
最初的我接觸到的單晶片是由Atmel所出產的 89C51 這顆IC,當時單價約50元,算是我那時接觸電子領域買過最昂貴的材料,而他的燒錄器也他X的貴(只能燒C51/52的要800),真是…坑人嘛!

單晶片(Single Chip),又稱微控制器(Microcontroller,µC)是我一直在探索與研究的領域之一。我記得與他的初次見面是在國二的樣子,至於發現過程是如何…這我還得要想想,似乎是因為書本上提到這玩意的關係而使我去找尋與研究。

總之,這東西現在是我專研的領域之一,同時也是我學習組合語言的開始。

最初的我接觸到的單晶片是由Atmel所出產的 89C51 這顆IC,當時單價約50元,算是我那時接觸電子領域買過最昂貴的材料,而他的燒錄器也他X的貴(只能燒C51/52的要800),真是…坑人嘛!

不過C系列的時代流行過好長一段時間後,就進入了S系列,也就是現在常見的 89S51/S52 ,而其燒錄方式改為成本較低廉ISP燒錄方式,只需要幾條線與一個軟體便可達成,同時,也因為燒路線少,所需零件相對的也少,DIY上也方便,很適合初入門的人學習用。

記得當時一直看到8051這四個數字,查詢後發現,原來8051是Intel於1981年生產販售的產品,其內含有:8051原始版圖片

  • 8 位元 CPU
  • 4KB 內部程式記憶體,最大可擴充至 64KB。
  • 128Bytes 內部資料記憶體,最大可擴充至 64KB。
  • 具有邏輯代數運算功能(位元邏輯)。
  • 4 組可位元定址的 I/O 埠〈P0、P1、P2、P3〉。
  • 2 組16位元計時/計數器〈T0、T1〉。
  • 5 個中斷源〈INT0、INT1、T0、T1、RXD、TXD〉。
  • 1 組全雙工串列埠〈UART〉。

 

與89C51、89S51的規格幾乎是一模一樣,只是燒錄方式與特性不同。不過Atmel生產的這些IC是從8051的圓形下去進行開發與改良,所以大家喜歡稱這些IC為8051,因為相容嘛!

接下來,先帶大家看看這顆擁有40隻腳的黑色蜈蚣IC的接腳功能。

  • VCC:接正電源5V。8051的能量來源
  • GND:接地。他的排泄口(誤)
  • PORT0:可做一般I/O使用,當作輸入或輸出時應在外部接提升電阻,外部記憶體擴充時,當作資料匯流排(D0~7)及位址匯流排(A0~7)。
  • PORT1:一般I/O使用,內部設有提升電阻。
  • PORT2:一般I/O使用,內部也有提升電阻,外部記憶體擴充時,當作位址匯流排(A8~15)使用。
  • RST:晶片重置信號輸入腳,只要輸入一高電位脈衝,大於2個機械週期,就可以完成重置動作。戳一下遊戲
  • ALE/PROG:接外部記憶體時,位址栓鎖致能輸出脈衝,利用此信號將位址栓鎖住,以便取得資料碼未接外部記憶體時,有1/6石英晶體的振盪頻率,可做為外部時脈在燒錄PROM時,此接腳也是燒錄脈波之輸入端。
  • PSEN:當作程式儲存致能外部程式記憶體之讀取脈波,在每個機械週期會動2次,外接ROM 時, 與ROM 的/OE 腳連接。
  • EA/VPP:接高電位時,讀取內部程式記憶體;接低電位時,讀取外部程式記憶體。欲燒錄內部EPROM 時,利用此腳接收21伏特之燒錄供應電壓。
  • XTAL1, XTAL2:接石英晶體振盪器,工作機械週期=石英晶體/12。他的手錶

看完以上超級多的文字後,我相信各位一定對這東西還是一知半解,這不用否認,因為我當初看完這些東西只是一臉疑惑…不過當時的我並沒有相當完整的電腦知識,所以RAM、ROM、KB、位元…這些東西我完全,不懂。哈哈哈哈哈!

稍稍解釋一下這幾個名詞好了。

RAM 即 Random-access memory 的縮寫,中文解釋是「隨機存取記憶體」,用來儲存資料用,這些資料是CPU在運行所需的東西,大部分是程式碼片段的機械語言以及運算過程中的暫存資料。

ROM 則是唯讀記憶體 (Read-only Memory),是存放程式碼的地方,也就是說,你寫的程式轉成機械碼之後所存放的地方,目前以EEPROM、Flash ROM為主流。

那麼,

單晶片能幹嘛? 能吃嗎?

單晶片是科技半導體的產物,簡單說就是一種奇怪的石頭(晶體),所以是不能吃的。

只是,當你會運用這種長相怪異、路邊撿不到的石頭的時候,他就有機會為你製造鈔票來讓你買東西吃。至於買來的東西好不好吃…我只能說,看個人喜好囉~

晶片大軍

其實,單晶片應用的範圍很廣,在你生活周遭就有單晶片的存在。離你最近的就是你現在正在用的這台電腦,它的內部就有數顆類似的晶片正在運作著,然後你手上握著的滑鼠,內部也有一顆單片,然後你正在敲打的鍵盤底下也有一顆,證據還不夠嗎? 那麼你身上的MP3 Player、房間的CD音響組、DVD撥放器、電視機…你生活周遭幾乎都有單晶片的影子存在,你說,這東西不能吃嗎? 只是吃法不同罷了。

之後因為技術的成熟與提升,單晶片不再是簡單的8位元的慢速晶片了,目前已有更快的16位元以及32位元的晶片問世,且其內的功能更加的強大!其中32位元的單晶片通常是用來做嵌入式系統,舉個最簡單也最常見的例子,就是你經常用的,手機。

如何? 是不是很驚人呢? 這樣的小東西居然創造了如此多的產品,不過最終的功臣並不是他,而是具有更高度智慧的人類,不然就算有這樣的東西,沒人去思考如何應用,它終究只是一塊石頭…

開發工具

本文參考資料: http://zh.wikipedia.org/wiki/8051

真的很高興遇見你,89C51。

電子輪盤抽獎遊戲之隨機顯示

這個東西的出現其實是因為一個店家的老闆請我做的,不過目前我還沒有把它交出去(被毆),因為我還沒有想好怎麼把版子洗出來…

在這個小小的東西裡,最重要的東西就是隨機選取燈號的部分,不過卻也是最簡單的,因為他只是幾條涵式再加上一點硬體的小配合而已。

實驗版

這個東西的出現其實是因為一個店家的老闆請我做的,不過目前我還沒有把它交出去(被毆),因為我還沒有想好怎麼把版子洗出來…

繼續閱讀 “電子輪盤抽獎遊戲之隨機顯示”

新燒錄器入手,以及第一件案子進行中。

幾天前,從畢業的學校買到了新的燒錄器,這燒錄器是由學校老師自行設計、焊接,但非常方便的燒錄器,省下我自行製作的時間。經過我的拆解,它的燒錄晶片使用的是 ATmega8 , 這與這篇文章有些相似,根據我的揣測,使用的燒錄原理應該是一樣的。

繼續閱讀 “新燒錄器入手,以及第一件案子進行中。”

USB ISP – 免轉換,用真正的USB介面燒8051!

前一陣子,在對岸發現了一個不錯的東西。 雖然那個東西在台灣有人在賣,一組大概是1,000元台幣(燒路線+實驗板),但是……對我們這些窮學生來講時在是好貴好貴。

研究過那塊板子,它是利用Atmel公司出產的ATMega(AVR)去做資料的傳輸,而AVR本身就內建有USB的傳輸功能。

繼續閱讀 “USB ISP – 免轉換,用真正的USB介面燒8051!”

89C2051燒錄器 – 用89S51實現。

20090518 更新圖片連結

手癢,到處在找USB ISP的資料,無意間發現這個 – 燒錄89C2051(用89S51或89C2051) 89C2051是一顆20隻腳的C51/S51縮小版(Atmel公司有出S2051,但是我在台灣沒有看到),雖然腳少了20隻,體積也小了將近4分之一,但是功能一樣強大。

繼續閱讀 “89C2051燒錄器 – 用89S51實現。”

89S51/52燒錄器 – 透過RS232及89C2051燒錄

發了一大堆燒錄器,都是不用經過另一顆單晶片做轉換的。

而我這次要發的這一篇則是多了一顆小小的2051單晶片來做溝通的橋梁,最重要的是,我獨家取得此款燒錄器的原始碼

繼續閱讀 “89S51/52燒錄器 – 透過RS232及89C2051燒錄”

MIDE-51 – 免費的8051單晶片C語言編譯器

2010/01/30 補齊圖片

首先,先來介紹SDCC到底是蝦米碗糕?

SDCC – Small Device C Compiler,一套功能強大而且免費的C語言編譯器,它小巧(僅2MB)、它超強、沒有程式碼大小的限制、也沒有起始位置必須在0×0800的限制、但它只認識C語言!

不過就因為它體積小,所以是採用Command的方式運行(一分錢一分貨啊),不過這也沒有關係~因為總是有許多好心人幫忙弄出一些不同的東西,那就是MIDE-51啦!!

接下來將介紹如何利用MIDE-51來做8051 C語言的編譯!

我想我還是做點MIDE-51的視窗介紹好了

ToolBar group:工具列,就…工具列啊

Line Number..:行號,方便好用的東西

File Workspace:檔案工作區,你所開啟的檔案列表

Outputmessage:輸出訊息,所有編譯的結果、錯誤、警告…等都在此顯示

繼續閱讀 “MIDE-51 – 免費的8051單晶片C語言編譯器”

AT89S5X 燒錄器,更輕巧!

這款燒錄器更輕更小,燒錄速度也滿快的

唯一的缺點就是…使用USB TO Serial時無法正常工作

—-以下是全文轉載—-

各位好:

附件是我最近做的一個AT89S5X的燒錄器(電路+BCB Source Code), 利用RS232配合一顆HIN232+2顆TTL IC,

對於沒有燒錄器但想玩玩AT89S5X的人應該蠻容易製作的…

先前做了一個類似的電路, 不過需要配合一顆AT89C2051才能使用(for AT89S8252)

, 因為AT89S8252停產了, 又懶得修改AT89C2051的組語, 乾脆試試一直想做的電路

看看… 新的電路彈性應該比較大, 只要燒錄時序(SPI介面)與AT89S5X相同應該都可以,只

是要看實際的燒錄命令重新寫適合的Device Class

P.S.

1.其實可以把這個電路看成是RS232轉SPI介面的電路, 所以最主要的檔案是附件的TSpiInterface.cpp

若是有人把這個電路應用在其它與SPI介面類似的地方, 也歡迎通知一下大家喔!

2.主要程式架構大致為:

操作介面(TMainForm)->燒錄器控制迴圈(TProgLoop)

->Device類別(依不同的IC, 由TDeviceBase繼承燒錄的介面並實作)->SPI介面(TSpiInterface)->Device

3.要載入檔案(Intel Hex檔)的話, 在程式記憶體緩衝區按右鍵會有選單, 要測試的話可以先將緩衝區填滿指

定的值, 燒入IC後, 離開程式, 再讀回看看, 記得不要勾選 Lock Bits

4.現在Lock Bits的寫入好像還有問題, 有時成功有時失敗, 不過不會影響燒入程式的執行, 只是沒有保密的功能而已

5.程式寫的很亂, 請各位不要見笑了..

From:Delphi.ktop