精华内容
下载资源
问答
  • 加一个什么模块才能使单片机通过家庭的无线路由器连接网络。然后向网络的某个IP地址发送数据?
  • 51单片机8255A扩展IO口与单片机连接;1. 8255A的结构及引脚功能;接A15A1A0接CPU的A1A0则端口地址 ;3. 8255A的控制字; 工作方式控制字; PC口置/复位控制字;4. 8255A的工作方式;A组 ; PC为控制口时各引脚功能;4. 8255A...
  • 单片机的学习中,不光是单片机程序的编写,还有电路的设计。有些公司可能会把单片机开发分成两块:电路设计、程序设计。然后负责电路设计的人只负责电路设计,不用考虑单片机编程;程序设计的人只管单片机编程,不...

    在单片机的学习中,不光是单片机程序的编写,还有电路的设计。有些公司可能会把单片机开发分成两块:电路设计、程序设计。然后负责电路设计的人只负责电路设计,不用考虑单片机编程;程序设计的人只管单片机编程,不设计电路。

    不过我个人认为,只搞电路设计的人可以不用关心单片机是怎么编程的,但是搞单片机程序设计的人,却必须要对电路很熟悉,你可以不用亲自设计电路,但是必须对单片机项目中各种电路的原理足够了解,这样才能确保设计出来的程序稳定、健壮。

    举个例子来说吧,假如一个单片机系统中用到了EEPROM存储芯片,EEPROM芯片的SCL和SDA是开漏输出的,需要外接上拉电阻,假设电路板上的EEPROM芯片的SCL和SDA的上拉电阻忘记焊上或者坏掉了,这时候调试EEPROM是调不通的,如果这时候电路设计人员不在,而单片机程序设计人员又对EEPROM的原理不熟悉,就会陷入到麻烦中:因为对电路不熟悉,就会一遍一遍的查找程序的原因。可是程序明明没有问题啊,这个程序在别的项目中一直都是正常的,为什么在这个板子上就不行了呢?

    还有一点,一般带有微控制器的电路板,电路功能是否正常,是需要编写一定的验证程序来测试电路板的性能的,单靠电路设计人员使用万用表、示波器等工具是无法验证电路的好坏的。

    综上所述,单片机程序设计人员一定要对电路的原理熟悉,这样才能设计出正确的程序。

    从本篇文章开始,我们就来简单学习一下单片机开发中常用的电路。

    当然,由于本人水平有限,关于这些电路的讲解只限于简单原理的讲解。如果有错误,欢迎批评指正。

    1. 单片机常用电路1-晶振电路

    早期的单片机(比如经典的51单片机)系统,外接晶振是必须的(当然也可以外接时钟脉冲,但是很少用),因为单片机的运行必须依赖于稳定的时钟脉冲。但是随着技术的发展,现在很多单片机都已经集成了内部时钟,所以在一般的应用场合,可以不用外接晶振电路了。不过由于内部时钟容易受外界干扰,所以在要求严格的场合,晶振电路还是很有必要的。

    晶振电路1

    图1是典型的单片机外接晶振电路。

    901d9bc51322704271be2100a4c9d799.png

    图1 单片机晶振电路

    该电路不只是有一个晶振,还有两个电容,这两个电容有什么作用呢?

    这两个电容一般称为“匹配电容”或者“负载电容”、“谐振电容”。晶振电路中加这两个电容是为了满足谐振条件。一般外接电容,是为了使晶振两端的等效电容等于或接近负载电容。只有连接合适的电容才能满足晶振的起振要求,晶振才能正常工作。

    负载电容的值由如下公式计算:

    负载电容无法满足的话一般会使晶体频率产生偏差,严重的话晶体无法起振。电路设计中要尽量满足晶体的负载电容需求,从而使晶体工作在最佳状态。负载电容计算公式如下:

    CL = C1*C2 / (C1+C2) + CS

    CL为晶振的负载电容值,一般通过查询晶振的数据手册获得。CS为电路板的寄生电容,一般取 3~5pF,取C1 = C2,那么公式可以简化成如下:

    CL = C1 / 2 + CS

    一般情况下,增大负载电容的值会使振荡频率下降,减小负载电容的值,会使振荡频率上升。

    晶振电路2

    我们有时候还会看到如图2所示的晶振电路。

    082a3a202ef0850cf7124ac40beeab98.png

    图2 不带并联电阻和带并联电阻的晶振电路

    该电路中晶振上又并了一个电阻,这是为什么呢?

    这个电阻实际上是反馈电阻,是为了方便晶振起振的。对于COMS而言,这个电阻的阻值可以是1M以上,对于TTL则是需要视情况而定。最好的办法是看看芯片的数据手册,确认芯片晶振电路内部是否有电阻,如果没有,电路设计时最好加上。

    晶振电路3

    图3是有源晶振电路。

    0e3c0a0965d517d1eed1f7dc4acea875.png

    图3 有源晶振电路

    有源晶振通常的用法:一脚悬空,二脚接地,三脚接输出,四脚接电压。有源晶振不需要CPU的内部振荡器,连接方式相对简单(主要是做好电源滤波,通常使用一个电容和电感构成的PI型滤波网络,输出端用一个小阻值的电阻过滤信号即可),不需要复杂的配置电路。相对于无源晶体,有源晶振的缺陷是其信号电平是固定的,需要选择好合适输出电平,灵活性较差,而且价格高。

    展开全文
  • 单片机系统可以方便的通过 CH395 芯片进行网络通讯。 CH395 支持三种通讯接口:8 位并口、SPI 接口或者异步串口,单片机/DSP/MCU/MPU 等控制 器可以通过上述任何一种通讯接口控制 CH395 芯片进行以太网通讯。
  • 图:单片机最小系统电路 04,检查单片机串口与USB转串口的接线是否正确 单片机串口的接收端RXD(P3.0)需要与USB转串口的发送端TXD连接单片机串口的发送端TXD(P3.1)需要与USB转串口的接收端RXD连接,也就是交叉接线...

    01,检查电脑端下载端口COM口是否存在

    在电脑上,右键我的电脑,选择管理,进如计算机管理窗口。

    46d997903cbaf2b550cbeb26b99a6f34.png

    选择设备管理器下载端口,查看是否有USB-SERIAL CH340(COM4),如果没有此端口就需要进行驱动安装,文章末尾有驱动下载链接。

    e94ea787f5019a420f546f8de02afa2e.png

    02,检查下载电路(USB转串口电路)是否正常

    将USB转串口电路的串口接口RXD与TXD进行短接,目的是通过串口助手进行数据发送,这样USB转串口电路发出去的数据就通过USB转串口电路接收端接收,如果串口助手接收与发送的数据一致,说明USB转串口电路正常。

    f963c625b0589ab23ae41a9cd8ead106.png

    图:串口助手测试

    f38edb5248d42f7518eff64f792e6599.png

    图:USB转串口模块RXD与TXD短接

    如果你用的是开发板,USB转串口电路没有引出接口,可以将单片机的串口接口短接,然后将单片机取出。

    03,检查单片机最小系统电路是否正常

    单片机最小系统电路包括晶振电路、复位电路、单片机、电源,这些部分缺一不可。有的开发板的晶振是可更换的,所以引脚不可太长。

    7745eace4aa3d61436704a7beb7d6719.png

    图:单片机最小系统电路

    04,检查单片机串口与USB转串口的接线是否正确

    单片机串口的接收端RXD(P3.0)需要与USB转串口的发送端TXD连接,单片机串口的发送端TXD(P3.1)需要与USB转串口的接收端RXD连接,也就是交叉接线。

    10ddd0d1b92b1d96b0fd877f5a7f057f.png

    图:交叉接线

    05,PC端烧写工具的参数选择是否正确

    烧写工具选择的单片机型号是否正确,烧写COM端口号是否正确,其他的参数选择都是默认,如果有变动需要对照默认设置。

    4e8f1c830e671e077e4d43cb9712def8.png

    图:烧写工具参数选择

    06,更换新单片机

    如果以上问题都已经确认无误,还是无法下载,则需要更换新单片机,判断是单片机损坏。

    转自网络,仅作分享,若侵联系删除

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

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

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

    ESP8266单片机
    VCCVCC(最好选择3.3V)
    CH_PDVCC(最好选择3.3V)
    GNDGND
    URXDTXD
    UTXDRXD

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

    我将会上传到我的资源里,请各位需要的下载尝试。注明:我的是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灯亮灭操作。

    如图:

     

     

    最后使用

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

     

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

     

     

     

    展开全文
  • 总结经验:要先手动配置AP+STA模式,再连入WiFi,然后波特率要同步,再接入51单片机,配置连接服务器和发送长度,最后在主程序里面发送字符串 一.通过AT指令集配置ESP8266模块 使用USB转串口驱动,没有的小伙伴可以...

    总结经验:要先手动配置AP+STA模式,再连入WiFi,然后波特率要同步,再接入51单片机,配置连接服务器和发送长度,最后在主程序里面发送字符串
    一.通过AT指令集配置ESP8266模块

    使用USB转串口驱动,没有的小伙伴可以用USB转TTL代替,接线时,ESP8266的RX和TX与TTL转接口的交叉,即

    只要接四根先,其他的不用接

    打开串口助手工具,打开目标串口,注意输入指令的时候在结尾回车发送

    1. AT+RST    
    2. AT+UART=9600,8,1,0,0   //波特率设为9600
    3. AT+CWMODE=3              //即可作为服务器,也可作为客户端
    4. AT+CWJAP="ESP8266","12345678"     //接入本地WiFi
    5. AT+CIPSTART="UDP","xx.xxx.xx.xxx",xxxx  //连接服务器,方式可以为UDP或TCP

    二.配置完成后,连接51单片机,RX和TX也一定要交叉连接

    #include <reg52.h>
    bit uart_busy = 0;    //串口返回消息
    
    void delay5ms() {
        unsigned char a,b;
        for(b=201;b>0;b--)
            for(a=247;a>0;a--);
    }
    
    void Init_uart(void) {      //串口波特率要设为9600
    	TMOD = TMOD | 0x20;    
    	SCON = SCON | 0x50;    
    	TH1 = 0xFd;        
    	TL1 = TH1;  
    	TR1 = 1;              
    	EA =1;                
    	ES =1;               
    }
    //串口发送字符
    void Uart_SendByteData(unsigned char msg){
    	while(uart_busy); 
    	SBUF=msg;		  
    	uart_busy = 1;	
    }
    void Uart_SendStrData(unsigned char *msg){
    	while(*msg){
    		Uart_SendByteData(*msg++);
    	}
    }
    
    //初始化配置8266,指定服务器
    void Init_ESP01S(){             
    	Uart_SendStrData("AT+CIPSTART=\"UDP\",\"xx.xxx.xx.xxx\",xxxx\r\n");   
    	delay5ms();  
    	Uart_SendStrData("AT+CIPSEND=8\r\n");	    //这里的8是指发送的长度
    	delay5ms();
    }
    
    void main(){
    	Init_uart();
    	Init_ESP01S();
    	delay5ms();
    	Uart_SendStrData("12345678");    //通过串口发送字符串给8266,发送到云端
    }
    
    void UART_Interrupt(void) interrupt 4 {
    	unsigned char one_char;
    	
    	if(RI){
    		one_char = SBUF;
    		RI = 0;
    	}
    	
    	if(TI){
    		TI = 0;
    		uart_busy = 0;
    	}
    	
    }
    

     

    展开全文
  • 1,首先,ESP使用串口,跟51单片机通信,控制端可以使用手机,但是,51单片机和手机不在一个档次,那么在51单片机上需要分析操作。 2,ESP8266在接收或者发送数据时,会向串口发送回显内容,也就是提示信息,提示...
  • 51单片机与蓝牙模块连接

    万次阅读 多人点赞 2018-02-22 12:17:38
    不久前开始学习使用蓝牙模块,在模块与51单片机连接的过程中出现了非常多的问题,我想应该也是很多新手和我一样会遇到这样的问题,因此特地写这篇文章,想分享下在学习过程中遇到的问题以及解决方法。此次学习用到...
  • 1 引言  随着互联网的出现和以太网的迅速发展,基于以太网的设备控制越来越多,发展...为了解决传统方案的不足,本文讨论以集成以太网MAC层和物理层的16位单片机MC9S12NE64来实现单器件以太网连接。与多器件方案相比
  • 摘要:分析基于单片机的以太网连接方案,介绍MC9S12NE64型16位单片机的特性及其最小系统的硬件设计,给出MC9S12NE64的初始化过程、主程序和TCP/IP协议栈实现的思想。关键词:MC9S12NE64;单片机;嵌入式系统;...
  • 单片机

    2021-01-25 12:01:22
    单片机博客目录 目录 单片机博客目录 单片机概述 单片机分类 单片机应用领域 单片机学习方法 单片机概述 单片机分类 单片机应用领域 单片机学习方法
  • 大家好,我想用单片机连接windows azure ping的IP,ping 不通怎么办呢?
  • 但对于MCU单片机而言,常用的有MII、RMII。 主要有以下几个信号: 必须信号 : TX_CLK:发送数据时钟,由PHY输出到MAC; RX_CLK:接收数据时钟,由PHY输出到MAC; TXD[3-0]:发送数据,有4个信号,...
  • 随着测控技术的发展,由多单片机构成的测量控制网络在测控领域的应用越来越广泛。单片机之间的数据交换通常采用串行通信方式,连接方式多采用总线拓扑结构[13]。该结构中单片机通过一组数据线相连接,所有单片机共用...
  • 单片机网络接口

    2014-09-23 16:22:06
    可将 TTL串口设备连接至以太网 业界首款全双工、不间断、低成本服务器 支持TCP服务器、TCP客户端、UDP模式 支持虚拟串口、Web登录或使用VirCom进行配置 ZLSN3002 概述 ZLSN3002一端提供4针的接口(分别为串口...
  • 嵌入式单片机网络链路测试背景测试步骤 背景 arm单片机(ip:192.168.0.179),djyos。 测试步骤 前提:成功烧写djyos iboot;串口,网线正确连接到自己电脑; 设置电脑IP与单片机处于同一网段 上电运行,连接...
  • 51单片机TCPIP网络接口电路图详解,用51单片机进行网络连接
  • 摘要:在分析传统信息家电接入internet方式的基础上,提出了以16位单片机作为主控芯片的嵌入式设备解决方案,实现了信息家电以新的方式接入internet,并对系统的软硬件设计进行了描述。  0 引言  随着网络时代的...
  • 如何利用廉价的51单片机来控制网卡芯片进行数据传输,加载TCP/IP协议连接互联网,实现网络通信成了众多设计者的目标。但由于指令及资源的限制,实施过程会有许多困难。我们在设计方案中舍弃了耗费资源的高级协议,...
  • LCD 与单片机连接电路图和 LCD 显示程序 /LCD 测试程序 3.2.5 LCD 显示电路 液晶显示器简称 LCD显示器它是利用液晶经过处理后能改变光线的传输方向的特性来 显示信息的要使用点阵型 LCD显示器必须有相应的 LCD控制...
  • 如何利用廉价的51单片机来控制网卡芯片进行数据传输,加载TCP/IP协议连接互联网,实现网络通信成了众多设计者的目标。但由于指令及资源的限制,实施过程会有许多困难。我们在设计方案中舍弃了耗费资源的高级协议,...
  • Android 用Socket通过ESP8266 连接单片机

    千次阅读 2019-07-15 02:09:09
    我在这使用的是Android 通过连接ESP8266 建立的热点,从而达到向服务器端发送数据,而控制单片机的效果。 /*****************************************************/ 在这里,我想先说三点(也就是作为一个新手的我...
  • 利用16位单片机SPCE061A驱动以太控制芯片RTL8019AS,实现信息家电经由嵌入式网关接入internet的方式,可以方便、低廉地将信息家电的工作状态送往远程PC进行监控。这种低成本、高性能的方案,具有可靠灵活的特点,...
  • //启动TCP/IP 实现基于网络//控制 ESP8266_Set("AT+CIPSERVER=1,5000"); ms_delay(2000); ESP8266_Set("AT+CIPSTO=0\r\n"); //永远不超时 ES=1; //允许串口中断 qj=1; zz=1; yz=...
  • 对采集模块下达指令,通过MCS1210嵌入式型号单片机连接各个指令集,改善网络时延问题,并利用线性方程准确描述信息采集情况。通过实验分析结果可知,该系统最高采集效率可达到90%,能够实现移动网络信息的高精准采集...
  • 开发网络设备、安全系统、工业控制和Web无线等应用的工程师一直都梦想着拥有一种单芯片的、基于闪存的以太网解决方案,带有内置的10/100以太网媒体访问控制器(EMAC)和以太网物理层(EPHY)。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,821
精华内容 5,928
关键字:

单片机如何连接网络