找回密码
 立即注册
查看: 770|回复: 5

STC8G项目已经完成,诚邀梁工和各位大神指点一下

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-07-19 09:04:12

12

主题

33

回帖

202

积分

中级会员

积分
202
发表于 2023-11-30 10:49:36 | 显示全部楼层 |阅读模式
看论坛里最近都在讨论电源问题,这个项目里用的是长晶的CJ78M05,测试了两块板子反复开关机没有发现电压过冲烧芯片的问题,想请教一下,是所有的电源IC上电都有过冲吗,还是只有不好的电源呢?我也做了保护,5.6v 0.5w的稳压二极管,但是因为板子空间有限所以没加自复位保险丝。
最后烦请梁工和各位大神对原理图给一些指点,感谢感谢

119.pdf

270.61 KB, 下载次数: 99

回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-07-19 09:04:12

12

主题

33

回帖

202

积分

中级会员

积分
202
发表于 2023-11-30 11:25:12 | 显示全部楼层
代码如下
#include "reg51.h"
#include "intrins.h"
sfr     CCON    =   0xd8;
sbit    CF      =   CCON^7;
sbit    CR      =   CCON^6;
sbit    CCF2    =   CCON^2;
sbit    CCF1    =   CCON^1;
sbit    CCF0    =   CCON^0;
sfr     CMOD    =   0xd9;
sfr     CL      =   0xe9;
sfr     CH      =   0xf9;
sfr     CCAPM0  =   0xda;
sfr     CCAP0L  =   0xea;
sfr     CCAP0H  =   0xfa;
sfr     PCA_PWM0 =  0xf2;
sfr     CCAPM1  =   0xdb;
sfr     CCAP1L  =   0xeb;
sfr     CCAP1H  =   0xfb;
sfr     PCA_PWM1 =  0xf3;
sfr     CCAPM2  =   0xdc;
sfr     CCAP2L  =   0xec;
sfr     CCAP2H  =   0xfc;
sfr     PCA_PWM2 =  0xf4;
sfr     WDT_CONTR   =   0xc1;
sfr     AUXR        =   0x8e;
sfr     ADC_CONTR   =   0xbc;
sfr     ADC_RES     =   0xbd;
sfr     ADC_RESL    =   0xbe;
sfr     ADCCFG      =   0xde;
sfr     P5          =   0xC8;
sfr     P_SW2       =   0xba;
sfr     P_SW1       =   0xA2;
#define ADCTIM  (*(unsigned char volatile xdata *)0xfea8)



sfr     P3M1    =   0xb1;
sfr     P3M0    =   0xb2;

sfr     P5M1    =   0xc9;
sfr     P5M0    =   0xca;

sbit    P33    =   P3^3;
sbit    P32    =   P3^2;
sbit    P31    =   P3^1;
sbit    P30    =   P3^0;
sbit    P54    =   P5^4;
sbit    P55    =   P5^5;

unsigned char dwq=0;

void TM0_Isr() interrupt 1
{
       
      
               


}

void Delay500us()                //@20.000MHz
{
        unsigned char i, j;

        i = 10;
        j = 183;
        do
        {
                while (--j);
        } while (--i);
}



void main()
{
    P33=0;
          P32=0;
          P31=1;
          P30=1;
    P3M0 = 0x0C;
          P3M1 = 0x00;
    P33=0;
          P32=0;
          P31=1;
          P30=1;
    P5M0 = 0x00;
          P5M1 = 0xFF;
   
    AUXR |= 0x80;                                                  //定时器时钟1T模式
    TMOD = 0x00;                                //模式0
    TL0 = 0xF0;                                                          //设置定时初始值
          TH0 = 0xD8;                                                          //设置定时初始值//20mhz
    TR0 = 1;                                    //启动定时器
    ET0 = 1;                                    //使能定时器中断
    EA = 1;
    //ADC
          P_SW2 |= 0x80;
    ADCTIM = 0x3f;                              //设置ADC内部时序
    P_SW2 &= 0x7f;
    ADCCFG = 0x0f;                              //设置ADC时钟为系统时钟/2/16
    ADC_CONTR = 0x85;                           //使能ADC模块
    //PWM
                CCON = 0x00;
    CMOD = 0x0A;                                //PCA时钟为系统时钟
    CL = 0x00;
    CH = 0x00;
    CCAPM0 = 0x42;                              //PCA模块2为PWM工作模式
    PCA_PWM0 = 0x00;                            //PCA模块2输出8位PWM
    CCAP0L = 0xff;                               //PWM占空比为0%[(100H-20H)/100H]
    CCAP0H = 0xff;
    CR = 1 ;

    WDT_CONTR = 0x24;                           //使能看门狗,溢出时间约为39-65

    while (1){
                   WDT_CONTR = 0x34;                       //清看门狗,否则系统复位
                         CR=1;        
                         ADC_CONTR |= 0x40;                       //启动AD转换
       _nop_();
       _nop_();
                         _nop_();
       _nop_();
                         while (!(ADC_CONTR & 0x20));             //查询ADC完成标志
       ADC_CONTR &= ~0x20;                     //清完成标志
                           dwq=(ADC_RES*10)/12;
                         if(255- dwq<CCAP0H &&255- dwq<251){
                         if(CCAP0H>251){
                         CCAP0H=251;
                         }
                          CCAP0H -=1 ;                                  
                         }
                        if(255- dwq>CCAP0H){
                  
                        CCAP0H +=1 ;

                }
                        Delay500us();
                        if(CCAP0H>=251){
                        P33=0;
                        CR=1;
                        CCAP0H=255;
                        }        else{
                    P33=1;
                                CR=1;
        }
             
}
}
先把IO口置位低电平,再改为推挽输出
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:108
  • 最近打卡:2025-06-30 11:50:20

75

主题

6167

回帖

1万

积分

超级版主

积分
12956
发表于 2023-11-30 11:52:59 | 显示全部楼层
电路设计已经很好,控制板将会很稳定的。

唯一建议,就是14V可以并联一个18V的TVS管(下图右箭头指示)。
EG1192我没用过,请详细看其规格书C6(100nF)是否合适(下图左箭头指示)。
截图202311301152523978.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-07-19 09:04:12

12

主题

33

回帖

202

积分

中级会员

积分
202
发表于 2023-11-30 12:02:37 | 显示全部楼层
梁*** 发表于 2023-11-30 11:52
电路设计已经很好,控制板将会很稳定的。

唯一建议,就是14V可以并联一个18V的TVS管(下图右箭头指示)。

真不愧是大佬,屹晶微也是这么建议我的加一个TVS管,太厉害了

点评

常规处理而已。  详情 回复 发表于 2023-11-30 13:14
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:108
  • 最近打卡:2025-06-30 11:50:20

75

主题

6167

回帖

1万

积分

超级版主

积分
12956
发表于 2023-11-30 13:14:49 | 显示全部楼层
单片*** 发表于 2023-11-30 12:02
真不愧是大佬,屹晶微也是这么建议我的加一个TVS管,太厉害了

常规处理而已。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-07-19 09:04:12

12

主题

33

回帖

202

积分

中级会员

积分
202
发表于 2023-11-30 14:27:43 | 显示全部楼层
梁*** 发表于 2023-11-30 13:14
常规处理而已。

感谢梁工
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-30 13:39 , Processed in 0.117844 second(s), 78 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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