2019-09-19 08:50:38 zhengmilian5572 阅读数 506

**

**

1、在直流电源(Vcc)和地之间并接电容的电容可称为滤波电容.滤波电容滤除电源的杂波和交流成分,压平滑脉动直流电,储存电能.取值一般100-4700uF.取值与负载电流和对电源的纯净度有关,容量越大越好.有时在大电容傍边会并有一个容量较小的电容,叫高频去耦电容.也是滤波的一种型式用来滤除电源中的高频杂波以免电路态产生自激,稳定电路工作状.取值一般0.1-10uF.取值与滤除杂波的频率有关.

这样接的作用一般叫“退耦”,也叫“退交连”、“旁路”电容,常按排在电源供给、IC和功能模块电路附近。以无感的瓷片、独石电容为佳。
作用是为高频信号提供通路,减小电源内阻,去除电源和地线在敷铜板上“走长线”的影响,防止公用电源的各部分电路之间的“有害交连”等等。常用10nF。

2、在开发板上,通常直流电源和地之间有很多0.1uF非电解电容和10uF的电解电容

这些电容,目的是使电源线和地线之间为低阻抗,电源接近理想电压源。你要说是滤波作用也可以,但需要弄清楚是滤什么波。不是滤电源的纹波,而是某芯片电流发生变化在电源线上造成的纹波,使其不影响其它芯片。
使用0.1uF无极性电容和10uF电解电容并联,是因为电解电容的寄生电感比较大,消除高频纹波能力较差。而无极性电容寄生电感小,滤除高频纹波能力较好。但若根据低频的要求选择容量,则无极性电容体积太大,成本也高,电解电容体积小,同样容量价格较便宜。故采用两种电容并联。
你自己设计电路,也应该这样使用,而且各电容位置和走线很有讲究。
只能说两句原则:
1)各小容量的无极性电容两端到芯片的电源引脚和地引脚联接线尽可能短,越短越好。
2)电源通常由其它电路板引入,电解电容通常每块电路板上只有一个两个。一个电解电容的话,放到电源进入该电路板之处。此时电解电容当然离各芯片较远,但因电解电容主要在较低频率起作用,所以稍远一点没有关系。如果该电路板上用两支电解电容,另一支放到耗电最多的芯片附近
这些和电路板元件布局、地线的走线安排(多层板通常有地层)都有关系

10MHz以下的噪声0.1μF电容效果好
按C=1/F,即10MHz取0.1μF

简单的说是,将干扰通过电容接地

2017-07-24 17:26:40 ambizxzh 阅读数 15359

本文整理自网络。
1,在直流电源(Vcc)和地之间并接电容的电容可称为滤波电容.滤波电容滤除电源的杂波和交流成分,平滑脉动直流电压,储存电能.取值一般100-4700uF.取值与负载电流和对电源的纯净度有关,容量越大越好.有时在大电容傍边会并有一个容量较小的电容,叫高频去耦电容.也是滤波的一种型式用来滤除电源中的高频杂波以免电路产生自激,稳定电路工作状态.取值一般0.1-10uF.取值与滤除杂波的频率有关.

这样接的作用一般叫“退耦”,也叫“退交连”、“旁路”电容,常按排在电源供给、IC和功能模块电路附近。以无感的瓷片、独石电容为佳。
作用是为高频信号提供通路,减小电源内阻,去除电源和地线在敷铜板上“走长线”的影响,防止公用电源的各部分电路之间的“有害交连”等等。常用10nF。

2,在开发板上,通常直流电源和地之间有很多0.1uF非电解电容和10uF的电解电容。

