当前位置: 首页 > news >正文

焦作网站制作江门免费网站建站模板

焦作网站制作,江门免费网站建站模板,wordpress主题多语言包,资阳大众网app下载19. 串口通讯 19.1. 串口介绍#xff1a; •串口是一种应用十分广泛的通讯接口#xff0c;串口成本低、容易使用、通信线路简单#xff0c;可实现两个设备的互相通信。 •单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信#xff0c;极大的…19. 串口通讯 19.1. 串口介绍 •串口是一种应用十分广泛的通讯接口串口成本低、容易使用、通信线路简单可实现两个设备的互相通信。 •单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信极大的扩展了单片机的应用范围增强了单片机系统的硬件实力。 •51单片机内部自带UARTUniversal Asynchronous Receiver Transmitter通用异步收发器可实现单片机的串口通信。 19.2. 串口硬件电路 •简单双向串口通信有两根通信线发送端TXD和接收端RXD •TXD与RXD要交叉连接TXD Transmit Exchange DataRXD Receive Exchange Data •当只需单向的数据传输时可以直接一根通信线 •当电平标准不一致时需要加电平转换芯片 19.3. 电平标准 •电平标准是数据1和数据0的表达方式是传输线缆中人为规定的电压与数据的对应关系串口常用的电平标准有如下三种 •TTL电平5V表示10V表示0 •RS232电平-3-15V表示1315V表示0 •RS485电平两线压差26V表示1-2-6V表示0差分信号 19.4. 接口及引脚定义 19.5. 常见通讯接口比较 相关的术语有 •全双工通信双方可以在同一时刻互相传输数据 •半双工通信双方可以互相传输数据但必须分时复用一根数据线 •单工通信只能有一方发送到另一方不能反向传输 •异步通信双方各自约定通信速率 •同步通信双方靠一根时钟线来约定通信速率 •总线连接各个设备的数据传输线路类似于一条马路把路边各住户连接起来使住户可以相互交流 19.6. 51单片机的UART •STC89C52有1个UART •STC89C52的UART有四种工作模式 模式0同步移位寄存器 模式18位UART波特率可变常用 模式29位UART波特率固定 模式39位UART波特率可变 19.7. 串口参数及时序图 •波特率串口通信的速率发送和接收各数据位的间隔时间 •检验位用于数据验证奇校验偶数个1的时校验位补1奇数个1的时候校验位补0 •停止位用于数据帧间隔 19.8. 串口模式图 •SBUF串口数据缓存寄存器物理上是两个独立的寄存器但占用相同的地址。写操作时写入的是发送寄存器读操作时读出的是接收寄存器 19.9. 串口和中断系统 19.10. 串口相关寄存器 19.11. 数据显示模式 •HEX模式/十六进制模式/二进制模式以原始数据的形式显示 •文本模式/字符模式以原始数据编码后的形式显示 20. 串口向电脑发送数据电脑通过串口控制LED 20.1. STC89C52手册中的串口介绍如下 STC89C52系列单片机内部集成一个功能很全双工串行通信口与传统8051单片机的串口完全兼容。设2个互相独立的接收、发送缓冲器可以同时发送和接收数据。发送缓冲器只能写而不能读出接收缓冲器只能读出而不能写入因而两个缓冲器可以共用一个地址码99H。两个缓冲器统称串行通信特殊功能寄存器SBUF。 串行通信设有4种工作方式其中两种方式的波特率是可变的另两种是固定的以供不同应用场合选用。波特率由内部定时器/计数器产生用软件设置不同的波特率和选择不同的工作方式。主机可通过查询或中断方式对接收/发送进行程序处理使用十分灵活。 STC89C52系列单片机串行口对应的硬件部分对应的管脚是P3.0/RxD和P3.1/TxD。 STC89C52系列单片机的串行通信口除用于数据通信外还可方便地构成一个或多个并 行I/O口或作串—并转换或用于扩展串行外设等。 20.2. 串口通讯程序初始化新建工程8-1 串口向电脑发送数据需要增加之前的模块程序“delay_xms.h” 20.3. 串口相关寄存器的配置 SM00, SM11, 适配当前学习环境 SM20; REN1单片机接受数据测试程序REN0先给0用于测试 TB80, RB80 TI0必须用软件复位标志位发送后必须软件复位置0 RI0 综上SCON0100 0000B0x40 SBUF初始化无需配置 PCON初始化配置借助STC-ISP进行波特率的配置 除此以外还需要配置定时器这里配置的是定时器1因为定时器配置中涉及波特率计算作者借助STC-ISP的工具直接进行配置配置中的各项参数设置如图 初始化函数如下 void Uart_Init(void) //4800bps12.000MHz {PCON | 0x80; //使能波特率倍速位SMOD加倍波特率减少误差SCON 0x50; //8位数据,可变波特率//AUXR 0xBF; //定时器时钟12T模式//AUXR 0xFE; //串口1选择定时器1为波特率发生器TMOD 0x0F; //设置定时器模式TMOD | 0x20; //设置定时器模式TL1 0xF3; //设置定时初始值TH1 0xF3; //设置定时重载值ET1 0; //禁止定时器1中断TR1 1; //启动定时器1 }20.4. 测试发送数据0x66 #include REGX52.h #include delay_xms.hvoid Uart_Init(void) //4800bps12.000MHz {PCON | 0x80; //使能波特率倍速位SMOD加倍波特率减少误差SCON 0x50; //8位数据,可变波特率//AUXR 0xBF; //定时器时钟12T模式//AUXR 0xFE; //串口1选择定时器1为波特率发生器TMOD 0x0F; //设置定时器模式TMOD | 0x20; //设置定时器模式TL1 0xF3; //设置定时初始值TH1 0xF3; //设置定时重载值ET1 0; //禁止定时器1中断TR1 1; //启动定时器1 }void Uart_SendByte(unsigned char Byte) {SBUFByte;while(TI0);//判断是否发送TI0; //发送后置0 }void main() {Uart_Init();Uart_SendByte(0x66);while(1){}}Proteus中测试验证无误 STC-ISP中显示结果无误 20.5. 一个问题如果程序稍微修改一下重复快速发送数据0x66有概率实际开发板接收数据为96作者视频中演示需要在发送语句后面加入1ms延时以减少出错概率main函数修改为如下 void main() {Uart_Init();while(1){Uart_SendByte(0x66);//重复发送数据66delay_xms(1);//1ms的延时用于防止发送数据错误}}20.6. 测试每隔1s发送一个数字数字累加程序如下 #include REGX52.h #include delay_xms.h unsigned char sec; void Uart_Init(void) //4800bps12.000MHz {PCON | 0x80; //使能波特率倍速位SMOD加倍波特率减少误差SCON 0x50; //8位数据,可变波特率//AUXR 0xBF; //定时器时钟12T模式//AUXR 0xFE; //串口1选择定时器1为波特率发生器TMOD 0x0F; //设置定时器模式TMOD | 0x20; //设置定时器模式TL1 0xF3; //设置定时初始值TH1 0xF3; //设置定时重载值ET1 0; //禁止定时器1中断TR1 1; //启动定时器1 }void Uart_SendByte(unsigned char Byte) {SBUFByte;while(TI0);//判断是否发送TI0; //发送后置0 }void main() {Uart_Init();while(1){Uart_SendByte(sec);sec;delay_xms(1000);}}模拟仿真结果如下 20.7. 示例程序STC-ISP中借用串口助手发送数据开发板接受到相关的数据后在P2的8个LED灯中显示LED灯的相应状态 #include REGX52.h #include delay_xms.h #include Uart.hvoid main() {Uart_Init();while(1){}}void Uart_Routine() interrupt 4 //函数名任意主要是interrupt 4定义中断 {if(RI1) //判断接收数据中断P2~SBUF; //接收到的数据取反后赋值P2口RI0; //RI置0等待下次接收数据判断}模块化程序的Uart.c程序如下 #include REGX52.h /*** brief 串口初始化4800bps12.000MHz* param 无* retval 无*/void Uart_Init(void) //4800bps12.000MHz {PCON | 0x80; //使能波特率倍速位SMOD加倍波特率减少误差SCON 0x50; //8位数据,可变波特率,可接收数据//AUXR 0xBF; //定时器时钟12T模式//AUXR 0xFE; //串口1选择定时器1为波特率发生器TMOD 0x0F; //设置定时器模式TMOD | 0x20; //设置定时器模式TL1 0xF3; //设置定时初始值TH1 0xF3; //设置定时重载值ET1 0; //禁止定时器1中断TR1 1; //启动定时器1EA1; //启动所有中断ES1; //启动串口中断 }/*** brief 串口发送一个字节数据* param Byte 要发送的一个字节数据* retval 无*/void Uart_SendByte(unsigned char Byte) {SBUFByte;while(TI0);//判断是否发送TI0; //发送后置0 } 模块化程序的Uart.h如下 #ifndef _UART_H_ #define _UART_H_ void Uart_Init(); void Uart_SendByte(unsigned char Byte);#endifSTC-ISP中发送数字110001 0001 B有2个灯亮起测试没有问题
http://www.hkea.cn/news/14467907/

