简易频率计详细文档和代码.rar
(663.26 KB, 售价: 3 E币)
1.简介:数字频率计主要由四个部分组成:时基电路,整形电路,控制电路和显示电路组成。在一个测量周期过程中,由时基电路产生一标准时间信号控制阀门,调节时基电路中的电阻可产生需要的标准时间信号。信号输入整形电路中,经过整形,输出一方波,通过阀门后,计时器对其计数。当计数完毕,时基电路输出一个上升沿,使锁存器打开,计数器计数结果输入译码器,从而让显示器显示,达到测量频率的目的。文件包括设计电路图,设计源代码与设计报 2.目标:本设计主要完成以下目标: 1.测量信号输入幅度1V~5V方波,频率为1kHz~10kHz,测量精度1%,信号输入幅度1V~5V三角波,频率为1kHz~10kHz,测量精度1%,信号输入幅度2V~5V正弦波,频率为1kHz~10kHz,测量精度1%; 2.当输入信号幅度大于15V时,具有报警功能,测量结果为数字显示; 3.测量具有串口通信功能; 4.信号输入幅度为1V~10V脉冲,频率为20Hz~1kHz时,测量并计算占空比。 3.硬件设计: 3.硬件设计原理硬件电路图:
1.测频部分:先对输入信号进行波形转换,通过一个过零比较器将三角波、正弦波转化为方波,之后将将方波输入单片机 口进行波形测试。 2.限幅报警部分:输入信号经过D1变成半波信号,之后经过C3,C4,C5,C6,C7进行整流成为幅值直流信号,之后将信号输入电位器进行分压,保证15v电压经过电位器后剩余3.3v电压。最后输出到端口上与3.3v电压进行比较,将比较结果输入单片机 口。 3.单片机供电部分:通过供电模块输出3.3v电压供给stm32单片机。 4.软件设计原理: 硬件部分会将所有波形统一成方波输入。使用TIM3与TIM4计时器。TIM3进行波形捕捉。TIM3捕捉波形的上升沿或者下降沿。开始计数,知道捕捉到相对应的上升沿或者下降沿。根据所计数的多少即可计算出波形的占空比。每次捕捉到上升沿且之前为低电平,频率计数加一。TIM4计数器用来计数一秒,当TIM4计数满一秒时,发生TIM4中断,根据TIM3的频率计数,即可计算出输入波形的频率。 部分源码 - void TIM3_Cap_Init(uint16_t arr, uint16_tpsc) //TIM3用于输入捕获
- {
- GPIO_InitTypeDefGPIO_InitStructure;
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- TIM_ICInitTypeDef TIM3_ICInitStructure;
- NVIC_InitTypeDef NVIC_InitStructure;
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); //使能TIM3时钟
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能GPIOA时钟
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //选择6号引脚
- GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IPD; //输入下拉
- GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA6
- GPIO_ResetBits(GPIOA,GPIO_Pin_0); //PA6下拉
- //初始化定时器3 TIM3
- TIM_TimeBaseStructure.TIM_Period= arr; //设定计数器自动重装值
- TIM_TimeBaseStructure.TIM_Prescaler=psc; //预分频器
- TIM_TimeBaseStructure.TIM_ClockDivision= TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim
- TIM_TimeBaseStructure.TIM_CounterMode= TIM_CounterMode_Up; //TIM向上计数模式
- TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);
- //初始化TIM3输入捕获参数
- TIM3_ICInitStructure.TIM_Channel= TIM_Channel_1; //CC1S=01选择输入端 IC1映射到TI1上
- TIM3_ICInitStructure.TIM_ICPolarity =TIM_ICPolarity_Rising; //上升沿捕获
- TIM3_ICInitStructure.TIM_ICSelection =TIM_ICSelection_DirectTI; //映射到TI1上
- TIM3_ICInitStructure.TIM_ICPrescaler =TIM_ICPSC_DIV1; //配置输入分频,不分频
- TIM3_ICInitStructure.TIM_ICFilter = 0x00; //IC1F=0000 配置输入滤波器 不滤波
- TIM_ICInit(TIM3,&TIM3_ICInitStructure);
- //中断分组初始化
- NVIC_InitStructure.NVIC_IRQChannel= TIM3_IRQn; //TIM3中断
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0; //先占优先级0级
- NVIC_InitStructure.NVIC_IRQChannelSubPriority= 0; //从优先级0级
- NVIC_InitStructure.NVIC_IRQChannelCmd= ENABLE; //IRQ通道被使能
- NVIC_Init(&NVIC_InitStructure);
- TIM_ITConfig(TIM3,TIM_IT_CC1,ENABLE);
- TIM_Cmd(TIM3,ENABLE ); //使能定时器3
复制代码检测结果 当正弦波的频率为5khz时,数字频率计显示结果为 当方波的频率为8khz时,数字频率计显示结果为 当输入信号幅度大于15V时,绿灯被点亮,进行报警
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|