头像-181450

zhczlzhang

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

个人成就

获得 2 次赞

帮助过6人

unsigned char定义的buzz on数据长度是多少

如代码所示,我通过串口发送buzz on,7蜂鸣器不响,试过buzz on,6buzz on,12buzz on,14buzz on,24buzz on,28buzz on,48buzz on,56都返回bad command.代码老师说没有问题,请问buzz on数据长度是多少?我应该发送buzz on,?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; //开启蜂鸣器 led = 0; break; case 1: flagBuzzOn = 0; //关闭蜂鸣器 break; case 2: buf[len] = '\0'; //为接收到的字符串添加结束符 LcdShowStr(0, 0, buf+cmdLen[2]); //显示命令后的字符串 i = len - cmdLen[2]; //计算有效字符个数 if (i < 16) //有效字符少于16时,清除液晶上的后续字符位 { LcdAreaClear(i, 0, 16-i); } break; default: //未找到相符命令时,给上机发送“错误命令”的提示 UartWrite("bad command.\r\n", sizeof("bad command.\r\n")-1); return; } buf[len++] = '\r'; //有效命令被执行后,在原命令帧之后添加 buf[len++] = '\n'; //回车换行符后返回给上位机,表示已执行 UartWrite(buf, len); }

在单片机串口通讯中,字符类发送0,返回B0?为什么不是30.

按照老师提供的串口通讯程序,字符类发送0,返回应该是30,但是却返回了B0?为什么会这样?B0转换为十进制是176,减去128是48,对应的ASCLL是0。但是为什么跟老师说的不太一样。#include <reg52.h> void ConfigUART(unsigned int baud); void main() { EA = 1; //使能总中断 ConfigUART(9600); //配置波特率为9600 while (1); } /* 串口配置函数,baud-通信波特率 */ void ConfigUART(unsigned int baud) { SCON = 0x50; //配置串口为模式1 TMOD &= 0x0F; //清零T1的控制位 TMOD |= 0x20; //配置T1为模式2 TH1 = 256 - (11059200/12/32)/baud; //计算T1重载值 TL1 = TH1; //初值等于重载值 ET1 = 0; //禁止T1中断 ES = 1; //使能串口中断 TR1 = 1; //启动T1 } /* UART中断服务函数 */ void InterruptUART() interrupt 4 { if (RI) //接收到字节 { RI = 0; //手动清零接收中断标志位 SBUF = SBUF ; //接收的数据原路返回,左边是发送SBUF,右边是接收SBUF } if (TI) //字节发送完毕 { TI = 0; //手动清零发送中断标志位 } }

请问CD4001BE集成芯片如何确认好坏

刚收到一块板子,上面有很多集成芯片,其中有很多都是类似于CD4001BE一样的芯片,给我的让我捡一下这些板子上的集成芯片有没有问题,我手里只有万用表,没有电源,该如何检测好坏!cd4001be应该是四2输入与非门,该如何检测?

DIY项目集合

陈工你做过很多小项目和经验,请问能放出来一部分吗?

如何DragonBoard 410c做导航

看到陈工你做过DragonBoard 410c做导航,请问有详细的开发过程吗?能公开吗?

PCB设计出来的电路理想与实际的差距有点大

成工好,我用设计的一个单片机控制的电机控制电路,在proteus仿真中表现良好,用PCB设计成了PCB板成品,用的TL494N,在实际运行中却出现转速不稳的现象,领导说可能电路信号设计有影响,请问成工PCB设计中,信号干扰如何设计才能不影响使用。

proteus仿真如何建立没有的集成芯片

成工好,我用PROTEUS的时候,发现很多的芯片一般都没有,只能用模拟电路的功能来实现,找了一部分人问过,他们说要自己做元件,但是网上的教程很少,成工能不能推荐一个讲的详细的,比如说hx711ad,这个一般都是自己做的,没有库元件。

关于7805设计的稳压电源

张工好,最近设计的电路需要用到5v,12V,我就在电路中采用了7805和7812来改变电压的大小,我用的是经典的7805设计方法来设计,但是最后发现7805的5V总是差0.15V到5V,12V大概在11.85左右,总是有一点损耗的样子,不能达到标准的5V跟12V,张工,有什么方法能使他们达到吗?