功能介绍:
stm32单片机通过串口将温度数据在上位机软件中显示,上位机软件可以将温度数据保存在mysql数据库中,同时能对数据进行增删改查。
前期准备:
1、安装Visual Stdio 2013
2、安装MySQL数据库 安装教程
3、下载、安装mysql odbc驱动,mysql-connector-odbc-8.0.28-win32.msi
硬件准备:
1、单片机,32、51都行
2、温度传感器DS18B20
3、USB转TTL模块,保证能够实现串口通信
4、ST-LINK下载器,用于下载32单片机程序
功能演示:
上位机软件
数据库
代码实现:
32代码:
main.c文件
#include "system.h"#include "SysTick.h"#include "led.h"#include "usart.h"#include "ds18b20.h"int main(){float temper;SysTick_Init(72);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级分组 分2组LED_Init();USART1_Init(9600);while(DS18B20_Init()){printf("DS18B20检测失败,请插好!\r\n");delay_ms(500);}printf("DS18B20检测成功!\r\n");while(1){temper=DS18B20_GetTemperture();printf("Temp:%.1fC\r\n",temper);delay_ms(1500);}}
上位机软件代码:
关注博主,并且有礼貌地问我拿就行了。
关于数据库的一些操作:
使用管理员身份运行cmd命令e: //我的数据库在e盘//把当前路径修改为:…\mysql-8.0.18-winx64\bin。cd E:\DataBase\mysql-8.0.25-winx64\bin //启动服务,名字是localmysql net start localmysql //登陆数据库,用户名root mysql -u root -p //输入密码123456 // 新建数据库uartdb_csdncreate database uartdb_csdn; //连接数据库uartdb_csdnuse uartdb_csdn; //新建数据表create table mytable(id int primary key, data varchar(10), time varchar(30)); //插入数据insert into mytable(id,data,time) values(1,26, '2022-3-26 20:06:30');//查看mytable表中所有数据select * from mytable;//删除mytable表drop table mytable; //现在不删
通过以上操作,我们就创建了一个mytable的数据表,接下来就是通过上位机软件将温度数据存储在这张表中。
修改上位机代码:
拿到我的代码后,如果想要将别的数据存储到自己的数据库,可以这样操作。
1、先移除/删除mytable的源文件和头文件
选中工程名称右击-》添加-》类
MFC-》MFC ODBC使用者-》确定
选中快照-》数据源(S)…
新建(N)…
选择MySQL ODBC 8.0 UniCode Driver,若无此选项,需要安装mysql odbc驱动
预览®…
给数据源起个名字,然后保存
下一步-》完成
按照下面填写,root为数据库用户名,Password为数据库密码-》ok
选择我们刚刚新建的数据源dataSource2.dsn-》确定
填写密码后OK
选中我们之前在数据库创建的mytable数据表-》确定
完成
正常情况,点确定即可
编译后出现如下错误,把它(#error…)注释掉即可
重定义错误删掉或注释掉
找到mytable.c文件,注释掉或删掉重复的内容,将6改为3,因为我们只是插入3个数据(id,data,time)。
继续注释掉/删掉重复的
解释下,为什么会出现重复:因为我之前创建的数据表也有id、data、time
在ThreadComm.cpp文件中从81行到93行就是将串口发送来温度数据截取出来,然后将数据赋值给gData这个全局变量,因为再32代码中有printf(“Temp:%.1fC\r\n”,temper);故我们可以定位到温度数据。
接上单片机,运行上位机软件,数据可以正常存储在数据库中
完毕
需要注意的几点:
1、我的串口是COM3,你们的串口号不一定是这个
2、数据表的名字最好用mytable,不然得多改几处地方
为了让别人的电脑也可以运行我们的上位机软件,可以这样做:
1、选中项目名称-》右击-》配置属性-》常规-》MFC的使用-》在静态库中使用MFC-》应用
C/C+±》代码生成-》运行库-》多线程(/MT)-》确定
3、最后再运行下,重新生成.exe文件
在工程文件下有个WinDemo.exe文件,可以双击它运行上位机软件。
鉴于博主比较忙,需要代码的请自取
链接:https://pan.baidu.com/s/1nzRv5vD_WZZkSZh1mrfDUA?pwd=q69t
提取码:q69t
来源地址:https://blog.csdn.net/NICHUN12345/article/details/123765121