数码之家

 找回密码
 立即注册
搜索
查看: 2668|回复: 34

[C51] 用STC8G1K08实现通电延时5秒接通1秒然后停止

[复制链接]
发表于 2024-12-21 21:00:44 | 显示全部楼层 |阅读模式
本帖最后由 aming_ou 于 2024-12-22 19:51 编辑


为了实现来电开机功能,本来已经用并联电容到开关实现来电即开机,但总觉得不完美,网购的一片小板,通电瞬间有电压输出,未能达到要求,但看到小板上的芯片型号,网上查了下,原来这就是最简单的8脚单片机STC8G1K08,,几行代码就实现了。烧写也很简单,不过也走了一些弯路(主要是USB转TTL硬件,开始练习时烧写不成功),后来换了个写闪存的340,只要接4个线直接与芯片2 4 5 6 脚连接,就可以写入。存放记录一下,方便以后查看。


上图中的USB直接写入,由于是win7系统,无法识别到USB设备
下图左一,无法写入,中间的的搭配上图的小板可以写入,右边的只要接4根线就能写入。
注意事项:芯片先不要接4脚(地),插入编程器识别到端口后,点击下载等待时,再接4脚,马上就能识别并写入数据。如果全部线都接好,再点击“下载”,是不能成功的。


如何实现九阳豆浆机JYZD-15B预约功能
https://www.mydigit.cn/forum.php ... amp;fromuid=1106505
(出处: 数码之家)




#include "STC8G.H"

#define PD 0x02 //掉电模式

//延时函数(单位ms)
void DelayMs(int t)                //@24MHz
{
        unsigned char j, k;       
        do
        {
                j =9;
                do
                {
                        k = 77;
                        while(k--);
                }while(j--);               
        }while(t--);
}

void main()
{
        unsigned char m;
        P54 = 1;
        P55 = 0;
        P32 = 1;
        P33 = 0;
        // 初始化P55 P54 P32 P33口为推挽输出 ,P30 P31口为准双向输出
        P5M0 |= 0x30; P5M1 &= ~0x30;
        P3M0 = (P3M0 & ~0x03) | 0x0c; P3M1 &= ~0x0f;


        DelayMs(15000);

        P32=!P32; //通电亮延时后熄灭1秒常亮
        P33=!P33; //通电灭延时后常亮
        P54=!P54; //通电亮延时后熄灭
        P55=!P55; //通电灭延时后点亮1秒熄灭(用这个)
        DelayMs(4000);
        P55=!P55;
        P32=!P32;
        m = 5;  
        do
        {       
                DelayMs(1500);
                P54=!P54; //闪烁5次表示工作完成
        }while (m--);
        PCON = PD; //掉电模式

}


本帖子中包含更多资源

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

x

打赏

参与人数 3家元 +161 收起 理由
rgyiii + 56 正是我需要的通电开机方便
vip2128 + 15
家睦 + 90

查看全部打赏

发表于 2024-12-21 21:37:55 | 显示全部楼层
太高级了,完全看不懂...


二○二四年十二月二十一日
回复 支持 反对

使用道具 举报

发表于 2024-12-21 22:18:55 | 显示全部楼层
厉害,越来越高级了
回复 支持 反对

使用道具 举报

发表于 2024-12-22 06:44:22 | 显示全部楼层

太高级了,完全看不懂... 一头雾水
回复 支持 反对

使用道具 举报

发表于 2024-12-22 09:10:48 来自手机浏览器 | 显示全部楼层
这款芯片实际价格是多少啊?某宝大量购买好像超过6毛了,感觉不是很划算
回复 支持 反对

使用道具 举报

发表于 2024-12-22 09:59:55 | 显示全部楼层
完全看不懂
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-22 10:18:17 来自手机浏览器 | 显示全部楼层
flyrack 发表于 2024-12-22 09:10
这款芯片实际价格是多少啊?某宝大量购买好像超过6毛了,感觉不是很划算

官方指导价就是6-7毛钱一只,量大可以跟厂家拿货吧,个人玩玩,例如我这个需求,通电(来电)几秒钟就接通一秒,之后断开,对比了RC延时电路,RC+三极管延时电路,NE555延时电路,和这个芯片,芯片比较合适。感觉TB上的电脑来电开机卡也是用这个芯片的。
回复 支持 1 反对 0

