久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 57405|回復: 24
打印 上一主題 下一主題
收起左側

基于單片機數字電壓表設計畢業設計 完整版下載

  [復制鏈接]
跳轉到指定樓層
樓主

點擊處處下載word格式的論文:
基于單片機數字電壓表設計畢業設計完整版.rar (1.42 MB, 下載次數: 497)

下面是論文預覽(只有部分圖片):
黑龍江職業學院畢業論文(設計)
摘   要

在日常維修、教學和科研中,電壓表是不可缺少的。本課題目的就是以單片機為基礎設計出一種結構簡單、工作可靠、靈活性好的數字電壓表。
本文首先介紹了數字電壓表的發展現狀及課題的目的和意義。然后,對基于單片機的數字電壓表的硬件系統、軟件系統的設計原理及具體實現方案作以詳細介紹,其中,在硬件部分,較為詳細的討論了硬件的選擇、設計原理、使用方法和功能,同時,對各部分接口電路作以介紹;在軟件部分,介紹了軟件所使用的編程語言和編程思路。最后,對電路調試、印刷PCB板的制作及系統的抗干擾設計作了進一步分析和總結。
本文設計的數字電壓表,其硬件電路所用元件較少、成本低、調節簡單;軟件采用C語言編程,其靈活性高,可讀性強。經過理論研究、原理設計和整機調試,實驗結果表明,該方案可行。


Abstract

In routine maintenance, teaching and research, voltage meter is indispensable. A direct current digital voltage meter has been designed, which is based on MCU, and has a simple structure, reliable, flexible.
Firstly,this paper introduced the development of the base on MCU digital voltage meter and the purpose and significanceof topic. Then in details this paper described the design principle of hardware and software systems. And in details the hardware part present a discussion in hardware selection, design principles, instructions and the function, further more,some of the interface circuit have been introduced. The software part introduced the programming language and programming ideas used in codes. Finally, the circuit debugging, the printed plate of PCB production and the anti-jamming system were designed to further analysis and synthesis.
The digital voltage meter designed here, have less components in the hardware part, lower cost and easier testing; software used C programming language which is high flexibility and strong readability. After theoretical research, principle design and debugging, the experimental results suppose it is feasible of choosing this program.



Keywords: Micro Controller Unit;voltage meter;A/D Converters;
Series Bus



  

第1章  緒 論
1.1 課題概述
1.1.1 數字電壓表的發展歷程
1.1.2 國內外的發展現狀與趨勢
1.2 課題的意義和目的
1.3 本文所作的主要工作
第2章  基于單片機數字電壓表的總體設計
2.1 設計指標
2.2 系統概述
2.2.1 硬件電路圖及工作過程簡介
2.2.2 軟件程序設計簡介
2.3 小結
第3章  基于單片機數字電壓表的硬件設計
3.1 器件的選擇
3.2 A/D轉換電路
3.2.1 A/D轉換芯片的選擇
3.2.2 ADC0809轉換原理介紹
3.2.3 ADC0809芯片介紹
3.2.4 ADC0809與單片機的接口方法
3.3 單片機介紹
3.3.1 單片機介紹
3.3.2 采用AT89C51的原因
3.3.3 AT89C51芯片主要性能參數
3.3.4 功能介紹
3.3.5 芯片管腳介紹及分配
3.4 顯示驅動單元設計
3.4.1 ZLG7289芯片介紹
3.4.2 ZLG7289的主要特征
3.4.3 ZLG7289引腳功能說明
3.4.4 ZLG7289與單片機及數碼管的連接
3.4.5 時序圖中的各項延遲時間
3.4.6 控制指令
3.5 SPI接口技術
3.5.1 SPI總線簡介
3.5.2 SPI總線的基本結構
3.5.3 數據的傳輸
3.6 電壓顯示電路
3.7 小結
第4章  基于單片機數字電壓表的軟件設計
4.1 軟件系統整體設計
4.1.1 C51簡介
4.1.2 程序流程圖
4.1.3 數據采集模塊的設計
4.1.4 數據處理模塊的設計
4.2 原程序見附錄A
4.3 小結
第5章  基于單片機數字電壓表的抗干擾設計
5.1硬件系統的可靠性與抗干擾設計
5.1.1 供電系統抗干擾措施
5.1.2 接地
5.1.3 傳輸通道的抗干擾措施
5.2 軟件系統的可靠性與抗干擾設計
5.3 小結
第6章  電路制作及調試
6.1 PCB板的制作
6.2 系統外觀
6.3電路調試
6.3.1 調試步驟
6.3.2 可能出現的問題解答
6.4 系統調試及結果分析
6.4 小結
結    論
致    謝
參考文獻
附錄 基于單片機的數字電壓表設計C51原程序




第1章  緒 論1.1 課題概述1.1.1 數字電壓表的發展歷程



數字電壓表簡稱DVM,它是采用數字化測量技術設計的電壓表。從性能來看:數字電壓表的發展從一九五二年美國NLS公司由四位電子管數字電壓表精度千分之一到現在已經出現8位數字電壓表。參數可測量直流電壓、交流電壓、電流、阻抗等。測量自動化程度不斷提高,可以和計算機配合顯示、計算結果、然后打印出來。目前世界上美國FLUKE公司,在直流和低頻交流電量的校準領域居國際先進水平。例如該公司生產的“4700A”多功能校準器和“8505”危機數字多用電壓表,可用8位顯示,直流精度可達到±5/10-6,讀書分辨力為0.1μV。帶有A/D變換模式、數據輸出接口形式IEEE-488。具有比率測量軟件校準和有交流電阻、電流選件。還具有高精度電壓校準器“5400A”、“5200A”、“5450A”等數字儀表,都是作為一級計量站和國家級計量站使用的標準儀表。還有英國的“7055”數字電壓表采用脈沖調制技術。日本橫河公司的“2501”型采用三次采樣等等在不斷的蓬勃發展[1]。
從發展過程來看:數字電壓表自1952年問世以來,已有50年多年的發展史,大致經歷了五代產品。第一代產品是20世紀50年代問世的電子管數字電壓表,第二代產品屬于20世紀60年代出現的晶體管數字電壓表,第三帶產品為20世紀70年代研制的中、小規模集成電路的數字電壓表。今年來,國內外相繼推出有大規模集成電路(LSI)或超大規模集成電路(VLSI)構成的數字電壓表、智能數字電壓表,分別屬于第四代、第五代產品。它們不僅開創了電子測量的先河,更以高準確度、高可靠性、高分辨力、高性價比等優良特性而受到人民的青睞[2]。
1.1.2 國內外的發展現狀與趨勢
數字電壓表作為電壓表的一個分支,在近五十年間得到巨大發展,構成數字電壓表的核心器件已從早期的中小規模電路跨入到大規模ASIC(專用集成電路)階段。數字電壓表涉及的范圍也從傳統的測量擴展至自動控制、傳感、通信等領域,展示了廣闊的應用前景。
傳統電壓表的設計思路主要分為:用電流計和電阻構成的電壓表;用中小規模集成電路構成的電壓表;用大規模ASIC(專用集成電路)構成的電壓表。這幾中電壓表設計方式各有優勢和缺點,分別適用于幾種特定的應用環境,同時,也為很多新穎的電壓表的設計所借鑒和依據[2]。
近入21世紀,隨著信息技術一日千里的發展,電壓表也必經歷從單一測量向數據處理、自動控制等多功能過度的這一歷程,特別是計算機技術的發展必將



出現智能化技術。因此,把電壓表和計算機技術相結合的智能化電壓表就將成為21世紀的新課題。目前,數字化儀器與微處理器取得令人矚目的進展,就其技術背景而言,一個內藏微處理器的儀表意味著計算機技術向儀器儀表的移植,它所具有的軟件功能使儀器 呈現出有某種延伸,強化的作用。這相對于過去傳統的、純硬件的儀器來說是一種新的突破,其發展潛力十分巨大,這已為70年代以來儀表發展的歷史所證實。概括起來,具有微處理器的儀表具有以下特點:①測量過程的軟件控制對測量數據進行存儲及運算的數據處理功能是儀表最突出的特點;②在儀器的測量過程中綜合了軟件控制及數據處理功能,使一機多用或儀器的多功能化易于實現,成為這類儀器的又一特點;③以其軟件為主體的智能儀器不僅在使用方便、功能多樣化等方面呈現很大的靈活性[3]。
下面從5個方面闡述新型數字儀表的發展趨向。
  1.廣泛采用新技術,不斷開發新產品
隨著科學技術的發展,新技術的廣泛應用,新器件的不斷出現。首先是A/D轉換器:20世紀90年代世界各國相繼研發了新的A/D轉換技術。例如,四斜率A/D轉換技術(美國)、余數再循環技術(美國)、自動校準技術(英國)、固態真有效值轉換技術(英國)、約瑟夫森效應基準源(2個納米穩定度)、智能化專用芯片(80C51系列,荷蘭)等,這些新技術使數字電壓表向高準確度、高可靠性及智能化、低成本方向發展。另外,集成電路的發展使電壓表只在外圍配置少量元器件,即可構成完整的智能儀表,可以完成儲存、計算、比較、控制等多項功能[4]。
  2.廣泛采用新工藝
新一代數字儀表正朝著標準模塊化的方向發展。預計在不久的將來,更多的數字儀表將由標準化、通用化、系列化的模塊所構成,給電路設計、安裝調試和維修帶來極大方便。
  3.多從顯示儀表
為徹底解決數字儀表不便于觀察連續變化量的技術難題;“數字/模擬條圖”雙顯示儀表已成為國際流行款式,它兼有數字儀表準確度高、模擬式儀表便于觀察被測量的變化過程及變化趨勢這兩大優點。
  4.提高安全性