这些电容,目的是使电源线和地线之间为低阻抗,电源接近理想电压源。你要说是滤波作用也可以,但需要弄清楚是滤什么波。不是滤电源的纹波,而是某芯片电流发生变化在电源线上造成的纹波,使其不影响其它芯片。
使用0.1uF无极性电容和10uF电解电容并联,是因为电解电容的寄生电感比较大,消除高频纹波能力较差。而无极性电容寄生电感小,滤除高频纹波能力较好。。但若根据低频的要求选择容量,则无极性电容体积太大,成本也高,电解电容体积小,同样容量价格较便宜。故采用两种电容并联。
你自己设计电路,也应该这样使用,而且各电容位置和走线很有讲究。
只能说两句原则:
1)、各小容量的无极性电容两端到芯片的电源引脚和地引脚联接线尽可能短,越短越好。
2)、电源通常由其它电路板引入,电解电容通常每块电路板上只有一个两个。一个电解电容的话,放到电源进入该电路板之处。此时电解电容当然离各芯片较远,但因电解电容主要在较低频率起作用,所以稍远一点没有关系。如果该电路板上用两支电解电容,另一支放到耗电最多的芯片附近。
这些和电路板元件布局、地线的走线安排(多层板通常有地层)都有关系

10MHz以下的噪声0.1μF电容效果好
按C=1/F,即10MHz取0.1μF

简单的说是,将干扰通过电容接地

相关网站:http://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=473778
https://zhidao.baidu.com/question/112410983.html
http://bbs.21ic.com/icview-209164-1-1.html

2018-08-23 00:43:51 XiaoCaiDaYong 阅读数 11554

上一个博客:ESP8266 WIFI模块学习之路(1)是关于对串口连接的,简单验证ESP8266是怎么样连接及其功能验证,下面将通过单片机连接,和手机进行远程操作。

ESP8266和单片机的连接,我这里的单片机型号为:STC12C5A60S2

ESP8266 单片机
VCC VCC(最好选择3.3V)
CH_PD VCC(最好选择3.3V)
GND GND
URXD TXD
UTXD RXD

然后手机上要按照网络调试助手,这里我提供两个:

我将会上传到我的资源里,请各位需要的下载尝试。注明:我的是Android版本的。

现在我要完成的是控制P20口的LED灯亮灭,代码如下:
 

#include <reg52.h>
#include <string.h>
#include <stdio.h>

sbit P20_LED=P2^0;


char Recive_table[20]="";  //接收缓冲,最大20个字节
char Recive_state = 0;   //接收完成标志
void WIFI_Init(void);
void Uart_Init(void);
void ms_delay(int t);
void LED(void);

int main (void)
{ 
	/********************功能初始化***********************/
	Uart_Init();//串口初始化,波特率为9600
	ms_delay(1000) ;
	WIFI_Init(); //wifi初始化
	/****************************************************/
	/**********************主循环************************/
	while(1)
	{ 
		ms_delay(10) ;
		if(Recive_state == 1)
		{
			ES=0;  //清空接收标志位 
			if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P'))//接收到的字符串形式为+IPD,x,x:y
			{
			    if((Recive_table[3]=='D')&&(Recive_table[6]==','))
			    {   
			        if(Recive_table[9]=='0')
					P20_LED = 0;
					if(Recive_table[9]=='1')
					P20_LED = 1;
				}
			}
			memset(Recive_table,'\0',20);
			Recive_state = 0;
			ES=1;  //打开接收标志位
		}
	}
	/****************************************************/
	  
}

/******************************************************************
函 数: void Uart_Interrupt() interrupt 4
功 能: 串口中断函数,将收到的字符存到Recive_table[]数组中
参 数: 无
返回值: 无
*******************************************************************/
void Uart_Interrupt() interrupt 4         
{   
	static char i=0;  //因为是一位一位接收,所以用static
	if(RI==1)    
	{  
		ES = 0;
		RI=0;         
		Recive_table[i]=SBUF;        
		i++; 
		if((Recive_table[i-1] == '\n'))
		{ 
			Recive_table[i]='\0';
			i=0; 
			Recive_state = 1;
		}
		ES = 1;      
	}
	else
	TI = 0;     
} 