使用道具 举报

发表于 2024-12-22 11:49:45 | 显示全部楼层
这代码,不像标准 C 代码。
回复 支持 反对

使用道具 举报

发表于 2024-12-22 13:03:57 | 显示全部楼层
本帖最后由 纯今 于 2024-12-22 13:06 编辑

如图:楼主这是用面包板临时组合一个编程器吗?而且还带烧录座子




那块现成的深蓝色小板,是什么单片机最小开发板?

希望给大家介绍一下


至于你说自己烧写STC单片机遇到坑,我的经验是你可以通过去STC官网签到

用积分可以换到一个官方烧写器,也可以换单片机
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-22 13:47:30 | 显示全部楼层
纯今 发表于 2024-12-22 13:03
如图:楼主这是用面包板临时组合一个编程器吗?而且还带烧录座子

深蓝色小班是STC8G1K08A最小开发板,8块钱左右,本来TYPEC支持下载的,但我电脑是WIN7,无法识别出设备,所以最终只用于编程后的供电测试,下载时还是用340的 TTL编程器,烧录座是额外搭配的。实际实验时,推荐买窄体烧录座+转换小版+340编程器,没有必要买开发板。


本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2024-12-22 15:25:28 | 显示全部楼层
完全看不懂..
回复 支持 反对

使用道具 举报

发表于 2024-12-22 16:28:35 | 显示全部楼层
本帖最后由 纯今 于 2024-12-22 18:05 编辑
aming_ou 发表于 2024-12-22 13:47
深蓝色小班是STC8G1K08A最小开发板,8块钱左右,本来TYPEC支持下载的,但我电脑是WIN7,无法识别出设备, ...

谢详细回复,我终于明白你图示的表达了

你这非官方烧芯片固件,其实,就是利用340金色板编程器的ICP

不论是转接小板,还是烧录座,目的就是通过340编程器去烧固件

而你没给出来电延迟5秒通电1秒的小板照片,甚至原理图分析

是通过继电器完成通断,还是三极管,还是场效应管?

楼主你没发现回帖大量说:看不懂

我猜深蓝色最小开发板就是,你描述的网购的一片小板,通电瞬间有电压输出,未能达到要求

只是我猜,至于你最终如何应用,你没说,大家当然看不懂故事情节了

更详细点,我感觉你这本来具有精华帖潜力

附:我通过看你豆浆机改造的帖子,我判断

微动开关控制的是另一个单片机的引脚信号(低电流、低电压逻辑信号)

这种情况下,单片机的 GPIO 引脚可以直接模拟微动开关的动作,而不需要额外的驱动电路。

也因此,你采用STC这种51单片机,是体积最小,五谷豆浆也可以开机选择的最佳方案

看了一下源代码,你设置延时15秒钟,如果人在机器旁,有充足时间选择按哪一个按钮了

而且,不需要任何外围模拟电路

回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-22 17:32:28 | 显示全部楼层
纯今 发表于 2024-12-22 16:28
谢详细回复,我终于明白你图示的表达了

你这非官方烧芯片固件,其实,就是利用340金色板编程器的ICP

多谢指导,由于本帖主要是给自己记录 《如何实现九阳豆浆机JYZD-15B预约功能》https://www.mydigit.cn/forum.php ... amp;fromuid=1106505 的后续更新,所以省略了很多铺垫的内容。
其实就是用最小的单片机驱动光耦,实现模拟短按开关的目的。

不怎么会画电路图,大概如下:



洞洞板成,1片STC8G1K08单片机芯片,1只PC817光耦,1只22uF电容


光耦3 4脚并联到按键开关的两端,芯片供电取电路板上7805稳压后的5V电源。