儀器儀表在設計和使用中的安全性,對生產廠家和廣大用戶都至關重要。一方面廠家必須為儀表設計安全保護電路,并使之符合國家標準;另一方面用戶必須安全操作,時刻注意儀表上的各種安全警告指示。
  5.操作簡單化
集成電路的發展使電壓表只在外圍配置少量元件,即可構成完整的智能儀表,可以完成儲存、計算、比較、控制等多項功能。這使的按鍵變少,操作簡單。但是數字電壓表并不能完全取代指針式的電壓表,在反映電壓的連續變化和變化趨勢方面不如指針表的直觀。為克服這種缺憾,20世紀90年代初,一種“數字/光柱”的雙重顯示儀表已經出現,并成功地應用于生產實踐中[5]。
綜上所述,十幾年來智能儀器雖然有了很大的發展,但總的看來,人們還是較習慣于從硬件的角度做工作,這是由于設計者的(硬件)技術背景,LSI器件不斷迅速更新的沖擊以及在現階段儀器硬件更新的數量還很大等因素所造成的。這種趨勢雖然仍會繼續下去,但從智能儀表的內涵,從軟件的角度上看,軟件的作用還遠未發揮出來,這里有許多的領域等待著去開發。智能儀表最終必然會與人工智能聯系起來開創出全新的儀器。從這個觀點看,目前的智能儀器尚處于“幼年時期”。所以,就儀表的發展看來電壓表會朝著具有微控制處理單元的智能儀表方向發展。
1.2 課題的意義和目的
數字電壓表是諸多數字化儀表的核心與基礎。以數字電壓表為核心,可以擴展成各種通用數字儀表、專用數字儀表及各種非電量的數字化儀表(如:溫度計,濕度計,酸度計,重量,厚度儀等),幾乎覆蓋了電子電工測量,工業測量,自動化儀表等各個領域。除此之外,數字電壓還有著傳統指針電壓表無可比擬的優點:讀數直觀、準確,顯示范圍寬、分辨力高,轉入阻抗高,功耗小、抗干擾強等[3]。因此 對數字電壓表作全面深入的了解是很有必要的。但是傳統的數字電壓表設計通常以大規模ASIC(專用集成電路)為核心器件,并輔以少量中規模集成電路及顯示器件構成,可是這種設計方法靈活性差,系統功能固定,難以更新擴展,不能滿足日益發展的電子工業要求[6]。而應用微處理器(單片機)為核心單元的數字電壓表,其靈活性高、系統功能擴展簡單,性能穩定可靠。在這些背景下,設計一種以單片機為基礎、結構簡單、工作可靠、靈活性好的數字電壓表是很有意義的。
1.3 本文所作的主要工作
1.對系統總體框架進行分析,根據系統所要實現的目標,設計基于單片機的數字電壓表的硬件系統,以模塊設計法為依據進行系統各個部分的具體設計。
2.設計基于單片機的數字控制系統,發揮單片機的處理功能強大,運算速度快的特點,對被測電壓進行實時檢測和顯示。
3.制作印刷電路板,使硬件電路的設計更加清晰,同時使系統的抗干擾能力進一不加強。
4.針對系統的總體框架和硬件設計的特點,設計相應的軟件系統,更合理



的去完成系統測電壓的目的。
5.對系統進行整機調試,使得基于單片機的數字電壓表的實驗結果盡可能的滿足設計指標。







第2章  基于單片機數字電壓表的總體設計2.1 設計指標
在日常維修、教學和科研中,電壓表是不可缺少的,傳統的數字電壓表設計通常以大規模ASIC(專用集成電路)為核心器件,并輔以少量中規模集成電路及顯示器件構成,但是這種設計方法靈活性差,系統功能固定,難以更新擴展,不能滿足日益發展的電子工業要求。而應用微處理器(單片機)為核心單元,其靈活性高、系統功能擴展簡單,性能穩定可靠。本課題目的就是以單片機為基礎設計出一種結構簡單、工作可靠、靈活性好的直流數字電壓表。要求數字電壓表精度為±0.05V,測量范圍為0~5V。
2.2 系統概述
本課題所設計的數字電壓表主要包括兩部分:硬件電路及軟件程序。而硬件電路采用ATMEL公司的AT89C51作為主處理器,系統主要由信號采集、A/D轉換、數據處理輸出、驅動顯示等幾個功能模塊組成。各部分電路的設計及原理將會在硬件電路設計部分詳細介紹;程序的設計使用C語言編程,利用Keil 軟件對其編譯和仿真,詳細的設計算法將會在程序設計部分詳細介紹。
系統框圖(圖2.1)如下:

圖2-1 硬件原理框圖
    被測直流電壓由A/D轉換單元采集后被量化,再由單片機對A/D轉換的結果進行標度變換,得到被測電壓的數值,通過單片機對數次轉換結果求平均值、并通過SOI串行數據接口把所求平均值輸出給顯示驅動單元,由該單元完成譯碼,并驅動數碼管顯示。



2.2.1 硬件電路圖及工作過程簡介
電壓表的數字化是將連續模擬的電壓量經A/D轉化后變為不連續的離散的數字量并加以顯示[7]。在設計過程中采用分模塊設計,按照圖2.1把電路分A/D轉換、數據處理輸出、驅動、顯示四個單元,分別設計。
A/D轉換器選用的是八位模/數轉換器ADC0809。其次,計算機中的數字都是十六進制數,而我們習慣于十進制數的讀寫,因此,在軟件設計中則要把十六進制數轉換成十進制數。在顯示的時候也是如此。本裝置的輸出用四位LED顯示,因此在軟件設計中還要解決數字輸出與LED的接口問題。硬件則需要將輸出線接到八段數碼管上[8]。
    數值顯示采用八段數碼管,由單片機以動態掃描方式驅動,在此方式下能保證足夠的亮度和較長的使用壽命。
由電路原理圖2.2可以看出ADC0809通過IN0采集電壓信號并送給單片機,單片機將采集來的信號進行一定的處理然后通過串口擴展的共陰極LED數碼管顯示采集的電壓值。
數碼管顯示是采用動態顯示的原理,要顯示的數碼通過單片機的串口發送然后通過ZLG7289轉換為并行信號分別加到四個數碼管的SA—DP,而四個數碼管的公共端分別接ZLG7289的DIG0-DIG3接口,因此要使哪個數碼管顯示就把相應
的公共端口置零即可。比如:數字“1”的字型碼通過串口發送出來并經過ZLG7289譯碼加到了四個數碼管上,如果其中一個引腳為“0”那么對應的數碼管顯示數字“1”。在此電路中電壓值的三個數字分別通過串口依次的送出,對應的公共端也依次被置“0”,由于兩次置“0”的時間間隔很短,由于人的視覺暫留現象及發光二極管的余輝效應,盡管實際上各位顯示器并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩定的顯示數據,不會有閃爍感。因此給人的感覺就是三個數碼管同時的顯示出電壓值四個數字[5]。
數字電壓表電路圖如圖2.2所示:












圖2-2 電路原理圖

ADC0809的REF(-)接地,REF(+)接電源+5V,因此采集電壓的范圍是0~5V,A/D轉換輸出的結果D0~D7為8位二進制數。轉換輸出的結果在0~255之間分別對應著0~+5V之間的256個電壓值,因此單片機必須把A/D轉換輸出的結果轉換成可以顯示的電壓值,具體的方法是:
                                                               (2.1)

由上公式可知:當ADC0809輸出為(11111111)B時,輸入電壓值VIN=5.00V;當ADC0809輸出為(00000000)B時,輸入電壓值VIN=0.00V;當ADC0809輸出為(10000000)B時,輸入電壓值VIN=2.50V,但是單片機在進行數學運算時結果只讀取整數部分,因此當輸出為(10000000)B時計算得來的電壓值VIN=2.00V。由此可以看出這樣運算的輸出結果很不準確,在0~+5V之間只有0,1,2,3,4,5六個電壓值,所以必須把單片機運算結果中的小數部分保留下來[8]。具體方法是:如果保留小數點后兩位,在運算的時候分子乘以100,保留三位就乘以1000。小數點后保留兩位的公式如下:
                                                               (2.2)

由新公式可知當ADC0809輸出位(10000000)B時,單片機運算結果為2500。然后單片機將250除以10得到商為250,余數為0,再將250除以10得到商為25,余數為0,再將25除以10得到商為2,余數為5。這樣就可以得到電壓值的四個數字,最后分別將2、5、0、0四個數通過串口送出,顯示在四個數碼管上,并且把第一個數碼管的dp腳(即小數點)直接接地使其一直發亮,那么數碼管上就可以顯示輸入的電壓值“2.500”[5]。
2.2.2 軟件程序設計簡介
開機后首先初始化,使數碼管顯示為“0.000”然后調用A/D轉換子程序啟動AD轉換器,單片機等待查詢轉換結束信號,如果有信號則通過并行口讀取轉換數據并存儲,就這樣連著讀取五次數據后求平均值,再按上面的方法通過串行口把數據傳輸出,經譯碼在數碼管顯示。具體方法和程序見程序設計部分和附錄。
2.3 小結
    在電路設計和軟件設計中都采用了分模塊設計,這種設計方法清晰的電路的功能,為設計和以后的調試和維修帶來了極大的方便。特別是在軟件設計中,這中方法曾強了程序的可移植性,為以后的功能擴展奠定了基礎。

