网站建设项目规划书案例,做网站为什么要买服务器,提出网站推广途径,自己的公众号1.通信有关的常见概念
区分#xff1a;串口#xff0c;COM口#xff0c;UART#xff0c;USART_usart和串口区别-CSDN博客
串口、COM口、UART口, TTL、RS-232、RS-485区别详解-CSDN博客 1.什么是通信 #xff08;1#xff09;人和人之间的通信#xff1a;说话#xff…
1.通信有关的常见概念
区分串口COM口UARTUSART_usart和串口区别-CSDN博客
串口、COM口、UART口, TTL、RS-232、RS-485区别详解-CSDN博客 1.什么是通信 1人和人之间的通信说话写信 2人和计算机之间的通信按键显示器鼠标 3计算机和计算机之间的通信 2.通信的关键 1事先约定 2基本的信息单元 3有效信息的编码传输和解码 3.通信的专业性概念 1同步和异步同一个步调 2单工半双工全双工数据传输方向 3并行和串口并行多根线串行单根线 4电平信号【传输近易受干扰】和差分信号【传输远不易受干扰】电平是通过高低电平进行区分差分是相对的 2.串行通信
1.串口通信基础 1一种特定的通信协议【电平通信】 2串行通信串口通信UARTUSART 3串口通信的特点异步串行全双工 2.串行通信的主要用途 1早期计算机之间短距离通信1.5米内)完备通信机制 2现在CPU之间近距离通信【CPU和周边芯片】调试信息输入输出非完备通信 3.串行通信的工作方式 13根线(GND,RxD【接收线】,TxD【发送线】---recive transmit---不完备通信 或者9根线DB9-完备通信 2发送方有发送位移寄存器接收方有接收移位寄存器 3数据在发送方和接收方的CPU中都以字节为单位整字节处理 4数据在通信线上以位为单位逐个bit的传输 4.串行通信的主要概念 传输都是一帧一帧的发 1.起始位 开始之前要发送一个起始位 2.数据位 比如我们传输“A”转换为ASCII就是8位二进制这8位就叫做8位数据位【有效数据】 数据位要双方沟通确定的 3.奇偶校验位 判断传输过程中是否出错 4.停止位帧 判断是否结束 5.波特率 串行通信的速度 一秒钟传输多少给bit位发送方和接收方必须波特率设置为一样【波特率越小传输速度慢抗干扰能力越强】 6.流控 速率协商现在一般要禁用掉 3.51单片机的串行通信
1.基础概念 SoC把CPU以及其他功能集成到一个芯片上 1串行通信功能是SoC的一个内部外设提供的与CPU无关【CPU运算器控制器】--CPU本身无法通信 2各种不同的SoC的串行通信大同小异【内部差不多编程时候可能不同】 3串行通信经常作为主控SoC与其他外部芯片之间的通信接口【串行通信SoC与外部其他芯片的通信】 2.STC51单片机的串行通信简介 4.STC51的串行通信相关寄存器
1.总体浏览 2.SCON串行控制寄存器 3.SBUF串行口缓存寄存器 4.PCON电源控制寄存器 5.IE中断允许寄存器 6.串口发送时的软硬件协作方式 1查询方式。硬盘在发送完一帧数据后会将一个标志位置位标志位本来是0软件需要不断读取这个标志位的值来判断硬件是否完成了发送如果读出来的是0就表示硬件还在发还在发还没完还在忙所以我们就不能认为硬件发完了所以就不能给硬件安排下一帧数据的发送如果读出来的是1则说明硬件已经发完了上一帧数据这时候软件就应该给硬件在给一帧数据去发送 2因为串口发送完这个事件对CPU来说是个异步事件因为不知道什么时候发送消息所以这里查询方式来处理和之前讲过的查询方式处理按键是非常类似的。 3常见情况下串口发送会使用查询方式串口接收会使用中断方式【因为不知道什么时候会接收到信息使用中断才不会过度销毁CPU】 7.波特率加倍
PCON中的SMOD 所谓波特率加倍就是正常计算出的波特率假设是2400那么SMOD1时则实际波特率就是4800当SMOD0时不加倍也就是2400还是2400 5.STC51的串行通信实战
1.硬件接线分析 1目标将PC机和51单片机通过串口连接起来 2PC机的串口情况台式机串口笔记本USB转串口 3开发板原理图分析 2.接线方案
1.使用板载CH340 什么都不用动默认就是使用这个最简单最省事最推荐 2.使用DB9接口USB转串口线 用DB9接口的USB转串口线 注意跳线帽接到DB9一侧 3.使用TTL接口USB转串口线 只接三根线TxDRxDGND 4.总结 3.使用板载CH340进行串口实践
1.接线下载程序 2.查看设备管理器确定COM号 3.方法一使用普中下载软件自带的串口助手监视 4.方法二使用第三方串口助手软件监视 5.方法三使用SecureCRT软件监视 4.使用DB9接口USB转串口线
1.接线下载程序 2.注意对下载程序的影响 此时无法进行程序下载 3.使用各种方式进行监视
5.串口初始化 //串口初始化函数
//预设一个串口条件8位数据位1停止位0校验位波特率4800
//初始化的主要工作就是去设置相关的寄存器
void uart_init(void){SCON0x50; //串口工作在模式18位串口允许接收PCON0x80; //波特率加倍意思是本来需要波特率4800等一下计算时按照2400去计算就好}
6.波特率计算 SMOD---》判断是否进行波特率加倍【如果加倍则为1不加倍则为0】 查看数据手册中”串行通信中波特率的设置“ 接着查看定时/计数器1的工作方式2的寄存器设置情况 TMOD0x20; //设置T1为模式2 TR11 //开启T1让它开始工作 我们刚刚在上面计算出TH1243所以进行设置 TH1243;
TL1243; //8位自动重装意思就是TH1用完了下一个周期TL1会自动重装到TH1中 7.串口发送字符【单个字符】 注意点51单片机不一样要先发送在检验有没有在发送 其他MCU都是先检验在发送 如果为【0】则表示在忙如果为【1】则表示发送结束 //串口发送函数,发送一个字节
void uart_send_byte(unsigned char c){//【第一步】发送一个字节SBUFc;//【第二步】先确认串口发送部分没有在忙while(!TI);//TI0表示在忙//【第三步】软件复位TI标志位---数据手册要求的TI0;
}
8.测试一下
1.波特率不加倍
#includereg51.h//函数声明
void uart_init(void);
void uart_send_byte(unsigned char c);
void delay();void main(){//第一步:初始化好串口到正确的状态uart_init();while(1){//为了调试方便让A循环发送才好监视//第二步通过串口发送信息出去uart_send_byte(A);delay();}}void delay(){unsigned char i,j;for(i0;i100;i){for(j0;j200;j);}
}//串口初始化函数
//预设一个串口条件8位数据位1停止位0校验位波特率4800
//初始化的主要工作就是去设置相关的寄存器
void uart_init(void){//波特率不加倍的例子SCON0x50; //串口工作在模式18位串口允许接收PCON0x00; //波特率不加倍//通信波特率相关的设置//此处我们使用【方式1】---对应数据手册TMOD0x20; //设置T1为模式2TR11; //开启T1让它开始工作TH1249;TL1249; //8位自动重装意思就是TH1用完了下一个周期TL1会自动重装到TH1中//中断初始化ES1;//串口中断初始化EA1;//整个中断初始化}//串口发送函数,发送一个字节
void uart_send_byte(unsigned char c){//【第一步】发送一个字节SBUFc;//【第二步】先确认串口发送部分没有在忙while(!TI);//TI0表示在忙//【第三步】软件复位TI标志位---数据手册要求的TI0;
} 因为我们算出来的TH1和TL16.5所以精确度可能会受到影响我们将其设置为250 或者 249则结果都会输出乱码 2.换一个波特率9600 我们前面算出TH16.5【这里我们的波特率为4800】所以如果为9600则我们应该将【6.5/23.25】才是我们9600的结果 //波特率为9600SCON0x50; //串口工作在模式18位串口允许接收PCON0x00; //波特率不加倍//通信波特率相关的设置//此处我们使用【方式1】---对应数据手册TMOD0x20; //设置T1为模式2TR11; //开启T1让它开始工作TH1253;TL1253; //8位自动重装意思就是TH1用完了下一个周期TL1会自动重装到TH1中//中断初始化ES1;//串口中断初始化EA1;//整个中断初始化 9.串口发送字符串【多个字符】
#includereg51.h//函数声明
void uart_init(void);
void uart_send_byte(unsigned char c);
void delay();
void uart_send_string(unsigned char *str);void main(){//第一步:初始化好串口到正确的状态uart_init();while(1){//发送字符串也可以发送中文uart_send_string(abcdefg);delay();}}void delay(){unsigned char i,j;for(i0;i100;i){for(j0;j200;j);}
}//串口初始化函数
//预设一个串口条件8位数据位1停止位0校验位波特率4800
//初始化的主要工作就是去设置相关的寄存器
void uart_init(void){//波特率加倍的例子SCON0x50; //串口工作在模式18位串口允许接收PCON0x80; //波特率加倍意思是本来需要波特率4800等一下计算时按照2400去计算就好//通信波特率相关的设置//此处我们使用【方式1】---对应数据手册TMOD0x20; //设置T1为模式2TR11; //开启T1让它开始工作TH1243;TL1243; //8位自动重装意思就是TH1用完了下一个周期TL1会自动重装到TH1中//中断初始化ES1;//串口中断初始化EA1;//整个中断初始化}//串口发送函数,发送一个字节【单个字节】
void uart_send_byte(unsigned char c){//【第一步】发送一个字节SBUFc;//【第二步】先确认串口发送部分没有在忙while(!TI);//TI0表示在忙//【第三步】软件复位TI标志位---数据手册要求的TI0;
}//发送字符串【多个字符】
void uart_send_string(unsigned char *str)
{while (*str ! \0){uart_send_byte(*str); // 发送1个字符str; // 指针指向下一个字符}
}
10.串口接收函数编写 因为我们在程序执行过程中如果要接收PC机传输过来的数据则表示程序要进行中断则要进行中断处理。 void uart_isr(void) interrupt 4 using 1{
} #includereg51.h//函数声明
void uart_init(void);
void uart_send_byte(unsigned char c);
void delay();
void uart_send_string(unsigned char *str);void main(){//第一步:初始化好串口到正确的状态uart_init();uart_send_string(串口回环测试\n);while(1);
}void delay(){unsigned char i,j;for(i0;i100;i){for(j0;j200;j);}
}//串口初始化函数
//预设一个串口条件8位数据位1停止位0校验位波特率4800
//初始化的主要工作就是去设置相关的寄存器
void uart_init(void){//波特率加倍的例子SCON0x50; //串口工作在模式18位串口允许接收PCON0x80; //波特率加倍意思是本来需要波特率4800等一下计算时按照2400去计算就好//通信波特率相关的设置//此处我们使用【方式1】---对应数据手册TMOD0x20; //设置T1为模式2TR11; //开启T1让它开始工作TH1243;TL1243; //8位自动重装意思就是TH1用完了下一个周期TL1会自动重装到TH1中//中断初始化ES1;//串口中断初始化EA1;//整个中断初始化}//串口发送函数,发送一个字节【单个字节】
void uart_send_byte(unsigned char c){//【第一步】发送一个字节SBUFc;//【第二步】先确认串口发送部分没有在忙while(!TI);//TI0表示在忙//【第三步】软件复位TI标志位---数据手册要求的TI0;
}//发送字符串【多个字符】
void uart_send_string(unsigned char *str)
{while (*str ! \0){uart_send_byte(*str); // 发送1个字符str; // 指针指向下一个字符}
}//中断处理程序
void uart_isr(void) interrupt 4 using 1
{unsigned char tmp;if(RI){tmpSBUF; //读取SBUF其实就是读出串口接收到的1个字节//RI:串行口1接收中断标志RI0;}//自此已经读到了PC发给单片机的一个字节但是单片机没有显示器无法显示//我们用最简单的方法就是直接回发uart_send_byte(tmp);
}
6.RS485
1.UART的缺点传输距离受限 1理论上RS232不超过15米--电脑的COM端口【DB9】 2理论上TTL电平通信距离更短---TTL是在单片机上使用 3实际上几百米也有人宣称做到了但是稳定性不能保证 4波特率越高通信距离越短【速度越快通信距离越短】 2.远距离传输 1提高电压标准 2提高通信线抗干扰能力降低阻抗 3使用差分信号--抗干扰能力强【RS485/RS422】 3.RS485RS422) 1最大通信距离1200多米最快通信速率10Mbps距离和速度成反比USB接口网线 2差分信号负逻辑【5V代表---0 -3V代表----1】 3更远距离可以加中继器【中继器---多个485的节点连接起来--放大】 4半双工【如果要实现全双工则使用4根线】 5RS485只提高物理层通信能力不提供数据层协议需要用户自定义或者使用标准协议如MODBUS协议。 4.MAX485 MAX485就是相当于UART与RS485之间的信号转换 1CPU本身只会提供URAT接口而不会提供RS485接口。CPU根本不认识RS485 2RS485使用场景CPUA--UART转RS485------远距离通信-----RS485转UART----CPUB (3)对RS485的理解RS485是纯硬件实现的硬件芯片如MAX485来管理的根本不涉及软件编程。软件工程师只关注串口只通过串口将数据发送出去或者接收回来即可。UART转485和485转UART对CPU来说是透明的。
文章转载自: http://www.morning.zzjpy.cn.gov.cn.zzjpy.cn http://www.morning.jmtrq.cn.gov.cn.jmtrq.cn http://www.morning.qtzk.cn.gov.cn.qtzk.cn http://www.morning.fxygn.cn.gov.cn.fxygn.cn http://www.morning.ywxln.cn.gov.cn.ywxln.cn http://www.morning.ljdjn.cn.gov.cn.ljdjn.cn http://www.morning.wfzdh.cn.gov.cn.wfzdh.cn http://www.morning.gxcit.com.gov.cn.gxcit.com http://www.morning.mlmwl.cn.gov.cn.mlmwl.cn http://www.morning.krywy.cn.gov.cn.krywy.cn http://www.morning.nrjr.cn.gov.cn.nrjr.cn http://www.morning.ztmkg.cn.gov.cn.ztmkg.cn http://www.morning.zhghd.cn.gov.cn.zhghd.cn http://www.morning.fnmgr.cn.gov.cn.fnmgr.cn http://www.morning.zwpzy.cn.gov.cn.zwpzy.cn http://www.morning.rxfbf.cn.gov.cn.rxfbf.cn http://www.morning.lylkh.cn.gov.cn.lylkh.cn http://www.morning.nnhfz.cn.gov.cn.nnhfz.cn http://www.morning.rnzwh.cn.gov.cn.rnzwh.cn http://www.morning.mcndn.cn.gov.cn.mcndn.cn http://www.morning.trhlb.cn.gov.cn.trhlb.cn http://www.morning.ymmjx.cn.gov.cn.ymmjx.cn http://www.morning.prmyx.cn.gov.cn.prmyx.cn http://www.morning.rlbfp.cn.gov.cn.rlbfp.cn http://www.morning.lzqdd.cn.gov.cn.lzqdd.cn http://www.morning.mywnk.cn.gov.cn.mywnk.cn http://www.morning.rwcw.cn.gov.cn.rwcw.cn http://www.morning.tbbxn.cn.gov.cn.tbbxn.cn http://www.morning.gwmjy.cn.gov.cn.gwmjy.cn http://www.morning.dsxgc.cn.gov.cn.dsxgc.cn http://www.morning.mnwb.cn.gov.cn.mnwb.cn http://www.morning.rmpkn.cn.gov.cn.rmpkn.cn http://www.morning.wylpy.cn.gov.cn.wylpy.cn http://www.morning.lgnrl.cn.gov.cn.lgnrl.cn http://www.morning.ljglc.cn.gov.cn.ljglc.cn http://www.morning.ljmbd.cn.gov.cn.ljmbd.cn http://www.morning.wjzzh.cn.gov.cn.wjzzh.cn http://www.morning.dbylp.cn.gov.cn.dbylp.cn http://www.morning.fbxlj.cn.gov.cn.fbxlj.cn http://www.morning.msfqt.cn.gov.cn.msfqt.cn http://www.morning.qieistand.com.gov.cn.qieistand.com http://www.morning.hsjrk.cn.gov.cn.hsjrk.cn http://www.morning.jkzq.cn.gov.cn.jkzq.cn http://www.morning.wqpr.cn.gov.cn.wqpr.cn http://www.morning.cwzzr.cn.gov.cn.cwzzr.cn http://www.morning.hbqhz.cn.gov.cn.hbqhz.cn http://www.morning.lxhny.cn.gov.cn.lxhny.cn http://www.morning.zfqr.cn.gov.cn.zfqr.cn http://www.morning.rrjzp.cn.gov.cn.rrjzp.cn http://www.morning.wjlhp.cn.gov.cn.wjlhp.cn http://www.morning.sffwz.cn.gov.cn.sffwz.cn http://www.morning.xbrxk.cn.gov.cn.xbrxk.cn http://www.morning.dnphd.cn.gov.cn.dnphd.cn http://www.morning.tqgmd.cn.gov.cn.tqgmd.cn http://www.morning.qzpkr.cn.gov.cn.qzpkr.cn http://www.morning.yktwr.cn.gov.cn.yktwr.cn http://www.morning.dmwjl.cn.gov.cn.dmwjl.cn http://www.morning.qcfgd.cn.gov.cn.qcfgd.cn http://www.morning.kfwrq.cn.gov.cn.kfwrq.cn http://www.morning.qpljg.cn.gov.cn.qpljg.cn http://www.morning.sgnxl.cn.gov.cn.sgnxl.cn http://www.morning.yckrm.cn.gov.cn.yckrm.cn http://www.morning.lqlfj.cn.gov.cn.lqlfj.cn http://www.morning.dwgcx.cn.gov.cn.dwgcx.cn http://www.morning.brsgw.cn.gov.cn.brsgw.cn http://www.morning.zsyqg.cn.gov.cn.zsyqg.cn http://www.morning.rlbfp.cn.gov.cn.rlbfp.cn http://www.morning.jggr.cn.gov.cn.jggr.cn http://www.morning.bktzr.cn.gov.cn.bktzr.cn http://www.morning.bangaw.cn.gov.cn.bangaw.cn http://www.morning.znqxt.cn.gov.cn.znqxt.cn http://www.morning.xmhpq.cn.gov.cn.xmhpq.cn http://www.morning.nmymn.cn.gov.cn.nmymn.cn http://www.morning.ljhnn.cn.gov.cn.ljhnn.cn http://www.morning.kyctc.cn.gov.cn.kyctc.cn http://www.morning.jsmyw.cn.gov.cn.jsmyw.cn http://www.morning.gcfrt.cn.gov.cn.gcfrt.cn http://www.morning.lsjgh.cn.gov.cn.lsjgh.cn http://www.morning.qtzk.cn.gov.cn.qtzk.cn http://www.morning.rflcy.cn.gov.cn.rflcy.cn