说明:对于主从蓝牙计算器项目中的代码都是本人经过思考之后自行创作出来的,没有经过任何的网上抄录,由于课程实习的要求不高,所以我就没有对一些出现的bug进行修改(没有删除功能等)。但是基本的加减乘除都可以实现,包括在一次运算完成之后可以直接进行第二次运算,不需要复位。
我的风格就是先上代码:由于代码比较长,包含关系较为复杂(也算是个比较全面的小项目),所以我会在文章结尾以百度网盘链接的形式展示给大家。
硬件方面:板子用的stm32vet6 hc-05蓝牙模块 iic0.96寸oled 。开发板是学校实习发的,上面有许多的外设模块,我们要用的的有4个独立按键和矩阵键盘以及ds18b20温度传感器。由于开发板是学校的资源,老师也重点强调了不可以向外发布(我觉得非常没有这样必要,我觉得在学习的过程中要保持开源和互相沟通的心理,这样做.......) ,所以这里我就不提供原理图了。
软件方面:本次实习有四个任务,我把四个任务的代码全部整合到了一起,就是在刚开始的界面oled会提示你选择进入那个任务,并按照提示不同的按键选择不同的任务。
前两个任务太过简单,就没有讲的必要,就是基础的按键控制灯,只不过第二个任务用的是矩阵键盘。讲的话浪费大家时间也有失我的水准。
直接从第三个任务讲起。第三个任务是,用ds18b20测量温度,温度越高,亮的led灯就越多。是不是也是很简单,作为一个合格的嵌入式软件工程师应该很快就会想出解决的方法。唯一麻烦的就是对于ds18b20的温度读取上,这里我偷了个懒,直接从淘宝上找商家要的代码,然后改个数据引脚就行。但是对于嵌入式学习来说,最核心最重要的就是对于驱动的编写上,ds18b20是单总线协议的芯片,我曾经写过dht11的驱动代码,也是单总线协议,上手ds18b20的驱动相信也不会很难,但是由于实习时间比较紧张,就直接拿现成的用了,但是建议大家在时间充裕的条件下还是好好的研究芯片的时序图,写写驱动代码,还是很好玩的。
第四个任务。第四个任务我个人认为是相对较为难一些的,毕竟几乎用了我一个小下午的时间。
第四个任务是,在A板输入,然后在B板进行显示并且进行运算,采取蓝牙通信的方式。首先我们解决第一个问题蓝牙通信,实习老师发的是hc-05蓝牙模块,我之前用做过蓝牙遥控小车,所以基本上主从模式很快就可以配好,这里推荐给大家一篇博客。
(7条消息) 蓝牙HC-05上电自动互联(最详细教程)_CaT-CSDN博客_hc05自动连接https://blog.csdn.net/exm_further/article/details/91127481这里要说明一下,蓝牙配好之后,通信的方式我们还是用的串口通信。我们可以把蓝牙直接看成导线使用,一次发一个字节。
蓝牙配好之后,接下来就是计算器程序的编写。我们可以这样想,不管是加减乘除运算,计算的格式都是A_B=C的这种形式,‘_’可以是加减乘除。在A板(主机)我们循环扫描矩阵键盘,并设置每个按键对应数字和加减乘除等的对应关系。当按下一个按键时,通过串口发送对应的字符。B板(从机)在接收到字符之后进行判断是数字还是加减乘除等,如果是数字则判断是第一个还是第二个数字,如果是加减乘除则把对应的标志位设置成相对应的数字,如果是等则根据加减乘除的标志位和记录的第一个和第二个数来计算结果。以上的操作在判断完成之后都会实时的显示在oled上。具体的详细信息,我在代码里面都有注释,大家可以好好看看思考一下。
代码链接:https://pan.baidu.com/s/1ssYG3fslDiQvrLFnPoG7Lw
提取码:4s7k
Vincent-NJW
版权声明:本文为CSDN博主「NJWZS」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/NJWZS/article/details/122452410
说明:对于主从蓝牙计算器项目中的代码都是本人经过思考之后自行创作出来的,没有经过任何的网上抄录,由于课程实习的要求不高,所以我就没有对一些出现的bug进行修改(没有删除功能等)。但是基本的加减乘除都可以实现,包括在一次运算完成之后可以直接进行第二次运算,不需要复位。
我的风格就是先上代码:由于代码比较长,包含关系较为复杂(也算是个比较全面的小项目),所以我会在文章结尾以百度网盘链接的形式展示给大家。
硬件方面:板子用的stm32vet6 hc-05蓝牙模块 iic0.96寸oled 。开发板是学校实习发的,上面有许多的外设模块,我们要用的的有4个独立按键和矩阵键盘以及ds18b20温度传感器。由于开发板是学校的资源,老师也重点强调了不可以向外发布(我觉得非常没有这样必要,我觉得在学习的过程中要保持开源和互相沟通的心理,这样做.......) ,所以这里我就不提供原理图了。
软件方面:本次实习有四个任务,我把四个任务的代码全部整合到了一起,就是在刚开始的界面oled会提示你选择进入那个任务,并按照提示不同的按键选择不同的任务。
前两个任务太过简单,就没有讲的必要,就是基础的按键控制灯,只不过第二个任务用的是矩阵键盘。讲的话浪费大家时间也有失我的水准。
直接从第三个任务讲起。第三个任务是,用ds18b20测量温度,温度越高,亮的led灯就越多。是不是也是很简单,作为一个合格的嵌入式软件工程师应该很快就会想出解决的方法。唯一麻烦的就是对于ds18b20的温度读取上,这里我偷了个懒,直接从淘宝上找商家要的代码,然后改个数据引脚就行。但是对于嵌入式学习来说,最核心最重要的就是对于驱动的编写上,ds18b20是单总线协议的芯片,我曾经写过dht11的驱动代码,也是单总线协议,上手ds18b20的驱动相信也不会很难,但是由于实习时间比较紧张,就直接拿现成的用了,但是建议大家在时间充裕的条件下还是好好的研究芯片的时序图,写写驱动代码,还是很好玩的。
第四个任务。第四个任务我个人认为是相对较为难一些的,毕竟几乎用了我一个小下午的时间。
第四个任务是,在A板输入,然后在B板进行显示并且进行运算,采取蓝牙通信的方式。首先我们解决第一个问题蓝牙通信,实习老师发的是hc-05蓝牙模块,我之前用做过蓝牙遥控小车,所以基本上主从模式很快就可以配好,这里推荐给大家一篇博客。
(7条消息) 蓝牙HC-05上电自动互联(最详细教程)_CaT-CSDN博客_hc05自动连接https://blog.csdn.net/exm_further/article/details/91127481这里要说明一下,蓝牙配好之后,通信的方式我们还是用的串口通信。我们可以把蓝牙直接看成导线使用,一次发一个字节。
蓝牙配好之后,接下来就是计算器程序的编写。我们可以这样想,不管是加减乘除运算,计算的格式都是A_B=C的这种形式,‘_’可以是加减乘除。在A板(主机)我们循环扫描矩阵键盘,并设置每个按键对应数字和加减乘除等的对应关系。当按下一个按键时,通过串口发送对应的字符。B板(从机)在接收到字符之后进行判断是数字还是加减乘除等,如果是数字则判断是第一个还是第二个数字,如果是加减乘除则把对应的标志位设置成相对应的数字,如果是等则根据加减乘除的标志位和记录的第一个和第二个数来计算结果。以上的操作在判断完成之后都会实时的显示在oled上。具体的详细信息,我在代码里面都有注释,大家可以好好看看思考一下。
代码链接:https://pan.baidu.com/s/1ssYG3fslDiQvrLFnPoG7Lw
提取码:4s7k
Vincent-NJW
版权声明:本文为CSDN博主「NJWZS」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/NJWZS/article/details/122452410
暂无评论