第3章  基于單片機數字電壓表的硬件設計
3.1 器件的選擇
模數轉換器選用ADC0809
單片機用AT89C51
顯示驅動用ZLG7289
數碼管用四位共陰級LED(SM420364)
退耦電容100nf無極性電容和100μf的電解電容
位電容用10μf的電解電容
零歐電阻   限流電阻
共陰極八段數碼管sm420364
3.2 A/D轉換電路3.2.1 A/D轉換芯片的選擇
A/D轉換器是模擬量輸入通道中的一個環節,單片機通過A/D轉換器把輸入模擬量變成數字量再處理。
隨著大規模集成電路的發展,目前不同廠家已經生產出了多種型號的A/D轉換器,以滿足不同應用場合的需要。如果按照轉換原理劃分,主要有3種類型,即雙積分式A/D轉換器、逐次逼近式A/D轉換器和并行式A/D轉換器。目前最常用的是雙積分和逐次逼近式。
雙積分式A/D轉換器具有抗干擾能力強、轉換精度高、價格便宜等優點,比如ICL71XX系列等,它們通常帶有自動較零、七段碼輸出等功能。與雙積分相比,逐次逼近式A/D轉換的轉換速度更快,而且精度更高,比如ADC0808、ADC0809等,它們通常具有8路模擬選通開關及地址譯碼、鎖存電路等,它們可以與單片機系統連接,將數字量送單片機進行分析和顯示[9]。
本設計中,要求精度小于0.5%,則選用分辨率為8位的芯片,如ADC0809,ADC0801,ADC0808就能滿足設計要求。本電路采用ADC0809。
3.2.2 ADC0809轉換原理介紹
ADC是一種基本的外圍擴展器件,其種類很多,工作原理也不僅相同,比較有代表性的是:單積分型,雙積分型,脈寬調制型和逐次比較型(逐次逼近型)。從產品性價比、轉換速度和精度等方面綜合分析,逐次比較型ADC是相對應用比較廣的類型之一。所以有著廣泛的應用[10]。



黑龍江職業學院畢業論文(設計)
逐次逼近型ADC實際采用的方法上從高到底開始逐位設定,比較模擬量輸出,再來確定原設定位的正確與否。逐次比較型ADC原理結構如圖2.3所示。其主要由采集保持電路、電壓比較器、逐次比較寄存器、數/模轉換器ADC和鎖存器等部分組成。


其工作原理如下:
首先,被測模擬電壓ui通過逐次比較寄存器,將傳遞進的脈沖CP信號轉換成數字信號,該數字量再經過數/模轉換器生成對應的模擬量Us。當獲得模擬量Us的數值達到并接近被測電壓所對應ui后,就可以檢測出電壓比較器完成最后的反轉。此時,逐次比較積存器的計數值就是被測電壓ui所對應的數字量,從而完成模擬量的轉換。以上的分析表明,逐次比較的模/數轉換方法,歸根到底是數/模轉換,采用逐次與模擬量進行比較后得到最終的數字標定值[11]。
3.2.3 ADC0809芯片介紹
ADC0809是一種8位逐次逼近型A/D轉換器。帶8個模擬量輸入通道,芯片內有通道地址譯碼鎖存器,有輸出三態數據鎖存器,啟動信號為脈沖啟動方式,每個通道的轉換時間大約為100μs,可以和單片機直接接口[9]。
ADC0809的引腳圖和內部邏輯結構如圖2.4所示。








           圖3-2                               圖 3-3
由圖1(b)可知,ADC0809由一個8路模擬開關,一個地址鎖存與譯碼器、一個8位A/D轉換器和一個三態輸出鎖存器組成。多路開關可選通8個模擬通道IN0—IN7,允許8路模擬分量輸入,共用A/D轉換器 進行轉換。三態輸出鎖存器用于鎖存A/D轉換完的數字量,當OE端為高電平時,才可以從三態輸出鎖存器取走轉換完的數據。
IN0—IN7:8條模擬量輸入通道。ADC0809對輸入模擬量的要求是信號單極性,電壓范圍是0—5V,若信號太小,必須進行放大:輸入的模擬量在轉換過程中應保持不變,如若模擬信號變化太快,則需在輸入前增加采樣保持電路。
    地址輸入和控制線:4條,ALE為地址鎖存允許輸入線,高電平有效。當ALE線為高電平時,地址鎖存與譯碼器將A,B,C三條地址線的地址信號進行鎖存,經譯碼后被選中的通道的模擬量進轉化器進行轉換。A,B,C為地址輸入線,用于選通IN0—IN7上的一路模擬量輸入。通道選擇如表2.1所示。
數字量輸出及控制線: 11條。START為上跳沿時,所有內部寄存器清零;下跳沿時,開始進行A/D轉換:在轉換期間,START應保持底電平。EOC為轉換結束信號。當EOC為高電平時,表明轉換結束:否則,表明正在進行A/D轉換。OE為輸出允許信號,用于控制三條輸出鎖存器向單片機輸出轉換得到的數據。OE=1,輸出轉換得到的數據。OE=0,輸出數據線呈高阻狀態。D7—D0為數字量輸出線。
    CLK為時鐘輸入信號線。由于ADC0809的內部沒有時鐘電路,所需時鐘信號必須由外界提供,通常使用頻率為500KHz,最大不能超過1280KHz[11]。
    VREF(+),VREF(-)為參考電壓輸入,決定了輸入模擬量的范圍。一般情況VREF(-)接地,VREF(+)接+5V電源。
3.2.4 ADC0809與單片機的接口方法
  電路原理圖2.2可以看出ADC0809的數據D0—D7直接與單片機的總線P0相連。模擬輸入通道地址A、B、C直接接地,因此ADC0809只對通道IN0輸入的電壓進行模數轉換,其他通道直接接地(接地的目的主要是為了減少輸入噪聲,一般情況對于模數轉換芯片中沒用到的模擬輸入端都這樣處理)。時鐘CLK由單片機的ALE取得,對于晶振為12MHz的單片機ALE輸出為2MHz的方波,但前面提到ADC0809的時鐘頻率一般為500KHz,最大能超過1280KHz,但在實際應用中2MHz的信號也可以使ADC0809正常工作。START、ALE和OE分別由單片機的WR、RD和P2.7經或非門接入、這樣主要是滿足ADC0809的信號電平與時序的要求。按此圖中的片選接法。ADC0809通道—IN0的地址為7FFFH。
由于EOC未接入單片機,故只能采用延時等待的方法來讀取A/D轉換的結果(即當單片機啟動ADC0809后延時一段時間再主動去讀ADC0809的轉換結果)。但是如果單片機在進行A/D轉換時還要執行其他的程序可以將EOC接在單片機的中斷上,這樣當A/D轉換完后EOC可以對單片機產生中斷使其讀取A/D轉換的結果,這樣做單片機的使用效率更高。
3.3 單片機介紹3.3.1 單片機介紹
單片微型計算機簡稱單片機,又稱微型控制或嵌入式控制器,是將計算機的基本部件微型化,使之集成在一塊芯片上的微機。單片機有著體積小,功耗低,功能強,性能價格比高、易于推廣應用等顯著優點,在自動化裝置、智能化儀器儀表、過程控制和家用電器等領域得到日益廣泛的應用。
3.3.2 采用AT89C51的原因
在眾多的51系列單片機中,要算 ATMEL 公司的AT89C51更實用,它是由北京集成電路設計中心在MSC-51單片機的基礎上精心設計,由美國生產的至今為止世界上最新型的高性能八位單片機。它不但和8051指令、管腳完全兼容,而且其片內的4K程序存儲器是FLASH工藝的,這種工藝的存儲器用戶可以用電的方式瞬間擦除、改寫,一般專為 ATMEL AT89Cx 做的編程器均帶有這些功能。顯而易見,這種單片機對開發設備的要求很低,開發時間也大大縮短[12]。
3.3.3 AT89C51芯片主要性能參數
與MCS—51產品指令系統完全兼容   
4K字節的可重擦寫Flash閃速存儲器
1000次擦寫周期
全靜態操作:0Hz–24Hz
三級加密程序存儲器
128×8字節內部RAM
32個可編程I/O口線
2個16位定時/記數器
6個中斷源
可編程串行UART通道
底功耗空閑和掉電模式                    圖3-4 AT89C51管腳分
3.3.4 功能介紹
AT89C51是一種低損耗、高性能、CMOS八位微處理器,片內有4K字節的在線可重復編程快擦快寫存儲器,能重復寫入/擦除1000次,數據保存時間為十年。它與MCS-51系列單片機在指令系統和引腳上完全兼容,不僅可完全代替MCS-51系列單片機,而且能使系統具有許多MCS-51單片機,而且能使系統具有許多MCS-51系列產品沒有的功能。AT89C51可構成真正的單片機最小應用系統,縮小系統體積,增加系統的可靠性,降低了系統成本。只要程序長度小于4K,四個I/O口全部提供給用戶?捎5V電壓編程,而且擦寫時間僅需10毫秒,僅為8751/87C51的擦除時間的百分之一,與8751/87C51的12V電壓擦寫相比,不易損壞器件,沒有兩種電源的要求,改寫時不拔下芯片,適合許多嵌入式控制領域。工作電壓范圍寬2.7V-6V,全靜態工作,工作頻率寬,在0M Hz-24M Hz內,比8751/87C51等51系列的6MHz-12 MHz更具有靈活性,系統能快能慢。AT89C51芯片提供三級程序存儲器加密,提供了方便靈活而可靠的硬加密手段,能完全保證程序或系統不被仿制[13]。
另外,AT89C51還具有MCS-51系列單片機的所有優點。128×8位內部RAM,32位雙向輸入輸出線,兩個十六位定時/計數器,5個中斷源,兩級中斷優先級,一個全雙工異步串行口及時鐘發生器等。
3.3.5 芯片管腳介紹及分配
引腳描述:
    VCC:電源
GND:電源地

P0口:P0口是一組8位漏極開路雙向I/O口,也既地址/數據總線復用口。作為輸出口用時,每位能吸收電流的方式驅動8個TTL邏輯門電路,對端口寫“1”可作為高阻抗輸入端用。
在訪問外部數據存儲器話程序存儲器時,這組口線分時轉換地址(底8位)和數據總線服用,在訪問期間激活內部上拉電阻。
在Flash編程時,P0口接受指令字節,而在程序校驗時,輸出指令字節,校驗時,要求外接上拉電阻。

