atmega16应用之串口通信(HC05)

2023-10-08 15:10

本文主要是介绍atmega16应用之串口通信(HC05),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

串口通信

https://baike.baidu.com/item/串口通信/3775296?fr=aladdin
由于我比较懒,所以大家自己去看串口通信的原理啦

串口通信的寄存器配置

如果大家学过微机原理这门课,就知道单片机使用离不开三种寄存器,状态寄存器,是读取状态用的,控制寄存器,是配置参数控制功能,数据寄存器,是存储数据用的,只要我们正确的配置寄存器,就能使用自己想要的功能

USART I/O数据寄存器-UDR

在这里插入图片描述
大家只要知道结束数据和发送的数据都是存储在UDR这个寄存器里就够了,文字太多懒得看

USART控制和状态寄存器A- UCSRA

在这里插入图片描述
在这里插入图片描述
一般来说,我们自己完的单片机就一对一通信,功能不复杂,因此只需要配置和读取的是RXC、TXC还有异步通信模式下的U2X

USART控制和状态寄存器B- UCSRB

在这里插入图片描述
在这里插入图片描述
这个寄存器使用的东西非常多,首先 RXCIE和TXCIE写中断服务函数使用的,在接受和发送完一个字符后,需要执行某些操作时,必须要置位,才能使用中断服务函数。 RXEN和TXEN是打开串口通信的接受和发送数据的功能,否则是无法发送或结束到数据的。一般来说,配置这几个就够了

USART控制和状态寄存器C- UCSRC

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
常用的使用是配置 UMSEL (选择同步或异步)、UPM1:0: (奇偶校验)、USBS(停止位)、 UCSZ1:0: 字符长度 ,其他的基本不用管

USART波特率寄存器-UBRRL 和UBRRH

在这里插入图片描述

在这里插入图片描述
大家自己查资料计算比特率的计算公式了,我比较懒

HC05的使用

HC05怎么用,别人已经写的 很好了,就不写了,我是用HC05与手机通信,所以比特率是9600,用的是手机串口调试软件
https://blog.csdn.net/u011318735/article/details/17429879

代码

//串口IO初始化函数
void Serial_PortInit(void)
{int BAUD;DDRD &= 0XFE;DDRD |= 0X02;UCSRA |= (1 << U2X);                        //倍速模式UCSRB |= ((1 << RXEN )|(1 << TXEN));        //发送接受使能UCSRB |= ( (1<< RXCIE)| (1<< TXCIE));       //发送接受结束中断使能UCSRB &= ~(1 << UCSZ2);UCSRC |= ((1 << UCSZ1)|(1 << UCSZ0));       //8位数据位UCSRC &= ~(1 << UMSEL);                     //异步UCSRC &= ~((1 << UPM1)|(1 << UPM0));        //无奇偶校验位UCSRC &= ~(1 << USBS);                      //1位停止位BAUD  = 12;                                 //波特率9600UBRRL = (unsigned char)BAUD;UBRRH = (unsigned char)(BAUD>>8);SREG|=BIT(7);			//开全局中断
}

//串口发送函数
void USART_Send(unsigned char Data)
{while(!(UCSRA&(BIT(UDRE))));        //数据寄存器UDR是否为空?UDR=Data;                            //UDR赋值while(!(UCSRA&(BIT(TXC))));            //数据是否已经发送完毕?UCSRA|=BIT(TXC);                    //清除发送完毕标志位
}
/*发送字符串*/
void UART_Send_String(unsigned char* str, unsigned char length)
{//unsigned char i=0;while(length--){USART_Send(*str);*str++;}}
//串口接收完毕中断函数
interrupt[USART_RXC] void USART_Received_Ir()
{UCSRB &= ~BIT(RXCIE);       //接收完毕中断不使能RX_buffer=UDR;              //读取UDR的数据if(Rx_Flag)                 //将命令存入数组RX_cmd[R_i++] = RX_buffer;if(RX_buffer == '#'){R_i = 0;Rx_Flag=1;}//if(RX_buffer == 'o')//lcd_puts("hello");//lcd_putchar(UDR);UCSRB |= BIT(RXCIE);        //接收完毕中断使能
}

在这里插入图片描述

大家不懂的在问我吧

这篇关于atmega16应用之串口通信(HC05)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/166168

相关文章

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

在Spring Boot中实现HTTPS加密通信及常见问题排查

《在SpringBoot中实现HTTPS加密通信及常见问题排查》HTTPS是HTTP的安全版本,通过SSL/TLS协议为通讯提供加密、身份验证和数据完整性保护,下面通过本文给大家介绍在SpringB... 目录一、HTTPS核心原理1.加密流程概述2.加密技术组合二、证书体系详解1、证书类型对比2. 证书获

Python Flask 库及应用场景

《PythonFlask库及应用场景》Flask是Python生态中​轻量级且高度灵活的Web开发框架,基于WerkzeugWSGI工具库和Jinja2模板引擎构建,下面给大家介绍PythonFl... 目录一、Flask 库简介二、核心组件与架构三、常用函数与核心操作 ​1. 基础应用搭建​2. 路由与参

Spring Boot中的YML配置列表及应用小结

《SpringBoot中的YML配置列表及应用小结》在SpringBoot中使用YAML进行列表的配置不仅简洁明了,还能提高代码的可读性和可维护性,:本文主要介绍SpringBoot中的YML配... 目录YAML列表的基础语法在Spring Boot中的应用从YAML读取列表列表中的复杂对象其他注意事项总