找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5860|回复: 3
收起左侧

三相逆变SPWM波产生和双向DCDC的stm32源程序

  [复制链接]
ID:231223 发表于 2017-9-5 19:06 | 显示全部楼层 |阅读模式
三相逆变SPWM波产生和双向DCDC
/**********************************************************************************
** 实验名:ADC外设的使用
** 使用编译环境:MDK4.72A
** 固件库(ST) Version: STM32F10x_StdPeriph_Driver V3.50
** 使用外设:
**********************************************************************************/      
测试说明:
编译并下载程序。

测试结果:
下载完程序后,完成ADC的配置,并将ADC采样值通过串口显示在串口调试助手的窗口界面上和在OLED上显示。

硬件连接:
LED1--->PC13
LED3--->PG15
USART1:PA9--MCU_TX    PA10---MCU_RX

OLED屏
TP_NCS(CS)----------PA4
TP_SCK(D0_SCK)------PA5
TP_MISO(D/C)--------PA6   
TP_MOSI(D1_SDIN)----PA7   
VCC-----------------3.3
GND-----------------GND

ADC Channel_0-->PA0

0.png

单片机源程序如下:
  1. /******************** (C) COPYRIGHT  源地工作室 ********************************
  2. * 文件名  :main.c
  3. * 描述    :完成ADC的配置,并将ADC采样值通过串口显示在串口调试助手的窗口界面上和在OLED上显示。
  4. * 库版本  :V3.50
  5. * 作者    :zhuoyingxingyu
  6. * 版本更新: 2017-04-20
  7. * 调试方式:J-Link-OB
  8. **********************************************************************************/       

  9. //头文件
  10. #include "stm32f10x.h"
  11. #include "usart.h"
  12. #include "led.h"
  13. #include <stdio.h>
  14. #include "systick.h"
  15. #include "OLED.h"
  16. #include "fonts.h"
  17. #include "ADC.h"

  18. /**
  19.   * @file   main
  20.   * @brief  Main program.
  21.   * @param  None
  22.   * @retval None
  23.   */
  24. void OLED_Showf(  char a )

  25. {          
  26.      int AH;
  27.      float AL;
  28.      char ADC_V=a;
  29.          if(ADC_V>=0)
  30.                 {
  31.                 AH=ADC_V/1;
  32.         AL=(int)(ADC_V*100)%100;
  33.             OLED_ShowNum (42,6,AH,3,16);//显示ASCII字符
  34.                 OLED_ShowChar(66,6,46,16);//显示ASCII字符        .
  35.                 if(AL==0)
  36.                 OLED_ShowNum (70,6,AL,1,16);            
  37.             if(AL!=0)  
  38.                 OLED_ShowNum (70,6,AL,2,16);//显示ASCII字符
  39.                 }
  40.      if(ADC_V<0)
  41.          {                
  42.          OLED_ShowChar(30,6,45,16);//显示ASCII字符
  43.          OLED_Showf(0-ADC_V);

  44.          }
  45.                     OLED_ShowChar(90,6,37,16);//显示ASCII字符  %
  46. }


  47. int main(void)
  48. {
  49.         uint16_t Temp_Value;
  50.         float ADC_Value=0.000;
  51.          char S;
  52.            DAC_Configuration();//初始化DAC模块
  53.                   SYSTICK_Init();                     //延时函数初始化          
  54.                 NVIC_Configuration();          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级         LED_Init();                             //LED端口初始化
  55.         //                delay_1ms(8000);
  56.                 OLED_Init();                        //初始化OLED  
  57.                 OLED_Clear()          ;
  58.         OLED_ShowString(4,3,"Vo=",16);
  59.         OLED_ShowString(85,3,"V",16);
  60.         OLED_ShowString(4,6,"S=",16);
  61.         ADC_Configuration();
  62.         LED_GPIO_Config();//初始化LED
  63.         USART1_Config();

  64.         while (1)
  65.         {         float i;
  66.          float b,dac_data;
  67.             int AH;
  68.                 float AL;
  69.                 Temp_Value = ADC_GetConversionValue(ADC1);
  70.                 ADC_Value = (3.3/4096)*Temp_Value;                            /*将AD值转换为电压值*/
  71.                 printf("\r\n The Temp_Value is %d \r\n",Temp_Value);
  72.                 printf("\r\n The Value is %f \r\n",ADC_Value);
  73.                 AH=ADC_Value/1;
  74.             S=(ADC_Value-3.3)/3.3*100;

  75.                 AL=(int)(ADC_Value*1000)%1000;
  76.             OLED_ShowNum (32,3,AH,2,16);//显示ASCII字符
  77.                 OLED_ShowChar(50,3,46,16);//显示ASCII字符
  78.                 if(AL==0) OLED_ShowNum (52,6,AL,1,16);
  79.             OLED_ShowNum (52,3,AL,3,16);//显示ASCII字符
  80.                 OLED_Showf(S);

  81.                 delay_ms(500);
  82.                 dac_data=0;
  83.                 i=0.151;
  84.                  dac_data=i/3.30*4096;
  85.         DAC_SetChannel1Data(DAC_Align_12b_R,dac_data);//设置输出的电压
  86. ……………………

  87. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
DC双向和三相逆变.rar (918.22 KB, 下载次数: 264)
回复

使用道具 举报

ID:574779 发表于 2022-11-14 00:14 | 显示全部楼层
不错,优秀!
回复

使用道具 举报

ID:614879 发表于 2022-12-19 15:18 | 显示全部楼层

不错,有原理图更好了
回复

使用道具 举报

ID:64589 发表于 2023-2-7 09:18 | 显示全部楼层
解压密码链接无效,打不开。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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