数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 1215|回复: 20

[C51] 用SP3232芯片做一个STC单片机烧录线[多图、分享源码]

[复制链接]
发表于 2025-6-23 15:47:44 | 显示全部楼层 |阅读模式
本帖最后由 慕名而来 于 2025-6-23 15:55 编辑

玩了太久的二手价签墨水屏,烦了,十多天不焊东西手痒、心痒、浑身不舒服,忽然想起来手里还有一个前年打好的PCB小板子没有焊件,于是有了这个制作。玩STC单片机十好几年了,从开始上手到现在也做了五六个下载线了,本坛的老站、新站也都有发帖显摆过,我真的不缺这东西,仅厂家免费送的就有:1.USB-Link 1D。2.一箭双雕之USB转双串口。3.USB转双串口@AI8H2KUV-1.1。这些多功能下载线、实验板因为有厂家固件加成工作稳定使用方便。除了这些“标准件”还有已经退役的那些网购的HC340G-TTL小板、自制的MAX232烧录线。

综上,本次DIY对于我而言就是一个打发无聊的制作,记录于此仅供消遣。而有对于这个制作感兴趣的新手朋友对这个烧录线有疑问的话可以跟帖讨论,至于用电脑原生COM口给单片机烧录代码的稳定性就毋庸置疑了,只是现在很多电脑早已经没有了这个9针接口,而有些电脑虽然没有外置接口但某些主板却仍旧保留了插针,喜欢玩的就找找吧,这个烧录线做成后我测试了手里的几种STC单片机,除AI8051U需要降低一点最高波特率以外其他都是一蹴而就成功完成。

原理很简单,一片8脚的STC15W204S单片机做监控芯片,它的INT0端口实时监控电脑COM口的DTR线信号,一旦该信号出现高电平跳变就输出控制信号操控继电器断开负载电源,并且延时一段时间后重新给负载上电,而后再等待一段时间后重新恢复监控功能,在监控芯片的等待过程中电脑完成了对目标单片机的程序下载,电路中配置了一个自锁按键开关、一个轻触按键、一个拨动开关,其中:自锁开关做5V、3.3V供电输出的转换,也正是由于这个开关的限制使得本系统输出电流不大于300mA,在此也提醒一下:如果仿制请在输出电压的正极回路添加一个500ma的自恢复保险元件,既可以保护开关更可以避免负载因意外反接引起的电流超载。轻触开关可以直接控制负载电源的通断。拨动开关常态位时系统工作在烧录工作状态,拨动开关换位后系统工作在串口通讯工作状态,此状态下每次打开串口时系统不做断电操作,其他详见下图:



PCB图:


制成品图:




