這里介紹的一款多功能編程器,功能強大,支持大多數常用的EPROM, EEPROM, FLASH, I2C,PIC, MCS-51,AVR, 93Cxx等系列芯片(超過400種)。硬件成本較低,性價比很高。既適合于電子和電腦愛好者使用,也適合家電維修人員維修家電和單片機開發人員使用。圖1為多功能編程器的主機,中間是32腳ZIF(零插力)鎖緊插座, 用于27系列、28系列、29系列、39/49系列等BIOS芯片。左邊是25芯并口插座,通過并口電纜連接計算機并口。左下方是電源插座。32腳ZIF插座下方是12位的DIP開關,對EPROM芯片進行讀寫等操作前,需將此開關撥至相應位置。具體開關位置可以參照軟件提示。鎖緊插座右側依次排列3個DIP8插座和一個DIP18插座,分別用于25系列、24系列、93系列存儲器和PIC系列單片機等;綠色電源指示燈(Power)用于指示編程器電源狀態;紅色指示燈(Vpp)用于指示芯片Vpp電源狀態;黃色指示燈(Vcc)用于指示芯片編程狀態。 一、 主要功能: ★ 可用此編程器升級、維修電腦主板,顯卡等BIOS芯片。可支持3.3V低電壓BIOS芯片。 ★ 用來寫網卡啟動芯片:用于組建無盤站寫網卡啟動芯片或制作硬盤還原卡等。 ★ 可用于復印機、傳真機、打印機主板維護和維修。★ 可用于讀寫用來寫汽車儀表、安全氣囊、里程表數據。★ 可用于維修顯示器、彩電、VCD、DVD 上面的存儲芯片。可修改開機畫面。 ★ 用來開發單片機: 通過添加不同適配器,可以支持 MCS-51 系列, AVR 系列和 PIC 系列的MCU。 ★ 用來寫大容量存儲芯片:大容量的存儲芯片,一般在衛星接收機上使用較多,可以用編程器直接來升級或改寫。 二、電路簡介圖2是這臺編程器的完整電路圖,可以看到編程器電路由完全分離的兩部分組成:串行部分和并行EPROM部分電路。限于篇幅,原理部分不再詳述。對原理感興趣的讀者可以參考本文配套文件包中的“電路原理參考.PDF”文件。圖2三、電路板設計與制作 圖3是編程器參考元件布局圖,雙面PCB尺寸為160X100毫米,厚度1.6毫米。具體的PCB設計可以參考配套文件中的“PCB參考設計.PDF”。這個文件中包括電路板的頂層和低層布線和頂層絲印層。如果業余自制電路板,建議使用雙面感光電路板制作,以確保精度。
標簽: 多功能編程器
上傳時間: 2013-10-14
上傳用戶:問題問題
串行編程器源程序(Keil C語言)//FID=01:AT89C2051系列編程器//實現編程的讀,寫,擦等細節//AT89C2051的特殊處:給XTAL一個脈沖,地址計數加1;P1的引腳排列與AT89C51相反,需要用函數轉換#include <e51pro.h> #define C2051_P3_7 P1_0#define C2051_P1 P0//注意引腳排列相反#define C2051_P3_0 P1_1#define C2051_P3_1 P1_2#define C2051_XTAL P1_4#define C2051_P3_2 P1_5#define C2051_P3_3 P1_6#define C2051_P3_4 P1_7#define C2051_P3_5 P3_5 void InitPro01()//編程前的準備工作{ SetVpp0V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=0; Delay_ms(20); nAddress=0x0000; SetVpp5V();} void ProOver01()//編程結束后的工作,設置合適的引腳電平{ SetVpp5V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=1;} BYTE GetData()//從P0口獲得數據{ B_0=P0_7; B_1=P0_6; B_2=P0_5; B_3=P0_4; B_4=P0_3; B_5=P0_2; B_6=P0_1; B_7=P0_0; return B;} void SetData(BYTE DataByte)//轉換并設置P0口的數據{ B=DataByte; P0_0=B_7; P0_1=B_6; P0_2=B_5; P0_3=B_4; P0_4=B_3; P0_5=B_2; P0_6=B_1; P0_7=B_0;} void ReadSign01()//讀特征字{ InitPro01(); Delay_ms(1);//----------------------------------------------------------------------------- //根據器件的DataSheet,設置相應的編程控制信號 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(20); ComBuf[2]=GetData(); C2051_XTAL=1; C2051_XTAL=0; Delay_us(20); ComBuf[3]=GetData(); ComBuf[4]=0xff;//----------------------------------------------------------------------------- ProOver01();} void Erase01()//擦除器件{ InitPro01();//----------------------------------------------------------------------------- //根據器件的DataSheet,設置相應的編程控制信號 C2051_P3_3=1; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(1); SetVpp12V(); Delay_ms(1); C2051_P3_2=0; Delay_ms(10); C2051_P3_2=1; Delay_ms(1);//----------------------------------------------------------------------------- ProOver01();} BOOL Write01(BYTE Data)//寫器件{//----------------------------------------------------------------------------- //根據器件的DataSheet,設置相應的編程控制信號 //寫一個單元 C2051_P3_3=0; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; SetData(Data); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); Delay_us(20); C2051_P3_4=0; Delay_ms(2); nTimeOut=0; P0=0xff; nTimeOut=0; while(!GetData()==Data)//效驗:循環讀,直到讀出與寫入的數相同 { nTimeOut++; if(nTimeOut>1000)//超時了 { return 0; } } C2051_XTAL=1; C2051_XTAL=0;//一個脈沖指向下一個單元//----------------------------------------------------------------------------- return 1;} BYTE Read01()//讀器件{ BYTE Data;//----------------------------------------------------------------------------- //根據器件的DataSheet,設置相應的編程控制信號 //讀一個單元 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=1; C2051_P3_7=1; Data=GetData(); C2051_XTAL=1; C2051_XTAL=0;//一個脈沖指向下一個單元//----------------------------------------------------------------------------- return Data;} void Lock01()//寫鎖定位{ InitPro01();//先設置成編程狀態//----------------------------------------------------------------------------- //根據器件的DataSheet,設置相應的編程控制信號 if(ComBuf[2]>=1)//ComBuf[2]為鎖定位 { C2051_P3_3=1; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; Delay_us(20); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); } if(ComBuf[2]>=2) { C2051_P3_3=1; C2051_P3_4=1; C2051_P3_5=0; C2051_P3_7=0; Delay_us(20); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); }//----------------------------------------------------------------------------- ProOver01();} void PreparePro01()//設置pw中的函數指針,讓主程序可以調用上面的函數{ pw.fpInitPro=InitPro01; pw.fpReadSign=ReadSign01; pw.fpErase=Erase01; pw.fpWrite=Write01; pw.fpRead=Read01; pw.fpLock=Lock01; pw.fpProOver=ProOver01;}
上傳時間: 2013-11-12
上傳用戶:gut1234567
1 任務 設計一個文本編輯器。 2 基本要求 1 如圖所示,設計一個有菜單欄的編輯窗口,在該窗口可以實現文本的輸入,利用DEL鍵、BackSpace鍵、Home鍵、End鍵、上下左右光標鍵,實現對輸入文本的全屏幕編輯。 2 實現文件的新建、打開、保存、另存為與退出等功能。 包含 設計思路、技術報告、和不同階段的設計源代碼 擴展要求 1 要求使用彩色組和背景顏色來設計界面顏色。 2 模擬一些著名編輯器(如Source Insight)的其它功能,如比較詳細的幫助功能,對特定的命令或保留字(如C語言或匯編語言)能顯示不同的醒目顏色。 3 自己參考其它編輯器進行發揮。
上傳時間: 2013-11-03
上傳用戶:lhc9102
這是我用課余時間做的一個Flash播放器,在網上看到一些網友做了一些自已的播放器,可是還要注冊,(對于我們這些窮學生來說哪有錢呀^_^ )于是自已做了一 個,她不僅是完全免費,而且還代碼公開。希望廣大網友支持自由軟件。里面有一個BUG不得不說出來,就是對多個文件進行播放時,必須遠擇多個文件,則否會出錯, 由于上學期馬哲沒及格,這學期要補考,所以沒有花時間來修正它。對VB感興趣的朋友們自已改改吧。*_*, 如果有什么其他的建議,歡迎來信:fhjeipje@163.com
上傳時間: 2015-03-25
上傳用戶:shinesyh
能像Windows操作系統的資源管理器一樣將資源按目錄(文件夾文件)的形式組織起來。 考慮到資源建設的階段性,資源應是按一定的規模進行打包,形成一個個中小規模的相對獨立的“資源庫”。 鑒于資源庫名目繁多和容量大的特點,資源的存儲存在多樣化問題,系統應該能夠解釋各種存儲格式和存儲方式的資源 資源庫應該能夠滿足資源庫逐步完善、長期建設的特點,并且能不斷擴展資源庫中的內容。 鑒于教師資源分科目的特點,系統應能提供教師感興趣的資源。例如,語文老師對語文相關教育資源感興趣,而對數學等教學素材極少查看,這時系統應能讓該語文老師只看到語文等相關的感興趣的資源,而隱藏數學等科目的相關教育資源
上傳時間: 2014-01-13
上傳用戶:daguda
外國人寫的調度器,比rtos簡單,感興趣的朋友可以借鑒
標簽: 調度
上傳時間: 2015-04-21
上傳用戶:a6697238
目錄語音電話高級編程是一個通過調制解調器來進行語音電話開發的程序,相信讀者一定會感興趣。 本程序需要調制解調器的支持,否則可能失敗 需要調制解調器支持語音傳輸,本程序在子彈頭調制解調器下調試通過,通話時通過麥克風和話筒來進行。
上傳時間: 2013-12-19
上傳用戶:kelimu
在一個多人連線伺服器中,我們要有一個伺服端執行緒負責傾聽是否有客戶端連線,如果有客戶端連線,就指派一個客戶端執行緒專門應付這個客戶端連線,並在客戶端佇列中記錄它,然後進入下一個傾聽。 一個客戶端執行緒的工作,就是讀取客戶連線端的使用者輸入訊息,它不負責回應訊息,而是將讀到的訊息加入訊息佇列中,此外在我們的範例中,客戶端執行緒也負責自己的連線狀態,如果使用者中斷連線,客戶端執行緒會負責將自己從客戶端佇列中清除。 廣播執行緒負責取出訊息佇列中的訊息,然後將之一一傳送訊息給客戶端佇列中尚存在的客戶端執行緒。
標簽: 伺服器
上傳時間: 2015-05-22
上傳用戶:wweqas
一)需求 很多情況下我們需要知道字節流的編碼,比如 1) 使用編輯器打開文本文件的時候,編輯器需要識別文本文件的各種編碼 2) 上傳文件后,分析上傳文件字節流需要知道它的編碼 3) 讀取某個web頁面的源代碼,并要輸出時,需要知道正確的編碼才能輸出正確的內容 ..............
上傳時間: 2013-12-20
上傳用戶:dsgkjgkjg
linux下的內核級調試器,對在linux下調試程序感興趣的朋友不妨一試
上傳時間: 2013-12-20
上傳用戶:ljt101007