版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、:張鴻文莊進發(fā)鴻學院:自動化科學與專業(yè):自動化班級:2011 二班目錄一、設計要求21.11.2基本要求2擴展要求2二、簡介+創(chuàng)新功能52.12.2簡介5創(chuàng)新功能6案比較53.1硬件方案5四、設計與論證84.1電路設計8五、電路圖及有關設計文件11六、測試方法、儀器和數據14系統(tǒng)測試的目的14系統(tǒng)測試的方法14測試儀器15七、測試數據及分析16一、設計要求二、1.基本要求可以單片機顯示屏上實時地顯示當前電壓值,并且有波形顯示以及坐標方格顯示。示波器最高測量電壓不低于 10V,精度不低于 20mv。具有改變采樣頻率以及幅度變換功能,即改變“X 增益”和“Y 增益”,并且有圖像上下移動的功能。4)
2、具有輸入電壓過高的功能等。功能,電壓達到設定值提醒功能,電壓提醒5)支持圖像保存功能以及圖像回調功能。2.拓展要求1)具有多通道信號輸入功能,即可以同時測量多路信號。2)利用顯示。交叉線精確標志處出波形上點的橫縱坐標,實現橫縱坐標的對應3)人機交互功能,上位機通訊功能,以及其他創(chuàng)新功能。二、簡介+創(chuàng)新功能2.1 簡介設計的便攜式示波器,硬件電路主要是放大電路和 stm32 開發(fā)板,信號經過放大電路的處理之后,再經由 stm32 的 AD 引腳,經過數據處理后在 TFT 顯示屏上顯示。顯示屏上可以實時地顯示當前電壓值,并且有波形顯示以及坐標方格顯示,而且,經過處理后可以測出輸入波形的值以及頻率。
3、具有改變采樣頻率以及幅度變換功能,即改變“X 增益”和“Y 增益”,并且有圖像上下移動的功能。通過 U 盤模塊可以保存圖像以及圖像回調。具有多通道信號輸入功能,即可以同時測量信號。利用交叉線精確標志處出波形上點的橫縱坐標,實現橫縱坐標的對應顯示。具體的系統(tǒng)框圖如下:藍牙安卓顯示波形信號創(chuàng)新、ADCH376安卓顯示通過藍牙模塊將輸入波形的信號發(fā)送給安卓,通過進行波形顯示與數據分析,實現真正意義上的便攜式示波器。顯示界面如下圖:U 盤通信Stm32單片機放 大電路2.2.2、CH376U 盤模塊此模塊通過 SPI 通信與單片機進行連接,實現 U 盤與單片機的通信,可以在U 盤上創(chuàng)建文件,將數據保存
4、在 U 盤上。2.2.3、觸摸屏模塊制作的便攜式示波器可以通過觸摸屏直接對示波器進行功能選擇,可以通過觸摸直接將光標移到制定位置,讀出特定位置的橫縱坐標。2.2.4、實時上傳波形到服務器的示波器通過藍牙與進行通信,處理數據后再上面實現,不僅僅可以保存,還可以利用 GPRS 網路功能,利用 HTTP 通信協(xié)議,將保存上傳到服務器上面,服務器是利用 Tomcat 在本機上面搭建的一個平的臺,其他人可以的服務器,查看波形。圖 22.2.4、自動打印波形功能波形服務器頁面的上位機,通過與服務器 Tomcat 通信,當服務器接受到打印令,就會自動調用進行打印波形。圖 3 Tomcat2.2.5、帶有 A
5、utoSet 功能按下該鍵后,可以自動調節(jié)量程。案比較3.1 硬件結構設計3.1.1CH375 與 CH376 的選擇由于 CH375 模塊沒有特定的 SPI 接口,選用并口模式占用的 IO 口過多,導致單片機 IO 口不夠用。而 CH376 有專門的 SPI 接口,占用的 IO 口只有 5 個,所以選用 CH376。3.1.2 總體實現方案與主控制器的選擇主控制器的選擇上:方案 1:51 單片機,這個控制器雖然相對容易控制,比較簡單。不過存在資源相對較少的缺點。方案 2:stm32 單片機,這個主控制器雖然在控制上相對 51 更有難度,不過資源上遠比 51 多很多。不僅 IO 口多,而且有內
6、置的 AD快。功能,處理速度又經過之前多次使用這兩種單片機的經驗,毫不猶豫地選擇了 stm32 作為主控制器。3.1.3 運放器型號的選擇方案一:TL082 與 TL084 通同型、JEFT 輸入,電源電壓15,增益帶寬 3MHz,轉換速率 15V/US,消耗電流 1.4mA ,滿足作品要求,而且價錢合適,新賽格又有得賣,所以毫不猶豫的買了。方案二:LM6172 雙運放帶寬為 100MHz,轉換速率 3000v/s,每通道消耗電流 2.3mA,輸出電流可達 50mA,完全滿足本電路的要求,不選擇該的一個原因是價格,郵購價格為 8 元一片。3.1.4 電子模擬開關的選擇方案一:用繼電器搭,通過
7、ULN2003 控制雖說輸入電壓可以提高,但是由于繼電器反應速度慢,聲音不好聽,價錢又貴,2 元一個,買十多個不劃算,所以不選。方案二:CD4051 電子模擬開關具有低導通阻抗和很低的截止漏電流。幅值為 4.520V 的數字信號可控制值至20V 的模擬信號,價錢又便宜,所以選擇此類型號。3.1.5 顯示方案1TFT 觸摸屏顯示優(yōu)點 : 不用借用第的傳輸,直接單片機操作 IO 口,實時性比較好,能滿足高頻的顯示,利用觸摸功能也能實現對用戶指令的響應。缺點 : 編程較復雜,刷屏效果很一般。2顯示優(yōu)點:實用性好,方便攜帶,只需要在 android上安裝的 APP,就可以實現波形的顯示,并根據用戶的按
8、鍵選擇對用的采樣頻率,真正實現了示波器的簡易性,具有很強的創(chuàng)新性。缺點:難度較大,處理速度受的處理器的速度影響。3.1.6 數據傳輸方案1 網絡傳輸優(yōu)點 : 傳輸數據比較容易實現,使用 android的 sokect 編程和單片機上的 DM9000 網卡通信,就能簡單實現采樣數據的傳輸。缺點 : 傳輸速度受網絡信號影響,而且需要網線,使用比較麻煩2 藍牙傳輸優(yōu)點 : 單片機上使用藍牙串口模塊能輕易地和的藍牙 API 實現數據傳輸,穩(wěn)定性較好,編程較容易,成本低廉。缺點 : 傳輸速度中等,傳輸距離有限。3 WIFI 傳輸優(yōu)點 : 傳輸速度最快,可以實現一對多的傳輸。缺點 : 協(xié)議復雜,成本高。經
9、考慮,采用藍牙傳輸,在實現低頻率的基礎上,第二代擬用 wifi 傳輸,進一步完善。四、設計與論證1、電路設計1.1、保護電路考慮到 CD4051 的輸入電壓不能大于 5V,輸出電壓即電壓不能大于3.3V,所以,在輸入輸出端必須加上保護電路。本電路中采用二極管鉗位的方法,:二極管鉗位保護電路是指由兩個二極管反向并聯(lián)組成的,一次只能有一個二極管導通,而另一個處于截止狀態(tài),那么它的正反向壓降就會被鉗制在二極管正向導通壓降 0.5-0.7 以下,從而起到保護電路的目的。在調試過程中,如果輸入電壓過大,輸入電壓基本穩(wěn)定在 5.08V 作用,輸出電壓也穩(wěn)定在 3.28V 作用,對電路起到很好的保護作用,既
10、簡單又實用。1.2、旁路電容電路旁邊的兩個電容主要是起高頻補償的作用,因為本示波器只對低頻有檢測效果,所以在實物中去掉。而且,由于容值取值不當,對電阻的分壓有一定的干擾作用。1.3 直流偏置電壓TL084 產生的電壓主要是將 1.5V 的正電壓經過反向轉換為負電壓,將輸入電壓了 1.5V,所以對負電壓也能。1.4 量程放大編程()Android 是谷歌()公司推出機開發(fā),AndroidSDK 指的是 Android 專屬的開發(fā)工具包。 AndroidSDK(Software Development Kit)提供了在 Windows/Linux/Mac上開發(fā) Android 應用的開發(fā)組件,An
11、droid 支持所有的,其包含了在 Android上開發(fā)移動應用的各種工具集。工具集不僅包括了 Android 模擬器和用于 Eclipse 的 Android 開發(fā)工具插件(ADT),而且包括了各種用來調試、打包和在模擬器上安裝應用的工具。Android SDK 主要是以 Java 語言為基礎,用戶可以使用 JavaCD4051是電子模擬開關,與 TL082配合起到電壓放大縮小與放大的作用,由三個控制端 C、B、A 控制,分別有放大50倍,20倍,10倍,5倍,2倍,縮小10倍,縮小5倍。經過函數信號發(fā)生器與示波器的測量,此電路在低頻下可以實現電壓的放大與縮小功能,且誤差很小,在20mv 之
12、內。語言來開發(fā) Android上的應用。通過 SDK 提供的一些工其打包成 Android使用的 apk 文件,然后用 SDK 中的模擬器(Emulator)來模擬和測試在 Android上運行情況和效果。Tomcat 服務器是一個免費的開放源代碼的 Web 應用服務器。Tomcat 是 Apache(Apache Software Foundation)的 Jakarta 項目中的一個項目,由 Apache、Sun 和其他一些公司及個人共同開發(fā)而成。由于有了 Sun 的參與和支持,最新的 Servlet 和 JSP 規(guī)范總是能在 Tomcat 中得到體現。因為Tomcat 技術先進、性能穩(wěn)定
13、,而且免費,因而深受 Java者的喜愛并得到了部分開發(fā)商的認可,成為目前比較流行的Web 應用服務器。Servlet 是 java 編程語言中的一個類,servlet 用于在 Web應用中進行請求和響應服務。當客戶端發(fā)送請求智服務器時,服務器可以將請求信息轉發(fā)給 Servlet,并在處理響應的業(yè)務處理之后返回給客戶端相應的結果。當啟動 Web 服務器或者客戶端第一次向服務區(qū)發(fā)送請求時,可以自動裝入 Servlet。 然后,Servlet 繼續(xù)運行知道其他客戶機發(fā)送請求。Servlet 可以對任何類型的請求產生響應,但通常被用來擴展 Web 服務器的應用程序。1.由于受傳輸速度的限制,單片機和上
14、面的波形顯示不能同步,擬采用分時段采樣的方式來實現波形,而上的波形的測量范圍是 0Hz500Hz,超過了 500Hz 的信號波型就會變形。2 根據實際示波器的原理,對采樣到的電壓的數值,采用了循環(huán)隊列的數據結構來裝,每當進來一個數據,當隊列滿了,就從隊頭刪除一個數據,這樣就能實現波形的變換了。3 由于缺乏硬件測量頻率,采用了一個卡爾曼濾波和中值定理和梯度擬合原理結合的算法,對電壓的最大值和頻率進量。五、電路圖及有關設計文件5.1、STM32 最小系統(tǒng)模塊功能:作為系統(tǒng)的主控模塊和上位機的接收模塊,處理信號并發(fā)出指令指導各模塊的協(xié)調運行。板子總體設計圖(原理圖&PCB)5.2、放大電路5.3、C
15、H376六、測試方法、儀器和數據6.1 系統(tǒng)測試的目的:1、 測試模塊功能的準確性和穩(wěn)定性。2、 整體系統(tǒng)整體的性能是否達到設計要求,發(fā)現問題并找到可行的解決方法。3、 進行電路的改進。6.2 系統(tǒng)測試的方法:1、系統(tǒng)各模塊測試階段:此階段主要著眼于局部,驗證各模塊功能是否符合設計要求,檢查各電路是否正確連接,是否正常工作。通過觀察現象,找出問題,進行模塊就糾錯或優(yōu)化。2、系統(tǒng)整體性能測試階段。此階段主要系統(tǒng)總體是否符合設計要求,每個功能是否能完整實現,檢查系統(tǒng)之間的協(xié)調性和可靠性。通過觀察小車運行狀況,找出或錯誤的地方,進行修改和優(yōu)化。3、在方面的調試方法主要是使用 J-link 進行調試,
16、設置斷點或者在中甚至一些代碼實現小車系統(tǒng)的停轉來一步步分析小車正在運行的程序從而一步步分析是程序的哪里出現了問題。4、硬件上主要是使用數字萬用表和示波器來測量各參數的正確性,減少斷線、虛焊和短路的各種問題。使用示波器來測量接收信號的強弱,通過這些調試來使得整個硬件能夠正確運行。測試儀器、數字萬用表:主要作用:A、用來判斷電壓的大小,從而判斷該電路所連元件的工作電壓是否正常;B、用來判斷偏置電壓的大小C、用來判斷所焊電路是否已經出現虛焊,并且檢查是短路還是斷路,防止因為電路問題等硬件問題導致放大電路的,引起胡亂修改程序的無用功;6.3.2、數字示波器主要作用:A、在制作焊,短路,斷路放大電路的過
17、程中,由于整個電路在一塊板子上,虛都有,這個時候數字示波器就起了很大作用,通過對電路一步一步地追蹤,逐步發(fā)現問題所在。6.3.3、函數信號發(fā)生器主要作用:對放大電路的調試與驗證。不過由于的發(fā)生器接觸不良,實在是太難為人了。6.3.4、J-link 調試器;主要作用:A、程序,減少因為串口擦寫導致的錯誤;B、調試程序,通過分析各變量發(fā)現是程序問題還是硬件問題。6.3.5、Keil主要作用:調試;A、編譯程序B、觀察寄存器、變量、函數的數據是否正常,防止傳參錯誤等低級錯誤的出現。七、測試數據及分析7.1 硬件電路測試數據X1X2X5輸入最大值輸入最小值輸出最大值輸出最小值理論最大值理論最小值280
18、mv-260mv300mv-280mv280mv-260mv540mv-520mv560mv-540mv540mv-520mv輸入最大值輸入最小值輸出最大值輸出最小值理論最大值理論最小值280mv-260mv140mv-120mv112mv-104mv540mv-520mv240mv-220mv216mv-208mv780mv-760mv340mv-320mv312mv-304mv1040mv-1020mv440mv-420mv416mv-408mv輸入最大值輸入最小值輸出最大值輸出最小值理論最大值理論最小值360mv-360mv100mv-80mv72mv-72mv500mv-500mv12
19、0mv-100mv120mv-100mv760mv-760mv180mv-160mv152mv-152mv1.04V-1.02V200mv-220mv208mv-204mvX1/5從以上結果可以看出,硬件電路的理論值與實際輸出值誤差在 0 到 40mv 內,但也不能排除函數信號發(fā)生器的干擾,本電路在轉換速率上滿足要求,頻率在低于 3Mhz 都可以用數字示波器測出數據。輸入最大值輸入最小值輸出最大值輸出最小值理論最大值理論最小值254mv-254mv12mv-10mv10.16mv-10.16mv980mv-960mv40mv-40mv39.2mv-38.4mv780mv-760mv820mv-
20、800mv780mv-760mv1040mv-1020mv1080mv-1060mv1040mv-1020mv附錄程序Main 函數/*uCOSII + STM32V3.4工程模板MAIN 文件2013-05-01*/#include includes.h #include stm32f10 x.h #include bsp.h #include app_cfg.h#include ili93xx_drive.h #include adc.h#include usart.h #include sys.h #include usart.h#include ili93xx_drive.h #inc
21、lude mmc_sd.h #include ff.h#include stdio.h #include string.h #include picdecoder.h #include touch.h #include adc.h #include timer.h#includefile_sys.h#define QueueSize 200enum HZHz200 = 1,Hz100 = 2,Hz50 = 3,Hz20 = 4,Hz10 = 5,Hz1 = 6 ;u16 tableQueueSize; u16 table1QueueSize; u8 front=0;u8 front1=0;u8
22、 rear=QueueSize-1; u8 rear1=QueueSize-1; u8 touch_key = 0;u8 Cursor_X=24; u8 Cursor_Y=60;cycle=1;u8 ADC_sFunctionalS FunctionalSling=QueueSize;e AutoSet=ENABLE;e ADC_Stop=DISABLE;u8 ADC_Ch=0;u8 VoivFlag=0; u8 SecdivFlag=0; u8 VoltOffset=134; u8 LCD_start=0; u8 Table_high0=0; u8 Table_high1=0; u8 V_m
23、ax0=0;u8 V_min0=0; u8 V_max1=0; u8 V_min1=0; u8 Vpp0=0;u8 Vpp1=0;FlagS FlagSFlagSus Table_se=SET; us LCD_se=SET;us Allow_LCD_se=SET;u8 Flag_Delay=0;u16 Frequent1 = 50 ,Frequent2=50; table_all50;table_all150;u8 Flag_OK=0,Flag_OK1=0; u8 Cycly_Count=10;Vpp_H=0,Vpp_L=0,Vpp_H1=0;u8 HzLevel=0;u8 Flag_stea
24、dy=1; /穩(wěn)定顯示波形標志位sicOS_STK App_TaskStartStkAPP_TASK_START_STK_SIZE; / TaskStart 任務堆棧sicvoidApp_TaskStart(void* p_arg);/TaskStart 函數/sicOS_STK App_TaskLEDStkAPP_TASK_LED_STK_SIZE; / TaskLED 任務堆棧sicOS_STK App_LCDStkAPP_TASK_LCD_STK_SIZE; / TaskLED 任務堆棧sicOS_STK App_AtkAPP_TASK_ADC_STK_SIZE; / TaskLED 任
25、務堆棧/sicOS_STK App_ADC_PROTaskLED 任務堆棧S_StkAPP_TASK_ADC_PROS_STK_SIZE; /s ssic icicvoid App_TaskLED(void* p_arg); void App_LCD(void* p_arg);void App_ADC(void* p_arg);/sicvoid App_ADC_PROS(void* p_arg);u8 Get_AD0(u16 Hz);u8 Get_AD1(u16 Hz);/sicOS_STK TASK_FLOOR_CHECKStkTASK_FLOOR_CHECK_STK_SIZE; / 目標樓
26、層檢測 任務堆棧/sicOS_STK TASK_MOTO_CTRLStkTASK_MOTO_CTRL_STK_SIZE;控制 任務堆棧/ 電機/sicOS_STK TASK_DISPLAYStkTASK_DISPLAY_STK_SIZE;務堆棧/ 廂外顯示 任/sicOS_STKStk_STK_SIZE;/ 通信 任務堆棧/*main()*/main(void)OSInit();SysClock_Init();/* 初始化系統(tǒng)外設、 CPU 時鐘,僅此而已 */* 建立系統(tǒng)的第一個任務 */ OSTaskCreateExt(App_TaskStart, (void *) 0, (OS_STK
27、*)&App_TaskStartStkAPP_TASK_START_STK_SIZE - 1, APP_TASK_START_PRIO, APP_TASK_START_PRIO, (OS_STK *) &App_TaskStartStk0,APP_TASK_START_STK_SIZE , (void *) 0, OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);OSStart(); /* 開始任務調度 */ return (0);/*系統(tǒng)的第一個任務,負責開 OS 時鐘,建立其他任務*/sicvoid App_TaskStart(void* p_arg)u
28、8 temp,err;p_arg = p_arg;/* 初始化 OS 時鐘 */ OS_CPU_SysTickInit();/* 統(tǒng)計任務 */#if (OS_TASK_S_EN 0) OSSInit();#endif/SysDataInit();BSP_Init();/* 初始化外設*/建立 LED 任務OSTaskCreateExt(App_TaskLED, (void *) 0, (OS_STK *)/&App_TaskLEDStkAPP_TASK_LED_STK_SIZE - 1, APP_TASK_LED_PRIO,/APP_TASK_LED_PRIO, (OS_STK *) &Ap
29、p_TaskLEDStk0,APP_TASK_LED_STK_SIZE , (void *) 0, OS_TASK_OPT_STK_CHK |OS_TASK_OPT_STK_CLR/);/SysDeviceInit();OSTaskCreateExt(App_LCD, (void *) 0, (OS_STK *) &App_LCDStkAPP_TASK_LCD_STK_SIZE - 1, APP_TASK_LCD_PRIO,APP_TASK_LCD_PRIO, (OS_STK *) &App_LCDStk0, APP_TASK_LCD_STK_SIZE , (void *) 0, OS_TAS
30、K_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);OSTaskCreateExt(App_ADC, (void *) 0, (OS_STK *)&App_AtkAPP_TASK_ADC_STK_SIZE - 1, APP_TASK_ADC_PRIO,APP_TASK_ADC_PRIO, (OS_STK *) &App_Atk0,APP_TASK_ADC_STK_SIZE , (void *) 0, OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/OSTaskCreateExt(App_ADC_PROS, (void *) 0, (
31、OS_STK *)&App_ADC_PROS_StkAPP_TASK_ADC_PROS_STK_SIZE - 1,APP_TASK_ADC_PROS_PRIO,/&App_ADC_PROAPP_TASK_ADC_PROS_PRIO, (OS_STK *)S_Stk0, APP_TASK_ADC_PROS_STK_SIZE , (void *) 0,OS_TASK_OPT_STK_CHK |OS_TASK_OPT_STK_CLR/);while (1)OSTimeDly(50);/*LED 線程,LED 閃爍*/sicvoid App_TaskLED(void* p_arg)p_arg = p_
32、arg;while (1)OSTimeDlyHMSM(0,0,2,0);GPIO_SetBits(GPIOD, GPIO_Pin_2); OSTimeDlyHMSM(0,0,2,0);GPIO_ResetBits(GPIOD, GPIO_Pin_2);sicvoid App_LCD(void* p_arg)/u8 x=0;UU8s;8TarName64;u8 i=0,j=0;u8 SecdivDis=0 xff; u8 VoivDis=0 xff; u8 LCD_multi=2; u8 LCD_cycle=120; u8 LCD_Volt=1;u8 LCD_DispFlag=0; u8 Ch1
33、_disFlag=1; u8 Ch2_disFlag=1; u8LCD_flag=0;u8 Cursor_Xtemp=Cursor_X; u8 Cursor_Ytemp=Cursor_Y; u16 table_temp120;u16 table_temp1120; FATFS fs;p_arg = p_arg; delay_ms(1500); f_mount(0, &fs); while(font_init()while(update_font()/從 SD 卡更新LCD_ShowString(60,90,FAT SYS ERROR.delay_ms(200);/);Adc_Init();Ti
34、merx_Init(4999,(36-1) ; /5000us=5ms由(10-1)到 ()TIM_Cmd(TIM3, DISABLE);初始中斷頻率為 200Hzarr 值LCD_Clear(GRAY);PO_COLOR=WHITE;LCD_DrawRectangle(4,34,245,235); LCD_Fill(5,35,244,234,BLACK);LCD_grid();PO_COLOR=RED;LCD_ShowString(0,0,H&Z Oscilloscope, 1);PO_COLOR=WHITE;for(i=0;i6;i+)LCD_DrawRectangle(250,3+40*
35、i,315,38+40*i); LCD_Fill(251,4+40*i,314,37+40*i,CYAN);PO_COLOR=BLACK;LCD_ShowString(253,13,A U T O, 1); LCD_ShowString(253,53,CH1, 1);LCD_ShowString(253,93, V/DIV, 1);LCD_ShowString(253,133, s/DIV, 1);LCD_ShowString(253,173,STOP, 1);LCD_ShowString(253,213, PrtSc, 1); for(i=0;iQueueSize;i+)table_temp
36、i=VoltOffset; table_temp1i=VoltOffset;while (1)/*while (1)if(Flag_OK=0)*/*以下為顯示部分*/while(Allow_LCD_se!=SET)OSTimeDlyHMSM(0,0,0,5);LCD_se=SET;if(Ch1_disFlag)PO_COLOR=BLACK;for(j=0;j0)LCD_DrawLine(5+LCD_multi*(j-1),table_tempj-1,5+LCD_multi*j,table_tempj);Ch1_disFlag=0;if(Ch2_disFlag)PO_COLOR=BLACK;fo
37、r(j=0;j0)LCD_DrawLine(5+LCD_multi*(j-1),table_temp1j-1,5+LCD_multi*j,table_temp1j);Ch2_disFlag=0;if(AutoSet=ENABLE)if(LCD_DispFlag)PO_COLOR=CYAN;LCD_ShowString(253,93,50mV/DIV, 1);LCD_ShowString(253,93, 3V/DIV, 1);LCD_ShowString(253,93, 1V/DIV, 1);LCD_ShowString(253,93,0.5V/DIV, 1);LCD_ShowString(25
38、3,93,0.1V/DIV, 1);LCD_ShowString(253,133,5ms/DIV, 1);LCD_ShowString(253,133,10ms/DIV, 1);LCD_ShowString(253,133,20ms/DIV, 1);PO_COLOR=BLACK;LCD_ShowString(253,93, V/DIV, 1);LCD_ShowString(253,133, s/DIV, 1); LCD_cycle=120;LCD_multi=2; LCD_DispFlag=0;elseif(!LCD_DispFlag)PO_COLOR=CYAN;LCD_ShowString(
39、253,93, V/DIV, 1);LCD_ShowString(253,133, s/DIV, 1);if(VoivFlag!=VoivDis|LCD_DispFlag=0)switch(VoivFlag)case 0:LCD_Volt=1;PO_COLOR=CYAN;LCD_ShowString(253,93,50mV/DIV, 1);PO_COLOR=BLACK;LCD_ShowString(253,93, 3V/DIV, 1);break; case 1:LCD_Volt=3;PO_COLOR=CYAN;LCD_ShowString(253,93, 3V/DIV, 1);PO_COLO
40、R=BLACK;LCD_ShowString(253,93, 1V/DIV, 1);break; case 2:LCD_Volt=6;PO_COLOR=CYAN;LCD_ShowString(253,93, 1V/DIV, 1);PO_COLOR=BLACK;LCD_ShowString(253,93,0.5V/DIV, 1);break;case 3:LCD_Volt=30;PO_COLOR=CYAN;LCD_ShowString(253,93,0.5V/DIV, 1);PO_COLOR=BLACK;LCD_ShowString(253,93,0.1V/DIV, 1);break;case
41、4:LCD_Volt=60;PO_COLOR=CYAN;LCD_ShowString(253,93,0.1V/DIV, 1);PO_COLOR=BLACK;LCD_ShowString(253,93,50mV/DIV, 1); break;default : break;VoivDis=VoivFlag;if(SecdivFlag!=SecdivDis|LCD_DispFlag=0)switch(SecdivFlag)case 0:LCD_cycle=120;LCD_multi=2;PO_COLOR=CYAN;LCD_ShowString(253,133,5ms/DIV, 1);PO_COLO
42、R=BLACK;LCD_ShowString(253,133,20ms/DIV, 1); break;case 1:LCD_cycle=60;LCD_multi=4;PO_COLOR=CYAN;LCD_ShowString(253,133,20ms/DIV, 1);PO_COLOR=BLACK;LCD_ShowString(253,133,10ms/DIV, 1); break;case 2:LCD_cycle=30;LCD_multi=8;PO_COLOR=CYAN;LCD_ShowString(253,133,10ms/DIV, 1);PO_COLOR=BLACK;LCD_ShowStri
43、ng(253,133,5ms/DIV, 1); break;default :break;SecdivDis=SecdivFlag;LCD_DispFlag =1;PO_COLOR=BLACK;LCD_Show2Num(0,16,LCD_cycle, 2, 16,0);LCD_Show2Num(32, 16, HzLevel, 2, 16,0);LCD_Show2Num(64, 16, Frequent1/10000, 2, 16,0);LCD_Show2Num(80, 16, Frequent1/100, 2, 16,0);LCD_Show2Num(96, 16, Frequent1%100
44、, 2, 16,0);LCD_ShowString(112,16,Hz, 0);LCD_Show2Num(128, 0, V_max0/100, 2, 16,0);LCD_Show2Num(144, 0, V_max0%100, 2, 16,0);LCD_Show2Num(165, 0, V_min0/100, 2, 16,0);LCD_Show2Num(181, 0, V_min0%100, 2, 16,0);LCD_Show2Num(130, 16, Vpp0/100, 2, 16,0);LCD_Show2Num(146, 16, Vpp0%100, 2, 16,0);PO_COLOR=B
45、LACK;for(i=0;i40;i+)LCD_DrawPo LCD_DrawPo LCD_DrawPofor(i=0;i33;i+)LCD_DrawPo LCD_DrawPo LCD_DrawPoLCD_grid();(5+6*i,Cursor_Ytemp);(6+6*i,Cursor_Ytemp); (7+6*i,Cursor_Ytemp);(Cursor_Xtemp,35+6*i); (Cursor_Xtemp,36+6*i);(Cursor_Xtemp,37+6*i);PO_COLOR=MAGENTA;Cursor_Xtemp=Cursor_X; Cursor_Ytemp=Cursor
46、_Y; for(i=0;i40;i+)LCD_DrawPoLCD_DrawPo LCD_DrawPo(5+6*i,Cursor_Y);(6+6*i,Cursor_Y); (7+6*i,Cursor_Y);for(i=0;i33;i+)LCD_DrawPo LCD_DrawPo LCD_DrawPo(Cursor_X,35+6*i); (Cursor_X,36+6*i);(Cursor_X,37+6*i);/*OSTimeDlyHMSM(0,0,0,20);switch (ADC_Ch)case 0:if(Table_se=SET)LCD_start=Table_high0; for(i=LCD
47、_start,j=0;j=ADC_sling)table_tempj=LCD_Volt*tablei+j-ADC_s if(table_tempj(VoltOffset-35)table_tempj=35;elseling/120;table_tempj=VoltOffset-LCD_Volt*tablei+j-ADC_sling/120;elsetable_tempj=LCD_Volt*tablei+j/120; if(table_tempj(VoltOffset-35)table_tempj=35;elsetable_tempj=VoltOffset-LCD_Volt*tablei+j/1
48、20;PO_COLOR=YELLOW;for(j=0;j0)LCD_DrawLine(5+LCD_multi*(j-1),table_tempj-1,5+LCD_multi*j,table_tempj);Ch1_disFlag=1; LCD_se=RESET;OSTimeDlyHMSM(0,0,0,50);break;case 1:for(i=LCD_start,j=0;j=ADC_sling)table_temp1j=LCD_Volt*table1i+j-ADC_s if(table_temp1j(VoltOffset-35)table_temp1j=35;elseling/120;tabl
49、e_temp1j=VoltOffset-LCD_Volt*table1i+j-ADC_sling/120;elsetable_temp1j=LCD_Volt*table1i+j/120; if(table_temp1j(VoltOffset-35)table_temp1j=35;elsetable_temp1j=VoltOffset-LCD_Volt*table1i+j/120;PO_COLREEN;for(j=0;j0)LCD_DrawLine(5+LCD_multi*(j-1),table_temp1j-1,5+LCD_multi*j,table_temp1j);Ch2_disFlag=1
50、; LCD_se=RESET;OSTimeDlyHMSM(0,0,0,50);break; case 2:break; default :break;LCD_se=SET;/*以下截屏*/if(touch_key=6)while (Allow_LCD_se!=SET) OSTimeDlyHMSM(0,0,0,5);LCD_ShowString(0,16,Capturing., 0);CH376_RST = 1;delay_ms( 20 );CH376_RST = 0;delay_ms( 100 );/*復位 */*復位 */* 延時 100 毫秒 */s = mInitCH376Host( )
51、;/* 初始化 CH376 */while ( CH376DiskConnect( ) != USB_SUCS )/* 檢查 U 盤是否連接,等待 U 盤,對于 SD 卡,可以由單片機直接查詢 SDdelay_ms( 100 );的插拔狀態(tài)引腳 */delay_ms( 200 );/ 對于檢測到 USB 設備的,最多等待 100*50mS,主要針對有些 MP3 太慢,對于檢測到 USB 設備for ( i = 0; i = DEF_DISK_MOUNTED & i = 5 ) /* 有的 U 盤總是返回未準備好,不過可以忽略,只要其建立連接 MOUNTED 且嘗試 5*50mS */break
52、;strcpy( (char *)TarName, B.BMP ); /* s = CH376FileCreatePath( TarName );目錄路徑,輸入緩沖區(qū)必須在 RAM 中 */bmp_encode(0,0,320,240); touch_key=0;目標文件名 */*新建多級目錄下的文件,支持多級sicvoid App_ADC(void* p_arg)i;u8 LED_flag=1; u8 LCD_flag=0; u16 adcx;u16 adcx1; u8 count; u8 len;u16 times=0; float temp; uart_init(9600);OSTime
53、DlyHMSM(0,0,5,0);/p_arg = p_arg; while (1)for( i = 0 ; i ARR=(2-1); /1us中斷頻率 1000kHz20k-33kif(Get_AD0(2)Flag_OK=1; HzLevel=0; break;elseHzLevel=1; break;case 1:TIM3-ARR=(3-1); /1.5us中斷頻率 500kHz13.4k-22kif(Get_AD0(3)Flag_OK=1; HzLevel=1; break;elseHzLevel=2; break;case 2:TIM3-ARR=(4-1); /2us 中斷頻率 kHz
54、10k-16kif(Get_AD0(4)Flag_OK=1;HzLevel=2;break;elseHzLevel=3;break;case 3:TIM3-ARR=(5-1); /2.5us中斷頻率 kHz8k-13.2if(Get_AD0(5)Flag_OK=1; HzLevel=3; break;elseHzLevel=4; break;case 4:TIM3-ARR=(6-1); /3us中斷頻率 kHz6.7k- 11kif(Get_AD0(6)Flag_OK=1; HzLevel=4; break;elseHzLevel=5; break;case 5:TIM3-ARR=(7-1);
55、 /3.5us 中斷頻率 100kHz5.7k-9.4kif(Get_AD0(7)Flag_OK=1; HzLevel=5;break;elseHzLevel=6;break;case 6:TIM3-ARR=(8-1); /4us中斷頻率 100kHz5k-8.2kif(Get_AD0(8)Flag_OK=1; HzLevel=6; break;elseHzLevel=7; break;case 7:TIM3-ARR=(9-1); /4.5us中斷頻率 100kHz4.5k-7.3kif(Get_AD0(9)Flag_OK=1; HzLevel=7; break;elseHzLevel=8;
56、break;case 8:TIM3-ARR=(10-1); /5us 中斷頻率 100kHz4k-6.6kif(Get_AD0(10)Flag_OK=1; HzLevel=8; break;elseHzLevel=9; break;case 9:TIM3-ARR=(15-1); /7.5us中斷頻率 100kHz2.7k-4.4kif(Get_AD0(15)Flag_OK=1; HzLevel=9; break;elseHzLevel=10; break;case 10:TIM3-ARR=(20-1); /10us中斷頻率 100kHz2k-3.3kif(Get_AD0(20)Flag_OK=
57、1; HzLevel=10; break;elseHzLevel=11;break;case 11:TIM3-ARR=(25-1); /12.5us中斷頻率 80kHz1.6k -2.7kif(Get_AD0(25)Flag_OK=1; HzLevel=11; break;elseHzLevel=27; break;case 27:TIM3-ARR=(30-1); /15us中斷頻率 10kHz1.4k-2.2kif(Get_AD0(30)Flag_OK=1; HzLevel=27; break;elseHzLevel=28; break;case 28:TIM3-ARR=(40-1); /2
58、0us中斷頻率 10kHz1k-1.6kif(Get_AD0(40)Flag_OK=1; HzLevel=28; break;elseHzLevel=12;break;case 12:TIM3-ARR=(50-1); /25us中斷頻率 10kHz0.8k-1.3kif(Get_AD0(50)Flag_OK=1; HzLevel=12; break;elseHzLevel=13; break;case 13:TIM3-ARR=(75-1); /37.5us中斷頻率 10kHz534-880if(Get_AD0(75)Flag_OK=1; HzLevel=13; break;elseHzLeve
59、l=14; break;case Hz200 :/case 14:TIM3-ARR=(100-1); /50us中斷頻率 10kHz400-660if(Get_AD0(100)Flag_OK=1;HzLevel=14;break;elseHzLevel=15;break;case 15:TIM3-ARR=(125-1); /62.5us中斷頻率 10kHz320-528if(Get_AD0(125)Flag_OK=1; HzLevel=15; break;elseHzLevel=16; break;case 16:TIM3-ARR=(150-1); /75us中斷頻率 10kHz267-440
60、if(Get_AD0(150)Flag_OK=1; HzLevel=16; break;elseHzLevel=17; break;case 17:TIM3-ARR=(175-1); /87.5us 中斷頻率 10kHz229-377if(Get_AD0(175)Flag_OK=1; HzLevel=17;break;elseHzLevel=18;break;/case Hz100 :case 18:TIM3-ARR=(200-1); /100us中斷頻率 5kHz200-330if(Get_AD0(200)Flag_OK=1; HzLevel=18; break;elseHzLevel=19
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度二手房買賣墊資擔保合同2篇
- 滅火器使用課程設計
- 2024模特經紀公司藝人經紀服務合同3篇
- 2025版綠色金融股權質押與環(huán)保風險控制擔保服務協(xié)議2篇
- 焦慮狀態(tài)護理常規(guī)
- 2024某公司電子商務事業(yè)部虛擬現實購物體驗合作協(xié)議書3篇
- 2024年跨境電商服務合作協(xié)議
- 成都職業(yè)技術學院《創(chuàng)新綜合實踐》2023-2024學年第一學期期末試卷
- 2024年版建筑工程招投標與合同文本2篇
- 2024年項目中介服務協(xié)議細則版B版
- 2024-2025學年北師版八年級物理上冊期末考試綜合測試卷
- 2023-2024學年廣東省廣州市白云區(qū)八年級(上)期末數學試卷及答案解析
- 醫(yī)院眼科醫(yī)院雷火灸操作評分標準
- 二年級口算題卡
- 畢業(yè)設計工程造價預算書
- 幼兒園課件-神奇的中草藥
- 起重機零配件(易損件)清單
- 錐坡工程量計算
- 植物園設計規(guī)范
- 深圳市建設工程施工圍擋圖集(試行版_下半部分).pdf
- 熱水器3c安全試驗報告及第三方檢測報告dsf65mx ts tx ws wx ys yx ms
評論
0/150
提交評論