P1口:P1口是一個帶內部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對端口 寫“1”,通過內部的上拉電阻把端口拉到高電平,此時可操作輸入口。作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉底時會輸出一個電流(IIL)。
Flash編程和程序校驗期間,P1接收底8位地址。

P2口:P2口是一個帶有內部上拉電阻的8位雙向I/O口,P2的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對斷口寫“1”,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉底時會輸出一個電流(IIL)。
在訪問外部程序存儲器或16位地址的外部數據存儲器(例如執行MOVE @DPTR)時,P2口送出高8位地址數據。在訪問8位地址的外部數據存儲器(如執行MOVE @RI指令)時,P2口線上的內容[也即特殊功能存儲器(SFR)區中R2寄存器的內容],在整個訪問期間不改變。
在Flash編程或校驗時,P2亦接收高位地址和其他控制信號。

P3口:P3口是一組帶有內部上拉電阻的8位雙向I/O口。P3口輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫入“1”時,它們被內部上拉電阻拉高并可作為輸入端口。作輸入端時,被外部拉底的P3口將用上拉電阻輸出電流(IIL)。
P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如下表2.2所示:
表 3-5 P3口第二功能表
端口引腳
第二功能
P3.0
  RXD(串行輸入口)
P3.1
  TXD(串行輸出口)
P3.2
  INT0(外部中斷0)
P3.3
  INT1(外部中斷1)
P3.4
  T0(定時/記數器0)
P3.5
  T1(定時/記數器1)
P3.6
  WR(外部數據存儲器寫選通)
P3.7
  RD(外部數據存儲器讀選通)
P3口還接受一些用于Flash閃速存儲器編程和程序校驗的控制信號。
RST:復位輸入。當振蕩器工作時,RET引腳出現兩個機器周期以上高電平將使單片機復位。
ALE/PROG:當訪問外部程序存儲器或數據存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的底8位字節。即使不訪問外部存儲器,ALE仍以時鐘振蕩頻率的1/6輸出固定的正脈沖信號,因此它可對外部輸出時鐘或用于定時目的。要注意的是:每當訪問外部數據存儲器時將跳過一個ALE脈沖。
對Flash存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。
如有必要,可通過對特殊功能寄存器(SFR)區中的8EH的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVE和MOVX指令ALE才會被激活,此外,該引腳會被微弱拉高,單片機執行外部程序時,應設置ALE無效。

PSEN:程序存貯允許(PSEN)輸出是外部程序存儲器的讀選通信號,當AT89C51由外部程序存儲器取指令(或數據)時,每個機器周期兩次PSEN有效,既輸出兩個脈沖。在此期間,當訪問外部數據存儲器,這兩次有效的PSEN信號不出現。
EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲器(地址為0000H—FFFFH),EA端必須保持底電平(接地)。需注意的是:如果加密位LB1被編程,復位時內部會鎖存EA端狀態。
如EA端為高電平(接VCC端),CPU則執行內部程序存儲器中的指令。
Flash存儲器編程時,該腳加上+12V的編程允許電源VPP,當然這必須是該器件是使用12V編程電壓VPP。

XTAL1:振蕩器反相放大器的及內部時鐘發生器的輸入端。
XTAL2:振蕩器反相放大器的輸出端。
3.4 顯示驅動單元設計3.4.1 ZLG7289芯片介紹
ZLG7289是廣州周立功單片機發展有線公司自行設計的數碼管顯示驅動及鍵盤掃描管理芯片,可直接驅動8位共陰式數碼管(或64只獨立LED),同時還可以掃描管理多達64只按鍵。 ZLG7289內部含有顯示譯碼器,可直接接受BCD碼或16進制碼,并同時具有2種譯碼方式。此外,還具有多種控制指令,如消隱、閃爍、左移、右移、段尋址等。ZLG7289采用SPI串行總線與微控制器接口,僅占用少數幾根I/O口線。利用片選信號,多片    ZLG7289還可以并接在一起使用,能夠方便地實現多于8位的顯示或多于64只按鍵的應用。
3.4.2 ZLG7289的主要特征
很寬的工作電壓范圍:+2.7-6V;
直接驅動8位共陰式數碼管(1英寸以下)或64只獨立的LED;
段電流可達15mA以上,字電流可達100mA;
利用功率電路可以方便地驅動1英寸以上的大型數碼管;
具有左移、右移、閃爍、消隱、段點亮等強大功能;
要顯示的數據提供有兩種不同的譯碼方式(也可以選擇不譯碼);
不接數碼管而僅使用鍵盤管理功能時,工作電流可將至3mA;
與微控制器之間采用SPI串行總線接口,操作方便,占用I/O資源少;
工作溫度范圍:-40~+85℃;
封裝:DIP-28。

3.4.3 ZLG7289引腳功能說明
表3-6 ZLG7289引腳功能表

引腳序號
引腳名稱
功能描述
1
RTCC
接電源
2
VCC
電源,+2.7~6V
3
NC
懸空
4
GND
接地
5
NC
懸空
6
SPI總線片選信號,低電平有效
7
CLK
SPI總線時鐘輸入信號,上升沿有效
8
DIO
SPI總線數據信號,雙向
9
鍵盤中斷請求信號,低電平(下將沿)有效
10
SG/KR0
數碼管g段/鍵盤行信號0
11
SF/KR1
數碼管f段/鍵盤行信號1
12
SE/KR2
數碼管e段/鍵盤行信號2
13
SD/KR3
數碼管d段/鍵盤行信號3
14
SC/KR4
數碼管c段/鍵盤行信號4
15
SB/KR5
數碼管b段/鍵盤行信號5
16
SA/KR6
數碼管a段/鍵盤行信號6
17
DP/KR7
數碼管dp段/鍵盤列信號7
18
DIG0/KC0
數碼管字選信號0鍵盤列信號0
19
DIG1/KC1
數碼管字選信號1/鍵盤列信號1
20
DIG2/KC2
數碼管字選信號2/鍵盤列信號2
21
DIG3/KC3
數碼管字選信號3/鍵盤列信號3
22
DIG4/KC4
數碼管字選信號4/鍵盤列信號4
23
DIG5/KC5
數碼管字選信號5/鍵盤列信號5
24
DIG6/KC6
數碼管字選信號6/鍵盤列信號6
25
DIG7/KC7
數碼管字選信號7/鍵盤列信號7
26
OSC2
晶振輸出信號
27
OSC1
晶振輸入信號
28
復位信號,低電平有效

3.4.4 ZLG7289與單片機及數碼管的連接
U1就是ZLG7289。為了使電源更加穩定,在Vcc到GND之間接入47-470μF的電解電容。J1是ZLG7289與微處理器的接口。晶振Y1取4-16MHz,調節電容
C3和C4通常在10pF左右。復位信號是低電平有效,一般只需外接簡單的RC















圖3-7 只使用數碼管的應用電路

復位電路,也可以通過直接拉低 引腳的方法進行復位。
數碼管必須是共陰式的,不能直接使用共陽式的。DPY1和DPY2是4位聯體式數碼管,共同組成完整的8位。數碼管在工作時要消耗較大的電流,R9-R16是限流電阻,典型值是270Ω。如果要曾大數碼管的亮度,可以適當減小電阻值,最低200Ω[13]。
ZLG7289通常應連接共陰式數碼管,應用中無須用到的數碼管可以不接,省去數碼管不影響使用。ZLG7289與單片機的接口采用3線制I2C串行總線,由、CLK和DIO這3根信號組成。和CLK是輸入信號,由單片機提供。DIO信號是雙向的,必須接到單片機上具有雙向功能的I/O上。設計中使ZLG7289的6-9腳分別于AT89C51的P1.0-P1.3相連。其中6腳為片選輸入端CS,低電平有效,可用來向芯片發送數據,7腳CLK為同步時鐘輸入端,當向芯片發送數據時,此引腳上的電平上生表示數據有效;8腳為串行數據輸入/輸出端,當芯片接受指令時,此引腳為輸入端。SPI信號線的具體意義參見表2.4。操作SPI總線的時序圖參見圖2-7、2-8。

表3-8 ZLG7289的SPI串行接口信號
信號名稱
引腳時序
描述
6
SPI總線片選輸入信號,低電平有效
CLK
7
SPI總線時鐘輸入信號,上升沿有效
DIO
8
SPI總線數據信號,雙向





圖3-9 存指令時序圖(單字節命令)





圖3-10 帶數據指令時序圖(命令字在前,輸入數據在后)
3.4.5 時序圖中的各項延遲時間
  表中2-5各項參數的測試條件為:VCC=5.0V,Fosc=16MHz
表 3-11 時序延時表
符號
名稱
最小值
典型值
單位
T1
片選信號的建立時間
25
50
μs
T2
CLK信號高電平的寬度
5
8
μs
T3
CLK信號低電平的寬度
5
8
μs
T4
命令字與輸出數據之間的時間間隔
15
25
μs
3.4.6 控制指令
ZLG7289的控制指令分為單字節純指令和雙字節數據指令兩大類。在這里直介紹設計中所用的單字節復位(清除)指令和雙字節帶數據指令中的下載數據并按方式1進行譯碼指令[13]。
復位(清除)指令
D7
D6
D5
D4
D3
D2
D1
D0
1
0
1
0
0
1
0
0
這是一條軟復位指令,執行后會將數碼管所有的顯示內容清楚掉,原先設置的所有閃爍、消隱等屬性也一并清除,就像硬件復位一樣。
下載數據并按方式1進行譯碼
D7
D6
D5
D4
D3
D2
D1
D0

D7
D6
D5
D4
D3
D2
D1
D0
1
1
0
0
1
a2
a1
a0