/******************************************************************
函 数: void Uart_Init(void)
功 能: 串口初始化,波特率为9600(这个不会,上网百度)
参 数: 无
返回值: 无
*******************************************************************/
void Uart_Init(void)
{  
	TMOD=0x20;
	TH1=0xfD;
	TL1=0xfD;
	TR1=1;
	REN=1;
	SM0=0;
	SM1=1;
	EA=1;
	ES=1;
}

/******************************************************************
函 数: void ms_delay(int t)
功 能: 毫秒级延时
参 数: 无
返回值: 无
*******************************************************************/
void ms_delay(int t) 
{  
	int i,j; 
	for(i=t;i>0;i--)   
		for(j=110;j>0;j--); 
}

/******************************************************************
函 数: void LED(void)
功 能: 发送完命令后显示用的函数
参 数: 无
返回值: 无
*******************************************************************/
void LED(void)
{
	P2 = 0;
	ms_delay(100);
	P2 = 0xff;
	ms_delay(100);
}


/******************************************************************
函 数: void WIFI_Init(void)
功 能: wifi初始化
参 数: 无
返回值: 无
*******************************************************************/
void WIFI_Init(void)
{
	ES = 0;
	TI = 1; 
	printf("AT+RST\r\n");
	LED();
	ms_delay(1000) ;
	printf("AT+CWMODE=3\r\n");
	LED();
	ms_delay(1000) ;
	printf("AT+CIPMUX=1\r\n");
	LED(); 
	ms_delay(1000) ;
	printf("AT+CIPSERVER=1,8080\r\n");        
	LED();
	ms_delay(1000) ;
    printf("AT+CIOBAUD=9600\r\n");   // 设置与单片机一致的波特率     
	LED();
	ms_delay(1000) ;
	while(!TI);
	TI = 0;
	ES = 1;
}

将HEX文件加载到单片机中验证效果。

我们先用如图调试助手进行操作:

调试之前需要先连接到正确的WIFI上,我的esp8266模块的WIFI名称为:AI-THINKER_7C5C0F

TCP server端配置正确的端口号,这个端口号是自己设置的

然后在client端配置正确的IP,这个IP必须

如果正确会提示连接成功,然后就可以输入0或者1进行对LED灯亮灭操作。

如图:

 

 

最后使用

同样可以完成相应的效果,配置如下图:

 

到此就结束了,希望大家指正,共同探讨。

 

 

 

2017-01-18 15:53:57 pop1586082213 阅读数 53399

烧录固件

引脚连接

WiFi 51单片机
VCC 3.3V (5V连接时间过长可能会烧坏WiFi模块)
GND GND
CH_PD 3.3V
GPIO0 GND
UTXD TXD
URXD RXD

烧录固件

  1. 打开烧录软件,选择配置选项卡,点击第二栏的小齿轮图标 - 加载固件地址
    配置选项卡
  2. 点击其他选项的选择栏,取消选中,只选择第二个选项(固件地址)
    配置固件位置
  3. 返回操作选项卡,选择正确COM端口,点击一键烧写
  4. 模块重新上电,下载开始,等待下载完成
    成功样图

串口助手测试ESP8266串口WiFi模块

引脚连接

WiFi 51单片机
VCC 3.3V (5V连接时间过长可能会烧坏WiFi模块)
GND GND
CH_PD 3.3V
UTXD TXD
URXD RXD

注:此时连接状态 WiFi模块–>51单片机–>串口助手(PC),由于WiFi模块和单片机的TXD和RXD处于正接状态,单片机和WiFi模块并不通信,相当于WiFi模块直连串口助手。

AT常用指令

ESP8266串口WiFi模块分为三种工作模式:Station模式(类似无线终端),AP模式(提供无线接入服务),AP模式兼Station模式。

通过串口助手测试WiFi模块时,

测试

发送指令:AT

响应:OK

重启模块

发送命令:AT+RST

