




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
35/39本科生畢業(yè)論文(設(shè)計)題目:基于單片機的數(shù)字電流表的設(shè)計學(xué)院電子信息工程學(xué)院學(xué)科門類工學(xué)專業(yè)電子信息工程學(xué)號指導(dǎo)教師2015年05月30日摘要隨著時代的進步,電子科學(xué)技術(shù)的日益更新,傳統(tǒng)電工電子測量儀器——模擬測量儀表即使可以直觀地從刻度盤讀出表針偏轉(zhuǎn)了多少格或占了滿刻度的百分之幾等,也滿足不了對測量數(shù)據(jù)的精確要求,那么就需要更高、更準精度的儀器來替代。同時傳統(tǒng)的模擬測量儀表在計算時需要對讀數(shù)加以換算和說明,而且不同的觀察者會帶來不同的人為“視差”,即使同一個觀察者處于不同的位置也可能會得到不同的結(jié)果和偏差。然而,數(shù)字電流表就能夠克服這些問題,它的測量結(jié)果直接以數(shù)字的形式在顯示屏上顯示出來。數(shù)字電流表不僅具有讀數(shù)準確,設(shè)計簡單,隨身攜帶的優(yōu)點,而且操作方法簡單,人們使用起來也非常方便,這些優(yōu)點使數(shù)字電流表在近年來的電工電子的測量中應(yīng)用更加廣泛。本文基于AT89C51單片機,論述數(shù)字電流表的工作原理與設(shè)計過程。利用Protel軟件設(shè)計、KeilC軟件和Proteus仿真軟件,根據(jù)所給數(shù)字電流表的技術(shù)指標和要求,確定電流表所需的元器件和最佳設(shè)計方案,這種方法簡單易行,最終得到比較理想,符合設(shè)計要求的數(shù)字電流表。關(guān)鍵詞:C51單片機;A/D轉(zhuǎn)換器;數(shù)字電流表AbstractWiththeprogressoftime,increasinglyupdatingelectronicscienceandtechnology,traditionalelectricandelectronicmeasuringinstruments-analoguemeasurementinstruments,evenintuitivelyreadfromthedialhandsdeflectedthenumberofcellsoraccountedforafewpercentoffullscale,alsocannotmeettheexactrequirementsofthemeasureddata,thenyouneedhigherprecisionandmoreaccurateinstrumentinstead.Whiletraditionalanalogmeasuringinstrumentsneedtobeconvertedinthecalculationanddescriptionofthereadings,anddifferentobserverswillbringadifferentman,"parallax",evenifthesameobserverindifferentlocationsmaygetdifferentresultsanderror.However,thedigitalmeterwillbeabletoovercometheseproblems,itsmeasurementresultsindigitalformdirectlyonthescreenout.Digitalammeterreadingisnotonlyaccurate,simpledesign,theadvantagesofportable,andsimplemethodofoperation,itisalsoveryeasytouse,theseadvantagesmakedigitalammeterinelectricandelectronicmeasuringmorewidelyinrecentyears.BasedonAT89C51microcontroller,digitalammeterdiscussedtheworkingprincipleanddesignprocess.UseProtelsoftwaredesign,KeilCsoftwareandProteussimulationsoftware,dependingonthedigitalammetertechnicalindicatorsandrequirements,determinetherequiredcomponentsandammeterbestdesign,thismethodissimple,andultimatelygettheideal,inlinewithDigitalammeterdesignrequirements.Keywords:C51microcontrollerdigitalammeter;A/Dconverter;digitalammeter目錄TOC\o"1-2"\f\h摘要IAbstractII目錄III1.引言11.1研究背景與意義11.2國外研究現(xiàn)狀21.3本文主要容安排22.?dāng)?shù)字電流表的理論22.1數(shù)字電流表的工作原理22.2A/D轉(zhuǎn)換器32.3AT89C51單片機52.4液晶顯示器83.?dāng)?shù)字電流表的設(shè)計93.1方案論證93.2任務(wù)指標103.3整體電路圖104.軟件設(shè)計114.1軟件設(shè)計的主程序流程圖114.2編程語言介紹114.3Protel99SE軟件的介紹125.系統(tǒng)調(diào)試與實物制作135.1硬件系統(tǒng)的調(diào)試135.2系統(tǒng)軟件的調(diào)試135.3整體系統(tǒng)的調(diào)試145.4實際硬件制作結(jié)果146.總結(jié)與展望14參考文獻16致17附錄181.引言1.1研究背景與意義數(shù)字電流表(Digitalammeter)簡稱AMP,它的測量原理是通過數(shù)字化測量技術(shù),把輸入的連續(xù)模擬量(直流輸入電流)轉(zhuǎn)換成不連續(xù)、離散的數(shù)字形式,然后通過液晶顯示屏來顯示的儀表。過去傳統(tǒng)的指針式電流表不僅功能單一,而且精確度低,無法滿足現(xiàn)今數(shù)字化時代的需求,然而基于單片機的數(shù)字電流表,不僅具有精確度高、抗干擾能力強,可擴展性強、集成方便的特點,還可以與PC進行當(dāng)前實時通信等信息的傳輸?,F(xiàn)今,基于各種型號單片機、A/D轉(zhuǎn)換器等設(shè)計成的數(shù)字電流表,已經(jīng)在電子電工測量、工業(yè)自動化儀表、自動檢測系統(tǒng)等許多智能化測量領(lǐng)域起到了舉足輕重的地位,得到了越來越多使用者的青睞,體現(xiàn)出數(shù)字電流表強大的生命力。與此同時,各種基于AMP擴展而成的通用與專用數(shù)字化儀表儀器,也把電量和非電量測量的技術(shù)水平提高到更高的位置。在進行課題設(shè)計之前,我們要學(xué)會如何在互聯(lián)網(wǎng)和圖書館查找所需的資料,同時復(fù)習(xí)過去所學(xué)的課程知識并加深理解記憶,不僅為畢業(yè)設(shè)計打好良好基礎(chǔ),同時也為以后的工作做充分的準備。通過對畢業(yè)設(shè)計題目的分析,了解數(shù)字電流表的組成特性和工作原理;學(xué)會如何使用數(shù)字電流表測量數(shù)據(jù)、調(diào)試、校準的方法;學(xué)會如何進行分流電路的連接設(shè)進和計算;學(xué)習(xí)了解過載電路保護的工作原理和功用。最終,通過本課程設(shè)計,我們掌握電子設(shè)計的基本步驟和方法,培養(yǎng)自己分析問題、解決問題和處理問題的能力。數(shù)字電流表和傳統(tǒng)的指針式電流表相比,具有如下優(yōu)點:1.可以直觀準確的讀取數(shù)字;2.能夠顯示小數(shù)點后面的位數(shù);3.測量時數(shù)字分辨率高,準確度高;4.可以測量的量程圍較大;5.能夠擴展;6.工作效率高;7.輸入阻抗高;8.電路集成度高,功率消耗少;9.抗干擾能力較強。綜上可知,數(shù)字型電流表代替?zhèn)鹘y(tǒng)指針電流表不僅是時代發(fā)展的必然趨勢,也是現(xiàn)今市場的迫切需求。而此次課題的選擇和設(shè)計正是基于AT89C51單片機來進行設(shè)計的。1.2國外研究現(xiàn)狀數(shù)字電流表自問世以來,已經(jīng)經(jīng)過多年的發(fā)展和改進,大體上可以概括為五代產(chǎn)品。第一代產(chǎn)品是電子管數(shù)字電流表,問世于20世紀50年代,第二代產(chǎn)品是晶體管數(shù)字電流表,問世于20世紀60年代,第三代產(chǎn)品是中、小規(guī)模集成電路的數(shù)字電流表,研制于20世紀70年代。第四代、第五代產(chǎn)品是近些年來由國外相繼研制推出的由大規(guī)模集成電路(LSI)或者超大規(guī)模集成電路(VLSI)組成的數(shù)字電流表、智能數(shù)字電流表。這些數(shù)字電流表的問世不僅在電子測量的進程中開創(chuàng)了先河,更憑借著準確度高、可靠性強、分辨力高、性價比高等優(yōu)良特性而備受人們的喜愛。1.3本文主要容安排前期通過查閱大量的雜志、期刊、論文等相關(guān)重要的資料、文獻之后,對基于單片機的數(shù)字電流表的設(shè)計思路進行大體的把握,具體的行文章節(jié)安排如下。第一章:引言中介紹數(shù)字電流表的研究背景和意義,發(fā)展現(xiàn)狀和取得的研究成果。第二章:詳細的介紹數(shù)字電流表的基本理論知識。第三章:詳細的介紹數(shù)字電流表的設(shè)計方案和數(shù)字電流表的任務(wù)指標以與整體電路圖的設(shè)計。第四章:介紹Protel99SE軟件的使用和編程語言的學(xué)習(xí)。第五章:對數(shù)字電流表進行硬件、軟件和整體系統(tǒng)的調(diào)試。第六章:對論文進行總結(jié)和展望。2.?dāng)?shù)字電流表的理論2.1數(shù)字電流表的工作原理數(shù)字電流表是一個可以將輸入的連續(xù)模擬電流量經(jīng)過A/D轉(zhuǎn)換器轉(zhuǎn)變?yōu)椴贿B續(xù)、離散的數(shù)字形式,并通過液晶顯示屏顯示出電流讀數(shù)的儀表,和指針式電流表相比,數(shù)字式電流表有著測量數(shù)據(jù)準確明了,顯示的讀數(shù)位數(shù)精度高等特點,類似于常用的數(shù)字式萬用表,其使用性能相當(dāng)廣泛實用。首先我們通過單片機和外部擴展電路做成一個理想的電壓[1],硬件電路設(shè)計由7個部分組成:主控模塊AT89C51單片機系統(tǒng),A/D轉(zhuǎn)換電路,顯示系統(tǒng),驅(qū)動電路,復(fù)位電路,晶振電路以與測量電壓輸入電路。硬件電路設(shè)計框圖如圖2-1所示:復(fù)位電路復(fù)位電路主控模塊AT89C51晶振電路A/D轉(zhuǎn)換器驅(qū)動電路電壓信號顯示模塊圖2-1系統(tǒng)硬件設(shè)計框圖人們常說的電流表指的是靈敏電流計,由于其量程太小,不能直接測量電流,只能通過它檢測有無電流和電流的流向,所以需將一個理想電壓表改裝成一個多量程或者量程較大的數(shù)字電流表。本次課題設(shè)計是基于一個阻為無窮大數(shù)字電壓表的基礎(chǔ)上,并聯(lián)上一個分流電阻來構(gòu)成的數(shù)字電流表,其工作原理如圖2-2所示,電路圖用G表示。當(dāng)待測電流流過電阻,電流表的量程就由G的滿量程電壓和電阻的阻值來決定,記U為G的滿量程電壓,根據(jù)歐姆定律U=RI,當(dāng)U和R已知,則電流表的滿量程電流就是I的數(shù)值。圖2-2數(shù)字電流表的基本工作原理2.2A/D轉(zhuǎn)換器數(shù)模轉(zhuǎn)換器,又稱D/A轉(zhuǎn)換器,簡稱DAC,它的主要功能是把數(shù)字量轉(zhuǎn)變成模擬量。D/A轉(zhuǎn)換器的組成基本上包括4個部分,即權(quán)電阻網(wǎng)絡(luò)、運算放大器、基準電源和模擬開關(guān)。模數(shù)轉(zhuǎn)換器中一般都要用到數(shù)模轉(zhuǎn)換器,模數(shù)轉(zhuǎn)換器即A/D轉(zhuǎn)換器,簡稱ADC,它的主要功能是把連續(xù)的模擬信號轉(zhuǎn)變?yōu)殡x散的數(shù)字信號[2]。通過對轉(zhuǎn)換器的了解與本設(shè)計的要求,同時考慮到具體轉(zhuǎn)換器的具有性能指標等特點,我們選擇PCF8591作為本設(shè)計的A/D轉(zhuǎn)換器。PCF8591轉(zhuǎn)換器是一個具有單片集成、能夠進行獨立供電、功耗低、8-bitCMOS數(shù)據(jù)獲取的器件。PCF8591有著4個模擬輸入、1個模擬輸出和1個串行I2C總線接口。PCF8591的地址引腳有3個,分別為A0、A1和A2,可用來進行硬件地址的編程,可以在不添加額外硬件的情況下,在同一個I2C總線上接入8個PCF8591器件。在PCF8591器件上輸入地址、輸出地址、控制信號和數(shù)據(jù)信號通常都是通過雙線雙向的I2C總線以串行的方式進行傳輸信息的[3]。PCF8591具有多路模擬量輸入、置跟蹤保持、8-bit模數(shù)和數(shù)模轉(zhuǎn)換等功能,而且I2C總線的最大速率決定了PCF8591的最大轉(zhuǎn)化速率。特征如下:[1]獨立的供電系統(tǒng)[2]PCF8591的電壓操作圍是2.5V-6V[3]待機消耗電流低[4]通過I2C總線串行輸入/輸出[5]PCF8591通過3個硬件地址引腳尋址[6]PCF8591的采樣率由I2C總線速率決定[7]4個模擬輸入可以編程為單端型或差分輸入[8]自動增量頻道選擇[9]PCF8591模擬電壓的圍從VSS到VDD[10]PCF8591置跟蹤保持電路[11]8-bit逐次逼近A/D轉(zhuǎn)換器[12]實現(xiàn)DAC增益可以通過1路模擬輸出來實現(xiàn)原理圖如圖2-3所示:圖2-3PCF8591原理圖PCF8591引腳信息[4]如圖2-4所示:圖2-4PCF8591引腳AIN0~AIN3:模擬信號的輸入端。A0~A2:引腳地址端。VDD、VSS:電源端(2.5V~6V)。SDA、SCL:I2C總線的數(shù)據(jù)線、時鐘線。OSC:外部時鐘的輸入端,部時鐘的輸出端。EXT:部、外部時鐘的選擇線,EXT接地時使用部時鐘。AGND:模擬信號地。AOUT:A/D轉(zhuǎn)換輸出端。VREF:基準電源端。2.3AT89C51單片機單片機(Microcontrollers)是一種集成電路芯片,通過超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器/計數(shù)器等功能(可能還包括顯示驅(qū)動電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個小而完善的微型計算機系統(tǒng),在工業(yè)控制領(lǐng)域得到廣泛應(yīng)用[5]。AT89C51是一種可以編程、可以擦除的只讀存儲器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低電壓微型處理器,ATMEL生產(chǎn)的AT89C51是一種將多功能8位CPU和閃爍存儲器組合在單個芯片中的高效微控制器。采用其AT89C51單片機制作的很多嵌入式控制系統(tǒng)不僅靈活性高而且設(shè)計方案價廉,從而深受人們青睞。圖2-5AT89C51單片機AT89C51單片機各引腳結(jié)構(gòu)如圖2-5所示[6]。引腳功能介紹:[1]VCC——接電源引腳。[2]GND——接地引腳。[3]P0口:8位,漏極開路的準雙向I/O口,具有部上拉電阻,該引腳可驅(qū)動8個LS型TTL負載。當(dāng)P0口的管腳第一次寫入“1”時,被定義為高阻輸入。P0口能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FLASH編程時,P0口作為原碼輸入口,當(dāng)FLASH進行校驗時,P0輸出原碼,此時P0口外部必須被拉高。[4]P1口:8位,具有部上拉電阻的準雙向I/O口,P1口緩沖器允許接收輸出4個LS型TTL負載。P1口管腳寫入“1”后,被部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于部上拉的緣故。在FLASH進行編程和校驗時,P1口作為第八位地址接收。[5]P2口:8位,具有部上拉電阻的準雙向I/O口,P2口緩沖器允許接收輸出4個LS型TTL負載,當(dāng)P2口被寫“1”后,其管腳被部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于部上拉的緣故。當(dāng)P2口用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。[6]P3口:8位,具有部上拉電阻的準雙向I/O口,可接收輸出4個LS型TTL負載。當(dāng)P3口寫入“1”后,它被部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL),這是由于上拉的緣故。P3口也可作為AT89C52的一些特殊功能口,如下所示[7]:P3.0/RXD:8位準雙向并行口,串行數(shù)據(jù)輸入口P3.1/TXD:8位準雙向并行口,串行數(shù)據(jù)輸出口P3.2/:8位準雙向并行口,外部中斷0申請信號輸入端P3.3/:8位準雙向并行口,外部中斷1申請信號輸入端P3.4—T0:8位準雙向并行口,定時器/計數(shù)器0外部脈沖的輸入端P3.5—T1:8位準雙向并行口,定時器/計數(shù)器1外部脈沖的輸入P3.6/:8位準雙向并行口,外部數(shù)據(jù)存儲器(RAM)寫選通P3.7/:8位準雙向并行口,外部數(shù)據(jù)存儲器(RAM)讀選通P3口同時也為閃爍編程和編程校驗接收一些控制信號。[7]RST——復(fù)位輸入口。當(dāng)振蕩器處于復(fù)位器件時,要保持RST腳的兩個機器周期的高電平時間。[8]ALE/——當(dāng)訪問外部存儲器時,地址鎖存允許輸出電平用于鎖存地址的低位字節(jié)。在FLASH進行編程期間,其引腳能夠用于輸入編程脈沖。在平時,ALE端口以恒定不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6,所以它可用作外部輸出的脈沖或用于定時目的。但要注意的是:當(dāng)作為外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如果想要禁止ALE的輸出可以在SFR8EH地址上置0。這時,ALE只有在執(zhí)行MOVX,MOVC指令時才起作用。另外,該引腳略微被拉高。微處理器在外部執(zhí)行狀態(tài)如果ALE被禁止,則置位無效。[9]——外部程序存儲器的選通信號。當(dāng)處于外部程序存儲器取指期間,每個機器周期兩次有效。但處于訪問外部數(shù)據(jù)存儲器時,這兩次有效的信號將不會出現(xiàn)。[10]/VPP——當(dāng)保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有部程序存儲器。注意加密方式1時,EA將部鎖定為RESET;當(dāng)EA端保持高電平時,此間部程序存儲器。在FLASH進行編程的時候,此引腳也可以用于施加12V編程電源(VPP)。2.4液晶顯示器LCD(LiquidCrystalDisplay)是液晶顯示器名稱的縮寫,我們在日常生活中隨處可見。液晶顯示器不僅具有顯示圖像質(zhì)量高,而且采用數(shù)字式接口、體積小、質(zhì)量輕、功耗低等優(yōu)點,所以在生活中得到廣泛應(yīng)用。LCD1602是專門用來顯示數(shù)字、字母、符號等點陣式字符型液晶顯示模塊,常見的幾種規(guī)格主要有16*1,16*2,20*2和40*2等,常見的有字符型、點陣型和筆段型。模塊部元器件的主要構(gòu)成有LCD顯示屏、控制器、列驅(qū)動器和偏壓產(chǎn)生電路[8]。本課題設(shè)計以太陽人電子生產(chǎn)制造的1602液晶顯示器為例來簡單介紹其用法。常見的1602字符型液晶顯示器引腳如圖2-6所示:圖2-6LCD1602引腳LCD1602引腳采用的是標準16腳接口,其各引腳的功能如下[9]:引腳1:GND為接地電源。引腳2:VCC接5V正極電源。引腳3:VO為調(diào)整液晶顯示器的對比度端口,當(dāng)正電源接在其端口時,對比度處于最弱狀態(tài);當(dāng)?shù)仉娫唇釉谄涠丝跁r,對比度處于最高狀態(tài)(當(dāng)對比度過高時就會產(chǎn)生“鬼影”,在使用時,可以通過一個10K的電位器來調(diào)整對比度)。引腳4:RS是選擇寄存器,當(dāng)其處于高電平1時,選擇數(shù)據(jù)寄存器;當(dāng)其處于低電平0時,選擇指令寄存器。引腳5:RW是讀寫信號線,當(dāng)其是高電平1時,進行讀操作;當(dāng)其處于低電平時,進行寫操作。引腳6:E(或EN)端是使能(enable)端口,當(dāng)其處于高電平1時,讀取信息;負跳變時執(zhí)行此指令。引腳7~14:DB0~DB7是8位的雙向數(shù)據(jù)端。引腳15~16:空腳或背燈電源端。15引腳是背光正極端口,16引腳是背光負極[10]端口。3.?dāng)?shù)字電流表的設(shè)計3.1方案論證(一)設(shè)計方案該數(shù)字電流表的設(shè)計主要由電壓信號采樣電路、A/D(PCF8591)轉(zhuǎn)換電路以與LCD顯示電路構(gòu)成,其中采樣電路部分包括采樣電阻和差分放大電路,以與芯片電路三個模塊。數(shù)字電流表的設(shè)計方案如圖3-1所示。電壓信號電壓信號采樣電路A/D轉(zhuǎn)換器AT89C51處理數(shù)字信號LCD液晶顯示圖3-1數(shù)字電流表設(shè)計方案(二)硬件電路描述首先通過對論文題目的分析,根據(jù)題目要求考慮所用到的單片機,鑒于合理選取與實例的具體分解,同時考慮到本課題的單片機需求,選取AT89C51單片機作為本課題設(shè)計的單片機。AT89C51不僅可以按照常規(guī)編程方法進行,而且還可以實現(xiàn)在線編程。它能夠?qū)⑼ㄓ玫奈⑻幚砥骱虵lash存儲器結(jié)合在一起,同時Flash存儲器具有可反復(fù)擦寫功能,有效地降低開發(fā)成本。AT89C51是一種功耗低、性能高的CMOS8位微控制器,具有4K系統(tǒng)可編程Flash存儲器,由Atmel公司高密度非易失性存儲器技術(shù)制造。片上的Flash允許程序存儲器在系統(tǒng)可編程,也適用于常規(guī)的編程器。在單芯片上,AT89C51擁有靈巧的8位CPU和可在系統(tǒng)編程Flash,眾多的嵌入式控制應(yīng)用系統(tǒng)都采用其作為核心部件,并且得到廣泛應(yīng)用。再次,在進行電流測量時,電流輸入的是模擬量,而單片機只能處理數(shù)字信號,所以需要通過A/D轉(zhuǎn)換芯片進行轉(zhuǎn)換,通過篩選和分析,本課題采用PCF8591作為A/D轉(zhuǎn)換芯片。A/D轉(zhuǎn)換器的概念:即模數(shù)轉(zhuǎn)換(AnalogtoDigitalConversion),當(dāng)輸入端輸入模擬量(比如電壓信號)時,會相應(yīng)輸出一個與模擬量相對應(yīng)的數(shù)字量(通常以二進制形式表示)。例如在參考電壓VREF為5V,8位的模數(shù)轉(zhuǎn)換器情況下,當(dāng)輸入的電壓為0V時,輸出的數(shù)字量為00000000,當(dāng)輸入的電壓為5V時,輸出的數(shù)字量為11111111。當(dāng)輸入的電壓在0V到5V之間變化時,輸出的數(shù)字量會在00000000到11111111之間變化。這樣每次輸入的電壓值都會對應(yīng)輸出一個數(shù)字量,從而實現(xiàn)了模數(shù)轉(zhuǎn)換功能。最后,電路顯示屏部分采用的是LCD1602液晶顯示。3.2任務(wù)指標本課題設(shè)計要求以單片機為基礎(chǔ)制作出數(shù)字電流表。通過該設(shè)計了解A/D轉(zhuǎn)換器的原理、51系列單片機的使用和LCD液晶顯示器的使用方法、顯示過程。功能要求為:(1)三位直流數(shù)字電流表;(2)量程圍為0-100mA;(3)通過LCD顯示屏顯示待測電流的數(shù)值;(4)8通道進行電流值采集。本設(shè)計系統(tǒng)主要通過硬件設(shè)計、軟件編程的手段來實現(xiàn)相應(yīng)的要求功能。第一,根據(jù)題目設(shè)計的要求制作出能相應(yīng)功能的電路圖。第二,根據(jù)電路圖編寫程序控制單片機(可以使用C語言或者VB語言,本課題采用的是C語言),使單片機能夠控制A/D轉(zhuǎn)換器進行模數(shù)轉(zhuǎn)換,并通過LCD顯示屏直接顯示出來相對應(yīng)的電流值。3.3整體電路圖整體電路圖設(shè)計如圖3-2所示。圖3-2數(shù)字電流表整體電路圖4.軟件設(shè)計4.1軟件設(shè)計的主程序流程圖主程序設(shè)計流程圖如圖4-1所示:開始開始調(diào)用LCD初始化子程序A/D轉(zhuǎn)換值清零設(shè)置LCDDDRAM地址,調(diào)用寫入指令數(shù)據(jù)到LCD調(diào)用子程序LCD上顯示圖4-1主程序設(shè)計流程圖4.2編程語言介紹C語言是一門通用計算機程序設(shè)計語言,美國貝爾實驗室的DennisM.Ritchie在1972年推出的,它的工作單元是由高級語言的基本語句與低級語言的實用性結(jié)合而成的,它不僅具有高級語言的特點,還具有匯編語言的特點。1978年后,C語言先后被移植到大、中、小與微型機上,它不僅可以作為工作系統(tǒng)設(shè)計語言,編寫系統(tǒng)的應(yīng)用程序,還可以作為應(yīng)用程序設(shè)計語言,編寫不依賴計算機硬件的應(yīng)用程序。它有著廣泛的應(yīng)用圍,超強的數(shù)據(jù)處理能力,不僅在軟件開發(fā)上,而且各類科研工作上都需要用到C語言,可以用來編寫系統(tǒng)軟件,三維、二維圖形和動畫,具體應(yīng)用體現(xiàn)在單片機以與嵌入式系統(tǒng)開發(fā)。單片機C語言的優(yōu)點[11]:1.語言簡潔緊湊、使用靈活方便。C語言總共只有32個關(guān)鍵字,9種控制語句,程序書寫形式自由,區(qū)分大小寫。2.豐富的運算符。C語言有著廣泛的運算符圍,總共有34種運算符。在C語言中,賦值符號、括號、強制類型轉(zhuǎn)換等都會當(dāng)作運算符處理,這樣使得C語言的運算類型極其豐富,表達式類型也呈現(xiàn)多樣化。3.豐富的數(shù)據(jù)類型。C語言的數(shù)據(jù)類型有整型、實型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能夠?qū)崿F(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運算,同時引入指針概念,使其具有更高的程序效率。4.靈活使用的表達方式。C語言具有多種運算符和表達式值的方法,可通過多種途徑對問題的表達,其程序設(shè)計更主動、靈活。5.可以直接訪問物理地址,對硬件進行操作。6.生成的目標代碼質(zhì)量高,程序執(zhí)行效率高。7.具有很好的移植性能。8.很強的表達力。C語言的數(shù)據(jù)結(jié)構(gòu)和運算符非常豐富,包含整型、數(shù)組類型、指針類型和聯(lián)合類型等,可以實現(xiàn)各種數(shù)據(jù)結(jié)構(gòu)的運算。230824.3Protel99SE軟件的介紹Protel99SE是澳大利亞ProtelTechnology公司研制開發(fā)的,是一個全32位的電路板設(shè)計軟件,在電子行業(yè)的CAD軟件中,是一款常用的電子電路設(shè)計軟件,也是電子設(shè)計者的首選軟件。早期的Protel主要作為印制板自動布線\t"://baike.baidu/_blank"工具使用,對運行的環(huán)境要求很低,但它的功能也較少,只有電路原理圖繪制與印制板設(shè)計功能,其印制板自動布線的布通率也低,而現(xiàn)今的Protel安裝于Windows9X/2000/NT操作系統(tǒng)下,采用設(shè)計庫管理模式,可以進行聯(lián)網(wǎng)設(shè)計,具有很強的數(shù)據(jù)交換能力和開放性與3D模擬功能,可以用于設(shè)計原理圖、設(shè)計印制電路板、設(shè)計可編程邏輯器件和電路仿真等,可以設(shè)計32個信號層,16個電源--地層和16個機加工層,同時還兼容一些其它設(shè)計軟件的\t"://baike.baidu/_blank"文件格式,如ORCAD,PSPICE,EXCEL等,其多層印制線路板的自動布線可實現(xiàn)高密度PCB的100%布通率[12]。用戶如果需要進行軟件升級或獲取更詳細的資料,可以到公司.protel查詢。Protel99SE中主要功能模塊如下:(1)AdvancedSchematic99SE(原理圖設(shè)計系統(tǒng))該模塊包括電路圖編輯器、電路圖元器件編輯器和各種文本編輯器,主要用于電路原理圖的設(shè)計、原理圖元件的設(shè)計和生成各種原理圖報表等。(2)AdvancedPCB99SE(印刷電路板設(shè)計系統(tǒng))該模塊提供了一個功能強大,可以交互友好的PCB設(shè)計環(huán)境,主要用來進行PCB設(shè)計、元器件封裝設(shè)計、報表的生成與PCB輸出。(3)AdvancedRoute99SE(自動布線系統(tǒng))該模塊是一個集成無網(wǎng)格自動進行布線的系統(tǒng),有著高效的布線效率。(4)AdvancedIntegrity99SE(PCB信號完整性分析)該模塊能夠進行精確的板級物理信號分析,可以檢查串?dāng)_、過沖、下沖、延時和阻抗等問題,并自動給出相應(yīng)的具體解決方案。(5)AdvancedSIM99SE(電路仿真系統(tǒng))該模塊是一個基于最新的Spice3.5標準仿真器,給用戶的設(shè)計前端提供了完整、直觀的問題解決方案。(6)AdvancedPLD99SE(可編程邏輯器件設(shè)計系統(tǒng))該模塊是一個集成性PLD開發(fā)環(huán)境,可通過原理圖或者CUPL硬件描述語言來作為設(shè)計前端,能夠提供工業(yè)標準的JEDEC輸出。5.系統(tǒng)調(diào)試與實物制作5.1硬件系統(tǒng)的調(diào)試(一)元器件焊接在進行焊接前先要對整個電路板進行詳細的檢查。首先用萬用表對印制的電路板進行檢查,主要是檢測電路板是否存在斷路等情況,然后對照著電路原理圖與PCB圖將相應(yīng)的元器件進行焊接。(二)電路測試電路板焊接完成后,在進行通電測試之前先對元器件的引腳主要進行兩個方面的檢查:第一檢查引腳是否出現(xiàn)虛焊或者其他信號線是否存在短路情況;第二是針對引腳功能的檢查。5.2系統(tǒng)軟件的調(diào)試在硬件調(diào)試進行一切正常之后,接下來我們需要做的就是軟件調(diào)試。具體調(diào)試步驟如下:1.調(diào)試存儲模塊。確保存儲模塊能夠進行讀寫信息。2.調(diào)試單片機和數(shù)模轉(zhuǎn)換模塊。3.調(diào)試顯示模塊。5.3整體系統(tǒng)的調(diào)試在進行完硬件和軟件部分的調(diào)試和檢測之后,最后我們需要將程序捎入單片機中。提供3V的電壓源,使整個模塊均處于正常的工作狀態(tài),對電流表分別進行最大值和最小值的檢測。在已知大致估計的電流數(shù)值的情況下,如果數(shù)字電流表顯示屏測試的數(shù)值沒有較大的偏差,則整體調(diào)試成功。5.4實際硬件制作結(jié)果根據(jù)電路圖自己制作出實物,其測試結(jié)果:能正常測量0——100mA電流,達到畢業(yè)設(shè)計的大部分設(shè)計要求。實物測試結(jié)果如圖5-1所示:圖5-1實際制作效果圖6.總結(jié)與展望至此為止,本課題設(shè)計論文的整體容已經(jīng)基本完成,本章主要講述對前面容的撰寫以與實物制作的總結(jié),并在此基礎(chǔ)上,提出對以后的工作建議和設(shè)想。隨著電子科學(xué)技術(shù)的快速發(fā)展,未來的數(shù)字電流表需要向更精準,更智能方向發(fā)展。數(shù)字電流表由于其讀數(shù)準確,精度高,測量量程大,效率快等優(yōu)點,在日常生活中得到較為廣泛的應(yīng)用。本設(shè)計是以單片機AT89C51芯片為核心的數(shù)字電流表,介紹了51單片機和A/D轉(zhuǎn)換器的結(jié)構(gòu),從而更深層次地分析數(shù)字電流表的設(shè)計原理、軟件仿真與其檢測調(diào)試等一系列的容。先從數(shù)字電流表理論入手結(jié)合數(shù)字電壓表的設(shè)計原理,利用取電阻上的電流來達到測試相應(yīng)電流的目的。同時給出了使用Protel軟件來設(shè)計原理圖的步驟以與實物制作的流程。當(dāng)今社會是信息化的時代,而數(shù)字電流的測量又在其中占據(jù)著一個非常重要的地位,電流表作為測量儀器中非常關(guān)鍵的器件,有著非常廣闊的應(yīng)用前景。研究出精度高、性能優(yōu)的電流表有重大的實際價值和更深遠的意義。參考文獻[1]胡紅博.基于單片機控制的新型交流電壓表系統(tǒng)[C].:師學(xué)院,2008.[2]康華光.模擬電子技術(shù)基礎(chǔ)(第五版)[M].:高等教育,2006.[3]康華光.數(shù)字電子技術(shù)基礎(chǔ)(第五版)[M].:高等教育,2006.[4]萬文略.單片機原理與應(yīng)用技術(shù)[M].:大學(xué),2004.[5]毅剛.單片機原理與接口技術(shù)[M].:人民郵電,2011.[6]王彥朋.大學(xué)生電子設(shè)計與應(yīng)用[M].:中國電力,2007.[7]毅剛,喜元,董繼成.單片機原理與應(yīng)用[M].:高等教育,2003.[8]先鋒工作室.單片機程序設(shè)計實例[M].:清華大學(xué),2003.[9]萬福君,淵松峰.單片微機原理系統(tǒng)設(shè)計與應(yīng)用[M].:中國科學(xué)技術(shù)大學(xué),2001.[10]戴佳,斌.51單片機應(yīng)用系統(tǒng)開發(fā)典型實例[M].:中國電力,2005.[11]紀綱.C程序設(shè)計實用教程[G].:中國鐵道,2009.[12]關(guān)健.電子CAD技術(shù)[S].:電子工業(yè),2006.致光陰似箭,歲月如梭。經(jīng)過幾個月的時間終于把畢業(yè)論文撰寫完成,在寫作畢業(yè)論文的過程中遇到了許多問題,讓我也發(fā)現(xiàn)了自己的很多不足之處,未能深刻理解以前學(xué)習(xí)的理論知識,比如未能熟練掌握Protel軟件的使用、對單片機C語言匯編程序掌握得不嫻熟,但都在老師和同學(xué)的大力幫助下順利解決。經(jīng)過本次設(shè)計過程,我不僅把以前所學(xué)的知識重新溫故一遍,而且也學(xué)到了許多課外理論知識,更重要是把所學(xué)的知識學(xué)以致用,提高了動手能力,最終完成了本次設(shè)計。在此特別感我的指導(dǎo)老師-王**老師,她對我無私的指導(dǎo)和幫助。在論文撰寫過程中王老師給我提供了很多有使用價值的建議和指導(dǎo),王老師嚴謹?shù)膽B(tài)度,一絲不茍的作風(fēng)讓我深受感動。如果沒有王老師的大力幫助我不可能獨自完成整個畢業(yè)論文的設(shè)計。在此向王老師深深的感和敬意。同時感這篇論文所涉與的各位學(xué)者和研究者。本文借鑒了數(shù)位學(xué)者的研究成果,如果沒有這些學(xué)者的學(xué)術(shù)研究成果啟發(fā)和幫助,我也很難獨立完成本篇論文的撰寫。感我的同學(xué)和朋友,在我寫撰論文過程中給予我了很多資料支持和寶貴的意見,還在論文的撰寫提供意見和排版的難題過程中提供幫助。在此我一一表示衷心的感!由于我的水平有限,所寫的論文中肯定會有不足之處,望請各位老師批評和指正!附錄//////////////////////////////////////////////////////////////////顯示函數(shù)#include"MAIN_HEADER.h"#include"LCD1602.h"#include"KEY.h"/*******************************************************************//**//*延時函數(shù)*//**//*******************************************************************/voidDelayms(uinta){ uchari; while(a--) { for(i=0;i<120;i++); }}/*******************************************************************//**//*LCD初始化設(shè)定*//**//*******************************************************************/voidLcd_Init(){ LCD_RS=0;LCD_RW=0;LCD_EN=0; Lcd_Wcmd(0x01);Lcd_Wcmd(0x38);Lcd_Wcmd(0x0c);Lcd_Wcmd(0x06); Lcd_Wcmd(0xd0);}/*******************************************************************//**//*清屏函數(shù) *//**//*******************************************************************/voidLcd_Clear(){ Lcd_Wcmd(0x01); Delayms(1);}/*******************************************************************//**//*寫指令數(shù)據(jù)到LCD*//*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。*//**//*******************************************************************/voidLcd_Wcmd(ucharcmd){LCD_RS=0;LCD_RW=0;LCD_EN=0;P0=cmd;Delayms(1);LCD_EN=1;Delayms(1);LCD_EN=0;}/*******************************************************************//**//*寫顯示數(shù)據(jù)到LCD*//*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。*//**//*******************************************************************/voidLcd_Wdat(uchardat){LCD_RS=1;LCD_RW=0;LCD_EN=0;P0=dat;Delayms(1);LCD_EN=1;Delayms(1);LCD_EN=0;}/*******************************************************************//**//*設(shè)定顯示位置*//**//*******************************************************************/voidLcd_Set_xy(ucharhang,ucharlie){ uchara; if(hang==1)a=0x80; if(hang==2)a=0xc0; a=a+lie-1; Lcd_Wcmd(a); Delayms(1);}/*******************************************************************//**//*寫字符串函數(shù)*//**//*******************************************************************/voidLcd_String(uchar*p){ while(1) { if(*p=='\0')break; Lcd_Wdat(*p); p++; Delayms(1); }}////////////////////////////////////////////////////////////////顯示頭文件#ifndef _LCD1602_#define_LCD1602_#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintsbitLCD_RS=P1^0;sbitLCD_RW=P1^1;sbitLCD_EN=P1^2;externvoidDelayms(uinta);externvoidLcd_Init(); //LCD1602初始化函數(shù)externvoidLcd_Wcmd(ucharcmd); //LCD1602寫命令函數(shù)externvoidLcd_Wdat(uchardat); //LCD1602寫數(shù)據(jù)函數(shù)externvoidLcd_Set_xy(ucharhang,ucharlie); //LCD1602設(shè)置顯示位置函數(shù)externvoidLcd_String(uchar*p); //LCD1602寫字符串函數(shù)externvoidLcd_Clear(); //LCD1602清屏函數(shù)#endif///////////////////////////////////////////////////////////////////主函數(shù)#include"MAIN_HEADER.h"#include"LCD1602.h"#include"KEY.h"#include"PCF8951.h"/*****************************初始化函數(shù)*****************************/voidInit() //初始化函數(shù){ TMOD=0X11;//定時器0和定時器1設(shè)置工作方式1 TH0=55536/256; //定時器0初值 TL0=55536%256; //定時器0初值 EA=1; //打開總中斷 ET0=1; //定時器0打開 TR0=1; //定時器0打開// WDT_CONTR=0X31; //看門狗定時器在12M晶振時131ms復(fù)位}/****************************主函數(shù)******************************/voidMAIN(void){ uchardisplay[3]; Init(); Lcd_Init(); Lcd_Clear(); Delayms(10); Lcd_Set_xy(1,1); Lcd_String("I:000mA");// Lcd_Set_xy(1,8);// Lcd_String("Vout:1.00");// Lcd_Set_xy(2,1);// Lcd_String("V:0.00");// Ad_Da(4);// DA_NUM=(uchar)DA_NUM*0.941;// display[0]=DA_NUM/100+0x30;// display[1]=DA_NUM%100/10+0x30;// display[2]=DA_NUM%10+0x30;// Lcd_Set_xy(1,13);// Lcd_Wdat(display[0]);// Lcd_Set_xy(1,15);// Lcd_Wdat(display[1]);// Lcd_Wdat(display[2]); while(1) { uintk; for(k=10000;k>0;k--) {// Key(KEY_NUM); } Ad_Da(0); D[0]=(uchar)D[0]*0.393; display[0]=D[0]/100+0x30; display[1]=D[0]%100/10+0x30; display[2]=D[0]%10+0x30; Lcd_Set_xy(1,3); Lcd_Wdat(display[0]); Lcd_Wdat(display[1]); Lcd_Wdat(display[2]);// Ad_Da(1);// D[1]=(uchar)D[1]*4;// display[0]=D[1]/100+0x30;// display[1]=D[1]%100/10+0x30;// display[2]=D[1]%10+0x30;// Lcd_Set_xy(2,3);// Lcd_Wdat(display[0]);// Lcd_Set_xy(2,5);// Lcd_Wdat(display[1]);// Lcd_Wdat(display[2]); Ad_Da(2);// D[2]=(uchar)D[2]/0.92;// display[0]=D[2]/100+0x30;// display[1]=D[2]%100/10+0x30;// display[2]=D[2]%10+0x30;// Lcd_Set_xy(2,7);// Lcd_Wdat(display[0]);// Lcd_Wdat(display[1]);// Lcd_Set_xy(2,10);// Lcd_Wdat(display[2]);//// Ad_Da(3);// D[3]=(uchar)D[3]/0.92;// display[0]=D[3]/100+0x30;// display[1]=D[3]%100/10+0x30;// display[2]=D[3]%10+0x30;// Lcd_Set_xy(2,12);// Lcd_Wdat(display[0]);// Lcd_Wdat(display[1]);// Lcd_Set_xy(2,15);// Lcd_Wdat(display[2]); }}/////////////////////////////////////////////////////////////主函數(shù)頭文件#ifndef _MAIN_HEADER_#define_MAIN_HEADER_#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint//sfrWDT_CONTR=0XE1; //看門狗定時器控制寄存器地址定義#endif////////////////////////////////////////////////////////////數(shù)模轉(zhuǎn)換函數(shù)#include"LCD1602.h"#include"PCF8951.h"#include"KEY.h"ucharAD_CHANNEL;ucharDA_NUM=100;uintD[5];/*******************************************************************DAC變換,轉(zhuǎn)化函數(shù)*******************************************************************/bitDACconversion(unsignedcharsla,unsignedcharc,unsignedcharVal){Start_I2c();//啟動總線SendByte(sla);//發(fā)送器件地址if(ack==0)return(0);SendByte(c);//發(fā)送控制字節(jié)if(ack==0)return(0);SendByte(Val);//發(fā)送DAC的數(shù)值if(ack==0)return(0);Stop_I2c();//結(jié)束總線return(1);}/*******************************************************************ADC發(fā)送字節(jié)[命令]數(shù)據(jù)函數(shù)*******************************************************************/bitISendByte(unsignedcharsla,unsignedcharc){Start_I2c();//啟動總線SendByte(sla);//發(fā)送器件地址if(ack==0)return(0);SendByte(c);//發(fā)送數(shù)據(jù)if(ack==0)return(0);Stop_I2c();//結(jié)束總線return(1);}/*******************************************************************ADC讀字節(jié)數(shù)據(jù)函數(shù)*******************************************************************/unsignedcharIRcvByte(unsignedcharsla){unsignedcharc;Start_I2c();//啟動總線SendByte(sla+1);//發(fā)送器件地址if(ack==0)return(0);c=RcvByte();//讀取數(shù)據(jù)0Ack_I2c(1);//發(fā)送非就答位Stop_I2c();//結(jié)束總線return(c);}//******************************************************************/voidAd_Da(AD_CHANNEL){ switch(AD_CHANNEL) { case0:ISendByte(PCF8591,0x41); D[0]=IRcvByte(PCF8591);//ADC0模數(shù)轉(zhuǎn)換1 break; case1:ISendByte(PCF8591,0x42); D[1]=IRcvByte(PCF8591);//ADC1模數(shù)轉(zhuǎn)換2 break; case2:ISendByte(PCF8591,0x43); D[2]=IRcvByte(PCF8591);//ADC2 模數(shù)轉(zhuǎn)換3 break; case3:ISendByte(PCF8591,0x40); D[3]=IRcvByte(PCF8591);//ADC3模數(shù)轉(zhuǎn)換4 break; case4:DACconversion(PCF8591,0x40,DA_NUM);//DAC 數(shù)模轉(zhuǎn)換 break; }// if(++AD_CHANNEL>4)AD_CHANNEL=0;}////////////////////////////////////////////////////////////////////數(shù)模轉(zhuǎn)換頭文件#ifndef _PCF8951_#define_PCF8951_#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#definePCF85910x90//PCF8591地址#define_Nop()/*定義空指令*/sbitSCL=P2^0;//I2C時鐘sbitSDA=P2^1;//I2C數(shù)據(jù)externucharAD_CHANNEL;externucharDA_NUM;externuintD[5];externbitack;/*應(yīng)答標志位*/externvoidStart_I2c(); //起動總線函數(shù)externvoidStop_I2c(); //結(jié)束總線函數(shù)externvoidAck_I2c(bita); //應(yīng)答子函數(shù)externvoidSendByte(unsignedcharc); //字節(jié)數(shù)據(jù)發(fā)送函數(shù)externunsignedcharRcvByte(); //無子地址讀字節(jié)數(shù)據(jù)函數(shù)externbitDACconversion(unsignedcharsla,unsignedcharc,unsignedcharVal);externbitISendByte(unsignedcharsla,unsignedcharc);externunsignedcharIRcvByte(unsignedcharsla);externvoidAd_Da(AD_CHANNEL);#endif////////////////////////////////////////////////////////////////////IIC函數(shù)#include"LCD1602.h"#include"PCF8951.h"#include"KEY.h"bitack;/*******************************************************************起動總線函數(shù)函數(shù)原型:voidStart_I2c();功能:啟動I2C總線,即發(fā)送I2C起始條件.********************************************************************/voidStart_I2c(){SDA=1;/*發(fā)送起始條件的數(shù)據(jù)信號*/_Nop();SCL=1;_Nop();/*起始條件建立時間大于4.7us,延時*/_Nop();_Nop();_Nop();_Nop();SDA=0;/*發(fā)送起始信號*/_Nop();/*起始條件鎖定時間大于4μs*/_Nop();_Nop();_Nop();_Nop();SCL=0;/*鉗住I2C總線,準備發(fā)送或接收數(shù)據(jù)*/_Nop();_Nop();}/*******************************************************************結(jié)束總線函數(shù)函數(shù)原型:voidStop_I2c();功能:結(jié)束I2C總線,即發(fā)送I2C結(jié)束條件.********************************************************************/voidStop_I2c(){SDA=0;/*發(fā)送結(jié)束條件的數(shù)據(jù)信號*/_Nop();/*發(fā)送結(jié)束條件的時鐘信號*/SCL=1;/*結(jié)束條件建立時間大于4μs*/_Nop();_Nop();_Nop();_Nop();_Nop();SDA=1;/*發(fā)送I2C總線結(jié)束信號*/_Nop();_Nop();_Nop();_Nop();}/*******************************************************************字節(jié)數(shù)據(jù)發(fā)送函數(shù)函數(shù)原型:voidSendByte(UCHARc);功能:將數(shù)據(jù)c發(fā)送出去,可以是地址,也可以是數(shù)據(jù),發(fā)完后等待應(yīng)答,并對此狀態(tài)位進行操作.(不應(yīng)答或非應(yīng)答都使ack=0)發(fā)送數(shù)據(jù)正常,ack=1;ack=0表示被控器無應(yīng)答或損壞。********************************************************************/voidSendByte(unsignedcharc){unsignedcharBitCnt;for(BitCnt=0;BitCnt<8;BitCnt++)/*要傳送的數(shù)據(jù)長度為8位*/{if((c<<BitCnt)&0x80)SDA=1;/*判斷發(fā)送位*/elseSDA=0;_Nop();SCL=1;/*置時鐘線為高,通知被
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/IEC 17040:2005 AR Conformity assessment - General requirements for peer assessment of conformity assessment bodies and accreditation bodies
- 2025至2030中國皮卡通行證行業(yè)深度研究及發(fā)展前景投資評估分析
- 2025至2030中國男性不育行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國電視媒體行業(yè)發(fā)展研究與產(chǎn)業(yè)戰(zhàn)略規(guī)劃分析評估報告
- 2025至2030中國電動調(diào)節(jié)儀表行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國生豬養(yǎng)殖行業(yè)市場發(fā)展分析及投資發(fā)展戰(zhàn)略前景預(yù)測報告
- 2025至2030中國牲豬飼料行業(yè)發(fā)展研究與產(chǎn)業(yè)戰(zhàn)略規(guī)劃分析評估報告
- 工廠秋季消防培訓(xùn)
- 世界環(huán)保日培訓(xùn)課件
- 從國家層面探討兒童的心理健康教育與疏導(dǎo)機制
- 急性胃腸炎的診斷與治療
- UL4703標準中文版-2020光伏線UL中文版標準
- 酒店前臺案例分析
- 消防應(yīng)急通信培訓(xùn)
- 消防應(yīng)急通信保障
- XX小學(xué)預(yù)防未成年人違法犯罪工作制度
- 火災(zāi)自動報警系統(tǒng)查驗報告
- 業(yè)務(wù)傭金提成協(xié)議書模板
- GB/T 29469-2024潔凈室及相關(guān)受控環(huán)境性能及合理性評價
- 國家開放大學(xué)《城市管理學(xué)》作業(yè)-“城市病”表現(xiàn)及其治理
- 甄嬛傳電子版劇本第01-10集
評論
0/150
提交評論