程序的控制原理在代码中有详细注释


  1. //代码编写于2025/06/15
  2. //下载监控用单片机:STC15W204S
  3. //程序烧录时设定时钟频率11.0592MHz
  4. //控制方式为:COM1_DTR信号触发监控芯片外部中断INT0(P3.2)控制负载断电/延时通电
  5. //COM1_DTR引脚信号经二极管整流及10K+2K电阻分压得到0-2.4V的信号电平
  6. //对目标板进行二次烧录的间隔时间应大于3秒钟等待监控芯片阻塞结束
  7. //1.自锁开关可以切换5V/3V供电
  8. //2.轻触开关可以手动断电
  9. //3.拨动开关可以切换串口烧录/串口通讯,解决打开串口时自动断电的问题
  10. //----------------------------------------------------------------------------
  11. #include "STC15.h"
  12. #include <intrins.h>
  13. //========================================
  14. sbit power_reset = P5 ^ 4; //继电器驱动端
  15. sbit STC_isp = P3 ^ 3; //烧录/串口通讯控制端,浮空=烧录、下拉=串口通讯
  16. bit flag;
  17. unsigned char n;
  18. //========================================
  19. void Delay_1ms(unsigned int t)//11.0592MHz@t毫秒
  20. {
  21.   unsigned char i, j;

  22.   while(t--)
  23.   {
  24.     _nop_();
  25.     _nop_();
  26.     i = 12;
  27.     j = 168;

  28.     do
  29.     {
  30.       while(--j);
  31.     } while(--i);
  32.   }
  33. }

  34. //====外部中断INT0响应COM口DTR信号中断函数========
  35. void INT0_ser()interrupt 0
  36. {
  37.   if(INT0 == 1)
  38.   {
  39.     flag = 1;
  40.   }
  41.   else
  42.   {
  43.     flag = 0;
  44.   }
  45. }
  46. //====主函数=======================================
  47. void main()
  48. {
  49.   P5M0 = 0x10;         //P5.4推挽输出
  50.   P5M1 = 0x00;

  51.   INT0 = 1;                                //P3.2口置1
  52.   IT0 = 0;                                //配置INT0响应上升沿&下降沿中断
  53.   EX0 = 1;                                //使能INT0中断
  54.   EA = 1;

  55.   power_reset = 0; //继电器断开状态、常闭接点为目标板供电
  56.   flag = 0;

  57.   while(1)
  58.   {

  59.     if(flag && STC_isp)
  60.     {
  61.       EX0 = 0;                        //关闭外部中断
  62.       flag = 0;
  63.       power_reset = 1;                //目标板单片机断电
  64.       Delay_1ms(1500);
  65.       power_reset = 0;                //目标板单片机得电复位开始烧录
  66.       Delay_1ms(3000);                //监控芯片阻塞3秒钟等待目标板烧录完成、规避串口断开时COM1_DTR的下降沿二次触发中断
  67.       EX0 = 1;                        //重开外部中断响应下次操持
  68.     }

  69.   }
  70. }

复制代码



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 2家元 +90 收起 理由
家睦 + 60
兔包公 + 30 熱心會員

查看全部打赏

发表于 2025-6-23 16:31:47 | 显示全部楼层
没看懂有啥用,stc现在不都是usb直连吗? 不需要什么烧录线,ttl的
回复 支持 反对

使用道具 举报

发表于 2025-6-23 16:55:17 | 显示全部楼层
官网有烧录器的资料,那个还是双串口的。话说加那么大个继电器,为啥不用MOS管?
回复 支持 反对

使用道具 举报

发表于 2025-6-23 17:29:18 | 显示全部楼层

有点隆重,用贴片mos,很小。
回复 支持 反对

使用道具 举报

发表于 2025-6-23 18:16:47 | 显示全部楼层
现在232口不好找了,就工控才带
回复 支持 反对

使用道具 举报

发表于 2025-6-23 18:20:27 来自手机浏览器 | 显示全部楼层
才疏学浅了,看回复,原来是说232串口烧录,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-23 20:03:21 | 显示全部楼层
chanwah2009 发表于 2025-6-23 16:31
没看懂有啥用,stc现在不都是usb直连吗? 不需要什么烧录线,ttl的 ...

对的,就是一个古老的232串口转ttl的东西只是玩一玩而已,STC的USB确实能烧录程序但每次烧录时都需要手动控制两个按键,而用烧录线可以在keil编译成功后直接就下载到芯片里了,也就是用keil中的编译按键一键烧录。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-23 20:06:42 | 显示全部楼层
本帖最后由 慕名而来 于 2025-6-23 20:11 编辑
guer 发表于 2025-6-23 16:55
官网有烧录器的资料,那个还是双串口的。话说加那么大个继电器,为啥不用MOS管? ...

用继电器一是可以降低输出电压的损耗二是可以听到电源通断的声音,或许只是个人偏好吧,至于你说的STC的双串口芯片或双串口实现我有现成的东西,弄这个又或许是一种怀旧心里吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-23 20:14:55 | 显示全部楼层
devcang 发表于 2025-6-23 17:29
有点隆重,用贴片mos,很小。

这个制作先是有了一个盒子和一片SP3232,而后是当时很想画板子又没有目标就画了这个板子。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-23 20:22:28 | 显示全部楼层
兔包公 发表于 2025-6-23 18:20
才疏学浅了,看回复,原来是说232串口烧录,

