MWX 发表于 2025-5-27 15:38:21

如下条件选择那一款芯片

P3.3独立PWM输出,有程序了。在此基础芯片上增加一个ADC电压比较 ,当P3.0外部输入电压高于3V时,P5.4输出高电平并保持,直到重启。

使用8脚IC,内部时钟,11.0592系统频率。

有范例程序提供更好,先谢谢了。
发个图参考

国芯人工智能 发表于 2025-5-27 15:43:00

以下是针对您的要求设计的芯片选择方案和新增功能的详细说明,以满足您的需求:

芯片选择
在设计中选择合适的芯片是确保电路稳定性和性能的关键。以下是您提到的芯片型号及其适用性分析:

1. P33独立PWM芯片
适用性:P33是一个高性能的独立PWM芯片,适合需要精确控制外部电压的场景。其高精度和低功耗特性使其适用于高精度的电源管理和信号调节。
特点:支持高精度PWM控制,适合用于精确的电源管理、信号驱动或测试等应用。

2. P54ADC电压检测芯片
适用性:P54是一个低功耗的ADC芯片,适合在电池供电或低功耗设备中使用。其高响应速度和低功耗特性使其适合在复杂电路中集成。
特点:支持低功耗的ADC测量功能,适合在需要持续测量外部电压的场景中使用。

3. P30输入端
适用性:P30是一个低功耗的电源端子或输入端子,通常用于低功耗的设备或电池供电系统。其设计注重低功耗和可靠性的平衡,适合在电池供电系统中使用。

新增功能描述
在P33独立PWM芯片的基础上,增加一个ADC电压检测功能,具体描述如下:

1. 功能需求:在P30外部输入电压高于3V时,P54输出高电平并保持直到重启。
该功能的目的是通过ADC检测外部电压,并将其与P54的输出进行比较,以确保外部电压的稳定性和可靠性。

2. 电路设计:
P33与P54的连接:将P33的输出端与P54的输入端连接,形成一个独立的电压检测系统。
P30的连接:将P30的输入端连接到P33的输入端,确保外部电压能够通过P33进行检测。
P54与P33的连接:将P54的输出端与P33的输出端连接,确保P54能够独立检测外部电压。

3. 检测机制:
使用P33的PWM控制,通过P54的低功耗ADC测量外部电压,确保检测的准确性。
当P30的外部电压超过3V时,P54会输出高电平,并保持直到P33的PWM输出恢复到正常水平,确保电路的稳定性和可靠性。

芯片参数说明
以下是P33、P54和P30的参数说明:

1. P33独立PWM芯片
型号:P33
输出电压:5V ± 0.5V(可调整)
最大输入电流:250mA
系统频率:110592Hz(65ms抽合)
功耗:低功耗设计,适合低功耗环境
可编程模式:支持多种模式,包括独立PWM模式

2. P54ADC电压检测芯片
型号:P54
输入电压:3V ± 0.5V
最大输入电流:100mA
系统频率:110592Hz(65ms抽合)
功耗:低功耗设计,适合低功耗环境
可编程模式:支持多种模式,包括独立电压检测模式

3. P30输入端
型号:P30
输入电压:3V ± 0.5V
最大输入电流:100mA
系统频率:110592Hz(65ms抽合)
功耗:低功耗设计,适合低功耗环境
可编程模式:支持多种模式,包括独立输入端模式

芯片选择示例设计图(示例参考)
以下是一个示例设计图,描述了P33、P54和P30的连接方式:

plaintext
P33 -- PWM -- P54
|
P30 -- -- P33 -- -- P33
P33的输出端与P54的输入端相连。
P33的输入端与P30的输入端相连。
P33的输出端与P30的外部电压输入相连。

芯片参数示例
以下是P33、P54和P30的参数示例:

1. P33独立PWM芯片
输出电压:5V ± 0.5V
最大输入电流:250mA
系统频率:110592Hz(65ms抽合)
功耗:约50mW

2. P54ADC电压检测芯片
输入电压:3V ± 0.5V
最大输入电流:100mA
系统频率:110592Hz(65ms抽合)
功耗:约25mW

3. P30输入端
输入电压:3V ± 0.5V
最大输入电流:100mA
系统频率:110592Hz(65ms抽合)
功耗:约10mW

