这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » STC51单片机实现免冷启动的技术原理

共1条 1/1 1 跳转至

STC51单片机实现免冷启动的技术原理

工程师
2020-06-27 18:25:54     打赏

STC 51单片机实现免冷启动的技术原理


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

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

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

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


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


1、利用CH340DTRRTS引脚

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

image.png


意思大概是这样:

image.png

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

那么这样的一个信号是什么信号呢?
单稳态!

image.png

实现电路如下:

image.png


2、利用单片机

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


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


电路图:

image.png

MCU程序参考如下:

#include <STC15F2K60S2.H>       //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;

        }

    }

}


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

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

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





关键词: STC     单片机     8051     ISP     冷启动    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]