找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5679|回复: 4
收起左侧

STM32温度采集电路,串口发送到MATLAB画出波形图的源码

  [复制链接]
ID:76181 发表于 2018-11-9 16:39 | 显示全部楼层 |阅读模式
温度检测,画出实时波形图

matlab_serial源码:
  1. clc;  
  2. global t;  
  3. global x;  
  4. global m;  
  5. global ii;  
  6. t = [0];  
  7. m = [0];  
  8. ii = 0;  
  9. x = -1;  
  10. p = plot(t,m,'EraseMode','background','MarkerSize',5);  
  11. axis([x x+100 1.6 2]);  
  12. grid on;   
  13.   
  14. try  
  15.     s=serial('com4');  
  16. catch  
  17.     error('cant serial');  
  18. end  
  19. set(s,'BaudRate', 115200,'DataBits',8,'StopBits',1,'Parity','none','FlowControl','none');  
  20. s.BytesAvailableFcnMode = 'terminator';  
  21. s.BytesAvailableFcn = {@callback,p};   
  22. fopen(s);   
  23. pause;  
  24. fclose(s);  
  25. delete(s);  
  26. clear s  
  27. close all;  
  28. clear all;  

  29.   
复制代码



单片机源程序如下:
  1. /**
  2.   ******************************************************************************
  3.   * @file    芯片温度
  4.   * @author  fire
  5.   * @version V1.0
  6.   * @date    2015-xx-xx
  7.   * @brief   芯片温度例程
  8.   ******************************************************************************
  9.   ******************************************************************************
  10.   */


  11. // 通过ADC1通道16获取芯片内部温度,并通过串口打印到电脑串口调试助手显示

  12. #include "stm32f10x.h"
  13. #include "./usart/bsp_usart.h"
  14. #include "./temp/bsp_tempad.h"

  15. /* ADC1转换的电压值通过DMA方式传到sram*/
  16. extern __IO u16 ADC_ConvertedValue;


  17. /*计算后的温度值*/
  18. u16 Current_Temp;         


  19. /* 延时        */
  20. void delay_ms(u16 nms)
  21. {
  22. u32 temp;
  23.         SysTick->LOAD = 9000*nms;
  24.         SysTick->VAL=0X00;//清空计数器
  25.         SysTick->CTRL=0X01;//使能,减到零是无动作,采用外部时钟源
  26. do
  27. {
  28.         temp=SysTick->CTRL;//读取当前倒计数值
  29. }while((temp&0x01)&&(!(temp&(1<<16))));//等待时间到达
  30.         SysTick->CTRL=0x00; //关闭计数器
  31.         SysTick->VAL =0X00; //清空计数器
  32. }



  33. /*
  34. * 函数名:main
  35. * 描述  :主函数
  36. * 输入  : 无
  37. * 输出  :无
  38. */
  39. int main(void)
  40. {                 
  41.         USART_Config();

  42.         Temp_ADC1_Init();

  43.         printf( "\r\n");        

  44.   while (1)
  45.   {

  46.         delay_ms(1000);      // 延时
  47.         
  48.         //计算方法1                                                                                                               
  49.           Current_Temp= (1.43- ADC_ConvertedValue*3.3/4096)*1000 / 4.3+ 25 ;
  50.         
  51.         //计算方法2
  52.         //Current_Temp=(V25-ADC_ConvertedValue)/AVG_SLOPE+25;        

  53.         //10进制显示
  54.         printf("%3d \r\n", Current_Temp);              
  55.          
  56.         //16进制显示                                                  
  57.          // printf("\r\n The current temperature= %04x \r\n", Current_Temp);                 
  58.   }
  59. }
复制代码

所有资料51hei提供下载:
ADC芯片温度.rar (291.35 KB, 下载次数: 59)

评分

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

查看全部评分

回复

使用道具 举报

ID:478002 发表于 2019-2-27 18:43 | 显示全部楼层
学习了,非常感谢
回复

使用道具 举报

ID:479575 发表于 2019-2-28 08:08 | 显示全部楼层
非常感谢!
回复

使用道具 举报

ID:643407 发表于 2020-1-3 09:08 来自手机 | 显示全部楼层
你好,能加个qq问一下,有关stm32与matlab联合应用的问题吗
回复

使用道具 举报

ID:24685 发表于 2020-6-6 17:34 | 显示全部楼层
太好了非常不错
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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