8051單片機開發工具DIY
4 硬件設計
① 通過計算機并口與單片機SPI口連接;
② 為了保護計算機并口,需要增加1片74HC244作為隔離。
實用的原理圖如圖2所示。(已經過實踐檢驗,可放心使用。)

5 用VB編程進行并口控制
打印端口的基地址一般為0x278、0x378或0x3BC,可以從控制面板中查到。為了方便讀者,表2列出了常用打印端口引腳及寄存器位元的說明。

在Windows環境下最簡單易學的語言恐怕非VB莫屬,所以我們的開發工具也選用VB作為編程語言。但由于Windows的保護,VB無法直接讀寫打印端口,因此我們需要另外的程序模塊來實現打印端口的直接讀寫。在Internet網上可以找到許多此類模塊,并且相當多的模塊可以免費使用。經過試用,筆者推薦使用Winio v2.0。該模塊支持Win9X/NT/2000/XP(http://www.internals.com Yariv Kaplan ),并且帶有詳細的幫助、例子程序及源碼。使用時,將Winio.sys、Winio.dll、Winio.vxd及Winio.bas四個文件拷貝到工作目錄下,在VB中直接添加Winio.bas模塊即可。本例中用到的函數有四個,分別說明如下。 ① Initialize():允許端口控制函數。在使用端口輸入輸出函數之前調用一次,成功返回“1”,失敗返回“0”。
② Shutdown():關閉端口控制函數。在退出程序時執行一次,成功返回“1”,失敗返回“0”。
③ GetPortVal(ByVal PortAddr As Integer, ByRef Portval As Long, ByVal bSize As Byte) As Boolean:讀取端口函數,PortAddr 為端口地址, Portval為端口值,bSize為要讀取的字節數。讀取成功時返回“1”,失敗時返回“0”。
④ SetPortVal(ByVal PortAddr As Integer, ByVal Portval As Long, ByVal bSize As Byte) As Boolean:寫端口函數。PortAddr 為端口地址, Portval為要寫的值,bSize為要寫入的字節數。寫入成功返回“1”,失敗返回“0”。
四個函數在Winio.bas模塊中的聲明如下:
Declare Function InitializeWinIo Lib WinIo.dll” () As Boolean
Declare Function ShutdownWinIo Lib WinIo.dll” () As Boolean
Declare Function GetPortVal Lib WinIo.dll” (ByVal PortAddr As Integer, ByRef Portval As Long, ByVal bSize As Byte) As Boolean
Declare Function SetPortVal Lib WinIo.dll” (ByVal PortAddr As Integer, ByVal Portval As Long, ByVal bSize As Byte) As Boolean
6 Intel HEX 格式文件
由于一般編譯軟件產生的用于寫入芯片的文件都是Intel HEX格式的文件。Intel HEX文件屬于文本文件,可以用記事本查看。一個Intel HEX文件的一行稱為一個記錄,每個記錄都是由十六進制字符組成的,兩個字符表示一個字節的值。Intel HEX文件通常由若干條記錄組成,每個記錄都具有如下的形式:
:LLAAAATTDD...DDCC
“:”——記錄的起始標志;
LL——記錄長度,表示該記錄中的數據字節數;
AAAA——數據裝入的首地址(16位);
TT——記錄類型,00表示數據記錄,01表示文件結束;(注意:有的編譯軟件會產生大于01的記錄類型,本應用中對大于01記錄類型的記錄忽略掉即可。)
DD——數據值(字節);
CC——校驗和。(將其本身與記錄中除起始標志外的所有字節相加應為0,不為0則有錯。)
VB編程詳細說明見本刊網絡補充版(http://www.dpj.com.cn)。(由于各子程序的流程都較簡單,所以直接給出源碼,而未畫出流程圖。程序采用由底至頂的設計方法。)
結 語
雖然上述程序能實現各種基本的功能,但并不完善,并未考慮各種異常情況,讀者可根據實際情況進行完善。編程功力較差的朋友可直接到筆者的網站(http: //www.mcudiy.com)下載相對較完善的應用程序 。如果充分理解了上述程序,那么DIY一個AVR或PIC單片機的開發工具也非難事。在筆者的網站也有制作完成的“MCS51/AVR/PIC三合一下載器資料”供愛好者下載。
由于AT89S8252的價格還是較貴,所以現在市場上較難買,不過Atmel公司推出的替代AT89C51/52的AT89S51/52也有在系統編程功能,且價格便宜。其在系統編程的實現方法與AT89S8252類似,對本例部分程序稍作修改即可支持該器件。筆者制作的“MCS51/AVR/PIC三合一下載器”增加了對AT89S51/52的支持。
DIY機械鍵盤相關社區:機械鍵盤DIY
單片機相關文章:單片機教程
單片機相關文章:單片機視頻教程
單片機相關文章:單片機工作原理
晶振相關文章:晶振原理












評論