响应 :OK

设置模块

发送指令:AT+CWMODE = <mode>

说明:需重启后生效(AT+RST)

<mode>:1-Station模式,2-AP模式,3-AP兼Station模式。

响应:OK

配置AP参数

发送命令:

指令:AT+ CWSAP= <ssid>,<pwd>,<chl>, <ecn>

说明:指令只有在AP模式开启后有效

<ssid>:字符串参数,接入点名称 
<pwd>:字符串参数,密码最长64字节,ASCII
<chl>:通道号 
<ecn>:加密模式,0-OPEN,1-WEP,2-WPA_PSK,3-WPA2_PSK,4-WPA_WPA2_PSK  

示例:AT+CWSAP=”TEST”,”123456123456”,1,3

响应:OK

开启多连接模式

发送命令:AT+CIPMUX=<mode>

说明:<mode> :0-单路连接模式,1-多路连接模式

响应:OK

创建服务器

发送命令:AT+CIPSERVER=<mode>,<port>

说明:AT+ CIPMUX=1时才能开启服务器;关闭server模式需要重启。开启server后自动建立server监听,当有client接入会自动按顺序占用一个连接。

<mode>:0-关闭server模式,1-开启server模式       
<port>:端口号,缺省值为333 

响应:OK

通过51单片机初始化WiFi模块

通过串口助手测试AT指令可以发现,部分AT指令断电不会保存,因此需要在代码中进行初始化设置。

引脚连接

WiFi 51单片机
VCC 3.3V (5V连接时间过长可能会烧坏WiFi模块)
GND GND
CH_PD 3.3V
UTXD RXD
URXD TXD

注:此时连接状态 WiFi模块–>51单片机–>串口助手(PC),由于WiFi模块和单片机的TXD和RXD处于反接状态,单片机和WiFi模块可以进行串口通信。

实现代码

#include<reg52.h>				//51单片机常用的头文件
#define uchar unsigned char		//宏定义一个无符号的char类型
#define uint unsigned int		//宏定义一个无符号的int类型

//发送一字节
void sendByte(uchar b)
{
  SBUF = b;
  while(!TI);
  TI=0;
}

//发送字符串
void sendString(uchar *s)
{
  while(*s != '\0')	//字符串默认结尾'\0',以此来判断字符串的结束
  {
    sendByte(*s);
    s++;
  }
}

//初始化ESP8266WiFi模块
void initEsp()
{
  uint a;
  SCON = 0x50;    //8位数据,可变波特率
  TMOD = 0x20;    //设置定时器1位16位自动重装模式
  TL1 = 0xfd;     //设置定时器初值,波特率为9600
  TH1 = 0xfd;
  ET1 = 0;        //禁止定时器1中断
  TR1 = 1;        //启动定时器1
  EA = 1;

  for (a=0; a<50000; a++);		//延时几秒,让模块有时间启动
  sendString("AT+CWMODE=2\n");	//设置为softAP和station共存模式

  //WiFi热点不能通过代码设置,可使用串口助手进行设置,该设置断电不丢失
  /*
  for (a=0; a<20000; a++);
  sendString("AT+CWSAP='TEST','12345678',1,3\n"); //建立WiFi热点
  */

  for (a=0; a<50000; a++);    
  sendString("AT+CIPMUX=1\n"); //启动多连接

  for (a=0; a<20000; a++);
  sendString("AT+CIPSERVER=1,333\n");//建立server,端口为333

  for (a=0; a<20000; a++);
  sendString("AT+CIPSTO=50\n");     //服务器超时时间设置

  RI=0;
  ES=1;   //初始化完成,串行口中断打开
}

//主函数  
void  main()  
{  
  initEsp();
}      

注:代码中波特率应和串口助手的波特率相符,且部分AT命令如重启模块,设置WiFi热点等指令无法使用。

获取WiFi传输的数据

