|
準備材料:正點原子探索者開發(fā)板(只要帶4.3寸屏幕的STM32F407ZGT6開發(fā)板就行),4.3寸屏幕。本套程序全部使用的正點原子STM32的庫,相信廣大嵌入式愛好者都選擇正點原子的吧,適合入門參考學習。另外鄭重提醒所有的測試都是使用STM32F407內(nèi)部資源,測波形時電壓不能高于5V,如果想擴大測試范圍,外部必須衰減電壓信號。頻率測試部分是利用軟件測試,精度不是很高,>20KHz時頻率測試誤差較大。本套設(shè)備適合個體開發(fā)戶,市面上的示波器主要是太貴了買不起,而且多數(shù)情況只是想看看單片機發(fā)出的波形是否正常,對于嵌入式開發(fā)人員來說確實很少接觸到高壓。
如果您有探索者(帶4.3寸屏幕接口的STM32F407ZGT6開發(fā)板),下載程序進去后可以直接看到如下圖的界面。
制作出來的實物圖如下:
萬用表:
IMG202004021151hei9.jpg (3.05 MB, 下載次數(shù): 62)
下載附件
萬用表
2020-4-2 11:59 上傳
信號發(fā)生器:
IMG_20200402_115351.jpg (2.41 MB, 下載次數(shù): 65)
下載附件
信號發(fā)生器
2020-4-2 11:58 上傳
示波器:
IMG_20200402_115313.jpg (2.5 MB, 下載次數(shù): 65)
下載附件
示波器
2020-4-2 11:58 上傳
開機界面:
IMG_20200402_115245.jpg (2.75 MB, 下載次數(shù): 77)
下載附件
開機界面
2020-4-2 11:57 上傳
以下是部分代碼(使用正點原子的庫)
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "beep.h"
#include "key.h"
#include "lcd.h"
#include "dac.h"
#include "adc.h"
#include "timer.h"
#include "waveform.h"
#include "oscilloscope.h"
#include "timer.h"
#include "stm32f4xx_it.h"
#include "exti.h"
#include "touch.h"
#include "digital_multimeter.h"
//#include "string.h"
u8 welcom_flag=1;//welcom_flag為1時 進行主屏幕觸摸檢測
u8 SG_flag=1;//SG_flag為1 函數(shù)發(fā)生器才可以進行循環(huán)判斷
u8 OSC_flag=1;//OSC_flag為1 數(shù)字示波器才可以進行循環(huán)
u8 DM_flag=1;//DM_flag為1 數(shù)字萬用表才可以進行循環(huán)
//得到觸摸屏的輸入
u8 wel_get_keynum(void)
{
u8 key_touch=0;
tp_dev.scan(0);
if(tp_dev.sta&TP_PRES_DOWN) //觸摸屏被按下
{
if(tp_dev.x[0]<280&&tp_dev.x[0]>20&&tp_dev.y[0]<340&&tp_dev.y[0]>140)key_touch=1;
if(tp_dev.x[0]<570&&tp_dev.x[0]>310&&tp_dev.y[0]<320&&tp_dev.y[0]>160)key_touch=2;
if(tp_dev.x[0]<760&&tp_dev.x[0]>620&&tp_dev.y[0]<390&&tp_dev.y[0]>110)key_touch=3;
}
return key_touch;
}
int main(void)
{
u8 welcome_key;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置系統(tǒng)中斷優(yōu)先級分組2
delay_init(168);//初始化延時函數(shù)
uart_init(115200);//初始化串口波特率為115200
LED_Init();//初始化LED
BEEP_Init();//初始化蜂鳴器端口
KEY_Init();//按鍵初始化
LCD_Init();//初始化LCD FSMC接口
Adc_Init();//初始化ADC
DM_Adc_Init();//初始化數(shù)字萬用表中的ADC
DacGPIO_Configuration();//DAC初始化
DM_Init();
TIM9_CH1_Cap_Init(0XFFFF,84-1); //以1Mhz的頻率計數(shù)
//TIM5_PWM_Init(500-1,84-1); //84M/84=1Mhz的計數(shù)頻率,重裝載值500,所以PWM頻率為 1M/500=2Khz.
EXTIX_Init();//外部中斷初始化
tp_dev.init();//初始化觸摸屏
Welcome_Background();
while(welcom_flag==1)
{
welcome_key=wel_get_keynum();
if(welcom_flag==1)
{
switch(welcome_key)
{
case 1 :
{
welcom_flag=0;
OSC_flag=1;
LCD_Clear(WHITE);
Osc_Welcome();
break;
}
case 2 :
{
welcom_flag=0;
SG_flag=1;
LCD_Clear(WHITE);
SG_Welcome();
break;
}
case 3 :
{
welcom_flag=0;
DM_flag=1;
LCD_Clear(WHITE);
DM_Run();
break;
}
default :break;
}
}
//可以用來控制開關(guān)機等
// key=KEY_Scan(0);
// if(key==KEY2_PRES)//KEY2按下
// {
// }
delay_ms(100);
{
LED1 = !LED1;
}
}
} 以上為主程序部分
|
評分
-
查看全部評分
|