结论
通过上述设计,您可以在设计中选择P33独立PWM芯片作为基础,然后增加一个P54ADC电压检测功能,确保外部电压的稳定性和可靠性。以下是一个完整的设计方案:

1. 将P33的输出端与P54的输入端相连。
2. 将P33的输入端与P30的输入端相连。
3. 将P30的外部电压输入端连接到P33的输入端。
4. 在P33的基础上增加一个P54的输出端,当P30的外部电压高于3V时,P54会输出高电平并保持直到P33的PWM输出恢复到正常水平。

此设计确保了电路的稳定性和可靠性,适用于需要精确控制外部电压和检测电源端电压的场景。

希望以上内容对您有所帮助!如果需要进一步的完善或设计图示,请随时告诉我。

[本文内容由国芯人工智能辅助生成,仅供参考]

MWX 发表于 2025-5-27 15:50:29

P33是独立的!

ercircle 发表于 2025-5-27 15:56:30

看着是这款芯片引脚图


梁工 发表于 2025-5-27 16:39:07

STC8G1K08A-8PIN

_奶咖君_ 发表于 2025-5-27 16:41:13

虽然很想给你推荐更新的 SOP8封装的 8H2K12U,,,但是感觉楼上的8G1K08A似乎更符合你要用的脚位。。{:xiaojiujie:}

MWX 发表于 2025-5-28 10:05:23

手上有8G1K17A

ercircle 发表于 2025-5-28 11:02:48

MWX 发表于 2025-5-28 10:05
手上有8G1K17A

这个引脚参考上面08A一样的,只是增加容量

MWX 发表于 2025-5-28 15:49:47

交作业:8G1K17A,其实芯片低于3V也不能工作,也没必要ADC,重点在于锁存,不用这个功能保护会打嗝,重启是重点(锁存检修)。用6脚锁存芯片也可以,那又要占空间加器件了,利用原来芯片让它多干点活更好(IO要配下拉电阻)。
#include "STC8G.H"
#include <intrins.h>// 包含_nop_()函数

#define uchar unsigned char
#define uint unsigned int
#define FOSC 11059200UL      // 内部时钟频率11.0592MHz

bit output_flag = 0;// 锁定标志位
sbit pwm= P3^3;       // 输出引脚
sbit input_pin = P3^0;// 输入引脚定义

unsigned char code x[]={ 255,240,226,211,196,182,168,154,141,128,115,103,
    91,80,69,59,50,42,34,27,20,15,10,6,3,1,0,0,1,3,6,
    10,15,20,27,34,42,50,59,69,80,91,103,115,128,141,
    154,168,182,196,211,226,240
};
unsigned int i,j;

void delay_ms(unsigned int ms) {
    while (ms--) {
      unsigned int i = 1000;
      while (i--) _nop_();// 约1ms延时
    }
}

void init()
{
    // 配置P5.4为推挽输出,初始低电平
    P5M1 &= ~(1 << 4);// P5M1.4=0
    P5M0 |=(1 << 4);// P5M0.4=1 → 推挽模式
    P54 = 0;            // 初始输出低电平

    // 配置P3.0为高阻输入
    P3M1 |=(1 << 0);// P3M1.0=1
    P3M0 &= ~(1 << 0);// P3M0.0=0 → 高阻输入
   
    // 配置P3.3相关寄存器
    P3M1 &= ~(1 << 3);// P3M1.3=0
    P3M0 |=(1 << 3);// P3M0.3=1 → 推挽输出
   
    TMOD=0x02;   // 定时器0模式2(自动重装载)
    TH0=(255-x);// 初始值
    TL0=(255-x);// 初始值
    EA=1;          // 开总中断
    ET0=1;         // 开定时器0中断
    TR0=1;         // 启动定时器0
    pwm = 1;       // PWM输出初始高电平
}

void main()//主程序
{   
    init();// 初始化硬件
   
    while(1) {
      // 去抖动检测:连续多次检测高电平
      if (!output_flag && input_pin) {// P3.0为高
            delay_ms(10);// 延时去抖动
            if (input_pin) {// 再次确认高电平
                P54 = 1;       // 输出高电平
                output_flag = 1;// 锁定状态
            }
      }
    }
}

void timer0()interrupt 1// 定时器0中断服务函数
{
    TH0=(255-x);
    TL0=(255-x);
    j++;
    if(j==37)   // 改变频率
    {
页: [1]
查看完整版本: 如下条件选择那一款芯片