ESP8266WiFi模块作为TCP服务器接受来自客户端的信息前默认会加上+IPD,n,<string.length>:这样的字符,处理时应注意。

实现代码

//获取数据,数据格式示例:+IPD,0,14:"time":"11:11"
void getData()
{
  uint a;
  if(receiveFlag)
  {
    for(i=0; i<2; i++)
    {
      Hour[i]=Buffer[17+i];
    }
    Hour[2]='\0';

    for(i=0; i<2; i++)
    {
      Minute[i]=Buffer[20+i];
    }
    Minute[2]='\0';

    //将获取到的数据发送到串口助手上显示
    for (a=0; a<10000; a++);	//需要延时,负责会造成数据错乱导致丢包
    sendString(Hour);
    for (a=0; a<10000; a++);
    sendString(Minute);

    receiveFlag=0;
    count=0;
    for(i=0; i<22; i++)
    {
      Buffer[i]=0;
    }
  }
}

//主函数
void main()
{
  initEsp();			//初始化WiFi模块
  receiveFlag = 0;		//receiveFlag判断执行getData() 的标志
  count = 0;			//count缓冲区RXDdata[count]的索引  
  while(1)
  { 
    getData();
  }
}

//利用中断接收信息,且舍弃无效信息
void uart() interrupt 4  
{
  if(RI == 1)	
  {
    ES = 0;     //关闭串行中断
    RI = 0;     //清除串口接收标志位
    temp = SBUF; //从串口缓冲区取得数据

    if(count<20)	//满足需接收的信息长度,将数据存入缓冲区
    { 
      Buffer[count]=temp;
      count++;
      if(Buffer[0]=='+')  //判断是否为无效数据,由于WiFi模块会自动加上"+PID.."开头的字符串
      {
        receiveFlag = 1; 
      }
      else
      {
        receiveFlag = 0;
        count = 0;
      }
    } 
    ES = 1; 
  }
}
2020-01-01 23:14:31 liangmaoxuan 阅读数 199

51单片机流水灯原理

在实验之前必须的准备工作有:

1.单片机 STC90C51

2.编译软件keil

3.烧写软件

4.面包板

5.发光二极管

实验说明:通过单片机芯片,定时在引脚P00,P01,P02,P03循坏输出高电平,制作流水灯效果

重要端口:

 

原理说明:(红色部分为该实验电路图)

电流顺序:VCC正极进入 》 芯片P0.0触发一个高电平 》 LED0二极管 》 EA 》 GND负极流出

 

 

C语言编程烧写代码:

/**************************************************************************************
*		              LED闪烁实验												  *
实现现象:下载程序后指示灯闪烁
注意事项:无																				  
***************************************************************************************/

#include "reg52.h"			 //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;


sbit led0=P0^0;		 //将单片机的P0.0端口定义为led
sbit led1=P0^1;
sbit led2=P0^2;
sbit led3=P0^3;
/*******************************************************************************
* 函 数 名         : delay
* 函数功能		   : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{
	while(i--);	
}

/*******************************************************************************
* 函 数 名       : main
* 函数功能		 : 主函数
* 输    入       : 无
* 输    出    	 : 无
*******************************************************************************/
void main()
{
	while(1)
	{
		led0=0;
		delay(50000); //大约延时450ms
		led0=1;
		delay(50000); //大约延时450ms
		led1=0;
		delay(50000); //大约延时450ms
		led1=1;
		delay(50000); //大约延时450ms
		led2=0;
		delay(50000); //大约延时450ms
		led2=1;
		delay(50000); //大约延时450ms
		led3=0;
		delay(50000); //大约延时450ms
		led3=1;
		delay(50000); //大约延时450ms	
	}		
}

 

 

 

总结不好多多担待,文章只单纯个人总结,如不好勿喷,技术有限,有错漏麻烦指正提出。本人QQ:373965070

 

稳压二极管串并联

阅读数 150

没有更多推荐了,返回首页