头像-181450

zhczlzhang

  • 上海市奉贤区
  • 单片机、嵌入式、电源技术、模拟技术
  • 消费电子

个人成就

获得 2 次赞

帮助过6人

想做一个红外对射板

想做一个红外对射板,多个红外发射灯组成红外发射板,红外接收板用LM393来做,然后发射板与红外接受板是需要处在同一水平线上吗?

在4层板设计中使用了光电隔离该如何隔离信号

如题,我在PCB设计中使用了光耦CT817C 502K,本来打算设计成2层板,但是看资料的时候发现了这样一句话。用光电耦合器来隔离输入输出通道时,必须对所有的信号(包括数位量信号、控制量信号、状态信号)全部隔离,使得被隔离的两边没有任何电气上的联系,否则这种隔离是没有意义的。所以应该要用4层板,我有点犯难,隔离光耦两边的输入5V 输出24V,这个可以了理解,那输入输出的GND要隔离吗?隔离信号线那是怎么隔离,用4层板的话应该在VCC,还是GND隔离层分割?

设计多层板时GND内电层为什么要分割

今天看到一个设计图,有点疑惑,GND都是0V,为什么在内电层中还要分割成2块。不是应该GND不同时才分割吗?

单片机仿真中如何创建新的不存在的模块

如题所示,最近做仿真发现有很多集成芯片没有,比如HX711之类的,那么如何创建这些能够仿真的芯片呢?

看一下这个单片机的编程应该如何解?

对这个程序有点疑问LcdShowStr(0, 0, buf+cmdLen[2]); //显示命令后的字符串这一个buf+cmdLen[2]为什么是命令后的字符串,怎么运算的,什么原理?CmpMemory这个比较函数在比较cmd2[]命令后它后面还跟着的字符串难道不比较吗?为什么?bit CmpMemory(unsigned char *ptr1, unsigned char *ptr2, unsigned char len){ while (len--) { if (*ptr1++ != *ptr2++) //遇到不相等数据时即刻返回0 { return 0; } } return 1; //比较完全部长度数据都相等则返回1 } /* 串口动作函数,根据接收到的命令帧执行响应的动作 buf-接收到的命令帧指针,len-命令帧长度 */ void UartAction(unsigned char *buf, unsigned char len) { unsigned char i; unsigned char code cmd0[] = "buzz on"; //开蜂鸣器命令 unsigned char code cmd1[] = "buzz off"; //关蜂鸣器命令 unsigned char code cmd2[] = " showstr "; //字符串显示命令 unsigned char code cmdLen[] = { //命令长度汇总表 sizeof(cmd0)-1, sizeof(cmd1)-1, sizeof(cmd2)-1, }; unsigned char code *cmdPtr[] = { //命令指针汇总表 &cmd0[0], &cmd1[0], &cmd2[0], }; for (i=0; i<sizeof(cmdLen); i++) //遍历命令列表,查找相同命令 { if (len >= cmdLen[i]) //首先接收到的数据长度要不小于命令长度 { if (CmpMemory(buf, cmdPtr[i], cmdLen[i])) //比较相同时退出循环 { break; } } } switch (i) //循环退出时i的值即是当前命令的索引值 { case 0: flagBuzzOn = 1; //开启蜂鸣器 break; case 1: flagBuzzOn = 0; //关闭蜂鸣器 break; case 2: buf[len] = '\0'; //为接收到的字符串添加结束符 LcdShowStr(0, 0, buf+cmdLen[2]); //显示命令后的字符串 UartWrite(buf+cmdLen[2],len - cmdLen[2]); //返回命令后的字符串 i = len - cmdLen[2]; //计算有效字符个数 if (i < 16) //有效字符少于16时,清除液晶上的后续字符位 { LcdAreaClear(i, 0, 16-i); } break;

Altium Designer10不显示电阻值

很奇怪,我新装的Altium Designer10在生产BOM表时,我明明选择了生产VALUE,但是生成的BOM表里还是没有value的值,求指点!