簡易數(shù)字示波器設(shè)計(jì)說明_第1頁
簡易數(shù)字示波器設(shè)計(jì)說明_第2頁
簡易數(shù)字示波器設(shè)計(jì)說明_第3頁
簡易數(shù)字示波器設(shè)計(jì)說明_第4頁
簡易數(shù)字示波器設(shè)計(jì)說明_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

..電信專業(yè)綜合實(shí)踐設(shè)計(jì)題目:在LPC2210開發(fā)板的基礎(chǔ)上簡易數(shù)字示波器設(shè)計(jì)學(xué)校:______指導(dǎo)2011.1.1目錄TOC\o"1-2"\h\z\uHYPERLINK第1章設(shè)計(jì)內(nèi)容與要求1HYPERLINK1.1設(shè)計(jì)內(nèi)容1HYPERLINK1.2設(shè)計(jì)要求1HYPERLINK1.3系統(tǒng)功能1HYPERLINK1.4應(yīng)用分析1HYPERLINK第2章系統(tǒng)總體設(shè)計(jì)3HYPERLINK2.1總體框圖3HYPERLINK2.2總體設(shè)計(jì)分析3HYPERLINK第3章硬件結(jié)構(gòu)7HYPERLINK3.15V電源電路7HYPERLINK3.2系統(tǒng)電源電路8HYPERLINK3.3復(fù)位電路10HYPERLINK3.4JTAG接口電路11HYPERLINK3.5系統(tǒng)存儲器電路11HYPERLINK3.6TFT液晶接口電路12HYPERLINK3.7串口接口電路13HYPERLINK3.8ADC電路14HYPERLINK3.9按鍵控制電路15HYPERLINK3.10主芯片電路14HYPERLINK第4章軟件分析14HYPERLINK4.1軟件框圖分析14HYPERLINK4.2任務(wù)的劃分15HYPERLINK4.3任務(wù)的優(yōu)先級設(shè)計(jì)15HYPERLINK4.4液晶初始化設(shè)計(jì)16HYPERLINK4.5定時(shí)器設(shè)計(jì)16HYPERLINK4.6AD轉(zhuǎn)換設(shè)計(jì)16HYPERLINK4.7數(shù)據(jù)處理17HYPERLINK4.8觸發(fā)設(shè)計(jì)17HYPERLINK4.9周期設(shè)計(jì)17HYPERLINK4.10求最值設(shè)計(jì)18HYPERLINK4.11主函數(shù)與調(diào)用的TASK設(shè)計(jì)18HYPERLINK拓展部分19HYPERLINK參考文獻(xiàn)20第一章設(shè)計(jì)內(nèi)容與要求1.1設(shè)計(jì)內(nèi)容:在LPC2210開發(fā)板的基礎(chǔ)上設(shè)計(jì)一簡易數(shù)字示波器。1.2設(shè)計(jì)要求:數(shù)字示波器的硬件系統(tǒng)的電路原理圖設(shè)計(jì)數(shù)字示波器的圖形界面設(shè)計(jì)數(shù)字示波器的信號觸發(fā)、矢量顯示、軌跡消隱實(shí)現(xiàn)被測信號的周期、最大/最小值實(shí)現(xiàn)1.3系統(tǒng)功能:以LPC2210開發(fā)板的液晶屏模擬數(shù)字示波器的顯示屏,實(shí)現(xiàn)被測波形的顯示。1.4應(yīng)用分析:本設(shè)計(jì)對基于ARM〔AdvancedRISCMachine的簡易示波器的設(shè)計(jì)過程進(jìn)行了介紹。主要對系統(tǒng)的硬件設(shè)計(jì)部分和軟件設(shè)計(jì)部分進(jìn)行了分析。硬件設(shè)計(jì)部分首先給出了系統(tǒng)框圖,然后對各個(gè)組成模塊進(jìn)行了介紹。并給出了各模塊所使用的主要元器件。包括電源部分、放大部分、控制部分、鍵盤功能及芯片的采集和顯示部分。軟件設(shè)計(jì)部分編寫了使能部分、AD轉(zhuǎn)換、顯示部分、數(shù)值計(jì)算部分。。第二章系統(tǒng)的總體設(shè)計(jì)2.1總體框圖輸入信號輸入信號放大電路〔模擬通道采樣和量化ADCLCDARMKEY12-1系統(tǒng)框圖2.2總體設(shè)計(jì)分析本設(shè)計(jì)如果選擇的是DSP,設(shè)計(jì)中用到芯片就會增多,而且因?yàn)镈SP造價(jià)高于ARM并且小信號的采集如果應(yīng)用DSP放大芯片有很多限制,不易選取。而應(yīng)用ARM則減少了這方面的問題。在嵌入式處理器設(shè)計(jì)領(lǐng)域,RISC[1]已經(jīng)成為處理器結(jié)構(gòu)設(shè)計(jì)的必然選擇。嵌入式微處理器嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬可裁剪、適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。并且該系統(tǒng)是以提高對象體系智能性、控制力和人機(jī)交互能力為目的,通過相互作用和內(nèi)在指標(biāo)評定的,嵌入到對象體系中的專用計(jì)算機(jī)系統(tǒng)。而嵌入式微處理器是嵌入式系統(tǒng)的核心部件,是決定嵌入式系統(tǒng)功能強(qiáng)弱的主要因素,也決定了嵌入式系統(tǒng)的應(yīng)用范圍和開發(fā)復(fù)雜度。本設(shè)計(jì)需要解決的問題包括硬件部分和軟件部分。硬件部分的設(shè)計(jì)主要是芯片選擇,控件的選擇,放大倍數(shù)的控制,衰減倍數(shù)的選擇。軟件部分的設(shè)計(jì)主要是驅(qū)動(dòng)程序的編譯,主函數(shù)主要功能的實(shí)現(xiàn),按鍵控制的選擇。第三章硬件結(jié)構(gòu)3.15V電源電路LPC2200系列ARM7微控制器均要使用兩組電〔LPC213x,LPC214x除外,I/O口供電電源為3.3V,內(nèi)核及芯片外設(shè)供電電源為1.8V,所以系統(tǒng)設(shè)計(jì)為3.3V應(yīng)用系統(tǒng)。首先有CZ1電源接口輸入9V直流電源,二極管D1防止電源反接,經(jīng)過C42,C44濾波,然后通過LM2575將電源穩(wěn)壓の5V,再使用LDO芯片〔低壓差芯片穩(wěn)壓輸出3.3V及1.8V電壓。如圖所示〔1-1,所設(shè)計(jì)的5V電源電路的穩(wěn)壓芯片使用的是LM2575開關(guān)電源芯片。圖3-1〔5V電源電路3.2系統(tǒng)電源電路系統(tǒng)電源電路如圖1-2所示,LDO芯片分別采用SPX1117M3-1.8和SPX1117M3-3.3,其特點(diǎn)為輸出電流大,輸出電壓精度高,穩(wěn)定性好。猶豫LPC2200系列ARM7微控制器具有獨(dú)立的模擬電源和模擬地引腳,為了降低噪聲和出錯(cuò)幾率,模擬電源與數(shù)字電源應(yīng)該隔離。這里使用10uH的電感L2~L4實(shí)現(xiàn)電源隔離〔將高頻噪聲隔離,并且在設(shè)計(jì)PCB板時(shí)采用大面積敷地,以降低噪聲。圖3-2〔系統(tǒng)電路3.3復(fù)位電路由于ARM芯片的告訴、低功耗和的工作電壓導(dǎo)致其噪聲容限低,對電源的紋波、瞬態(tài)響應(yīng)性能、時(shí)鐘源的穩(wěn)定性和電源監(jiān)控可靠性等諸多方面也提出了更高的要求。如圖1-3所示。圖3-3〔系統(tǒng)復(fù)位電路3.4JTAG接口電路采用RAM公司提出的標(biāo)準(zhǔn)20腳JTAG仿真調(diào)試接口,JTAG信號的定義以及與LPC2210的連接如圖1-4所示。圖中,JTAG接口上的信號nTRST連接到LPC2210芯片的T\R\S\T\引腳,以達(dá)到控制LPC2210內(nèi)部JTAG接口電路復(fù)位的目的〔但不控制CPU復(fù)位。圖3-4〔JTAG接口電路3.5系統(tǒng)存儲器電路SartARM2200j教學(xué)實(shí)驗(yàn)開發(fā)平臺上擴(kuò)展了2MBNORFLASH〔型號為SST39VF160和8MBPSRAM〔芯片型號為MT45W4MW16,電路如圖1-5。為了方便程序調(diào)試及最終代碼的固化應(yīng)用,使用LPC2210外部存儲接口的BANK0和BANK1地址空間,并且可以通過JP10跳線將片選信號CS0和CS1分別分配給SRAM或FLASH。在使用JTAG調(diào)試程序時(shí),分配SPRAM為BANK0地址,因?yàn)锽ANK0可以進(jìn)行異常向量表的重新映射操作。當(dāng)最終代碼固化到FLASH時(shí),分配FLASH為BANK0地址,SRAM為BANK1地址。這是因?yàn)锽ANK0可以用來引導(dǎo)程序運(yùn)行。若使用BANK0引導(dǎo)程序運(yùn)行,將JP9短接到OUTSIDE端,使系統(tǒng)復(fù)位時(shí)BOOT1和BOOT0引腳的電平為0b01〔即二進(jìn)制值01.圖3-5〔系統(tǒng)存儲器電路3.6TFT液晶接口電路SmartARM2200教學(xué)實(shí)驗(yàn)開發(fā)平臺標(biāo)配有2.2英寸液晶屏-TF6758液晶模塊,其電路原理如圖1-6所示。TFT6758液晶模塊的工作電壓為3.3V,內(nèi)帶白光LED背光燈,可以直接使用8位、16位或18位總線方式與控制器連接〔因?yàn)橐壕K內(nèi)部包含了HD66781和HD66783液晶控制驅(qū)動(dòng)器。為了得到更搞的數(shù)據(jù)傳輸速率,設(shè)計(jì)電路時(shí)采用16位總線接口,按照HD66781芯片說明,需要IM3和IM0引腳0電平,16位數(shù)據(jù)分別為DB17~DB10和DB8~DB1引腳,為使用的DB0和DB9引腳應(yīng)接地,電路連接如圖1-6所示。因?yàn)椴皇褂肈MA傳輸功能,所以將DACK引腳接為高電平。圖3-6〔TFT6758液晶模塊應(yīng)用電路3.7串口接口電路由于系統(tǒng)電源是3.3V,所以應(yīng)使用SP3232E進(jìn)行RS232電平轉(zhuǎn)換,SP3232E是3V工作電源的RS232轉(zhuǎn)換芯片。如圖1-7所示圖3-7〔串口接口電路3.8ADC電路PC2114/2124/2119/2129/2194具有4路10位ADC轉(zhuǎn)換器,LPC2210/2212/2214/2290/2292/2294具有8路10位ADC轉(zhuǎn)換器,其參考電壓為3.3V〔由V3a引腳提供,參考電壓的精度會影響ADC的轉(zhuǎn)換結(jié)果。SmartARM2200教學(xué)實(shí)驗(yàn)開發(fā)平臺提供了兩路滯留電壓測量電路如圖1-8所示,可調(diào)電阻W1和W2用于調(diào)整ADC的輸出電壓,可以在VINI和VIN2測試點(diǎn)上用萬用表檢查當(dāng)前電壓值。R36和R37為I/O口保護(hù)電阻,當(dāng)ADC輸入電壓調(diào)整到3.3V或0V時(shí),而P0.27或P0.28作為GPIO輸出0或1,此刻,這兩個(gè)電阻保證電路不產(chǎn)生短路故障。圖3-8〔ADC電路3.9按鍵控制電路按鍵:在SmartARM2200教學(xué)實(shí)驗(yàn)平臺上使用P0.20擴(kuò)展一個(gè)獨(dú)立按鍵KEY1,當(dāng)需要使用此按鍵時(shí),應(yīng)將JP2跳線短接。當(dāng)斷開JP2跳線時(shí),P0.20可以通過J5連接器〔GPIO輸出接口與用戶板連接使用。圖3-9〔按鍵控制電路3.10主芯片電路LPC2210是基于一個(gè)支持實(shí)時(shí)仿真和跟蹤的16/32位ARM7TDMI-SCPU的微控制器,并帶有0/128/256KB嵌入的高速片內(nèi)Flash存儲器,片內(nèi)128位寬度的存儲器接口和獨(dú)特的加速結(jié)構(gòu)使32位代碼能夠在最大時(shí)鐘速率下運(yùn)行。由于LPC2210具有較小的64個(gè)144腳封裝,極低的功耗,多個(gè)32位定時(shí)器,4路10位ADC或8路10位ADC〔64腳和144腳封裝以及多達(dá)9個(gè)外部中斷。圖3-10〔主芯片電路第四章軟件分析4.1軟件框圖分析初始化初始化底層驅(qū)動(dòng)脈寬信號發(fā)射求最大最小值波形顯示數(shù)據(jù)處理數(shù)據(jù)采集底層驅(qū)動(dòng)脈寬信號發(fā)射求最大最小值波形顯示數(shù)據(jù)處理數(shù)據(jù)采集4.2任務(wù)的劃分對一個(gè)嵌入式應(yīng)用系統(tǒng)進(jìn)行"任務(wù)劃分",是實(shí)時(shí)操作系統(tǒng)應(yīng)用軟件設(shè)計(jì)的關(guān)鍵,任務(wù)劃分是否合理將直接影響軟件設(shè)計(jì)的質(zhì)量。任務(wù)劃分原則如下:以CPU為中心,將與各種輸入/輸出設(shè)備〔或端口相關(guān)的功能分別劃分為獨(dú)立的任務(wù)。發(fā)現(xiàn)"關(guān)鍵"功能,將其最"關(guān)鍵"部分"剝離"出來,用一個(gè)獨(dú)立任務(wù)〔或ISR完成,剩余部分用另一個(gè)任務(wù)實(shí)現(xiàn),兩者之間通過通信機(jī)制溝通。發(fā)現(xiàn)"緊迫"功能,將其最"緊迫"部分"剝離"出來,用一個(gè)獨(dú)立的高優(yōu)先級任務(wù)〔或ISR完成,剩余部分用另一個(gè)任務(wù)實(shí)現(xiàn),兩者之間通過通信機(jī)制溝通。對于既"關(guān)鍵"又"緊迫"的功能,按"緊迫"功能處理。將消耗機(jī)時(shí)較多的數(shù)據(jù)處理功能劃分出來,封裝為低優(yōu)先級任務(wù)。將關(guān)系密切的若干功能組合成為一個(gè)任務(wù),達(dá)到功能聚合的效果。將由相同事件觸發(fā)的若干功能組合成為一個(gè)任務(wù),從而免除事件分發(fā)機(jī)制。將運(yùn)行周期相同的功能組合成為一個(gè)任務(wù),從而免除時(shí)間事件分發(fā)機(jī)制。將若干按固定順序執(zhí)行的功能組合成為一個(gè)任務(wù),從而免除同步接力通信的麻煩。4.3任務(wù)的優(yōu)先級設(shè)計(jì)為不同任務(wù)安排不同的優(yōu)先級,其最終目標(biāo)是使系統(tǒng)的實(shí)時(shí)性指標(biāo)能夠得到滿足。在實(shí)際的產(chǎn)品開發(fā)中,應(yīng)該在項(xiàng)目開始時(shí),仔細(xì)思考和推敲。如果任務(wù)優(yōu)先級的設(shè)定有誤,對以后的開發(fā)和調(diào)試會帶來極大的困擾,會讓工程師花很長時(shí)間來查錯(cuò)誤,而且出現(xiàn)的錯(cuò)誤不好排除。所以設(shè)計(jì)任務(wù)的優(yōu)先級是很重要的。本次實(shí)驗(yàn)一共建立了五個(gè)任務(wù),其優(yōu)先級如下:OSTaskCreate<Task0,<void*>0,&Task0Stk[128-1],2>; //創(chuàng)建Task0任務(wù),優(yōu)先級為2 OSTaskCreate<Task1,<void*>0,&Task1Stk[128-1],3>; //創(chuàng)建Task1任務(wù),優(yōu)先級為3 OSTaskCreate<Task2,<void*>0,&Task2Stk[128-1],4>; //創(chuàng)建Task2任務(wù),優(yōu)先級為4 OSTaskCreate<Task3,<void*>0,&Task3Stk[128-1],5>;//創(chuàng)建Task3任務(wù),優(yōu)先級為5 OSTaskCreate<Task4,<void*>0,&Task4Stk[128-1],6>; //創(chuàng)建Task4任務(wù),優(yōu)先級為64.4液晶顯示初始化設(shè)計(jì)GUI_PrtPic<0,0,239,319,gImage_root01>;//示波器面板〔背景圖顯示GUI_Line<224,268,224,315,0xffff>; //Running至Off間6根短白線GUI_Line<184,268,184,315,0xffff>;GUI_Line<144,268,144,315,0xffff>;GUI_Line<104,268,104,315,0xffff>;GUI_Line<64,268,64,315,0xffff>;GUI_Line<24,268,24,315,0xffff>;WaveTrackCnt=0;GUI_PrtStr<208,270,"Coupling",0xfee4,0x0274>;//"Coupling"和"DC"顯示GUI_PrtStr<188,280,"DC",0x0000,0xffff>;GUI_PrtStr<168,273,"Volt/Div",0xfee4,0x0274>; //"Volt/Div"和"0.42V"顯示GUI_PrtStr<148,275,"0.42V",0x0000,0xffff>;GUI_PrtStr<128,270,"Time/Div",0xfee4,0x0274>; //"Time/Div"和"60uS"顯示GUI_PrtStr<108,275,"60uS",0x0000,0xffff>;GUI_PrtStr<88,274,"TrigVolt",0xfee4,0x0274>; //TrigVolt顯示sprintf<UART0_StrBuff,"%1.2fV",CH1TptVal*3.3/255>;GUI_PrtStr<68,276,UART0_StrBuff,0x0000,0xffff>;GUI_PrtStr<48,280,"Invert",0xfee4,0x0274>; //"Invert"和"Off"顯示GUI_PrtStr<28,283,"Off",0x0000,0xffff>;4.5定時(shí)器設(shè)計(jì)PWMPR=0x00;//不分頻,計(jì)數(shù)頻率為FpclkPWMMCR=0x02; //設(shè)置PWMMR0匹配時(shí)復(fù)位PWMTCPWMMR0=CYCLE_DATA;//設(shè)置PWM周期PWMMR6=DUTY_CYCLE_DATA; //設(shè)置PWM占空比PWMLER=0x41; //PWMMR0、PWMMR6鎖存PWMPCR=0x4000; //允許PWM6輸出,單邊PWMPWMTCR=0x09; //啟動(dòng)定時(shí)器,PWM使能4.6AD轉(zhuǎn)換設(shè)計(jì)ADCR=<1<<7>| //SEL=0x80,選擇通道7<<Fpclk/4500000-1><<8>| //CLKDIV=Fpclk/4500000-1,即轉(zhuǎn)換時(shí)鐘為4.5MHz<1<<16>| //BURST=1,軟件控制轉(zhuǎn)換操作<2<<17>| //CLKS=2,使用9clock轉(zhuǎn)換,8位精度<1<<21>| //PDN=1,正常工作模式<非掉電轉(zhuǎn)換模式><0<<22>| //TEST1:0=00,正常工作模式<非測試模式><1<<24>| //START=1,直接啟動(dòng)ADC轉(zhuǎn)換<1<<27>; //EDGE=0<CAP/MAT引腳下降沿觸發(fā)ADC轉(zhuǎn)換> dat=ADDR; //讀取ADC結(jié)果,并清除DONE標(biāo)志位4.7數(shù)據(jù)處理voidOSC_PCM<void> //2048個(gè)數(shù)據(jù)采集,每個(gè)數(shù)據(jù)為8位{ uint32i,dat;for<i=0;i<1024*2;i++>{while<<ADDR&0x80000000>==0>;//等待轉(zhuǎn)換結(jié)束dat=ADDR;//讀取ADC結(jié)果CH1[i]=<dat>>8>&0xFF;//提取AD轉(zhuǎn)換值}}4.8觸發(fā)設(shè)計(jì)uint8OSC_LockTrigerPoint<void> //觸發(fā)點(diǎn)鎖定{ uint32i;uint32Avg0,Avg1;CH1Tpt1=0;for<i=250;i<1250;i++>{Avg0=<CH1[i+3]+CH1[i+2]+CH1[i+1]+CH1[i+0]>>>2;//對采樣值濾波Avg1=<CH1[i+7]+CH1[i+6]+CH1[i+5]+CH1[i+4]>>>2;//對采樣值濾波if<<Avg1-Avg0>>0>//比較2個(gè)采樣點(diǎn),判斷是否為上升沿{CH1TptVal=80; //觸發(fā)點(diǎn)電壓為:3.3*80/255=1.04Vif<<Avg1>CH1TptVal>&&<Avg0<CH1TptVal>>//是否為觸發(fā)點(diǎn){CH1Tpt1=i;//保存觸發(fā)點(diǎn)對應(yīng)的采樣序號i=0xffff;//破壞循環(huán)條件,退出for循環(huán)}}i++;//沒有找到觸發(fā)點(diǎn)則向上繼續(xù)收縮}if<i==1250>//如果搜索到1240意味無法找到觸發(fā)點(diǎn){CH1Tpt1=250;//給定一個(gè)初始值用于顯示return<0>;}else{return<1>;}}4.9周期設(shè)計(jì)uint8OSC_FindPeriod<void> //求〔尋找周期{uint32i;uint32Avg0,Avg1;if<CH1Tpt1>240>//已經(jīng)鎖定觸發(fā)點(diǎn),可以尋找周期{for<i=CH1Tpt1+8;i<1250;i++>{Avg0=<CH1[i+3]+CH1[i+2]+CH1[i+1]+CH1[i+0]>>>2;Avg1=<CH1[i+7]+CH1[i+6]+CH1[i+5]+CH1[i+4]>>>2;if<<Avg1-Avg0>>0>{//CH1TptVal=128;if<<Avg1>CH1TptVal>&&<Avg0<CH1TptVal>>//是否為觸發(fā)點(diǎn){CH1Tpt2=i;i=0xffff;}}i++;}}if<i==1250>{CH1Tpt2=250;//給定一個(gè)初始值用于顯示return<0>;}else{CH1Fre=422880/<CH1Tpt2-CH1Tpt1>;return<1>;}}4.10求最值設(shè)計(jì)voidOSC_CH1MaxMin<void> //求〔尋找最大值和最小值{uint32i;uint32Max,Min;Max=CH1[CH1Tpt1-125];Min=CH1[CH1Tpt1-125];for<i=CH1Tpt1-125;i<CH1Tpt1+125;i++>{if<CH1[i]>Max>{Max=CH1[i];}if<CH1[i]<Min>{Min=CH1[i];}}CH1Max=Max;CH1Min=Min;}4.11主函數(shù)與調(diào)用的TASK設(shè)計(jì)#include"config.h"#include"stdlib.h"OS_STK Task0Stk[128]; //DefinetheTask0stack定義用戶任務(wù)0的堆棧OS_STK Task1Stk[128]; //DefinetheTask1stack定義用戶任務(wù)1的堆棧OS_STK Task2Stk[128]; //DefinetheTask2stack定義用戶任務(wù)2的堆棧OS_STK Task3Stk[128]; //DefinetheTask3stack定義用戶任務(wù)3的堆棧OS_STK Task4Stk[128]; //DefinetheTask4stack定義用戶任務(wù)4的堆棧void Task0<void*pdata>; //Task0任務(wù)0void Task1<void*pdata>; //Task1任務(wù)1void Task2<void*pdata>; //Task2任務(wù)2void Task3<void*pdata>; //Task3任務(wù)3void Task4<void*pdata>; //Task4任務(wù)4intmain<void>{ OSInit<>; //操作系統(tǒng)初始化 OSTaskCreate<Task0,<void*>0,&Task0Stk[128-1],2>; //創(chuàng)建Task0任務(wù),優(yōu)先級為2 OSTaskCreate<Task1,<void*>0,&Task1Stk[128-1],3>; //創(chuàng)建Task1任務(wù),優(yōu)先級為3 OSTaskCreate<Task2,<void*>0,&Task2Stk[128-1],4>; //創(chuàng)建Task2任務(wù),優(yōu)先級為4 OSTaskCreate<Task3,<void*>0,&Task3Stk[128-1],5>;//創(chuàng)建Task3任務(wù),優(yōu)先級為5 OSTaskCreate<Task4,<void*>0,&Task4Stk[128-1],6>; //創(chuàng)建Task4任務(wù),優(yōu)先級為6 OSStart<>; //啟動(dòng)操作系統(tǒng) return0; }Task0任務(wù)0//采樣1600個(gè)數(shù)據(jù),鎖定觸發(fā)點(diǎn)voidTask0<void*pdata>{uint32i; pdata=pdata; //防止編譯警告,以下同 TargetInit<>; //初始化目標(biāo)板 while<1> {OS_ENTER_CRITICAL<>; //進(jìn)入臨界區(qū)for<i=0;i<1600;i++> //采樣1600個(gè)數(shù)據(jù){while<<ADDR&0x80000000>==0>;//等待轉(zhuǎn)換結(jié)束CH1[i]=<ADDR>>8>&0xFF;//提取AD轉(zhuǎn)換值〔8位}OS_EXIT_CRITICAL<>; //退出臨界區(qū) OSC_LockTrigerPoint<>; //鎖定觸發(fā)點(diǎn)OSC_FindPeriod<>; //求頻率OSC_CH1MaxMin<>; //求最大、最小值GUI_ClrTrack<>; //清除舊軌跡〔前一次波形GUI_DispTrack<>; //顯示新軌跡〔當(dāng)前波形 OSTimeDly<50>; //延時(shí) }}Task1任務(wù)1//調(diào)用函數(shù):sprintf,GUI_PrtStr,OSTimeDlyvoidTask1<void*pdata>{ pdata=pdata; while<1> { sprintf<UART0_StrBuff,"CH1max=%1.2fV",CH1Max*3.3/256>; //顯示通道1最大值〔1位正數(shù)、2位小數(shù) GUI_PrtStr<5,10,UART0_StrBuff,0xfee4,0x0274>; //坐標(biāo)位置5、10,前景黃色,背景藍(lán)色 sprintf<UART0_StrBuff,"CH1min=%1.2fV",CH1Min*3.3/256>; //顯示通道1最小值〔1位正數(shù)、2位小數(shù) GUI_PrtStr<5,110,UART0_StrBuff,0xfee4,0x0274>; sprintf<UART0_StrBuff,"CH1Fre=%6dHz",CH1Fre>;//顯示通道1頻率〔6位正數(shù) GUI_PrtStr<5,210,UART0_StrBuff,0xfee4,0x0274>;OSTimeDly<100>; //延時(shí) }}Task2任務(wù)2voidTask2<void*pdata>{ pdata=pdata; while<1> { GUI_PrtStr<208,270,"Coupling",0xfee4,0x0274>; //直流耦合 GUI_PrtStr<188,280,"DC",0x0000,0xffff>; //前景黑色,背景白色 GUI_PrtStr<168,273,"Volt/Div",0xfee4,0x0274>; //Y軸;0.42V/格 GUI_PrtStr<148,275,"0.42V",0x0000,0xffff>; GUI_PrtStr<128,270,"Time/Div",0xfee4,0x0274>; //X軸;60uS/格 GUI_PrtStr<108,275,"60uS",0x0000,0xffff>; GUI_PrtStr<88,274,"TrigVolt",0xfee4,0x0274>; //觸發(fā)電平顯示 sprintf<UART0_StrBuff,"%1.2fV",CH1TptVal*3.3/255>; GUI_PrtStr<68,276,UART0_StrBuff,0x0000,0xffff>; GUI_PrtStr<48,280,"Invert",0xfee4,0x0274>; //反向顯示關(guān) GUI_PrtStr<28,283,"Off",0x0000,0xffff>;OSTimeDly<2000>; }}Task3任務(wù)3//CH1Tpt1:通道1符合觸發(fā)條件對應(yīng)的第一個(gè)采樣序號,CH1Tpt2:通道1符合觸發(fā)條件對應(yīng)的第二個(gè)采樣序號voidTask3<void*pdata>{ pdata=pdata; while<1> { sprintf<UART0_StrBuff,"CH1Tpt1=%6d\n\r",CH1Tpt1>; UART0_SendStr<UART0_StrBuff>; //通過串口0,發(fā)送CH1Tpt1 sprintf<UART0_StrBuff,"CH1Tpt2=%6d\n\r",CH1Tpt2>; UART0_SendStr<UART0_StrBuff>; //通過串口0,發(fā)送CH1Tpt2 GUI_PrtStr<226,268,"Running",0xfee4,0x0274>;//交替顯示RunningOSTimeDly<200>; GUI_PrtStr<226,268,"Running",0xfee4,0xa000>;OSTimeDly<200>; }}Task4任務(wù)4//按鍵控制voidTask4<void*pdata>{ uint32pwm; pdata=pdata; while<1>{/*自檢信號,可以調(diào)節(jié)PWM占空比*/if<<IO0PIN&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論