dp
x
x
x
d3
d2
d1
d0
在指令格式中,高5位的11001是指令字節段;a2a1a0是數碼管顯示數據的位地址,位地址編號從左到右的順序依次位0、1、2、3、4、5、6、7;dp控制小數點是否顯示,dp=1時該位的小數點被點亮,dp=0時該位的小數點被熄滅;xxx是無關位;d3d2d1d0是要顯示的數據。顯示數據按照下表中的規則進行譯碼:
表3-12 下載數據命令譯碼方式1
d3d2d1d0(二進制)
d3d2d1d0(十六進制)
顯示結果
0
0
0
0
00H
0
0
0
0
1
01H
1
0
0
1
0
02H
2
0
0
1
1
03H
3
0
1
0
0
04H
4
0
1
0
1
05H
5
0
1
1
0
06H
6
0
1
1
1
07H
7
1
0
0
0
08H
8
1
0
0
1
09H
9
1
0
1
0
0AH
A
1
0
1
1
0BH
B
1
1
0
0
0CH
C
1
1
0
1
0DH
D
1
1
1
0
0EH
E
1
1
1
1
0FH
F
3.5 SPI接口技術3.5.1 SPI總線簡介
SPI,是英語Serial Peripheral Interface的縮寫,顧名思義就是串行外圍設備接口。SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節約了芯片的管腳,同時為PCB的布局上節省空間,提供方便,正是出于這種簡單易用的特性,現在越來越多的芯片集成了這種通信協議[14]。
3.5.2 SPI總線的基本結構
SPI是一個環形總線結構,由SS(CS)、SCK、SDI、SIO構成,其時序其實很簡單,主要是在SCK的控制下,兩個雙向移位寄存器進行數據交換。
    上升沿發送、下降沿接收、高位先發送。
    上升沿到來的時候,SDO上的電平將被發送到從設備的寄存器中。
    下降沿到來的時候,SDI上的電平將被接收到主設備的寄存器中。
3.5.3 數據的傳輸
假設主機和從機初始化就緒:并且主機的sbuff=0xaa (10101010),從機的sbuff=0x55 (01010101),下面將分步對SPI的8個時鐘周期的數據情況演示一遍(假設上升沿發送數據)[15]。
---------------------------------------------------
脈沖           主機sbuff    從機sbuff     SDI    SDO
---------------------------------------------------
0    00-0     10101010     01010101      0      0
---------------------------------------------------
1    0--1     0101010x     10101011      0      1
1    1--0     01010100     10101011      0      1
---------------------------------------------------
2    0--1     1010100x     01010110      1      0
2    1--0     10101001     01010110      1      0
---------------------------------------------------
3    0--1     0101001x     10101101      0      1
3    1--0     01010010     10101101      0      1
---------------------------------------------------
4    0--1     1010010x     01011010      1      0
4    1--0     10100101     01011010      1      0
---------------------------------------------------
5    0--1     0100101x     10110101      0      1
5    1--0     01001010     10110101      0      1
---------------------------------------------------
6    0--1     1001010x     01101010      1      0
6    1--0     10010101     01101010      1      0
---------------------------------------------------
7    0--1     0010101x     11010101      0      1
7    1--0     00101010     11010101      0      1
---------------------------------------------------
8    0--1     0101010x     10101010      1      0
8    1--0     01010101     10101010      1      0
---------------------------------------------------
    這樣就完成了兩個寄存器8位的交換,上面的0--1表示上升沿、1--0表示下降沿,sdi、 sdo相對于主機而言的。根據以上分析,一個完整的傳送周期是16位,即兩個字節,因為,首先主機要發送命令過去,然后從機根據主機的名準備數據,主機在下一個8位時鐘周期才把數據讀回來。
其中CS是控制芯片是否被選中的,也就是說只有片選信號為預先規定的使能信號時(高電位或低電位),對此芯片的操作才有效[16]。這就允許在同一總線上連接多個SPI設備成為可能。接下來就負責通訊的3根線了。通訊是通過數據交換完成的,這里先要知道SPI是串行通訊協議,也就是說數據是一位一位的傳輸的。這就是SCK時鐘線存在的原因,由SCK提供時鐘脈沖,SDI,SDO則基于此脈沖完成數據傳輸。數據輸出通過 SDO線,數據在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取。完成一位數據傳輸,輸入也使用同樣原理。這樣,在至少8次時鐘信號的改變(上沿和下沿為一次),就可以完成8位數據的傳輸。
3.6 電壓顯示電路
設計中采用的是8段LED數碼管sm420364來顯示電壓值。LED具有耗電低、亮度高、視角大、線路簡單、耐震及壽命長等優點,它由8個發光二極管組成,其中7個按‘8’字型排列,另一個發光二極管為圓點形狀,位于右下角,常用于顯示小數點。把8個發光二極管連在一起,公共端接高電平,叫共陽極接法,相反,公共端接低電平的叫共陰極接法,根據ZLG7289的要求我們采用共陰極接法。當發光二極管導通時,相應的一段筆畫或點就發亮,從而形成不同的發光字符。其8段分別命名為dp g f e d c b a。例如,要顯示“0”,則dp g f e d c b a分別為:1100 0000B;要顯示“A”,則dp g f e d c b a分別為:0001 0001B(共陽極)。若要顯示多個數字,只要讓若干個數碼管的位碼循環為低電平就可以了。
根據設計要求,顯示電路需要至少4位LED數碼管來顯示電壓值,則有4位LED循環顯示。設計中由ZLG7289的SA~DP驅動LED的段碼顯示,即顯示字符,由ZLG7289的DIG0~DIG3選擇LED位碼,即選擇點亮哪位LED來顯示。電路圖參考原理圖2.1。
3.7 小結
在滿足設計要求的前提下,為保證電路造價和維修的方便,在設計中我盡可能的用電路制作中的常用元件。另外除了上述器件外,其他的元件如電阻,電容的選擇都是由一些典型電路經測試調節確定的。所以電路顯得更于理解和分析,這一點給也將給最后的調試帶來很大的方便。


第4章  基于單片機數字電壓表的軟件設計4.1 軟件系統整體設計
系統的軟件流程如下:
開始時首先初始化ZLG7289,使數碼管顯示為“0.000”,然后調用A/D轉換子程序啟動ADC0809。單片機等待查詢轉換結束信號,如果有信號則通過并行口讀取轉換數據并存儲,就這樣連著讀取五次數據后求平均值。再將所求得的結果進行運算Dout100/51,將運算后的結果除以10得到千分位,再把商除以10得到百分位,再除以10又分別得到十分位和個位,最后把個位,十分位,百分位和千分位通過串口發送給ZLG7289經譯碼后送至數碼管顯示,此時LED數碼管顯示的就是ADC0809采集的電壓值。
4.1.1 C51簡介
C語言是今年來在國內外得到迅速推廣應用的一種計算機語言。C語言功能豐富,表達力強,使用靈活方便,應用面廣,目標程序效率高,可移植性好,既具有高級語言的優點,又有低級語言的許多特點。因此,C語言特別適合于編寫系統軟件。C語言誕生后,許多原來用匯編語言編寫的軟件,現在可以用C語言編寫了,而學習和使用C語言要比學習和使用匯編語言容易得多[17]。
51 的編程語言常用的有二種,一種是匯編語言,一種是C 語言。匯編語言的機器代碼生成效率很高但可讀性卻并不強,復雜一點的程序就更是難讀懂,而C 語言在大多數情況下其機器代碼生成效率和匯編語言相當,但可讀性和可移植性卻遠遠超過匯編語言,而且C 語言還可以嵌入匯編來解決高時效性的代碼編寫問題。對于開發周期來說,中大型的軟件編寫用C 語言的開發周期通常要小于匯編語言很多[17]。
Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發系統,Keil C51軟件提供豐富的庫函數和功能強大的集成開發調試工具,全——Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到Keil C51生成的目標代碼效率非常之高,多數語句生成的匯編代碼很緊湊,容易理解。在開發大型軟件時更能體現高級語言的優勢[18]。
設計步驟:
  • 建立一個新的項目;
  • 選擇所用單片機;
  • 在新建立的項目中加入程序;
  • 保存運行;
  • 編譯是否通過。
4.1.2 程序流程圖
    系統軟件的總體框架如圖4-1所示:


圖4-1程序流程圖
系統上電即初始化,首先,單片機片選A/D轉換器,然后發出信號啟動A/D轉換。此時單片P3.2口開始工作,不斷掃描A/D轉換結束端口有無結束信號。若有,即啟動信號采集,對A/D轉換器的數據輸出口送來的數值進行存儲,又重新開始,并且準備下一次的采集;若沒有,則繼續等待。每當采集系統采集一次,a的值就自增1,直至采集滿5次時歸零,然后單片機一邊對數據處理,一邊進入下一次的掃描。數據處理完之后,通過SPI總線將數據傳給ZLG7289,ZLG7289把接收到的數據譯碼后送顯示器顯示出來。
4.1.3 數據采集模塊的設計
  1.ADC0809內部帶有輸出鎖存器,可以與AT89S51單片機直接相連。
  2.初始化時,使ST和OE信號全為低電平。
  3.送要轉換的哪一通道的地址到A,B,C端口上。
  4.在ST端給出一個至少有100ns寬的正脈沖信號。
  5.是否轉換完畢,根據EOC信號來判斷。            
  6.當EOC變為高電平時,這時給OE為高電平,轉換的數據就輸出給單片機了。
4.1.4 數據處理模塊的設計
     為了得到更高精度和曾強系統的抗干擾能力,當微處理器從ADC0809讀取數據后,把連續讀入的5次數據進行累加求平均值:
                                                               (4.1)

再由單片機對VO進行標度變換,得到被測電壓數值:
                                                               (4.2)

但是單片機在進行數學運算時結果只讀取整數部分,且要顯示的是三位小數,所以需要給VIN乘以1000:
                      (4.3)
用取余數的方法將電壓值按位輸出[5]:

  千分位                           取余數輸出
百分位                           取余數輸出
  十分位                           取余數輸出
