基礎(chǔ)操作需要看一下以下的博客,跟著走一遍。
安裝MPLAB V4.05+XC8 V1.41,老師不會管你用什么版本,別的版本bug多,老版本反而好用:
https://blog.csdn.net/x1131230123/article/details/100907773
安裝proteus 8.9:
https://blog.csdn.net/x1131230123/article/details/106951776
做一個基礎(chǔ)實驗(想改寫到MPLAB V5+XC8 V2也看這里的博客6.3 移植操作指南):
https://blog.csdn.net/x1131230123/article/details/108757436
實物連接指南(持續(xù)更新):
https://blog.csdn.net/x1131230123/article/details/108780168
什么是編碼?
漢字編碼有哪些? UTF-8才是最常用的編碼,GB2312只是漢字編碼太局限了。

完成后:
4、
為新建的工程添加一個main.c:右鍵點source files --> 左鍵點new --> 左鍵點main.c…
不要中文
這樣就完成了!
5、
這個時候就可以編寫單片機C程序了,寫個簡單的(下面這程序就是控制端口B的低四位輸出0101電平):
#include // #pragma config statements should precede project file includes. // Use project enums instead of #define for ON and OFF. // CONFIG1 #pragma config FOSC = XT // Oscillator Selection bits (XT oscillator: Crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled and can be enabled by SWDTEN bit of the WDTCON register) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config MCLRE =ON // RE3/MCLR pin function select bit (RE3/MCLR pin function is digital input, MCLR internally tied to VDD) #pragma config CP = OFF // Code Protection bit (Program memory code protection is disabled) #pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled) #pragma config BOREN = OFF // Brown Out Reset Selection bits (BOR disabled) #pragma config IESO = OFF // Internal External Switchover bit (Internal/External Switchover mode is disabled) #pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is disabled) #pragma config LVP = OFF // Low Voltage Programming Enable bit (RB3 pin has digital I/O, HV on MCLR must be used for programming) // CONFIG2 #pragma config BOR4V = BOR40V // Brown-out Reset Selection bit (Brown-out Reset set to 4.0V) #pragma config WRT = OFF // Flash Program Memory Self Write Enable bits (Write protection off) void main(void) { TRISB=0b11110000;//高四位輸入 低四位輸出 PORTB=0b00000101;//高四位的設(shè)置無效 低四位輸出0101 while(1){ } } 在所有的預處理指令中,#pragma 指令可能是最復雜的了,它的作用是設(shè)定編譯器的狀態(tài)或者是指示編譯器完成一些特定的動作。#pragma指令對每個編譯器給出了一個方法,在保持與C和C++語言完全兼容的情況下,給出主機或操作系統(tǒng)專有的特征。依據(jù)定義,編譯指示是機器或操作系統(tǒng)專有的,且對于每個編譯器都是不同的 不用管前面那些#pragma,那些全是對xc8編譯器進行一些設(shè)置的,告訴編譯器怎么處理怎么處理。 6、 注意:這里是編譯,英文單詞是build,編譯的目的是將c語言轉(zhuǎn)換成hex機器文件,單片機只需要這個文件就能夠正確執(zhí)行我們的程序。 make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf make[1]: Entering directory 'C:/Users/xd_du/Desktop/PICproject/helloworld.X' make -f nbproject/Makefile-default.mk dist/default/production/helloworld.X.production.hex make[2]: Entering directory 'C:/Users/xd_du/Desktop/PICproject/helloworld.X' "D:Program Files (x86)Microchipxc8v1.41binxc8.exe" --pass1 --chip=16F887 -Q -G --double=24 --float=24 --opt=+asm,+asmfile,-speed,+space,-debug,-local --addrqual=ignore --mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s" -obuild/default/production/main.p1 main.c "D:Program Files (x86)Microchipxc8v1.41binxc8.exe" --chip=16F887 -G -mdist/default/production/helloworld.X.production.map --double=24 --float=24 --opt=+asm,+asmfile,-speed,+space,-debug,-local --addrqual=ignore --mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s" --memorysummary dist/default/production/memoryfile.xml -odist/default/production/helloworld.X.production.elf build/default/production/main.p1 Microchip MPLAB XC8 C Compiler (Free Mode) V1.41 Build date: Jan 24 2017 Part Support Version: 1.41 Copyright (C) 2017 Microchip Technology Inc. License type: Node Configuration :: warning: (1273) Omniscient Code Generation not available in Free mode Memory Summary: Program space used Dh ( 13) of 2000h words ( 0.2%) Data space used 2h ( 2) of 170h bytes ( 0.5%) EEPROM space used 0h ( 0) of 100h bytes ( 0.0%) Data stack space used 0h ( 0) of 60h bytes ( 0.0%) Configuration bits used 2h ( 2) of 2h words (100.0%) ID Location space used 0h ( 0) of 4h bytes ( 0.0%) You have compiled in FREE mode. Using Omniscient Code Generation that is available in PRO mode, you could have produced up to 60% smaller and 400% faster code. See http://www.microchip.com/MPLABXCcompilers for more information. make[2]: Leaving directory 'C:/Users/xd_du/Desktop/PICproject/helloworld.X' make[1]: Leaving directory 'C:/Users/xd_du/Desktop/PICproject/helloworld.X' BUILD SUCCESSFUL (total time: 1s) Loading code from C:/Users/xd_du/Desktop/PICproject/helloworld.X/dist/default/production/helloworld.X.production.hex... Loading completed 我們的hex文件在哪里?編譯完成后,我們就可以在桌面那個工程文件夾里去找下圖里這個hex文件,這個文件就是機器文件。proteus加載這個文件就可以執(zhí)行我們寫的程序。!?。?!找到這個文件我們就已經(jīng)成功了! You have compiled in FREE mode. 題外話:所以如何才能不處于免費模式?右鍵工程–>properties–>按圖里的點擊。 7、 現(xiàn)在可以談?wù)劻硪患虑?,如何proteus仿真? 8、 設(shè)置一個端口為輸出 TRISA0=0 設(shè)置某個引腳為輸入–>打開模擬輸入 詳細看書。 詳細看書。 詳細看書。 詳細看書。 PIC16F887 單片機 PROTEUS 仿真 C程序 測溫系統(tǒng) TC74 DS18B20 整個程序結(jié)構(gòu)一般如下: #include //part 0// 可能會放置一些子函數(shù)的聲明 C語言嘛,子函數(shù)無非就是先聲明,后定義。 //part 1// 各種雜七雜八的子函數(shù)放在這個地方 顯示屏子函數(shù) 溫度傳感器子函數(shù) 報警判斷子函數(shù) 按鍵檢測子函數(shù) void main( void ) { //part 2// 調(diào)用一些初始化程序 比如單片機引腳要讀取按鍵高低電平,就得把這個引腳設(shè)置為輸入方向 比如定時器中斷初始化,設(shè)置每隔2ms執(zhí)行一次中斷函數(shù) while(1) { //part 3// 這里是一個死循環(huán)體 這個位置要寫單片機不斷重復在做的事情,永不停息 比如檢測按鍵輸入,有輸入了根據(jù)輸入處理一下 比如不斷調(diào)用溫度讀取函數(shù),然后把結(jié)果顯示出來 } } //part 3// 這里這個帶了interrupt 這個函數(shù)就是中斷函數(shù) 這個函數(shù)獨立于所有函數(shù)之外,單獨看這個函數(shù) 這個函數(shù)是需要被觸發(fā)的 都是要靠設(shè)置單片機寄存器來做到的 比如在main里初始化的時候設(shè)置了定時器1的2ms中斷,那么每過2ms就會執(zhí)行一次high_isr()函數(shù),在函數(shù)里面判斷寄存器TMR1IF 就可以知道是定時器的2ms事件。 void interrupt high_isr( void ) { if ( TMR1IF ) { TMR1IF = 0;//清除標志位 //part 4// 這里需要寫定時執(zhí)行的東西, 比如我設(shè)置了一個變量是秒針倒計時,每一秒就減少1 那么我得這么寫: 變量1 ++; if(變量1加到了500) { 變量1 = 0; 秒針 --; (變量1每2ms執(zhí)行一次減少1,500次花費時間1s) } } } 看懂上面的框架后,我們就可以閱讀更多的代碼,我們可以依照以下幾個注意點去看程序: (4)注重函數(shù)或者變量名稱+注重分類。比如LCD1602驅(qū)動函數(shù)就是挨著的一堆,函數(shù)名都差不多有個LCD字樣。有意識地去多輸入一個回車,使得與其他代碼間隔遠一下,自己更好分清。
寫好程序后,怎么把程序弄到單片機里?單片機需要的是hex文件。
我們是C語言是人看的,我們需要需要借助MPLAB和XC8將C語言編譯成hex文件。
點擊下圖里的圖標就可以將C語言編譯好。
你如果需要聯(lián)調(diào)、調(diào)試、運行這幾個關(guān)鍵詞,英文單詞是debug或者run等字眼,這類操作只在看程序運行到哪里,運行成了什么情況,是嵌入式程序員在開發(fā)過程中所需要的一種模式(要是經(jīng)驗足夠也不需要這種模式)。這種事情要么需要proteus聯(lián)調(diào)設(shè)置,要么需要實物單片機連接仿真器后插入了你的電腦,不要去點這些,除非你在自己進行聯(lián)調(diào)操作或者調(diào)試實物操作。
會在底下看到編譯提示:
題外話:編譯的時候提示了一句話:
題外話:作用:此選項選擇編譯器的基本操作模式??捎妙愋陀衟ro、std和free。在PRO模式下運行的編譯器使用完全優(yōu)化并生成最小的代碼大小。標準模式使用有限的優(yōu)化,而自由模式只使用最小的優(yōu)化級別,將生成相對較大的代碼。
提示:選擇PRO在很多時候都不是一個明智的選擇,PRO模式在編譯器會“智能地”改變一些C語言的匯編實現(xiàn)方法,這有時候會有益于代碼的最優(yōu)化,但有時候會顯得有些“智障”,會讓能你認為能好好工作的C代碼工作起來不正常。這個PRO主要是提供給有經(jīng)驗的嵌入式開發(fā)工程師用于優(yōu)化代碼的。
MPLAB中的事情已經(jīng)進行完了,現(xiàn)在你已經(jīng)知道怎么使用MPLAB建立工程,如何編寫程序和編譯程序,編譯后的hex文件目錄在哪里。
其實寫好程序后,就可以鏈接仿真器進行下載(燒寫)程序了。鏈接仿真器后,下面的run圖標或者debug圖標點一下,MPLAB都會自動講hex文件燒寫到實物單片機中,單片機就能夠運行起來。這一步的操作是在調(diào)試實物的時候所用到的,字眼是debug。這里只是順便提及一下,跟我們想要進行的仿真沒有絲毫聯(lián)系。
Proteus軟件里面含有很多單片機和外部器件,能夠模擬實物電路的運行。如果我們在Proteus軟件里連接好需要的實物器件,然后將寫好的程序(hex文件)加載到Proteus軟件里的單片機器件里,那在Proteus軟件中我們就可以看到整個電路的工作情況。我們的關(guān)注點就放到了Proteus軟件中的器件連接中了。
Proteus軟件的安裝和基礎(chǔ)使用參見這個鏈接:
https://blog.csdn.net/x1131230123/article/details/106951776
新建仿真圖–>添加器件PIC16F887
將hex文件加載到Proteus軟件里的單片機器件里:雙擊單片機器件進入下圖這個設(shè)置界面—>點擊打開文件符號—>選擇桌面上工程里的hex文件—>打開—>點擊OK—>成功。這里沒有詳細截圖,看下圖里的左邊箭頭去找hex文件即可!
此時可以看到Proteus軟件左下角,分別是開始仿真和停止仿真按鈕。我們點擊開始仿真。
仿真運行后,可以看到單片機的端口B四位電平,藍色就是低電平的意思,紅色就是高電平的意思,這里就是0101的電平。如果這引腳連接了LED燈,LED燈就可以點亮。由此可見,程序生效了,單片機正常工作中。3 單片機基礎(chǔ)寄存器操作:
3.1 IO
設(shè)置一個端口為輸入 TRISA0=1
設(shè)置一個端口輸出高電平 RA0=1
設(shè)置一個端口輸出低電平 RA0=0
同時設(shè)置8個端口響應(yīng)使用TRISA PORTA
設(shè)置B C D端口類似。3.2 模擬輸入電壓讀取
3.3 外部中斷
3.4 定時器中斷
3.5 串口UART
3.6 IIC通信
4 實際項目
PIC16F887 單片機 PROTEUS 仿真 C程序 信號發(fā)生器
PIC16F887 單片機 PROTEUS 仿真 C程序 溫控電機
PIC16F887 單片機 PROTEUS 仿真 C程序 數(shù)字時鐘 萬年歷 DS1302 陰歷顯示
PIC16F887 單片機 PROTEUS 仿真 C程序 搶答器
PIC16F887 單片機 PROTEUS 仿真 C程序 可存儲電子琴 PIC
PIC16F887 單片機 PROTEUS 仿真 C程序 模擬電話撥號計算器 密碼鎖
PIC16F887 單片機 PROTEUS 仿真 C程序 電子密碼鎖
PIC16F887 單片機 PROTEUS 仿真 C程序 智慧門鈴呼叫系統(tǒng) 門鈴一拖 3
PIC16F887 單片機 PROTEUS 仿真 C程序 病床呼叫系統(tǒng)
PIC16F887 單片機 PROTEUS 仿真 C程序 測溫系統(tǒng) DS18B20 TC74
PIC16F887 單片機 PROTEUS 仿真 C程序 數(shù)字點餐系統(tǒng)5 如何閱讀代碼
(1)在MPLAB中建立好工程,利用好MPLAB去閱讀程序;
(2)MPLAB有個竅門,在工程已經(jīng)被編譯后,我們可以 按住ctrl 然后鼠標左鍵點函數(shù)名字或變量名字去跳轉(zhuǎn),直接跳轉(zhuǎn)到函數(shù)定義的地方。更需要提出的是,在子函數(shù)定義處再次ctrl+左鍵點函數(shù)名字,會跳轉(zhuǎn)到子函數(shù)聲明處。
(3)ctrl+F進入查找,可以通過Next去查看main.c整個文件中的這個查找字符串出現(xiàn)的每一個地方。方便看函數(shù)都在哪里用了。
上一篇:基于PIC16F877A單片機和SCA60C芯片實現(xiàn)帆船姿態(tài)儀的設(shè)計
下一篇:PIC16F887 MPLAB IDE 多個工程的建立 多機仿真
推薦閱讀
史海拾趣
為了進一步擴大市場份額和提高競爭力,AVAGO公司開始積極尋求并購機會。通過一系列精心策劃的并購交易,公司成功整合了多家在半導體行業(yè)具有影響力的企業(yè),從而獲得了更多的技術(shù)資源和市場份額。這些并購不僅增強了AVAGO公司的綜合實力,還為其在全球范圍內(nèi)的業(yè)務(wù)拓展奠定了堅實基礎(chǔ)。
臺灣凱勵(Carli)公司成立于1986年,總部位于臺灣省臺中市。在初創(chuàng)階段,公司就專注于金屬膜電容器的研發(fā)與生產(chǎn),憑借對技術(shù)的執(zhí)著追求和對品質(zhì)的嚴格把控,逐漸在行業(yè)中嶄露頭角。凱勵公司不斷引進先進的生產(chǎn)設(shè)備和技術(shù)人才,積累了大量的技術(shù)經(jīng)驗和研發(fā)實力,為其后續(xù)的發(fā)展奠定了堅實的基礎(chǔ)。
Excelight非常重視企業(yè)文化建設(shè)。公司倡導“創(chuàng)新、協(xié)作、務(wù)實、進取”的企業(yè)精神,鼓勵員工勇于探索、敢于創(chuàng)新。同時,Excelight還為員工提供了良好的工作環(huán)境和福利待遇,吸引了大量優(yōu)秀人才的加入。
在企業(yè)文化的影響下,Excelight的團隊凝聚力不斷增強,員工的積極性和創(chuàng)造力得到了充分發(fā)揮。這使得公司在面對市場變化和競爭挑戰(zhàn)時能夠迅速作出反應(yīng)和調(diào)整。
隨著電子技術(shù)的快速發(fā)展,ELM意識到只有不斷創(chuàng)新才能保持市場競爭力。因此,公司加大了研發(fā)投入,專注于新技術(shù)的研發(fā)和應(yīng)用。經(jīng)過數(shù)年的努力,ELM成功推出了一系列具有創(chuàng)新性和領(lǐng)先性的電子產(chǎn)品,如高性能的集成電路、先進的傳感器等。這些產(chǎn)品的推出不僅豐富了ELM的產(chǎn)品線,也進一步提升了公司的市場地位。
在追求經(jīng)濟效益的同時,ELM也注重環(huán)保和可持續(xù)發(fā)展。公司積極采用環(huán)保材料和綠色生產(chǎn)工藝,降低生產(chǎn)過程中的能耗和排放。同時,ELM還積極參與環(huán)保公益活動,推動電子行業(yè)的綠色發(fā)展。這些舉措不僅體現(xiàn)了ELM的社會責任感,也為公司的長期發(fā)展奠定了堅實的基礎(chǔ)。
華潤微一直注重技術(shù)創(chuàng)新和研發(fā)投入。公司擁有一支高素質(zhì)的研發(fā)團隊,致力于寬禁帶半導體(即第三代半導體)等領(lǐng)域的技術(shù)研發(fā)。通過不斷的努力和積累,華潤微在新技術(shù)研發(fā)方面取得了豐碩的成果,成為寬禁帶半導體領(lǐng)域的佼佼者。同時,公司也加大了對封裝測試技術(shù)的研發(fā)投入,不斷提升其封裝測試能力和技術(shù)水平。
使用LM3S8962開發(fā)板開發(fā)音樂的例程。本例程已經(jīng)調(diào)試通過,可以供大家研究學習! 歡迎大家指正! 好了,傳文件上來,下面是源文件! … 查看全部問答∨ |
|
WINCE下如何截取屏幕上某個RECT區(qū)域上的圖片?急 我現(xiàn)在有480*800的一個窗口 上面有背景圖和其他一些圖。。都貼在上面。 當我點擊任意一點。如何才能把點擊后規(guī)定的區(qū)域下的圖片拿出來可以用?… 查看全部問答∨ |
請高手幫幫忙: 最近想把「micro C/os-ii The Real-Time Kernel 」書中的 chapter 1 之example 1-4 移植 至 s3c2440 開發(fā)板子中,卻覺得不容易上手,請高手不吝多多指教,謝謝! … 查看全部問答∨ |
芯片外部引腳很多都使用inout類型的,為的是節(jié)省管腿。一般信號線用做總線等雙向數(shù)據(jù)傳輸?shù)臅r候就要用到INOUT類型了。就是一個端口同時做輸入和輸出。 inout在具體實現(xiàn)上一般用三態(tài)門來實現(xiàn)。三態(tài)門的第三個狀態(tài)就是高阻\'Z\'。當inout端口不輸出時 ...… 查看全部問答∨ |
這兩個不都是最終都是生成arm的識別的文件,有什么區(qū)別嗎,生成的格式不一樣?這兩個環(huán)境各生成什么格式文件,如何下載或者說用什么軟件下載?有人說ads一般用于裸機編程,是這回事嗎? 我是菜鳥,不要噴我,感謝啦… 查看全部問答∨ |
正月十五鬧花燈!幾個簡單的LM317頻率可調(diào)的閃光燈電路圖 LM317常用作電壓穩(wěn)壓器中的調(diào)整元件,這里給大家介紹一個不尋常的應(yīng)用,只要配上不多的外部元件,可以使一個12V的小燈泡閃爍發(fā)光。 如圖,采用所給的元件參數(shù)值和信號,當電路接通以后,小燈泡將以4Hz的頻率閃爍,當然,若改變元件參數(shù)(R2或C ...… 查看全部問答∨ |
TI給的關(guān)于FLASH歷程 void main(void) { unsigned long * Flash_ptrD; // Initialize Flash pointer Seg D unsigned long value; WDTC ...… 查看全部問答∨ |
設(shè)計資源 培訓 開發(fā)板 精華推薦
- Microchip 升級數(shù)字信號控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導體推出用于匹配遠距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- BOE(京東方)聯(lián)合榮耀打造榮耀Magic V5 以領(lǐng)先LTPO技術(shù)打造行業(yè)新標桿
- 華為ADS 4發(fā)布:多傳感器融合,提升自動駕駛安全性
- 曉鶯說:線控制動變革風云
- 大眾商用車推出AirConsole 將其信息娛樂系統(tǒng)擴展為游戲機
- 福州大學發(fā)明新機器視覺傳感器 可使機器人對極端光照做出超快反應(yīng)
- 蘋果獲沉浸式虛擬顯示器相關(guān)的專利
- 英特爾汽車“折戟”,十年布局一夜歸零
- 寶馬自動充電機器人概念驗證成功,引領(lǐng)無人充電新時代
- 智駕模式下LQR最優(yōu)算法在EPS中的應(yīng)用研究
- 6月超17款人形機器人新品推出
- 有獎直播|羅徹斯特電子半導體全周期解決方案 助您應(yīng)對供應(yīng)鏈中斷和元器件停產(chǎn)的挑戰(zhàn)
- 直播已結(jié)束--STM32全球線上峰會 | 新品STM32N6重磅發(fā)布,50+開發(fā)板等你抽!
- 有獎問答 | 無線MCU該如何選?英飛凌這里有一份參考答案
- “泰”想開車智能篇(下):新一代智能汽車智能化
- 1月22日下午14:00Mouser攜手Maxim邀您觀看有獎直播:深入淺出可穿戴健康監(jiān)測
- 趣味電子技術(shù)史話第二講:開關(guān)電源的早期歷史
- 報名贏紅包,到場抽開發(fā)板|2021 RT-Thread 開發(fā)者大會等你約!
- 艾邁斯半導體和SmartSens就3D和NIR傳感器開展合作
- OPEN MIND最新版本的 hyperMILL? CAD/CAM 套件
- AI芯天下丨大疆科技,無人機巨頭進軍STEAM ,是圍魏救趙么?
- 技術(shù)文章—采用PGA的SAR轉(zhuǎn)換器可實現(xiàn)125 dB的動態(tài)范圍
- 什么是真正的物聯(lián)網(wǎng)
- SRII重磅亮相CICD 2021,以先進ALD技術(shù)賦能第三代半導體產(chǎn)業(yè)
- “云計算”是什么?它到底有什么用?
- Imagination和Mobica合作創(chuàng)建汽車虛擬化環(huán)境
- TT Electronics公司為其WHPC系列產(chǎn)品增添了超高功率貼片電阻器
- 手持式萬用表和臺式萬用表該如何選擇