STC单片机用232串口烧录是十多年前必要的方法,后来随着USB转ttl芯片的出现电脑的COM口就渐渐的被遗忘了,渐渐的家用电脑也没了这个硬件配置了,但用过的都知道,COM口做串口通讯、串口烧录的稳定性是没得说的。
回复 支持 反对

使用道具 举报

发表于 2025-6-24 08:29:51 | 显示全部楼层
ttl稳定性确实好,,,
以前一机顶盒坏了,
硬是用ttl线 花了十几个小时  把几GB的固件刷进去了
回复 支持 反对

使用道具 举报

发表于 2025-6-24 10:03:02 | 显示全部楼层
慕名而来 发表于 2025-6-23 20:22
STC单片机用232串口烧录是十多年前必要的方法,后来随着USB转ttl芯片的出现电脑的COM口就渐渐的被遗忘了 ...

非常赞同。我也是自制的串口小板用了好多年。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

发表于 2025-6-24 10:29:11 | 显示全部楼层
看大佬的介绍,是用电脑原生串口来给STC下载吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-24 16:05:18 | 显示全部楼层
maidoo 发表于 2025-6-24 10:03
非常赞同。我也是自制的串口小板用了好多年。

用这个串口的应该多是上手单片机较早的人,现在应该有很多非专业的新手不知道这东西了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-24 16:19:27 | 显示全部楼层
lmn2005 发表于 2025-6-24 10:29
看大佬的介绍,是用电脑原生串口来给STC下载吗?

大佬不敢当、这个就是电脑主板上的串口端口,它通过SP3232转换电平后与单片机通讯、向单片机下载程序的,那个作为串口打开指示的电脑端的DTR((Data Terminal Ready)的全称为 ‌“数据终端准备好”)信号在未打开串口时输出-12V左右电压、串口打开后跳变成+12V左右,因此这个端口的各种信号电平和CMOS或TTL是不同的,所以需通过各种232类转换芯片来转换才能和单片机通讯。
回复 支持 反对

使用道具 举报

发表于 2025-6-24 16:34:04 | 显示全部楼层
慕名而来 发表于 2025-6-24 16:19
大佬不敢当、这个就是电脑主板上的串口端口,它通过SP3232转换电平后与单片机通讯、向单片机下载程序的, ...

哦,这种串口我没有研究过,所以不知道是什么个道理。
你这么一说,我理解了,谢谢!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-24 18:04:05 | 显示全部楼层
lmn2005 发表于 2025-6-24 16:34
哦,这种串口我没有研究过,所以不知道是什么个道理。
你这么一说,我理解了,谢谢! ...

随着电脑USB口的出现以其高稳定性、高速率、灵活的数据包结构、及多媒体支持能力完全碾压了COM口,貌似目前也就是单片机这类设备还适合通过这种简单的接口与电脑通讯,但因为有了USB-TTL这些芯片使得这东西的最终消失也是不可逆转的了,至少新型家用电脑已经没有这货了。
回复 支持 反对

使用道具 举报

发表于 2025-6-24 18:30:21 | 显示全部楼层
慕名而来 发表于 2025-6-24 18:04
随着电脑USB口的出现以其高稳定性、高速率、灵活的数据包结构、及多媒体支持能力完全碾压了COM口,貌似目 ...

是的,以前曾经用过,但具体没有作研究。现在单片机下载方式比以前的简便得多了,例如USB下载方法
回复 支持 反对

使用道具 举报

发表于 2025-6-27 11:52:09 | 显示全部楼层
慕名而来 发表于 2025-6-23 20:03
对的,就是一个古老的232串口转ttl的东西只是玩一玩而已,STC的USB确实能烧录程序但每次烧录时都需要手动 ...

也可以用USB不停电下载,来解决这个老是要按键的问题。
另外当KEIL中目标发生变化的时,也可以实现不停电下载,
这些对工程师来说都是很方便的,调试方案!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-27 14:22:49 | 显示全部楼层
银河小铁骑 发表于 2025-6-27 11:52
也可以用USB不停电下载,来解决这个老是要按键的问题。
另外当KEIL中目标发生变化的时,也可以实现不停电 ...

多谢指点,回头试试USB不停电下载。
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-8-13 03:28 , Processed in 0.218401 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表