4.2 原程序見附錄A4.3 小結
這一章中主要介紹了軟件部分的設計方法,另外要注意的是在程序設計上,首先要根據電路功能要求和硬件電路圖畫出程序流圖。然后再寫出程序,在程序的編譯過程中很難避免會出現錯誤,這就需要編譯器的提示和個人的分析,檢查出錯誤所在,并且修正直到編譯的通過為止。為了盡可能減少錯誤的出現和檢查的方便,在寫程序時,最好按照規范的程序寫法去寫,并且最好加上詳細的注釋。

第5章  基于單片機數字電壓表的抗干擾設計5.1硬件系統的可靠性與抗干擾設計
硬件抑制干擾主要從形成干擾的三個方面采取措施[19][20]:
  1.消除和抑制噪聲源
  2.破壞干擾通道
  3.消弱接受電路對抗噪聲干擾信號的敏感性
對此采用的抗干擾措施有以下幾種方法:
5.1.1 供電系統抗干擾措施
    任何電源及輸入線路都存在內阻,正是這些內阻引進了電源的噪聲干擾。如果無內阻存在,任何噪聲都會被電源短路吸收,在線路中不會建立任何干擾電壓。為保證電子線路正常工作,防止從電源引入干擾,采取以下措施:
  1.采用交流穩壓器供電
用交流穩壓器供電可保證供電的穩定性,防止電源系統的過壓與欠壓,有利于提高整個系統的可靠性[19]。
  2.加裝濾波器
(1)低通濾波器:電源系統的干擾源大部分是高次諧波,因此采用低通濾波器濾去高次諧波,以改善電源波形。
(2)退耦濾波器:一個直流電源同時對幾個電路供電,為了避免通過電源內阻造成幾個電路之間互相干擾,應在每個電路的直流電源進線處加裝退耦濾波電容[19]。
5.1.2 接地
    接地是抑制干擾的重要方法,如能將接地和屏蔽正確結合起來,就可以解決大部分干擾問題。在電子電路中,地線有系統地、機殼地(屏蔽地)、數字地(邏輯地)和模擬地等。如果一個電路有兩點和兩點以上接地,則由于兩點間的地電位差而會引起干擾,因此一般采用“單點接地” [20]。
  1.單點接地
    多級電路通過公共接地母線后在一點接地,如圖5.1(a)所示。此方法雖然避免了多點接地因地電位差所引起的干擾,但在公共地線上卻存在著A、B和C三個不同的對地電位差。如果各級電平相差不大,這種接地方式可以使用,反之則不能使用。因為高電平會產生較大的地電流,并且使這個干擾串入到底電平電路中去。這種接地方式僅限于級數不多、各級電平差異不大或抗干擾能力較強的數字電路[20]。



圖5-1(b)圖是另一種單點接地方式。此時,A、B和C三點對地電位只與本電路的地電流和地線阻抗有關,各電路之間的電流不形成耦合,該種接地方式一般用于工作頻率在1MHz以下的電路。







                 a                                   b  
圖5-1 接地方式
  2.數字、模擬電路的接地分開
一個系統既有高速數字電路,又有模擬電路,為避免數字電路對模擬電路
的工作造成干擾,兩者的接地不要相混,而分別與電源端地線相連[21]。
5.1.3 傳輸通道的抗干擾措施
在電子電路信號的傳輸過程中會產生通道干擾。為了保證傳輸的可靠性, 在本設計中采取盡可能小連線距離和盡可能大的PCB布線寬度,這樣使電磁波對信號的影響降到了最小。
5.2 軟件系統的可靠性與抗干擾設計
按照可靠性理論,程序設計最主要任務是,確保應用程序按照給定的順序有秩序地運行。有序運行的基礎是硬件的可靠性,可靠性高的硬件基礎可以確保不出現硬件故障;但是在使用時,大量的干擾源雖然不會造成單片機硬件系統的破壞,卻常常會破壞數字信號的時序,更改單片機寄存器內容,導致程序運行的不正常。因此,在提高硬件的基礎上,必須在程序設計中采取措施,提高軟件的可靠性,減少軟件錯誤的發生保證系統的正常運行[22]。
    軟件的抗干擾設計有關方面很多,在本設計中只對軟件的本質可靠性加以考慮,即本質可靠性程序設計:它是指程序可以不依靠附加的部分就可以完成規定的功能。為了做到程序設計的本質可靠性,程序設計中從以下幾個方面做了考慮:
  1.最大限度的減少程序錯誤和缺陷
    程序在編寫和調試時對系統將來所處的環境不可能做到完全的模擬,因此,看似正確的程序,實際上還存在一定的缺陷。這些缺陷,有的是顯性的,可以通過進一步的調試與仿真加以改進,還有是隱性的,如因為信號的延時而造成程序的判斷錯誤。這就要求在編寫程序時,需作綜合、全面、動態的考慮。
  2.足夠的時序裕度
    數字系統的協調、有序運行離不開正確的時序。系統在單片機的控制下,實現分時操作,程序運行完全依靠時序調度、切換控制。
(1)復位時序
     在系統中,通常需要復位的不僅僅是單片機,一些帶有工作寄存器的外圍器件也要復位(如本次設計中的ZLG7289),在軟件復位時,必須先復位外圍器件,再復位主器件。
(2)器件工作時序
    器件工作時序是器件應用程序設計的基礎。程序中必須保證時序工作的正確性,而且要有足夠的序裕度。例如:ZLG7289片選信號的建立時間最小為25μs,必須延時25μs后才能發揮后續指令,這是由器件的工作特性決定的。在考慮器件運行時序時,單片機的操作必須保證時序信號的銜接控制和時序信號的時序裕度。
(3)總線時序
    在單片機應用系統,有并行總線與串行總線,串行通信中又有通信總線與擴展總線。這些總線在規范化操作時,其時序由數據通信協議保證,在非規范運行,例如在虛擬總線方式下,其虛擬總線運行的可靠性在于時序的準確模擬。所以在數字電壓表的程序設計中必須嚴格按照ZLG7289的SPI總線時序進行設計[23]。
5.3 小結
   抗干擾的方法很多,以上介紹的只是本設計中所采用的。這些方法也是電路設計中最常用和最好用的,但是對于軟件抗干擾就不是所有的電路所能做到的,它只能在含有微處理單元的電路中才可以去實現。并且可以通過軟件的方法去補償一些硬件不能達到的調節,或者通過擬合曲線去處理一些非線形的數據。這也是電路中應用微處理器的一大益處。


第6章  電路制作及調試6.1 PCB板的制作
CAD是Computer Aided Design(計算機輔助制圖)的簡稱。CAD的特點是速度快,準確性高,能極大地減輕工程技術人員的勞動強度。電子線路CAD的基本含義是使用計算機來完成電子線路的設計過程,包括電路原理圖的編輯、電路功能仿真、工作環境模擬、印制板設計(自動布線、手動布線)與檢測等。電子線路CAD軟件還能迅速形成各種各樣的報表文件,如元件清單報表,為元器件的采購及工程決算等提供了方便[23]。
目前,電子線路CAD軟件種類很多,如早期的Smartwork、TANGO、EESystem、PCAD、OrCAD、Protel等。其功能大同小異,其中Protel具有操作簡單、方便、易學等特點,是目前比較流行的電子線路CAD軟件之一[24][25]。
Protel99SE是Protel軟件系列較新的版本,其強大而先進的功能,使它自推出以來,一直是大多數電子設計者的手選軟件。因此,我選用Protel99SE來繪制PCB板。





圖6-2敷銅后的PCB圖
6.2 系統外觀














圖6-3 上電后系統圖


圖6-4 加被測電壓后系統圖
6.3電路調試6.3.1 調試步驟
  1.按電路原理圖進行焊接,在焊接過程中首先要對PCB進行檢測,查看PCB是否制作合格。
  2 .按電路原理圖焊接元件。
  3 .上電測試:在系統上電開始測量前,要用萬用表的電壓檔對被測電壓進行估測,然后以此選擇適當的量程,防止過大電壓燒壞A/D轉換器。選擇好量程之后就可以對系統上電測量了。
6.3.2 可能出現的問題解答
  1.上電后電路不工作,數碼管無反應
    檢查此類錯誤情況需要從兩個方面入手:硬件上,檢查電源供電是否正常、晶振是否起振、電路接線是否良好可靠;軟件上,檢查程序觸發的時序是否正確,片選是否選通、程序中延時是否正確。
  2.數碼管出現閃爍現象
     正常工作的ZLG7289驅動數碼管顯示應處于一個很穩定的狀態,數碼管被點亮后不會出現閃爍和跳動的現象。出現閃爍的很大原因是在選定ZLG7289(即將片選信號/CS置為低電平)后很長時間沒有釋放,導致7289中斷掃描的時間太長,從而肉眼看到數碼管出現閃爍和不穩定的現象;正確的使用方法是在CS置為低電平后減少不必要的延時,使ALG7289被中斷掃描的時間降到最低而不至于影響顯示[25]。
  3.上電后顯示正常,就是顯示數值不準確。
    顯示正常表示硬件電路和軟件都正確,對于數值顯示不準確需要調節ADC0809的輸入比較電壓。所以需要找一塊更高精度的電壓表進行校準。
