找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4920|回复: 0
收起左侧

STM32直流电机霍尔测速 拉力检测 WIFI无线ESP8266无线传输控制LCD1602显示程序

[复制链接]
ID:374948 发表于 2019-8-20 16:46 | 显示全部楼层 |阅读模式
显示模块:1602 液晶显示
供电方式: USB  
输入方式:拉力 霍尔传感器
输出方式:显示屏 WIFI电脑PC上位机
控制芯片:STM32F103RCT6

功能说明:  
1、按键可以控制电机的转动,通过霍尔传感器检测直流电机的转速,并显示出来
2、拉力检测,可以检测受力,同时显示屏显示数据。
3、电脑连接ESP8266wifi,可以接收数据。

显示
u8  one[]="   V=0000rad/min";          //第一行显示转速
u8  two[]="   F=00000      ";          //第二行显示拉力

PC接收数据
u8 send[]="V=0000 F=00000\r\n";//发送数组

制作出来的实物图如下:
实物.JPG

电路原理图如下:
0.png

单片机源程序如下:
  1. #include "sys.h"
  2. #include "usart.h"               
  3. #include "delay.h"        
  4. #include "led.h"
  5. #include "1602.h"
  6. #include "hx711.h"
  7. #include "exti.h"
  8. #include "timer.h"

  9. unsigned int  k;
  10. unsigned long HX711_Buffer = 0;
  11. unsigned long Weight_Maopi = 0,Weight_Shiwu = 0;

  12. u8  one[]="   V=0000rad/min";          //第一行显示
  13. u8  two[]="   F=00000      ";          //第二行显示

  14. unsigned int pul=0,speed=0;         
  15. int sendflag=0;
  16. u8 send[]="V=0000 F=00000\r\n";//发送数组
  17. void program() //循环体
  18. {
  19.                     HX711_Buffer = Read_HX711();                //检测拉力
  20.                           HX711_Buffer = HX711_Buffer/100;
  21.                           if(HX711_Buffer > Weight_Maopi)        //防止反向值               
  22.                           {
  23.                                 Weight_Shiwu = HX711_Buffer;
  24.                                 Weight_Shiwu = Weight_Shiwu - Weight_Maopi;                                //获取实物的AD采样数值
  25.                           }else//反向受力则拉力为0
  26.                                 {
  27.                                         Weight_Shiwu=0;
  28.                                 }
  29.                                 

  30.                 two[5]=Weight_Shiwu/10000+'0';                //显示拉力数值        
  31.                 two[6]=Weight_Shiwu%10000/1000+'0';               
  32.                 two[7]=Weight_Shiwu%1000/100+'0';
  33.                 two[8]=Weight_Shiwu%100/10+'0';
  34.                 two[9]=Weight_Shiwu%10+'0';
  35.                                 
  36.                 one[5]=speed/1000+'0';//显示速度值
  37.                 one[6]=speed%1000/100+'0';
  38.                 one[7]=speed%100/10+'0';
  39.                 one[8]=speed%10+'0';
  40.                                 
  41.                 LCD_Write_String(0,0,one);  //显示第一行
  42.                 LCD_Write_String(0,1,two); //显示第二行
  43.                                 
  44.                 if(sendflag>=6)  //定时发送数据给电脑
  45.                 {
  46.                         sendflag=0;
  47.                         send[2]=one[5]; send[3]=one[6]; send[4]=one[7]; send[5]=one[8];
  48.                         send[9]=two[5];send[10]=two[6];send[11]=two[7];send[12]=two[8];send[13]=two[9];
  49.                         printf("AT+CIPSEND=0,15\r\n");
  50.                         delay_ms(100);
  51.                         printf(send);
  52.                         delay_ms(300);
  53.                         
  54.                 }
  55.                
  56.                

  57. }

  58. int main(void)
  59. {        
  60.         u8 i=0;
  61.          Stm32_Clock_Init(9);        //系统时钟设置
  62.         uart_init(72,9600);                 //串口初始化为9600
  63.         TIM3_Int_Init(5000,7199);//10Khz的计数频率,计数到5000为500ms
  64.         delay_init(72);                            //延时初始化
  65.         LED_Init();                                  //初始化与LED连接的硬件接口        
  66.         LCD1602_Init();     //液晶显示初始化
  67.         delay_ms(500);
  68.         HX711_Init();  //受力传感器
  69.         EXTI_Init();  //外部中断
  70.         LCD_Write_String(0,0,one);  //显示第一行
  71.         LCD_Write_String(0,1,two); //显示第二行
  72.         
  73.         
  74.         HX711_Buffer = Read_HX711();
  75.   Weight_Maopi = HX711_Buffer/100;         //先检测初始化受力
  76.         
  77.         delay_ms(1000);           //延时
  78.         printf("AT+CIPMUX=1\r\n"); //配置多连接的模式
  79.         delay_ms(800);                 //延时
  80.         printf("AT+CIPSERVER=1,8080\r\n");  //配置端口号
  81.         delay_ms(800);

  82.         while(1)
  83.         {
  84.                         
  85.                         program(); //程序
  86.                
  87.                         delay_ms(10); //程序执行提示
  88.                         i++;
  89.                         if(i%5==0)
  90.                         {
  91.                                 LED0=!LED0;
  92.                         }
  93.         }
  94. }
复制代码

所有资料51hei提供下载:
资料包.7z (659.7 KB, 下载次数: 96)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表