




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGEPAGE1集成運放參數測試儀設計報告學校:南京師范大學學校:南京師范大學組號:13組員姓名: 張銀柱組員姓名: 楊鋒組員姓名: 陳瀟摘要本系統采用STM32系統為核心器件,主要實現對通用型集成運算放大器輸入失調電壓、輸入失調電流、交流差模開環電壓增益和交流共模抑制比四項基本參數的測量。由于水平有限,現只是利用已有信號源,輸出給參數測試電路測量,主要完成硬件部分的搭建工作與輸出的顯示。關鍵詞:STM32,運放,輸入失調電壓,輸入失調電流,交流差模開環電壓增益,交流共模抑制比,硬件電路,顯示ABSTRACTThe
systemusesthe
STM32
systemasthecore
components,themainachievement
ofthe
general-purpose
integratedop-amp
inputoffset
voltage,
inputoffsetcurrent,AC
voltage
differential-mode
open-loop
gainand
AC
CMRR
fourbasicparameters
ofthe
measurement.
Asthe
level
islimited,
there
are
onlyusingthesignal
source,theoutput
parametersof
thetest
circuit
to
measure,
mainlytocomplete
thework
with
thehardware
partofthe
build
output
ofthe
show.KeyWord:STM32,amplifier,inputmaladjustedvoltage,inputmaladjustedcurrent,Exchangeopenloopgaindifferential-modevoltage,CMRAC,hardwarecircuit,display第1章設計任務及要求1.1設計任務設計并制作一臺能測試通用型集成運算放大器參數的測試儀,示意圖如圖1所示。圖1通用型集成運放參數測試儀框圖1.2設計要求1.2.1基本要求(1)能測試VIO(輸入失調電壓)、IIO(輸入失調電流)、AVD(交流差模開環電壓增益)和KCMR(交流共模抑制比)四項基本參數,顯示器最大顯示數為3999;(2)各項被測參數的測量范圍及精度如下(被測運放的工作電壓為±15V):VIO:測量范圍為0~40mV(量程為4mV和40mV),誤差絕對值小于3%讀數+1個字;IIO:測量范圍為0~4μA(量程為0.4μA和4μA),誤差絕對值小于3%讀數+1個字;AVD:測量范圍為60dB~120dB,測試誤差絕對值小于3dB;KCMR:測量范圍為60dB~120dB,測試誤差絕對值小于3dB;(3)測試儀中的信號源(自制)用于AVD、KCMR參數的測量,要求信號源能輸出頻率為5Hz、輸出電壓有效值為4V的正弦波信號,頻率與電壓值誤差絕對值均小于1%;(4)按照本題附錄提供的符合GB3442-82的測試原理圖(見圖2~圖4),再制作一組符合該標準的測試VIO、IIO、AVD和KCMR參數的測試電路,以此測試電路的測試結果作為測試標準,對制作的運放參數測試儀進行標定。1.2.2發揮部分(1)增加電壓模運放BWG(單位增益帶寬)參數測量功能,要求測量頻率范圍為100kHz~3.5MHz,測量時間≤10秒,頻率分辨力為1kHz;為此設計并制作一個掃頻信號源,要求輸出頻率范圍為40kHz~4MHz,頻率誤差絕對值小于1%;輸出電壓的有效值為2V±0.2V;(2)增加自動測量(含自動量程轉換)功能。該功能啟動后,能自動按VIO、IIO、AVD、KCMR和BWG的順序測量、顯示并打印以上5個參數測量結果;第2章方案比較與論證2.1信號源制作方案及論證2.1.1信號源制作方案暫時使用現有的信號源2.2運放參數測試電路方案及論證2.方案一:將(輸入失調電壓),(輸入失調電流),(交流差模開環電壓增益)和(交流共模抑制比),四項基本參數的測試原理圖,將各原理圖分別搭建起來,再根據所提供的標準方法來測量,從而得到標準值,而自動測量部分再加上STM32系統來分別控制三個模塊電路,該方法的優點是各功能模塊電路分開了,并沒有干擾的存在,而且操作簡單測量方便,但是由于三個電路模塊所用的元器件相同,存在資源的浪費,而且對各功能模塊的分開操作,使得“自動測量”這一意義不存在了,對工業自動化并沒有運用價值。也失去了我們發揮創新的部分,因而本設計我們未采用。aVIO、IIO電參數測試原理圖bAVD電參數的測試原理與測試原理圖cKCMR電參數的測試原理與測試原理圖圖2集成運放各參數測試原理圖方案二:考慮到各功能的模塊許多元器件相同,為了避免資源的浪費,同時為了使自動化的實現更方便,我們考慮將這三個功能模塊電路組合起來,放在一塊電路板上,通過用STM32系統控制繼電器的狀態來切換測量電路實現各功能模塊。電路圖如下圖3.圖3運放參數測試設計電路第3章系統硬件設計3.1總體設計思路對于一個系統的設計首先要對系統的任務及要求有一個明確的了解,再根據所提供的相關信息幫助,將整個系統功能分成各個功能模塊,從而實現系統整體功能。該系統的設計任務如下圖4:被測運放被測運放運放參數測試電路信號源顯示控制電路圖4通用型集成運放參數測試儀框圖根據系統設計的模塊劃分模塊來設計該系統,而該測試儀核心模塊為運放參數測試電路及信號源的設計(暫且用現成的信號源)。再分析設計任務,及設計要求,我們考慮用STM32系統開發板來作為控制電路,用I/O口控制小型繼電器的通斷,從而實現各功能電路的切換。同時,利用STM32系統開發版內部自帶的A/D轉換器,進行A/D采樣,將模擬量轉換為數字量,再將其通過其自帶顯示器顯示,則整個系統的硬件設計基本完成。系統硬件組成框圖如圖5:信號源信號源參數測試電路Stm32開發板控制顯示電路圖5系統硬件組成框圖3.2各模塊設計及參數運算3.2.1參數測量電路模塊圖6 參數測量電路模塊測量輸入失調電壓控制S1-1、S1-2閉合,S4斷開,S3接2,S5接2,用數字示波器測出輔助運放的輸出電壓VL0,則有: 輸入失調電壓 (3-1)測量輸入失調電流控制S1-1、S1-2斷開,S4斷開,S3接2,S5接2,用數字示波器測出輔助運放的輸出電壓VL1,則有: 輸入失調電流 (3-2)測量交流差模開環電壓增益控制S1-1、S1-2閉合,S4閉合,S3接2,S5接1,設信號源輸出電壓為Vs,測得輔助運放輸出電壓為VL0,則有交流差模開環電壓增益 (3-3)測量交流共模抑制比控制S1-1、S1-2閉合,S4閉合,S3接1,S5接1,設信號源輸出電壓為Vs,測得輔助運放輸出電壓為VL0,則有交流共模抑制比 (3-4)實現自動控制以及量程切換考慮到測量量程問題,因而我們將分成10K與90K電阻,并要求這兩個電阻的阻值嚴格滿足要求,因而我們考慮用可調電位器來實現,選用20K及100K的電位器來實現,從而較易達到阻值的要求,同時利用一個開關來切換量程,以使R3/(R3+Rf)的值存在10倍的關系,實現兩個量程的變換(0~4mv及4mv~40mv的變換);同理在測輸入失調電流時也同樣存在開關的切合。根據提供的參數,我們將R3設為100歐姆,接成兩電阻(10k與90k)的串聯,R接成1兆歐,R1=R2=30千歐。考慮到輔助放大器測試方法的要求,要求輔助運放的開環增益大于60dB,輸入失調電壓和失調電流值小。OP07的精度高失調電壓和失調電流較小,且不需要自校準電路,所以選擇OP07作為輔助運放。為了實現自動控制,我們只是將各開關換成了繼電器,由于繼電器的可控性,通過stm32I/O口來控制繼電器的通斷來實現各功能電路的切換,在標準電路后面與stm32連上,實現電路參數測試的自動化。從而大大簡化了電路的煩瑣程度。3.2.2繼電器驅動電路圖7 繼電器的驅動電路 如圖7,STM32的I/O口無法直接驅動繼電器,必須要接三極管來驅動,當GPIO輸出低電平繼電器吸合,當GPIO輸出為高電平,繼電器的銜鐵放開。3.2.3測試結果的顯示 測量VIO以及IIO時只需將OP07輸出的信號接到開發板的AIN1上,經過A/D轉換將模擬量轉換為數字量,然后通過軟件處理與運算將結果顯示在開發板的屏幕上。測量AVD和KCMR時需同時將信號源輸出信號接到AIN0以及將OP07輸出信號接到AIN1上,然后軟件處理后將結果顯示在開發板的屏幕上。第4章軟件設計 軟件方面主要是要實現測量電路的切換控制,自動測量,量程的切換,采集數據的處理以及測量結果的顯示。我們使用觸摸屏來控制切換測量電路和切換量程以及顯示測量結果。使用開發板自帶的ADC來采集數據。4.1程序設計框圖屏幕界面設計屏幕界面設計控制界面及結果顯示界面采集數據,數據處理及顯示結束開始系統初始化配置配置GPIO、ADC、TIM和觸摸屏觸摸屏中斷控制電路的切換以及量程的切換圖8 程序設計框圖4.1.1系統的初始化配置 主要包含GPIO、ADC、TIM以及觸摸屏的初始化配置,源程序如下:voidGPIO_Configuration(void){ GPIO_InitTypeDefGPIO_InitStructure; /*配置未使用的IO為模擬輸入*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB| RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD| RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOF| RCC_APB2Periph_GPIOG,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN; GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_Init(GPIOB,&GPIO_InitStructure); GPIO_Init(GPIOC,&GPIO_InitStructure); GPIO_Init(GPIOD,&GPIO_InitStructure); GPIO_Init(GPIOE,&GPIO_InitStructure); GPIO_Init(GPIOF,&GPIO_InitStructure); GPIO_Init(GPIOG,&GPIO_InitStructure); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB| RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD| RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOF| RCC_APB2Periph_GPIOG,DISABLE);}voidADC_Configuration(void){ //===========定義變量for各項外設的初始化=================== GPIO_InitTypeDef GPIO_InitStructure; DMA_InitTypeDef DMA_InitStructure; ADC_InitTypeDef ADC_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; //===================初始化ADC對應的GPIOPC.00~PC.03(ADCChannel10~13)================ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN; GPIO_Init(GPIOC,&GPIO_InitStructure); //========================初始化TIM定時觸發ADC======================== /*TIM1configuration*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE); /*TimeBaseconfiguration*/ TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); TIM_TimeBaseStructure.TIM_Period=56000000/Fs;//64K的采樣頻率5*175*64k=56000k=56M TIM_TimeBaseStructure.TIM_Prescaler=0x0; TIM_TimeBaseStructure.TIM_ClockDivision=0x0; TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure); /*TIM1channel1configurationinPWMmode*/ TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse=10; TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low; TIM_OC3Init(TIM1,&TIM_OCInitStructure); /*TIM1mainOutputEnable*/ TIM_CtrlPWMOutputs(TIM1,ENABLE); //========================初始化DMA:ADC1~DMA1.1,ADC3~DMA2.5================================ ///*EnableDMA1clock*/ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1|RCC_AHBPeriph_DMA2,ENABLE); /*DMA1channel1configuration*/ DMA_DeInit(DMA1_Channel1); DMA_InitStructure.DMA_PeripheralBaseAddr=(uint32_t)ADC1_DR_Address; DMA_InitStructure.DMA_MemoryBaseAddr=(uint32_t)ADC_DualConvertedValueTab; DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC; DMA_InitStructure.DMA_BufferSize=ADC_NPT; DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable; DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_Word; DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_Word; DMA_InitStructure.DMA_Mode=DMA_Mode_Normal; DMA_InitStructure.DMA_Priority=DMA_Priority_High; DMA_InitStructure.DMA_M2M=DMA_M2M_Disable; DMA_Init(DMA1_Channel1,&DMA_InitStructure); /*EnableDMA1Channel1*/ DMA_Cmd(DMA1_Channel1,ENABLE); /*DMA2channel5configuration*/ DMA_DeInit(DMA2_Channel5); DMA_InitStructure.DMA_PeripheralBaseAddr=(uint32_t)ADC3_DR_Address; DMA_InitStructure.DMA_MemoryBaseAddr=(uint32_t)ADC3ConvertedValue; DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC; DMA_InitStructure.DMA_BufferSize=ADC_NPT; DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable; DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_HalfWord; DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord; DMA_InitStructure.DMA_Mode=DMA_Mode_Normal; DMA_InitStructure.DMA_Priority=DMA_Priority_High; DMA_InitStructure.DMA_M2M=DMA_M2M_Disable; DMA_Init(DMA2_Channel5,&DMA_InitStructure); /*EnableDMA2channel5*/ DMA_Cmd(DMA2_Channel5,ENABLE); //======================初始化ADCADC0|ADC1組成雙ADC規則,ADC3==================================== /*ConfigureADCCLKsuchasADCCLK=PCLK2/4=56/4=14M*/ RCC_ADCCLKConfig(RCC_PCLK2_Div4); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1|RCC_APB2Periph_ADC2|RCC_APB2Periph_ADC3,ENABLE); /*ADC1configuration*/ ADC_InitStructure.ADC_Mode=ADC_Mode_RegSimult; ADC_InitStructure.ADC_ScanConvMode=DISABLE; ADC_InitStructure.ADC_ContinuousConvMode=DISABLE; ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_T1_CC3; ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel=1; ADC_Init(ADC1,&ADC_InitStructure); /*ADC1regularchannelsconfiguration*/ ADC_RegularChannelConfig(ADC1,ADC_Channel_10,1,ADC_SampleTime_7Cycles5); ADC_ExternalTrigConvCmd(ADC1,ENABLE); /*ADC2configuration*/ ADC_InitStructure.ADC_Mode=ADC_Mode_RegSimult; ADC_InitStructure.ADC_ScanConvMode=DISABLE; ADC_InitStructure.ADC_ContinuousConvMode=DISABLE; ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_T1_CC3; ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel=1; ADC_Init(ADC2,&ADC_InitStructure); /*ADC2regularchannelsconfiguration*/ ADC_RegularChannelConfig(ADC2,ADC_Channel_11,1,ADC_SampleTime_7Cycles5); ADC_ExternalTrigConvCmd(ADC2,ENABLE); /*EnableADC2externaltriggerconversion*/ /*ADC3configuration*/ ADC_InitStructure.ADC_Mode=ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode=DISABLE; ADC_InitStructure.ADC_ContinuousConvMode=DISABLE; ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_T1_CC3; ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel=1; ADC_Init(ADC3,&ADC_InitStructure); /*ADC3regularchannel14configuration*/ ADC_RegularChannelConfig(ADC3,ADC_Channel_12,1,ADC_SampleTime_7Cycles5); ADC_ExternalTrigConvCmd(ADC3,ENABLE); ADC_DMACmd(ADC1,ENABLE);/*EnableADC1DMA*/ /*EnableADC3DMA*/ ADC_DMACmd(ADC3,ENABLE); /*=====================ADC1、2、3的使能加校準===================*/ ADC_Cmd(ADC1,ENABLE); ADC_ResetCalibration(ADC1); while(ADC_GetResetCalibrationStatus(ADC1)); ADC_StartCalibration(ADC1); while(ADC_GetCalibrationStatus(ADC1)); ADC_Cmd(ADC2,ENABLE); ADC_ResetCalibration(ADC2); while(ADC_GetResetCalibrationStatus(ADC2)); ADC_StartCalibration(ADC2); while(ADC_GetCalibrationStatus(ADC2)); ADC_Cmd(ADC3,ENABLE); ADC_ResetCalibration(ADC3); while(ADC_GetResetCalibrationStatus(ADC3)); ADC_StartCalibration(ADC3); while(ADC_GetCalibrationStatus(ADC3)); /*總體使能,啟動ADC*/// TIM_Cmd(TIM1,ENABLE); }voidTFT_Configuration(void){ LCD_CtrlLinesConfig(); LCD_FSMCConfig(); TFT_Initializtion();/*InitializetheLCD*/ TFT_Clear(Black); /*CleartheLCD*/ SetTextColor(White); SetBackColor(Black);}voidTouch_Configuration(void){ GPIO_InitTypeDefGPIO_InitStructure; EXTI_InitTypeDefEXTI_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOG,ENABLE); //SPI--CS-PB12|DCLK-PB13|DIN-PB15 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_15|GPIO_Pin_13|GPIO_Pin_12; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz; GPIO_Init(GPIOB,&GPIO_InitStructure); //DOUT-PB14 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_14; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; GPIO_Init(GPIOB,&GPIO_InitStructure); //INT-PG7 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7; GPIO_Init(GPIOG,&GPIO_InitStructure); TouchInit(); ///<Key2 A0 GPIO_EXTILineConfig(GPIO_PortSourceGPIOG,GPIO_PinSource7); EXTI_InitStructure.EXTI_Line=EXTI_Line7;//設定外部中斷0 EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;//設定中斷模式 EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;//設定下降沿觸 EXTI_InitStructure.EXTI_LineCmd=ENABLE; EXTI_Init(&EXTI_InitStructure); // NVIC_SetPriorityGrouping(0); ///<EnabletheEXTI7Interrupt NVIC_SetPriority(EXTI9_5_IRQn,30); NVIC_EnableIRQ(EXTI9_5_IRQn);}/*配置繼電器*/voidJDQ_Configuration(void){ GPIO_InitTypeDefGPIO_InitStructure; /*配置繼電器對應的GPIO*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOG,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_10|GPIO_Pin_12| GPIO_Pin_14; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz; GPIO_Init(GPIOD,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2; GPIO_Init(GPIOG,&GPIO_InitStructure); GPIO_ResetBits(GPIOD,GPIO_Pin_8|GPIO_Pin_10|GPIO_Pin_12 //初始化繼電器 |GPIO_Pin_14); GPIO_SetBits(GPIOG,GPIO_Pin_2);}voidSYSTEM_Configuration(void){ /*必須的初始化設置*/ SystemInit(); GPIO_Configuration(); /*可選,根據你的需要選擇*/ LED_Configuration(); KEY_Configuration(); PWM_Configuration(); DAC_Configuration(); ADC_Configuration(); TFT_Configuration(); Touch_Configuration(); JDQ_Configuration();}4.1.2屏幕界面的設計 源程序如下: //屏幕界面 TFT_Clear(White); TFT_DrawLine(0,25,320,Horizontal); TFT_DrawLine(120,0,240,Vertical); TFT_DrawLine(60,25,215,Vertical); TFT_DrawLine(0,96,120,Horizontal); TFT_DrawLine(0,166,120,Horizontal); TFT_DisplayString(Line(0),Column(2),"測量控制",Big); TFT_DisplayString(Line(0),Column(22),"結果顯示",Big); TFT_DisplayString(Line(5),Column(1),"測量",Big); TFT_DisplayString(Line(8),Column(2),"V",Big); TFT_DisplayString(Line(9),Column(4),"IO",Small); TFT_DisplayString(Line(5),Column(8),"測量",Big); TFT_DisplayString(Line(8),Column(9),"I",Big); TFT_DisplayString(Line(9),Column(11),"IO",Small); TFT_DisplayString(Line(13),Column(1),"測量",Big); TFT_DisplayString(Line(16),Column(2),"A",Big); TFT_DisplayString(Line(17),Column(4),"VD",Small); TFT_DisplayString(Line(13),Column(8),"測量",Big); TFT_DisplayString(Line(16),Column(9),"K",Big); TFT_DisplayString(Line(17),Column(11),"CMR",Small); TFT_DisplayString(Line(22),Column(1),"自動",Big); TFT_DisplayString(Line(25),Column(1),"測量",Big); TFT_DisplayString(Line(22),Column(8),"量程",Big); TFT_DisplayString(Line(25),Column(8),"切換",Big); TFT_DisplayString(Line(6),Column(16),"V",Big); TFT_DisplayString(Line(7),Column(18),"IO",Small); TFT_DisplayString(Line(6),Column(21),"=",Big); TFT_DisplayString(Line(6),Column(35),"mV",Big); TFT_DisplayString(Line(11),Column(16),"I",Big); TFT_DisplayString(Line(12),Column(18),"IO",Small); TFT_DisplayString(Line(11),Column(21),"=",Big); TFT_DisplayString(Line(11),Column(35),"uA",Big); TFT_DisplayString(Line(16),Column(16),"A",Big); TFT_DisplayString(Line(17),Column(18),"VD",Small); TFT_DisplayString(Line(16),Column(21),"=",Big); TFT_DisplayString(Line(16),Column(35),"dB",Big); TFT_DisplayString(Line(21),Column(16),"K",Big); TFT_DisplayString(Line(22),Column(18),"CMR",Small); TFT_DisplayString(Line(21),Column(21),"=",Big); TFT_DisplayString(Line(21),Column(35),"dB",Big); TFT_DisplayString(Line(26),Column(16),"量程:Vio4mVIio0.4uA",Small);4.1.3觸摸屏中斷 此部分包括了對測量電路切換的控制、量程切換的控制以及數據采集處理,結果的顯示,源程序如下:voidEXTI9_5_IRQHandler(void){ uint16_ti; if(EXTI_GetITStatus(EXTI_Line8)==SET) { //addcodehere GPIO_WriteBit(GPIOF,GPIO_Pin_8,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOF,GPIO_Pin_8))); //key3A8 EXTI_ClearITPendingBit(EXTI_Line8); } elseif(EXTI_GetITStatus(EXTI_Line7)==SET) { //TFTTouch Touch_Key_Press(0); if(Is_In_Area(0,25,60,96)) { TIM_Cmd(TIM1,ENABLE); GPIO_ResetBits(GPIOD,GPIO_Pin_8); //GPIO輸出低電平,控制繼電器銜鐵吸合 GPIO_SetBits(GPIOD,GPIO_Pin_12); //GPIO輸出高電平,控制繼電器銜鐵放開 GPIO_SetBits(GPIOD,GPIO_Pin_14); GPIO_SetBits(GPIOG,GPIO_Pin_2); VL0=ADC_GetConversionValue(ADC2)*3300*4/4095; a=r3*VL0/(r3+rf); VIO=FloatToChar2(a); TFT_DisplayString(Line(6),Column(24),FloatToChar2(VL0),Big); //FloatToChar2(VL0) TIM_Cmd(TIM1,DISABLE); } elseif(Is_In_Area(61,25,120,96)) { TIM_Cmd(TIM1,ENABLE); GPIO_ResetBits(GPIOD,GPIO_Pin_8); GPIO_SetBits(GPIOD,GPIO_Pin_12); GPIO_SetBits(GPIOD,GPIO_Pin_14); GPIO_SetBits(GPIOG,GPIO_Pin_2); VL0=ADC_GetConversionValue(ADC2)*3300/4095; GPIO_SetBits(GPIOD,GPIO_Pin_8); VL1=ADC_GetConversionValue(ADC2)*3300/4095; b=r3*(VL1-VL0)/((r3+rf)*r); IIO=FloatToChar3(b); TFT_DisplayString(Line(11),Column(24),IIO,Big); TIM_Cmd(TIM1,DISABLE); } elseif(Is_In_Area(0,97,60,166)) { TIM_Cmd(TIM1,ENABLE); GPIO_ResetBits(GPIOD,GPIO_Pin_8); GPIO_SetBits(GPIOD,GPIO_Pin_12); GPIO_ResetBits(GPIOD,GPIO_Pin_14); GPIO_SetBits(GPIOG,GPIO_Pin_2); for(i=0;i<ADC_NPT;i++) { ADC1ConvertedValue[i]=(uint16_t)(ADC_DualConvertedValueTab[i]&0x0000FFFF); ADC2ConvertedValue[i]=(uint16_t)((ADC_DualConvertedValueTab[i]&0xFFFF0000)>>16); if(ADC1ConvertedValue[i]>max1)max1=ADC1ConvertedValue[i]; if(ADC2ConvertedValue[i]>max2)max2=ADC2ConvertedValue[i]; if(ADC1ConvertedValue[i]<min1)min1=ADC1ConvertedValue[i]; if(ADC2ConvertedValue[i]<min2)min2=ADC2ConvertedValue[i]; } Vs=3.3*(max1-min1)/(1.414*4095); VL0=3.3*(max2-min2)/(1.414*4095); c=20*log10(Vs*(r3+rf)/(VL0*r3)); AVD=FloatToChar1(c); TFT_DisplayString(Line(16),Column(24),AVD,Big); TIM_Cmd(TIM1,DISABLE); } elseif(Is_In_Area(61,97,120,166)) { TIM_Cmd(TIM1,ENABLE); GPIO_ResetBits(GPIOD,GPIO_Pin_8); GPIO_ResetBits(GPIOD,GPIO_Pin_12); GPIO_ResetBits(GPIOD,GPIO_Pin_14); GPIO_ResetBits(GPIOG,GPIO_Pin_2); for(i=0;i<ADC_NPT;i++) { ADC1ConvertedValue[i]=(uint16_t)(ADC_DualConvertedValueTab[i]&0x0000FFFF); ADC2ConvertedValue[i]=(uint16_t)((ADC_DualConvertedValueTab[i]&0xFFFF0000)>>16); if(ADC1ConvertedValue[i]>max1)max1=ADC1ConvertedValue[i]; if(ADC2ConvertedValue[i]>max2)max2=ADC2ConvertedValue[i]; if(ADC1ConvertedValue[i]<min1)min1=ADC1ConvertedValue[i]; if(ADC2ConvertedValue[i]<min2)min2=ADC2ConvertedValue[i]; } Vs=3.3*(max1-min1)/(1.414*4095); VL0=3.3*(max2-min2)/(1.414*4095); d=20*log10(Vs*(r3+rf)/(VL0*r3)); KCMR=FloatToChar1(d); TFT_DisplayString(Line(21),Column(24),KCMR,Big); TIM_Cmd(TIM1,DISABLE); } elseif(Is_In_Area(0,167,60,240)) { //測量VIO TIM_Cmd(TIM1,ENABLE); GPIO_ResetBits(GPIOD,GPIO_Pin_8); GPIO_SetBits(GPIOD,GPIO_Pin_12); GPIO_SetBits(GPIOD,GPIO_Pin_14); GPIO_SetBits(GPIOG,GPIO_Pin_2); VL0=ADC_GetConversionValue(ADC2)*3300/4095; a=r3*VL0/(r3+rf); VIO=FloatToChar2(a); TFT_DisplayString(Line(6),Column(24),VIO,Big); //測量IIO GPIO_SetBits(GPIOD,GPIO_Pin_8); VL1=ADC_GetConversionValue(ADC2)*3300/4095; b=r3*(VL1-VL0)/((r3+rf)*r); IIO=FloatToChar3(b); TFT_DisplayString(Line(11),Column(24),IIO,Big); //測量AVD GPIO_ResetBits(GPIOD,G
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 南通師范高等專科學校《室內設計原理》2023-2024學年第二學期期末試卷
- 湖南省株洲市攸縣2025屆三下數學期末統考模擬試題含解析
- 山西省呂梁市汾陽市2025屆初三下學期升級統測英語試題含答案
- 江蘇如皋市江安鎮中心中學2024-2025學年高三第三次適應性訓練物理試題含解析
- 石嘴山工貿職業技術學院《中國傳統文化》2023-2024學年第二學期期末試卷
- 西安財經大學行知學院《外科學(外專科)》2023-2024學年第二學期期末試卷
- 中國海洋大學《醫療儀器設計》2023-2024學年第二學期期末試卷
- 四川華新現代職業學院《工程熱力學D》2023-2024學年第二學期期末試卷
- 南充職業技術學院《心靈導航》2023-2024學年第二學期期末試卷
- 帳戶的分類的類型及含義
- 2025年開封大學單招職業技能測試題庫及答案1套
- 小學教師招聘-《小學教育學》押題密卷1
- 《InSAR干涉測量》課件
- 2025年腦機接口藍皮書:未來將至打造人機交互新范式-前瞻研究院
- 工程地質學知到智慧樹章節測試課后答案2024年秋廣東工業大學
- 2025-2030年中國牛黃市場發展狀況與前景投資策略建議報告
- DBJ33T 1307-2023 微型鋼管樁加固技術規程
- 邏輯哲學論中文版分享
- 廣東省深圳市南山區2023-2024學年六年級上學期英語期末試卷
- 2025年八省聯考高考數學試卷評析及復習備考指導課件
- 日立電梯LCA故障代碼
評論
0/150
提交評論