让老普中开发板焕发STC8的青春光彩

让老普中开发板焕发STC8的青春光彩

手上有一款较老的51开发板,普中CH6800-ES,5、6年前刚刚对单片机感兴趣时候买的,买了之后只学了几个流水灯、蜂鸣器就跑到Arduino方向去了。

这些天稍稍研究了一点儿51单片机与Phyphox蓝牙互通的问题,又捡起来51单片机,仍然是STC89C52/89C51/89C52RC/89C51RC这几种最最最初入门级的芯片,发现这种开发板自带的自动复位烧录电路,对其它几种芯片都可正常烧录,唯独不能正常烧录89C52RC的芯片(尽管上面的附图就是89C52RC的芯片)。后来在网上大致扫了几眼,确实有很多人遇到89C52RC不能烧录的情况,主要原因是电流太小。

使用STC-ISP并不影响89C52RC正常的烧录,只是需要我们自己把USB2TTL的TXD、RXD与89C52RC的RXD、TXD连接并冷启动一下即可。一个窍门是最低波特率和最高波特率需要都设置成1200,或都设置成2400,偶尔4800也可以,但失败次数居多。

在查阅资料琢磨这些芯片的烧录的时候,——自然的原因,我们知道很多时候这种51单片机最大的应用场合,应该是大、中学生学习单片机的时候使用;我也曾在物理实验仪器上见到STC单片机,贴片的——也有人在研究如何升级这种古老的开发板,就是自己做引脚转换板,让STC新产品替换掉原来的89系列芯片,目前见到的,有STC8、STC12、STC15系列的转换都有人在做。事实上STC的这些单片机在功能上也已经很好用了:多个时钟中断、多个串口、多个PWM输出、12位ADC、IIC、SPI等等。

于是买了一个STC8A8K64S4A12的转换板。排针需要自己焊。

焊好排针之后,尺寸和经典Arduino Nano对比,仍显得大一点儿;但比ESP32要小一点儿。还有10根针没有焊,手工焊太难了。反正也用不上,就不焊了。

然后到STC-ISP里面安装STC8头文件。

到Keil里写一个最简单的LED闪烁。

/*   闪烁灯实验   */ 
#include "stc8.h"
//自动适应主时钟延时毫秒数
#define MAIN_Fosc        24000000UL    //定义主时钟24MHZ  
typedef unsigned int uint;

void delayms(uint ms)
{  
    uint i;  
    do{  
        i=MAIN_Fosc/9600;  
        while(--i);     //96T per loop  
    }while(--ms);       //--ms
}

main()
{
    while(1)
    {
        P20 = 0;
        delayms(1000);
        P20 = 1;
        delayms(1000);
    }
}

编译,直接用USB2TTL烧录,失败,再烧录,再失败。按照道理,如果自行接线烧录STC89系列能够成功,那么STC8系列也应该能够成功,但总是不成功。不知何故。后来想为什么不用老普中板子试试呢?取下普中开发板上原来自带的STC89C52,换上STC8A8K64S4K12,使用STC-ISP烧录工具。发现虽然不能自动烧录,但是手动进行冷启动,竟然正常烧录成功了!(普中开发板当年也是打的自动烧录这张牌的,这个自动烧录对STC89C52仍然正常可用)

STC8A8K64S4K12芯片与STC89系列相比,要强太多太多。而且,STC8内部自带24MHz振荡,不用再使用外部晶振,烧录的时候,还可以指定运行时频率。我把针对24MHz频率写的delayms烧录在11.0592MHz下,LED闪烁很慢,而重新指定频率为24MHz,LED闪烁间隔时间正常。

换上了STC8单片机后的普中开发板。

只是一时兴趣,实际意义似乎也不是太大;对高中物理里面的实验,其实STC89系列就挺够用的了,琢磨STC8,只是一时贪玩儿。

(0)

相关推荐