标题:
用stm32C8T6检测波形和占空比程序 使用到了外部搭建的过零比较器
[打印本页]
作者:
64639F
时间:
2021-11-26 15:41
标题:
用stm32C8T6检测波形和占空比程序 使用到了外部搭建的过零比较器
测量占空比使用到了外部搭建的过零比较器
单片机源程序如下:
#include "main.h"
#include "stm32f10x.h"
#include "stdio.h"
#include "my_adc.h"
#include "my_time.h"
#include "my_gpio.h"
#include "stm32f10x_usart.h"
#include "public.h"
#include "Lcd_f.h"
#include "my_oled.h"
int main()
{
u16 i=0;
u8 kong[]={" "};
adc_init();
exti_init();//频率
GPIOA_init();//作电压调档 初始为GPIO7set 4档
GPIOB_init();
GPIOC_init();
TIMER2_init(65534,71);//频率计数
TIMER4_init(65534,71);
TIMER3_init(99,7199);//10ms
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2
OLED_Init(); //初始化OLED
OLED_Clear();
time_buzzer=25;
while(1)
{
if(signal_time==100)//如果1s没有收到触发外部中断(没有信号输入)
{
OLED_Clear();//清屏
}else if(signal_time>100)//如果1s后没有检测到外部中断
{
OLED_no_signal();//显示无信号
bit_clear=0;//清屏标志位
BX=0;
}
if(signal_time<100)//判断是否有信号
{
//=====显示=====//
if(bit_oled)//每1s更新标志位 更新显示信息
{
if(bit_clear==0)
{
OLED_Clear();
bit_clear=1;
}
Data_average();//求函数平均值
OLED_BX();//显示波形
OLED_frequency();//显示频率
// if(BX==2)
// {
OLED_Duty_cycle();//显示占空比
// }
// else
// {
// OLED_ShowString(70,0,kong,12);
// }
OLED_Vpp();//显示峰峰值
OLED_TEXT();
bit_oled=0;
}
if((Txet_BX_bit==1)&&(Duty_cycle_bit==1))
{
FB_pd_main_V();
Txet_BX_bit=0;
Duty_cycle_bit=0;
}
//====判断方波===//
Text_ADC();//检测电压范围
//=====ADC检测=====//
// if(bit_Text_V==1)//如果标志位为1 检测电压范围
// {
//
// }else
// {
// if(Duty_cycle_bit)
// {
//// FB_pd_main_V();
// Duty_cycle_bit=0;
// }
//
// }
}
}
}
复制代码
Keil代码下载::
C8T6_text_BX_7.7z
(597.37 KB, 下载次数: 21)
2021-11-26 20:43 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1