6.4 系統調試及結果分析
設計完成之后,我們要對系統進行調試。調試過程可以利用對部分給定電壓的測量結果分析來完成。首先要校對零點:將A/D轉換器的模擬輸入端口接較準電源,此時可以調整ADC0809參考電壓值,直至顯示電壓和標準電源相同[26]。校準后,就可以進行調試了。表6.1所示為對系統進行測試結果:
表6-1 測試結果
實際電壓(V)
顯示電壓(V)
絕對誤差(V)
相對誤差(%)
0.000
0.000
0.000
0.0%
0.500
0.506
0.006
1.2%
1.000
1.007
0.007
1.4%
1.500
1.517
0.017
1.2%
2.000
2.019
0.019
0.9%
2.500
2.521
0.021
0.8%
6.4 小結
PCB布線的好壞直接影響著電路工作的可靠性,所以在布線時需要對布線規則和所用元件PCB封裝做一些了解,要求做到線于線之間相交的次數最少,無直角連線。在調試上,如果電路出現問題,可根據問題分析可能問題所在模塊,然后在根據模塊設計時的功能要求去排錯修改。另外根據表6.1去評價設計是否滿足設計指標要求。若顯示電壓與實際電壓的誤差在誤差范圍之內,則表示系統運行正常;若顯示電壓與實際電壓的誤差很大,則有可能是校零電阻沒有調整,可以進一步的校準。




黑龍江職業學院畢業論文(設計)

  
一、主要結論
本論文通過參閱大量相關文獻,了解現有數字電壓表的設計原理和發展方向,在總結了前人經驗的基礎上,采用單片機為核心控制單元,實現了通過軟件來對數據進行處理。在設計中為了節省單片機的端口資源,采用了可以和單片機進行串行通信的顯示驅動芯片ZLG7289。另外,考慮到系統到抗干擾性,在電路設計中加入了去耦電容,零歐電阻等用來抗干擾的元件;在電路制作中,PCB嚴格按照布線規則進行布線,這一措施使系統的可靠性得以提高。在程序設計中最大限度的減少程序缺陷,使程序合理合序運行。最后,通過反復調試,各硬件電路的參數已經確定,系統軟件程序也調試完成,系統各項工作指標已滿足。



黑龍江職業學院畢業論文(設計)
通過本課題的研究,從原理圖的設計到PCB板子的繪制、從實際硬件電路的搭建、調試到軟件系統程序的編寫、調試,所有工作形成了一個完整的系統。整個工作過程培養了我獨立研制的能力,也培養了我工程學的思維能力,讓我受益匪淺,為我以后的工作奠定了基礎。當然也還存在很多問題,望各位老師批評指正,提出您的寶貴意見。
二、進一步工作及展望
通過實驗,證明了本電壓表的設計方案的可行性,并且有著很好的開發前景,現就本設計以后完善及功能擴展總結為以下幾點:
  1.調校問題。電路在制作時沒有考慮ADC0809參考電壓要求,所以對電源要求較高為穩定6V。要解決這個問題,可以從兩個方面考慮:a.從硬件考慮,給ADC0809參考電壓輸入端加裝濾波、穩壓、可調分壓電路,具體電路由一個濾波電容、穩壓二極管,可變電阻組成。b.從軟件考慮,可以擬合一條曲線,經單片機處理對不準確的量化值進行修正。這也是本電路采用單片機后靈活性的體現。并且按照這樣做,還可以節省印刷PCB板的面積,降低了制作費用。
  2.精度的提高。由于設計指標要求的精度不是很高,所以用8位AD轉換和程序中求多次電壓平均值的方法就能充分滿足設計要求。但是對于本設計,如果要得到更高的測量精度,可以通過改進程序的方法實現。例如:按誤差理論中的計算方法處理數據。
  3.擴展問題。設計指標要求測量范圍是0V~+5V。但是實際中要測量的范圍多種多樣,要測量的度量也不相同,比如溫度、壓力、濕度等等,所以本電壓表在實際應用中還需要根據具體應用環境附加合適的電路完成要求功能。比如要測量高電壓時就要加分壓電路,要測溫度時就要加溫度傳感器(把溫度變為電壓量),測不穩定電壓要加采樣保持電路等等。也就是說,本設計的電壓表相當一個表頭,在需要數字化顯示的儀表中有著廣泛的應用。
  4.端口的利用。由于設計中采用了SPI串行總線,芯片的管腳上只占用四根線,節約了芯片的管腳,這樣就有足夠的端口供以后使用,比如:設計中采用的A/D轉換是ADC0809,它能對8路信號進行AD轉換,為了利用這個特點,可以方便的在單片機上取三個端口用于ADC0809的地址輸入。
總之,由于設計中采用了單片機,而單片機的應用如今已經在工業、電子等方方面面展示出了它的優越性,利用單片機設計電路逐漸成發展趨勢,它與外圍的簡單電路再加上優化程序就可以構建任意的產品,使得本設計成為現實。隨著單片機的日益發展,它必將在未來顯示出更大的活力,為電子設計增加更多精彩。


致   謝
在畢業設計完成時,作者不由的想起大學最后這一學期的學習生活。在這里,作者首先要感謝的是導師劉群華、韓峰老師這幾個月來給予的關心與指導,尤其是他們一絲不茍的科研態度、高度的事業心和責任感時刻感染著作者;老師不僅教授給作者知識,更教給作者做人的道理、做學問的態度,這些都將使作者終生受益,恩師的教導將永不忘記,再一次忠心的感謝老師苦心培育之恩。同時也忠心感謝在做畢業設計的過程中給予作者幫助和關心的老師、同學和朋友們。這里向他們表示深深的謝意,感謝你們這些年來為作者所付出的艱辛和無私的奉獻。
在此,忠心的向在百忙之中審閱作者論文的各位老師表示最誠摯的感謝。

參考文獻
[1]   劉振忠.數字電壓表發展概況和原理.電訊工程.1998,1
[2]  胡學海.單片機原理及應用系統設計.電子工業出版社,2005,2-7
[3]  沙占友.新型數字電壓表原理與應用.機械工業出版社.2006,1-6
[4]  柳金龍.淺談數字電壓表的特點.中國計量.2004,8:43-44
[5]   黃亮.基于AT89C51單片機的數字電壓表的設計.實用電子制作.2006,10:25-27
[6]  Grinev.V.G,Grineva.L.V. Amplitude digital voltmeter. Instruments and Experimental Techniques,1975,114-117
[7]   王守華,李智.基于PC的數字電壓表設計.今日電子.2006,8:81
[8]   何循來.高性能八位單片機AT89C51.半導體技術.1997,8(4):61-63
[9]  宋鳳娟,李國忠等.基于89C51單片機的數字電壓表設計.2007,29(2): 89-93
[10]  ADC0808/ADC0809 8-Bit up Compatible A/D Cnverters With 8-Channel Multiplexer. National Semiconductor.
[11]  江曉安等.數字電子技術.西安電子科技大學出版社,1993,189-204
[12]  余永權.ATMEL89系列單片機應用技術.北京航天航空大學出版社,2000
[13]  ATMEL Corporation.Microcontroller Data Book.Oct 1995
[14]  苗紅霞.單片機實現數字電壓表的軟硬件設計.河海大學常州分校學報.
        2002,16(3):74-79
[15]   蔡美琴 張為民等.MCS-51系列單片機系統及應用.高等教育出版,2005
[16]  龔尚福,朱宇.微機原理與接口技術.西安電子科技大學出2003.135-142
[17]  王建校,楊建國等.51系列電片機及C51程序設計.科學出版社,2002
[18]  胡大可.基于單片機8051的嵌入式開發指南.電子工業出版社,2001
[19]  楊栓科.模擬電子技術基礎.高等教育出版社.2005
[20]  田良,王堯等.綜合電子設計與實踐.東南大學出版社,2002
[21]  閻智義,王曉梅等.提高數字電壓表穩定性的方法.長春工業大學學報.
        2003,24(1):50-53
[22]  劉光斌,劉東等.單片機系統實用抗干擾技術.人民郵政出版社,2003.322-358
[23]  李東生等.Protel99SE電路設計技術入門與應用.電子工業出版社,2004
[24]  余家春.Protel99SE電路設計實用教程.中國鐵道出版社,2002
[25]  陳曉平.Protel99SE-電子線路CAD應用教程.東南大學出版社,2005
[26]  孟凡利.直流數字電壓表的誤差及分析.計量技術.2004,9:25-26

