📄 自制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 + -