找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1422|回复: 1
收起左侧

基于STM32F103C8T6单片机的简易示波器程序

[复制链接]
ID:1088657 发表于 2023-7-20 20:07 | 显示全部楼层 |阅读模式
简易信号采集系统,文件现象和源程序如下。
3B43A71B8950F2207F14B7034A8A42E4.png

单片机源程序如下:
  1. #include "bsp_systick.h"
  2. #include "OLED_I2C.h"
  3. #include "bsp_i2c_gpio.h"
  4. #include "bsp_adc.h"
  5. #include "bsp_advanced_timer.h"
  6. #include <math.h>
  7. #include "pingmu.h"
  8. #include "PWM.h"
  9. #include "IC.h"

  10. #define pi 3.1415926535
  11. #define accur 0.015295
  12. extern uint16_t ConvData;
  13. extern unsigned char BMP1[];
  14. uint16_t ADValue;
  15. float Voltage;
  16. float max=0;
  17. float min=3.30;
  18. int main()
  19. {
  20.         PWM_Init();
  21.         OLED2_Init();
  22.         ADCx_Init();
  23.         IC_Init();
  24.         OLED2_ShowString(1, 1, "ADValue:");
  25.         OLED2_ShowString(2, 1, "max:0.00V");
  26.         OLED2_ShowString(3, 1, "min:0.00V");
  27.         OLED2_ShowString(4, 1, "Freq:0000000Hz");
  28.         uint8_t x;
  29.         OLED_Init();                                         
  30.         ADCx_Init();
  31.         AdvancedTim_Init();
  32.         Before_State_Update(accur*ConvData);
  33.         OLED_CLS();
  34.         while(1)
  35.         {
  36.         
  37.                
  38.                 for(x=0;x<128;x=(x+1)%128)
  39.                 {  
  40.                         
  41.                                 
  42.                         ADValue = AD_GetValue();
  43.                   Voltage = (float)ADValue / 4095 * 3.3/0.360;
  44.                  OLED2_ShowNum(1, 9, ADValue, 4);
  45.                 if(max<Voltage )
  46.                 {
  47.                         max=Voltage ;
  48.                 }
  49.                 OLED2_ShowNum(2, 5, max   , 1);
  50.                 OLED2_ShowNum(2,7, (uint16_t)(max   * 100) % 100, 2);
  51.                 if(min >Voltage )
  52.                 {
  53.                         min=Voltage ;
  54.                 }
  55.                 OLED2_ShowNum(3, 5, min    , 1);
  56.                 OLED2_ShowNum(3,7, (uint16_t)(min    * 100) % 100, 2);
  57.                         OLED_DrawWave(x,accur*ConvData);
  58.                 OLED2_ShowNum(4, 6, IC_GetFreq(), 7);
  59.                 }

  60.                
  61.         }
  62. }
复制代码
原理图:无
仿真:无
Keil代码下载: Keil代码.7z (194.19 KB, 下载次数: 37)
回复

使用道具 举报

ID:75737 发表于 2023-7-21 11:40 | 显示全部楼层
可以换一个大点的屏,这太小了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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