附錄 基于單片機的數字電壓表設計C51原程序


  1. #include  
  2. sbit ST=P3^6;
  3. sbit OE=P3^7;
  4. sbit EOC=P3^2;
  5. sbit ZLG7289_pinCS=P1^0;
  6. sbit ZLG7289_pinCLK=P1^1;
  7. sbit ZLG7289_pinDIO=P1^2;
  8. unsigned char ZLG7289_Delay_t=4;
  9. /*
  10. 宏定義:ZLG7289_ShortDelay()
  11. 功能:短延時
  12. 說明:延時ZLG7289_ShortDelay_t*2+8)個機器周期
  13. */
  14. void ZLG7289_ShortDelay()
  15. {
  16.    unsigned char t=ZLG7289_Delay_t;
  17.    while(--t!=0);
  18. }
  19. /*
  20. 宏定義:ZLG7289_LongDelay()
  21. 功能:長延時
  22. 說明:延時ZLG7289_LongDelay_t*12+8)個機器周期
  23. */
  24. void ZLG7289_LongDelay()
  25. {
  26.     unsigned char t=ZLG7289_Delay_t*6;
  27.     while(--t!=0);
  28. }



  29. 黑龍江職業學院畢業論文(設計)
  30. /*
  31. 函數:ZLG7289_SPI_Write()
  32. 功能:向SPI總線寫入1字節的數據
  33. 參數:
  34. dat:要寫入的數據
  35. */
  36. void ZLG7289_SPI_Write(char dat)
  37. {
  38.     unsigned char t=8;
  39.     do
  40.    {
  41.     ZLG7289_pinDIO=(bit)(dat&0x80);
  42.     dat<<=1;
  43.     ZLG7289_pinCLK=1;
  44.     ZLG7289_ShortDelay();
  45.     ZLG7289_pinCLK=0;
  46.     ZLG7289_ShortDelay();
  47.     }while(--t!=0);
  48. }
  49. /*函數:ZLG7289_cmd()
  50. 功能:執行ZLG7289純指令
  51. 參數:
  52. cmd:命令字
  53. */
  54. void ZLG7289_cmd(char cmd)
  55. {
  56.    char sav=IE;
  57.    IE&=0xFA;
  58.    ZLG7289_pinCS=0;
  59.    ZLG7289_LongDelay();
  60.    ZLG7289_SPI_Write(cmd);
  61.    ZLG7289_pinCS=1;
  62.    ZLG7289_LongDelay();
  63.    IE=sav;
  64. }
  65. //復位(清除)指令
  66. void ZLG7289_Reset()
  67. {
  68.   ZLG7289_cmd(0xA4);
  69. }
  70. /*
  71. 函數:ZLG7289_cmd_dat()
  72. 功能:執行ZLG7289帶數據指令
  73. 參數:
  74. cmd:命令字
  75. dat:數據
  76. */
  77. void ZLG7289_cmd_dat(char cmd,char dat)
  78. {
  79.          char sav=IE;
  80.          IE&=0xFA;
  81.          ZLG7289_pinCS=0;
  82.          ZLG7289_LongDelay();
  83.          ZLG7289_SPI_Write(cmd);
  84.          ZLG7289_LongDelay();
  85.          ZLG7289_SPI_Write(dat);
  86.          ZLG7289_pinCS=1;
  87.          ZLG7289_LongDelay();
  88.          IE=sav;
  89. }
  90. /*
  91. 函數:ZLG7289_Download()
  92. 功能:下載數據
  93. 參數:
  94.   mod=0:下載數據且按方式0譯碼
  95.   mod=1:下載數據且按方式1譯碼
  96.   mod=2:下載數據且按方式2譯碼
  97.   x:數碼管編號(橫坐標),取值0~7
  98.   dp=0:小數點不亮
  99.   dp=1:小數點亮
  100.   dat:要顯示的數據
  101.   說明:
  102.   譯碼方式的具體含義查參考數據手冊
  103. */
  104. void ZLG7289_Download(unsigned char mod,char x, bit dp,char dat)
  105. {
  106.           code char ModDat[3]={0x80,0xC8,0x90};
  107.           char d1;
  108.           char d2;
  109.           if(mod>2)mod=2;
  110.           d1=ModDat[mod];
  111.           x&=0x07;
  112.           d1|=x;
  113.           d2=dat&0x7F;
  114.           if(dp)d2|=0x80;
  115.           ZLG7289_cmd_dat(d1,d2);
  116. }
  117. /*
  118. 函數:ZLG7289_Init()
  119. 功能:ZLG7289初始化
  120. 參數:SPI總線的延時值設置,取值1-40(超出范圍可能導致錯誤)
  121. 說明:
  122. t的取值可以參考以下公式:t>=5*f1/f2,其中f1表示89C51的
  123. 晶振頻率,f2表示ZLG7289的晶振頻率
  124. */
  125. void ZLG7289_Init(unsigned char t)
  126. {
  127.     unsigned char x;
  128.     //I/O口初始化
  129.     ZLG7289_pinCS=1;
  130.     ZLG7289_pinCLK=0;
  131.     ZLG7289_pinDIO=1;
  132.     //延時初始化
  133.     ZLG7289_Delay_t=t;
  134.     //點亮所有數碼管
  135.     for(x=0;x<4;x++)
  136.    {
  137.       ZLG7289_Download(1,x,1,8);
  138.    }
  139. }
  140. /***************************************************
  141. ***************主函數*******************************
  142. ****************************************************/
  143. void main()
  144. {
  145. /*********程序初始化***********/
  146.       unsigned long int sum;
  147.       unsigned char gatdata;
  148.       char i,j,x,outdat;
  149.                 int result;
  150.       ST=1;
  151.       OE=1;
  152.       ZLG7289_Reset();
  153.       ZLG7289_Init(4);

  154. /*******初始化結束***************/
  155.      while(1)
  156.     {
  157.                      sum=0;
  158.            gatdata=0;
  159.            for(i=0;i<=5;i++)
  160.              {
  161.               ST=0;
  162.               ZLG7289_ShortDelay();
  163.               ST=1;
  164.               while(1)
  165.                  if(EOC==0)
  166.                    {
  167.                      OE=0;
  168.                      gatdata=P0;
  169.                      OE=1;
  170.                      sum=sum+gatdata;
  171.                                                                       break;
  172.                    }
  173.              }
  174.            result=(sum*1000)/255;
  175.            for(j=0;j<=3;j++)
  176.            {
  177.             outdat=result%10;
  178.             result=result/10;
  179.             if(j==3) x=1;
  180.             else x=0;
  181.             ZLG7289_Download(1,j,x,outdat);
  182.            }
  183.                 }
  184. }
復制代碼

0.092.jpg (69.47 KB, 下載次數: 182)

0.092.jpg

0.081.jpg (3.53 KB, 下載次數: 170)

0.081.jpg

0.062.jpg (13.21 KB, 下載次數: 189)

0.062.jpg

評分

參與人數 5黑幣 +27 收起 理由
ko44 + 7 共享資料的黑幣獎勵!
lhxdsd + 5 很給力!
taozi123 + 5 贊一個!
wang245075324 + 5 很給力!
spz24680 + 5 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏14 分享淘帖 頂6 踩
回復

使用道具 舉報

沙發
ID:287373 發表于 2018-3-4 11:31 | 只看該作者
學習學習
回復

使用道具 舉報

板凳
ID:294836 發表于 2018-3-21 15:14 | 只看該作者
學習學習              
回復

使用道具 舉報

地板
ID:307003 發表于 2018-4-12 22:24 | 只看該作者
學習學習
回復

使用道具 舉報

5#
ID:271591 發表于 2018-4-29 13:06 | 只看該作者
看起來不錯
回復

使用道具 舉報

6#
ID:319215 發表于 2018-4-30 09:07 | 只看該作者
學習學習
回復

使用道具 舉報

7#
ID:319135 發表于 2018-5-1 19:41 | 只看該作者
很有幫助,謝謝啦
回復

使用道具 舉報

8#
ID:343644 發表于 2018-6-2 20:15 | 只看該作者
求原版清晰總電路原理圖
回復

使用道具 舉報

9#
ID:355437 發表于 2018-6-21 09:33 | 只看該作者
謝謝      
回復

使用道具 舉報

10#
ID:348734 發表于 2018-6-22 18:37 | 只看該作者
好東西,,謝謝了
回復

使用道具 舉報

11#
ID:416420 發表于 2018-10-27 19:21 | 只看該作者
好東西
回復

使用道具 舉報

12#
ID:435796 發表于 2018-11-29 16:48 | 只看該作者
學習學習
回復

使用道具 舉報

13#
ID:410167 發表于 2018-11-30 01:06 | 只看該作者
學習學習不錯不錯謝謝樓主
回復

使用道具 舉報

14#
ID:436038 發表于 2018-11-30 14:38 | 只看該作者
很給力
回復

使用道具 舉報

15#
ID:449314 發表于 2018-12-18 21:04 | 只看該作者
有沒有加上過電壓報警功能的
回復

使用道具 舉報

16#
ID:479854 發表于 2019-3-8 00:24 | 只看該作者
謝謝
回復

使用道具 舉報

17#
ID:493072 發表于 2019-3-18 11:31 | 只看該作者
學習學習,很棒
回復

使用道具 舉報

18#
ID:493122 發表于 2019-3-18 13:07 | 只看該作者
好東西非常感謝
回復

使用道具 舉報

19#
ID:493280 發表于 2019-3-18 16:04 | 只看該作者
66666666
回復

使用道具 舉報

20#
ID:746219 發表于 2020-5-7 16:33 | 只看該作者
以單片機為核心,設計數字電壓表,以A/D轉換器采集被測量電壓的數值,經過單片機運算,計算出被采集電壓的數字,將電壓數字顯示在數碼管或LED顯示器上。
我是這個題目可以用這個嗎
回復

使用道具 舉報

21#
ID:907192 發表于 2021-5-18 22:34 | 只看該作者
6-1的表,1.000V的相對誤差是不是算錯了
回復

使用道具 舉報

22#
ID:28992 發表于 2021-5-19 08:08 | 只看該作者
excellent job, thank you!
回復

使用道具 舉報

23#
ID:924117 發表于 2021-5-20 21:10 | 只看該作者
再來學習一下,文章中好像有幾個圖表沒有對應上
回復

使用道具 舉報

24#
ID:102800 發表于 2021-5-20 21:17 | 只看該作者
正在找這方面資料,謝謝分享
回復

使用道具 舉報

25#
ID:1104730 發表于 2023-12-17 18:04 | 只看該作者
結課要求與題目相似,感謝給我很大啟發。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久草新在线 | 国产视频中文字幕 | 亚洲欧美激情精品一区二区 | 蜜桃特黄a∨片免费观看 | 伊人在线 | 国产超碰人人爽人人做人人爱 | 99久久久久久 | 91精品久久久久久久久久 | 国产激情免费视频 | 亚洲精品久久久久久久久久久 | 日韩精品免费在线观看 | 久久久久99 | 美女在线一区二区 | 日韩欧美高清 | 日本高清不卡视频 | 7799精品视频天天看 | 久国久产久精永久网页 | 精品亚洲一区二区 | 日韩二| 成人高潮片免费视频欧美 | 久久99久久| 日美女逼逼 | 无码日韩精品一区二区免费 | 亚洲国产精品久久久 | 久久久久久影院 | 色狠狠一区 | 亚洲视频在线一区 | 欧美久久久网站 | 国产午夜三级一区二区三 | 国产精品久久国产精品久久 | 亚洲精品乱码久久久久久蜜桃 | 日韩精品一区二区三区四区 | 操操日 | 久久久91精品国产一区二区精品 | 国产日韩欧美 | 欧美精品一级 | 天天操天天拍 | 99久久日韩精品免费热麻豆美女 | 一区二区三区免费 | 国产成人福利视频 | 91 在线|