精简后的代码,实际只用到第3引脚的IO,如果1脚接1只LED,可以看到通电时点亮,等待几秒后熄灭。
  1. #include "STC8G.H"

  2. #define PD 0x02 //掉电模式

  3. //延时函数(单位ms), 官方工具STC-ISP直接有样例代码,照抄就可以了
  4. void DelayMs(int t)                //@24MHz
  5. {
  6.         unsigned char j, k;       
  7.         do
  8.         {
  9.                 j =9;
  10.                 do
  11.                 {
  12.                         k = 77;
  13.                         while(k--);
  14.                 }while(j--);               
  15.         }while(t--);
  16. }

  17. void main()
  18. {
  19.         unsigned char m;
  20.         P54 = 1;
  21.         P55 = 0;
  22.         // 初始化P55 P54口为推挽输出,下面这行在官方工具STC-ISP端口设置自动生成的
  23.         P5M0 |= 0x30; P5M1 &= ~0x30;


  24.         DelayMs(15000); // 这个数字,大概5秒,实测的结果

  25.         P54=!P54; //通电亮延时后熄灭
  26.         P55=!P55; //通电灭延时后点亮1秒熄灭
  27.         DelayMs(4000); // 这个数字,大概1.5秒,实测的结果
  28.         P55=!P55;
  29.         PCON = PD; //掉电模式,停止工作

  30. }
复制代码



本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2024-12-22 17:32:41 | 显示全部楼层
单次执行程序,就不干了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-22 17:41:22 | 显示全部楼层
纯今 发表于 2024-12-22 16:28
谢详细回复,我终于明白你图示的表达了

你这非官方烧芯片固件,其实,就是利用340金色板编程器的ICP

“附:我通过看你豆浆机改造的帖子,我判断

微动开关控制的是另一个单片机的引脚信号(低电流、低电压逻辑信号)

这种情况下,单片机的 GPIO 引脚可以直接模拟微动开关的动作,而不需要额外的驱动电路。

也因此,你采用STC这种51单片机,是体积最小,五谷豆浆也可以开机选择的最佳方案

而且,不需要任何外围模拟电路”

如你所推测,也考虑过直接用STC8G1K08的第3脚,直接接到微动开关的+极,STC8G1K08上电时,默认输出高电平,等待5秒后就输出低电平1秒,再输出高电平,之后进入掉电模式,模拟微动开关的动作,此方案我没有测试。而是通过光耦隔离的方式实现了,多一只光耦,可以不用考虑是否共地的问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-22 17:44:08 | 显示全部楼层
soma 发表于 2024-12-22 17:32
单次执行程序,就不干了。

是的,就是上电(来电)时仅延时执行一次,然后就进入掉电模式。我想网上的电脑来电开机卡,也是这个芯片实现的。
回复 支持 反对

使用道具 举报

发表于 2024-12-22 19:44:33 | 显示全部楼层
aming_ou 发表于 2024-12-22 17:41
“附:我通过看你豆浆机改造的帖子,我判断

微动开关控制的是另一个单片机的引脚信号(低电流、低电压逻 ...




看到你的具体用途发现,完全可以共地,微动开关的作用就是为豆浆机的单片机的IO提供一个低电平
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-22 20:12:16 来自手机浏览器 | 显示全部楼层
纯今 发表于 2024-12-22 19:44
看到你的具体用途发现,完全可以共地,微动开关的作用就是为豆浆机的单片机的IO提供一个低电平
...

我的电路图图右侧微动开关的上端也许是连接到豆浆机单片机的GPIO口,但具体触发电平是多少,不是很清楚,我标注5V+,仅是示意。不敢贸然从STC8G1K08的3脚直接输出一个高电平(接近该单片机的输入电压5V)接到豆浆机的微动开关上端,避免烧坏豆浆机的控制芯片。原来我是并接电容,利用上电时电容充电拉低微动开关,没有额外引入外部电源到微动开关。用光耦就可以隔离,类似继电器效果(小电流,光耦够用了)
回复 支持 反对

使用道具 举报

发表于 2024-12-22 22:58:02 | 显示全部楼层
本帖最后由 纯今 于 2024-12-22 22:59 编辑
aming_ou 发表于 2024-12-22 20:12
我的电路图图右侧微动开关的上端也许是连接到豆浆机单片机的GPIO口,但具体触发电平是多少,不是很清楚, ...

当然,谨慎没什么不好!!!到此,大家也就清楚你到底做了什么啦?!
回复 支持 反对

使用道具 举报

发表于 2024-12-23 09:42:26 | 显示全部楼层
aming_ou 发表于 2024-12-22 17:41
“附:我通过看你豆浆机改造的帖子,我判断

微动开关控制的是另一个单片机的引脚信号(低电流、低电压逻 ...

6脚的FMD2毛
回复 支持 反对

使用道具 举报

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

本版积分规则

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

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-2 11:36 , Processed in 0.124800 second(s), 11 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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