相关文章:

  • 创什么网站吸引人如何建设网站兴田德润实惠
  • 网站开发方向行业现状企业网站seo优化
  • 工业设计灵感网站网站突然打不开是什么原因
  • 做电商的几个网站吗wordpress桌面版
  • 柳州洛维建设网站做盗版电影网站违法吗
  • 网站新站整站排名wordpress增加会员中心
  • 喀什地区建设局网站安阳县公共资源交易中心
  • 最新网站备案教程微信营销软件免费版
  • 专注做蔬菜的网站网站推广任务 ip点击
  • 竞猜网站开发多少钱企业微信app官网下载地址
  • 品牌微信网站定制互联网大厂有哪些
  • SharePoint做网站好吗小说网页网站建设
  • 产品宣传网站的作用天津做网站公司
  • wordpress category.php南宁网站的优化
  • 网站排名如何做wordpress好看主题
  • 正在建设的网站可以随时进入吗it人力外包服务公司
  • 广西建设工程质量安全监督总站网站贾汪建设局网站
  • 江阴做网站的企业做网上招聘哪个网站好
  • 简洁网站模板下载一级a做爰片完整网站
  • 性价比最高的网站建设公司企业自助建站
  • 如何申请建设个人网站网站建设开放的端口
  • seo撰写网站标题以及描述的案例良品铺子vi设计手册
  • 联通营业厅做网站维护企业网站建设物美价廉
  • 深圳做英文网站的公司镇平哪家网站做的好
  • 建设互联网站是什么齐博企业网站
  • 网站seo问题诊断工具西安百度竞价推广
  • 深圳网站排名怎么做奇趣统计网站谁做的
  • 网站建设费记入科目wordpress免费手机主题
  • 培训网站开发需求说明书设计制作网站收费
  • 网站设计公司简介wordpress 视图插件