?? 自制easy 51pro串行編程器.htm
字號:
<p class=MsoNormal style='text-indent:21.0pt'><span lang=EN-US>}</span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span lang=EN-US>void
SetVpp12V()//</span><span style='font-family:宋體;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>設置</span><span class=SpellE><span
lang=EN-US>Vpp</span></span><span style='font-family:宋體;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>為</span><span
lang=EN-US>12v</span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span lang=EN-US>{</span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span lang=EN-US><span
style='mso-tab-count:1'> </span>P3_4=0;</span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span lang=EN-US><span
style='mso-tab-count:1'> </span>P3_3=1;</span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span lang=EN-US>}</span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='font-family:宋體;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>還有個最重要的地方要注意:</span></p>
<p class=MsoNormal style='text-indent:99.75pt;mso-char-indent-count:9.5'><span
lang=EN-US><!--[if gte vml 1]><v:shape id="_x0000_i1026" type="#_x0000_t75"
style='width:373.5pt;height:200.25pt'>
<v:imagedata src="自制Easy%2051Pro串行編程器.files/image003.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=498 height=267
src="自制Easy%2051Pro串行編程器.files/image004.jpg" v:shapes="_x0000_i1026"><![endif]></span></p>
<p class=MsoNormal><span lang=EN-US>AT89C2051</span><span style='font-family:
宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>的</span><span
lang=EN-US>PIN1</span><span style='font-family:宋體;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>是</span><span class=SpellE><span
lang=EN-US>Vpp</span></span><span lang=EN-US>/RST</span><span style='font-family:
宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>與</span><span
lang=EN-US>AT89C51</span><span style='font-family:宋體;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>的</span><span
lang=EN-US>P1.0</span><span style='font-family:宋體;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>的引腳是同一個位置,而</span><span lang=EN-US>AT89C51</span><span
style='font-family:宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>的</span><span class=SpellE><span lang=EN-US>Vpp</span></span><span
lang=EN-US>/EA</span><span style='font-family:宋體;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>引腳與</span><span lang=EN-US>AT89C2051</span><span
style='font-family:宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>的</span><span lang=EN-US>P3.7</span><span style='font-family:
宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>引腳又是同一個位置。這里可以用一對開關進行切換,我是用跳線解決的。燒</span><span
lang=EN-US>2051</span><span style='font-family:宋體;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>時,控制器的</span><span lang=EN-US>P1.0</span><span
style='font-family:宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>正好可以用來控制</span><span lang=EN-US>2051</span><span
style='font-family:宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>的</span><span lang=EN-US>P3.7</span><span style='font-family:
宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>。看源程序中有個這樣的定義:</span><span
lang=EN-US>#define C2051_P3_7<span style='mso-tab-count:1'> </span>P1_0</span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-family:宋體;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>做編程器的步驟:</span></p>
<p class=MsoNormal style='margin-left:39.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1;
tab-stops:list 39.0pt'><![if !supportLists]><span lang=EN-US style='mso-fareast-font-family:
"Times New Roman"'><span style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span style='font-family:宋體;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>先做出一個最小系統,隨便燒個程序進去試試,讓你可以感受的到程序可以正常運行。很多人把編程器做完<span
class=GramE>后始終</span>檢測不到編程器,檢查錯誤都快搞得發瘋了,后來才發現單片機根本<span class=GramE>沒運行</span>。</span></p>
<p class=MsoNormal style='margin-left:39.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1;
tab-stops:list 39.0pt'><![if !supportLists]><span lang=EN-US style='mso-fareast-font-family:
"Times New Roman"'><span style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span style='font-family:宋體;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>完成串口通訊的部分后,把程序燒進去,打開軟件,<span
class=GramE>看狀態</span>那里有沒有“編程器</span><span lang=EN-US>:</span><span
style='font-family:宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>就緒”。如果沒有可以多復位幾次。如果還沒有檢測到編程器,看看端口,波特率是否設置正確。默認波特率是</span><span
lang=EN-US>28800</span><span style='font-family:宋體;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>,工作方式</span><span lang=EN-US>1</span><span
style='font-family:宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>,可以參照源程序。也可以用別的程序測試單片機與</span><span lang=EN-US>PC</span><span
style='font-family:宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>通訊是否正常。</span></p>
<p class=MsoNormal style='margin-left:39.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1;
tab-stops:list 39.0pt'><![if !supportLists]><span lang=EN-US style='mso-fareast-font-family:
"Times New Roman"'><span style='mso-list:Ignore'>3.<span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span style='font-family:宋體;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>這時候焊好一個芯片插座就可以用來編程</span><span
lang=EN-US>AT89S51</span><span style='font-family:宋體;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>了,建議先把</span><span
lang=EN-US>AT89S51</span><span style='font-family:宋體;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>的編程<span
class=GramE>器做出</span>來。成功后你就會有信心繼續往下做了。</span><span lang=EN-US>AT89S51</span><span
style='font-family:宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>編程<span class=GramE>器只要</span>控制</span><span lang=EN-US>P1.5,P1.6,P1.7,RST</span><span
style='font-family:宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>這幾個腳就可以了,但也要保證它是最小系統。</span></p>
<p class=MsoNormal style='margin-left:39.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1;
tab-stops:list 39.0pt'><![if !supportLists]><span lang=EN-US style='mso-fareast-font-family:
"Times New Roman"'><span style='mso-list:Ignore'>4.<span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span style='font-family:宋體;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>接著把其他部分做完,這就要焊一堆東西了。有個很好的辦法讓你省去焊一堆線:看電路你會發現,單片機</span><span
lang=EN-US>P0,P1,P2</span><span style='font-family:宋體;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>與目標插座是對應連接的,可以把單片機貼在插座的底部,直接引腳和引腳焊在一起,不過要注意別把單片機燒了,動手要快,要溫柔。不該焊在一起的引腳還要想辦法隔開,我就是飛了幾根線。</span></p>
<p class=MsoNormal style='margin-left:39.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1;
tab-stops:list 39.0pt'><![if !supportLists]><span lang=EN-US style='mso-fareast-font-family:
"Times New Roman"'><span style='mso-list:Ignore'>5.<span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span style='font-family:宋體;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>做完后如果通訊正常就<span
class=GramE>直接放塊器件</span>看能不能被檢測到,能檢測再試試能不能讀寫。如果不行就要用這個東西了:</span></p>
<p class=MsoNormal style='margin-left:21.0pt;mso-para-margin-left:2.0gd;
text-indent:84.0pt;mso-char-indent-count:8.0'><span lang=EN-US><!--[if gte vml 1]><v:shape
id="_x0000_i1027" type="#_x0000_t75" style='width:411pt;height:376.5pt'>
<v:imagedata src="自制Easy%2051Pro串行編程器.files/image005.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img width=548 height=502
src="自制Easy%2051Pro串行編程器.files/image006.jpg" v:shapes="_x0000_i1027"><![endif]></span></p>
<p class=MsoNormal><span style='font-family:宋體;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>這個東西原先是用來學</span><span lang=EN-US>CPLD</span><span
style='font-family:宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>時測試邏輯功能是否正確的。利用單片機的</span><span lang=EN-US>P0-P3</span><span
style='font-family:宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>口發出電平和接收電平并顯示,還可以調試子程序,可以給定子程序參數并調用,然后觀察子程序的返回值。上面有一堆按鈕,點按鈕后單片機相對應的引腳電平就會改變,這時你可以用表測量,看是否隨你按下的按鈕而變化,這樣就可以判斷線路是否接通。還有點<span
class=GramE>擊</span>“</span><span lang=EN-US>PROCESS X</span><span
style='font-family:宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>”時會調用你指定的子程序。看它的源程序中有這樣一些子程序:</span></p>
<p class=MsoNormal><span lang=EN-US>PROCESS_1:<span
style='mso-spacerun:yes'> </span>CLR<span
style='mso-spacerun:yes'> </span>P3.3<span class=GramE>;Vpp</span>=0v</span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'> </span><span
style='mso-spacerun:yes'>
</span>SETB<span style='mso-spacerun:yes'> </span>P3.4</span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>
</span>MOV<span style='mso-spacerun:yes'>
</span>TX1,#0;</span><span style='font-family:宋體;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>顯示</span><span lang=EN-US>0v</span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>
</span>RET</span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US>PROCESS_2:<span
style='mso-spacerun:yes'> </span>CLR<span
style='mso-spacerun:yes'> </span>P3.3<span class=GramE>;Vpp</span>=5V</span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>
</span>CLR<span style='mso-spacerun:yes'> </span>P3.4</span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>
</span>MOV<span style='mso-spacerun:yes'>
</span>TX1,#5;</span><span style='font-family:宋體;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>顯示</span><span lang=EN-US>5v</span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>
</span>RET</span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US>PROCESS_3:<span
style='mso-spacerun:yes'> </span>CLR<span
style='mso-spacerun:yes'> </span>P3.4<span class=GramE>;Vpp</span>=12v</span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>
</span>SETB<span style='mso-spacerun:yes'> </span>P3.3</span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>
</span>MOV<span style='mso-spacerun:yes'> </span><span
style='mso-spacerun:yes'> </span>TX1,#12;</span><span style='font-family:
宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>顯示</span><span
lang=EN-US>12v</span></p>
<p class=MsoNormal><span lang=EN-US><span
style='mso-spacerun:yes'>
</span>RET</span></p>
<p class=MsoNormal><span style='font-family:宋體;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>應該看懂了吧。就是說你按下“</span><span lang=EN-US>PROCESS
1</span><span style='font-family:宋體;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>”</span><span lang=EN-US> <span
class=SpellE>Vpp</span>=0V </span><span style='font-family:宋體;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>,按下“</span><span
lang=EN-US>PROCESS 2</span><span style='font-family:宋體;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>”</span><span
lang=EN-US> <span class=SpellE>Vpp</span>=5V</span><span style='font-family:
宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>,按下“</span><span
lang=EN-US>PROCESS 3</span><span style='font-family:宋體;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>”</span><span
lang=EN-US> <span class=SpellE>Vpp</span>=12V</span><span style='font-family:
宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>這時用表測量你的</span><span
lang=EN-US>12v/5v/0v</span><span style='font-family:宋體;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>切換電路是否正常。記得先要把</span><span
lang=EN-US>SUBPROC.BIN</span><span style='font-family:宋體;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>這個文件燒到你的控制器單片機。</span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='font-family:宋體;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>最后把你的編程器調試到最佳狀態。如果發現編程器開啟后放置一段時間就停止了響應或折騰一下就死機了,這時可以改進一下復位電路,加入看門狗之類的。如果寫入的數據經常出錯,檢查</span><span
lang=EN-US>12v</span><span style='font-family:宋體;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>電壓是否可以到位,</span><span lang=EN-US>VCC</span><span
style='font-family:宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>是否穩定。還有通訊線路不要太長,電纜盡可能的要好。</span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='font-family:宋體;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>如果還有問題可以在</span><span
lang=EN-US><a href="http://enkj.com/gbook/guestbook.asp?user=digiboy"><span
style='font-family:宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>我的留言板</span></a></span><span style='font-family:宋體;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>找到解答。</span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='font-family:宋體;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>最后還是那個話題,歡迎你擴充它的器件支持。擴充器件的具體細節請看《</span><span
lang=EN-US>Easy 51Pro</span><span style='font-family:宋體;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>的原理與擴充》。成功時記得與大家分享。</span><span
lang=EN-US><o:p></o:p></span></p>
</div>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -