三相逆变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
单片机源程序如下:
- /******************** (C) COPYRIGHT 源地工作室 ********************************
- * 文件名 :main.c
- * 描述 :完成ADC的配置,并将ADC采样值通过串口显示在串口调试助手的窗口界面上和在OLED上显示。
- * 库版本 :V3.50
- * 作者 :zhuoyingxingyu
- * 版本更新: 2017-04-20
- * 调试方式:J-Link-OB
- **********************************************************************************/
- //头文件
- #include "stm32f10x.h"
- #include "usart.h"
- #include "led.h"
- #include <stdio.h>
- #include "systick.h"
- #include "OLED.h"
- #include "fonts.h"
- #include "ADC.h"
- /**
- * @file main
- * @brief Main program.
- * @param None
- * @retval None
- */
- void OLED_Showf( char a )
- {
- int AH;
- float AL;
- char ADC_V=a;
- if(ADC_V>=0)
- {
- AH=ADC_V/1;
- AL=(int)(ADC_V*100)%100;
- OLED_ShowNum (42,6,AH,3,16);//显示ASCII字符
- OLED_ShowChar(66,6,46,16);//显示ASCII字符 .
- if(AL==0)
- OLED_ShowNum (70,6,AL,1,16);
- if(AL!=0)
- OLED_ShowNum (70,6,AL,2,16);//显示ASCII字符
- }
- if(ADC_V<0)
- {
- OLED_ShowChar(30,6,45,16);//显示ASCII字符
- OLED_Showf(0-ADC_V);
- }
- OLED_ShowChar(90,6,37,16);//显示ASCII字符 %
- }
- int main(void)
- {
- uint16_t Temp_Value;
- float ADC_Value=0.000;
- char S;
- DAC_Configuration();//初始化DAC模块
- SYSTICK_Init(); //延时函数初始化
- NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 LED_Init(); //LED端口初始化
- // delay_1ms(8000);
- OLED_Init(); //初始化OLED
- OLED_Clear() ;
- OLED_ShowString(4,3,"Vo=",16);
- OLED_ShowString(85,3,"V",16);
- OLED_ShowString(4,6,"S=",16);
- ADC_Configuration();
- LED_GPIO_Config();//初始化LED
- USART1_Config();
- while (1)
- { float i;
- float b,dac_data;
- int AH;
- float AL;
- Temp_Value = ADC_GetConversionValue(ADC1);
- ADC_Value = (3.3/4096)*Temp_Value; /*将AD值转换为电压值*/
- printf("\r\n The Temp_Value is %d \r\n",Temp_Value);
- printf("\r\n The Value is %f \r\n",ADC_Value);
- AH=ADC_Value/1;
- S=(ADC_Value-3.3)/3.3*100;
- AL=(int)(ADC_Value*1000)%1000;
- OLED_ShowNum (32,3,AH,2,16);//显示ASCII字符
- OLED_ShowChar(50,3,46,16);//显示ASCII字符
- if(AL==0) OLED_ShowNum (52,6,AL,1,16);
- OLED_ShowNum (52,3,AL,3,16);//显示ASCII字符
- OLED_Showf(S);
- delay_ms(500);
- dac_data=0;
- i=0.151;
- dac_data=i/3.30*4096;
- DAC_SetChannel1Data(DAC_Align_12b_R,dac_data);//设置输出的电压
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
DC双向和三相逆变.rar
(918.22 KB, 下载次数: 264)
|