单片机最小系统硬件电路图_三种方法对比:STC51单片机实现免冷启动

de9bed8d934fd1040d2d4b6e4179cf3b.png

具体实现方法实践可用的无外乎三种:

  • 1)使用CH340的DTR和RTS控制单片机断电再上电。点上位机下载按钮的时候,DTR和RTS引脚电平变化。

  • 2)再使用一个单片机,检测串口下载命令流。

  • 3)在程序中控制IAP_CONTR同时在上位机进行相应的设置.

第三种属于软件实现,这里就不再赘述了,下面主要看前两种的硬件实现。

利用CH340的DTR和RTS引脚 186bcc20f6e7e4130edaf913bcaadfe4.png

先用示波器看一下,点击STCISP的下载按钮时CH340G的RTS和DTR引脚的变化。

272b6fa0042a98b93025c6020533b419.png

意思大概是这样:

dc1611f71282946dd860e70b79b7e61b.png

直观思路呢,就是利用RTS或者DTR的一个。利用他们的下降沿触发一个信号,控制单片机断电,然后一定时间后再通电,这个不就是硬件的冷启动了嘛!不需要再按开关了。

那么这样的一个信号是什么信号呢?

单稳态!

3f070d4d372a7a6cb9bfec5e07ce3e2b.png

实现电路如下:

0ed1e58487b61908affba55b3f0d73fe.png

利用单片机 186bcc20f6e7e4130edaf913bcaadfe4.png

冷启动的原因直白来说,也只有单片机在重新上电的时候会去检测是否有合法数据流,有进入ISP下载模式,没有执行程序。

STC单片机有内部代码复位到下载程序,但是需要每一个软件中都要添加该程序段,并且会占用单片机内部资源,在写程序时也会产生不必要的麻烦,故而采用硬件自动重新上电(自动冷启动)的方式。– 也就是我上面介绍的第三种方法。

电路图如下:

524831a06e0546a56cf0529d858a316b.png

MCU程序参考如下:

←左右滑动,查看代码→

#include    //STC15F104头文件

#define uint unsigned int        //宏定义

#define uchar unsigned char

/****单片机I/O功能声明*******************/

sbit DYKZD=P3^4;         //电源控制端

sbit  XZXHD=P3^3;       //下载信号检测端

sbit INT1  = P3^3;        //设置中断管脚

uchar x;                        //下载信号低电平个数

/****初始化******************************/

void init()//初始化子函数

{

DYKZD=0;                    //电源控制端打开

XZXHD=1;

INT1= 1;

IT1= 1;                         //设置INT1的中断类型 (1:仅下降沿 0:上升沿和下降沿)

EX1= 1;                         //使能INT1中断

EA = 1;                         //打开总中断开关

}

/****延时函数****************************/

void delayms(uint xms)

{

    uint i,j;

    for(i=xms;i>0;i--)

    for(j=110;j>0;j--);

}

/****外部中断ITN1************************/

void exint1() interrupt 2

{

    x++;

}

/****主程序******************************/

void main() 

{

    init();

    while(1)

    {

        if(x>10)

        {

            DYKZD=1;

            delayms(100);

            DYKZD=0;

            delayms(60000);

            x=0;

        }

    }

}

结  语 186bcc20f6e7e4130edaf913bcaadfe4.png

三种方法介绍完了,好坏至少得对比下:

  • 纯硬件的实现,一个需要555,另一个需要一个8个的单片机,并且还得烧程序。相比之下555还便宜点,这种方案更好点。

  • 软件的就不说了,占内存,所以首选555的那种方案。

-END-

分享一些电子工程师的必备基础知识。

《电子基础实训教程》


资料上篇主要介绍了电子类的基本知识,涵盖了电子元件的识别与测量、三极管的识别与测量、其他电子器件的介绍及常用仪表仪器的介绍;下篇主要是专业实践技能训练,包括了焊接技术及实践、直流稳压电源的设计、印刷电路板及其设计与制作和单片机最小系统板设计与制作。

36a543ac266d731fbcd97995b6b490eb.png

84de23295780d6b512e1cc69fc2f5e47.png

134b8ba733692886914799ba49521037.png

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本文介绍的是带电压电流表的多功能STC冷启动自动下载器,功能如下: 由于常用的STC自动下载器没有电流检测功能,没法判断实验的工作电流大小,怕电流过大,不方便,所以自己动手DIY个带电压电流表的下载器。主要功能有自动下载、各接口的电压、输出的工作电流、及4路电压表。4路电压表用于实验特定点的电压监测,充分利用单片机的资源,不浪费。对于自动下载器的原理网上有,就是监测串口是否连续输出0X7F的值,有就说明要断电重启下载数据,本下载器支持1200-115200b的常用波特率,程序是采用每0.1S改变一下串口的波特率(由于采用先判断收到不是7F值就改变波特率的方法会出现有时不响应。所以改为这种方式。),然后检查是否有7F的值,如有就停止改变波特率,如连接接收到7F值,就关电0.4S再开电。 STC自动下载器制作器件清单: 这个制作电压检测最大为25V,电流最大为2A,它的受控输出接有1A的保险的,所以采控电流不能过大,它的输出接口有专门USB供电的直出口,可以利用这个接口外接USB座,可以把这东东变身成USB电压电流表。 工作界面如下,分2页显示,下图为第一页,显示有输出5V的电压值及输出的3.3V的值、输出电流值、外接输入的值、单片机的供电,如当USB电压电流表时,跳线短接USB供电,CPU的电压为USB输出电压。 PCB截图: 说明:由于上图PCB制作是没找到表贴LED的封装,用二极管的封装,所以尺寸大了,而且有一线布不过去,用跳线跳过的,如下图右上角接口那条红线,它是连接两个焊盘。电路设计是采用表贴47U电容,实际使用中出现向外供电时,单片机出现重启的情况,加表贴电容的方法也解决不了问题,后来只加个普通的100U的电解就解决了,这个有可能是表贴电容性能有问题,所以电路上多了2个电解电容。 以下是装上元件的图,焊工一般,能用。 接口的图,由于内部单片机及输出有多个输入源可选择,所以有跳线,分别选择USB供电,外接5V供电,外接12V转5V供电,由于过小,三端稳压散热位小,所以如用12V转5V稳压供电时,电流不能过大,会出现过热的情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值