黑龍江職業(yè)學(xué)院畢業(yè)論文(設(shè)計(jì))
摘 要
在日常維修、教學(xué)和科研中,電壓表是不可缺少的。本課題目的就是以單片機(jī)為基礎(chǔ)設(shè)計(jì)出一種結(jié)構(gòu)簡(jiǎn)單、工作可靠、靈活性好的數(shù)字電壓表。
本文首先介紹了數(shù)字電壓表的發(fā)展現(xiàn)狀及課題的目的和意義。然后,對(duì)基于單片機(jī)的數(shù)字電壓表的硬件系統(tǒng)、軟件系統(tǒng)的設(shè)計(jì)原理及具體實(shí)現(xiàn)方案作以詳細(xì)介紹,其中,在硬件部分,較為詳細(xì)的討論了硬件的選擇、設(shè)計(jì)原理、使用方法和功能,同時(shí),對(duì)各部分接口電路作以介紹;在軟件部分,介紹了軟件所使用的編程語(yǔ)言和編程思路。最后,對(duì)電路調(diào)試、印刷PCB板的制作及系統(tǒng)的抗干擾設(shè)計(jì)作了進(jìn)一步分析和總結(jié)。
本文設(shè)計(jì)的數(shù)字電壓表,其硬件電路所用元件較少、成本低、調(diào)節(jié)簡(jiǎn)單;軟件采用C語(yǔ)言編程,其靈活性高,可讀性強(qiáng)。經(jīng)過(guò)理論研究、原理設(shè)計(jì)和整機(jī)調(diào)試,實(shí)驗(yàn)結(jié)果表明,該方案可行。
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 數(shù)字電壓表的發(fā)展歷程
1.1.2 國(guó)內(nèi)外的發(fā)展現(xiàn)狀與趨勢(shì)
1.2 課題的意義和目的
1.3 本文所作的主要工作
第2章 基于單片機(jī)數(shù)字電壓表的總體設(shè)計(jì)
2.1 設(shè)計(jì)指標(biāo)
2.2 系統(tǒng)概述
2.2.1 硬件電路圖及工作過(guò)程簡(jiǎn)介
2.2.2 軟件程序設(shè)計(jì)簡(jiǎn)介
2.3 小結(jié)
第3章 基于單片機(jī)數(shù)字電壓表的硬件設(shè)計(jì)
3.1 器件的選擇
3.2 A/D轉(zhuǎn)換電路
3.2.1 A/D轉(zhuǎn)換芯片的選擇
3.2.2 ADC0809轉(zhuǎn)換原理介紹
3.2.3 ADC0809芯片介紹
3.2.4 ADC0809與單片機(jī)的接口方法
3.3 單片機(jī)介紹
3.3.1 單片機(jī)介紹
3.3.2 采用AT89C51的原因
3.3.3 AT89C51芯片主要性能參數(shù)
3.3.4 功能介紹
3.3.5 芯片管腳介紹及分配
3.4 顯示驅(qū)動(dòng)單元設(shè)計(jì)
3.4.1 ZLG7289芯片介紹
3.4.2 ZLG7289的主要特征
3.4.3 ZLG7289引腳功能說(shuō)明
3.4.4 ZLG7289與單片機(jī)及數(shù)碼管的連接
3.4.5 時(shí)序圖中的各項(xiàng)延遲時(shí)間
3.4.6 控制指令
3.5 SPI接口技術(shù)
3.5.1 SPI總線簡(jiǎn)介
3.5.2 SPI總線的基本結(jié)構(gòu)
3.5.3 數(shù)據(jù)的傳輸
3.6 電壓顯示電路
3.7 小結(jié)
第4章 基于單片機(jī)數(shù)字電壓表的軟件設(shè)計(jì)
4.1 軟件系統(tǒng)整體設(shè)計(jì)
4.1.1 C51簡(jiǎn)介
4.1.2 程序流程圖
4.1.3 數(shù)據(jù)采集模塊的設(shè)計(jì)
4.1.4 數(shù)據(jù)處理模塊的設(shè)計(jì)
4.2 原程序見(jiàn)附錄A
4.3 小結(jié)
第5章 基于單片機(jī)數(shù)字電壓表的抗干擾設(shè)計(jì)
5.1硬件系統(tǒng)的可靠性與抗干擾設(shè)計(jì)
5.1.1 供電系統(tǒng)抗干擾措施
5.1.2 接地
5.1.3 傳輸通道的抗干擾措施
5.2 軟件系統(tǒng)的可靠性與抗干擾設(shè)計(jì)
5.3 小結(jié)
第6章 電路制作及調(diào)試
6.1 PCB板的制作
6.2 系統(tǒng)外觀
6.3電路調(diào)試
6.3.1 調(diào)試步驟
6.3.2 可能出現(xiàn)的問(wèn)題解答
6.4 系統(tǒng)調(diào)試及結(jié)果分析
6.4 小結(jié)
結(jié) 論
致 謝
參考文獻(xiàn)
附錄 基于單片機(jī)的數(shù)字電壓表設(shè)計(jì)C51原程序
第1章 緒 論1.1 課題概述1.1.1 數(shù)字電壓表的發(fā)展歷程
數(shù)字電壓表簡(jiǎn)稱DVM,它是采用數(shù)字化測(cè)量技術(shù)設(shè)計(jì)的電壓表。從性能來(lái)看:數(shù)字電壓表的發(fā)展從一九五二年美國(guó)NLS公司由四位電子管數(shù)字電壓表精度千分之一到現(xiàn)在已經(jīng)出現(xiàn)8位數(shù)字電壓表。參數(shù)可測(cè)量直流電壓、交流電壓、電流、阻抗等。測(cè)量自動(dòng)化程度不斷提高,可以和計(jì)算機(jī)配合顯示、計(jì)算結(jié)果、然后打印出來(lái)。目前世界上美國(guó)FLUKE公司,在直流和低頻交流電量的校準(zhǔn)領(lǐng)域居國(guó)際先進(jìn)水平。例如該公司生產(chǎn)的“4700A”多功能校準(zhǔn)器和“8505”危機(jī)數(shù)字多用電壓表,可用8位顯示,直流精度可達(dá)到±5/10-6,讀書(shū)分辨力為0.1μV。帶有A/D變換模式、數(shù)據(jù)輸出接口形式IEEE-488。具有比率測(cè)量軟件校準(zhǔn)和有交流電阻、電流選件。還具有高精度電壓校準(zhǔn)器“5400A”、“5200A”、“5450A”等數(shù)字儀表,都是作為一級(jí)計(jì)量站和國(guó)家級(jí)計(jì)量站使用的標(biāo)準(zhǔn)儀表。還有英國(guó)的“7055”數(shù)字電壓表采用脈沖調(diào)制技術(shù)。日本橫河公司的“2501”型采用三次采樣等等在不斷的蓬勃發(fā)展[1]。
從發(fā)展過(guò)程來(lái)看:數(shù)字電壓表自1952年問(wèn)世以來(lái),已有50年多年的發(fā)展史,大致經(jīng)歷了五代產(chǎn)品。第一代產(chǎn)品是20世紀(jì)50年代問(wèn)世的電子管數(shù)字電壓表,第二代產(chǎn)品屬于20世紀(jì)60年代出現(xiàn)的晶體管數(shù)字電壓表,第三帶產(chǎn)品為20世紀(jì)70年代研制的中、小規(guī)模集成電路的數(shù)字電壓表。今年來(lái),國(guó)內(nèi)外相繼推出有大規(guī)模集成電路(LSI)或超大規(guī)模集成電路(VLSI)構(gòu)成的數(shù)字電壓表、智能數(shù)字電壓表,分別屬于第四代、第五代產(chǎn)品。它們不僅開(kāi)創(chuàng)了電子測(cè)量的先河,更以高準(zhǔn)確度、高可靠性、高分辨力、高性價(jià)比等優(yōu)良特性而受到人民的青睞[2]。
1.1.2 國(guó)內(nèi)外的發(fā)展現(xiàn)狀與趨勢(shì)數(shù)字電壓表作為電壓表的一個(gè)分支,在近五十年間得到巨大發(fā)展,構(gòu)成數(shù)字電壓表的核心器件已從早期的中小規(guī)模電路跨入到大規(guī)模ASIC(專用集成電路)階段。數(shù)字電壓表涉及的范圍也從傳統(tǒng)的測(cè)量擴(kuò)展至自動(dòng)控制、傳感、通信等領(lǐng)域,展示了廣闊的應(yīng)用前景。
傳統(tǒng)電壓表的設(shè)計(jì)思路主要分為:用電流計(jì)和電阻構(gòu)成的電壓表;用中小規(guī)模集成電路構(gòu)成的電壓表;用大規(guī)模ASIC(專用集成電路)構(gòu)成的電壓表。這幾中電壓表設(shè)計(jì)方式各有優(yōu)勢(shì)和缺點(diǎn),分別適用于幾種特定的應(yīng)用環(huán)境,同時(shí),也為很多新穎的電壓表的設(shè)計(jì)所借鑒和依據(jù)[2]。
近入21世紀(jì),隨著信息技術(shù)一日千里的發(fā)展,電壓表也必經(jīng)歷從單一測(cè)量向數(shù)據(jù)處理、自動(dòng)控制等多功能過(guò)度的這一歷程,特別是計(jì)算機(jī)技術(shù)的發(fā)展必將
出現(xiàn)智能化技術(shù)。因此,把電壓表和計(jì)算機(jī)技術(shù)相結(jié)合的智能化電壓表就將成為21世紀(jì)的新課題。目前,數(shù)字化儀器與微處理器取得令人矚目的進(jìn)展,就其技術(shù)背景而言,一個(gè)內(nèi)藏微處理器的儀表意味著計(jì)算機(jī)技術(shù)向儀器儀表的移植,它所具有的軟件功能使儀器 呈現(xiàn)出有某種延伸,強(qiáng)化的作用。這相對(duì)于過(guò)去傳統(tǒng)的、純硬件的儀器來(lái)說(shuō)是一種新的突破,其發(fā)展?jié)摿κ志薮,這已為70年代以來(lái)儀表發(fā)展的歷史所證實(shí)。概括起來(lái),具有微處理器的儀表具有以下特點(diǎn):①測(cè)量過(guò)程的軟件控制對(duì)測(cè)量數(shù)據(jù)進(jìn)行存儲(chǔ)及運(yùn)算的數(shù)據(jù)處理功能是儀表最突出的特點(diǎn);②在儀器的測(cè)量過(guò)程中綜合了軟件控制及數(shù)據(jù)處理功能,使一機(jī)多用或儀器的多功能化易于實(shí)現(xiàn),成為這類儀器的又一特點(diǎn);③以其軟件為主體的智能儀器不僅在使用方便、功能多樣化等方面呈現(xiàn)很大的靈活性[3]。
下面從5個(gè)方面闡述新型數(shù)字儀表的發(fā)展趨向。
1.廣泛采用新技術(shù),不斷開(kāi)發(fā)新產(chǎn)品
隨著科學(xué)技術(shù)的發(fā)展,新技術(shù)的廣泛應(yīng)用,新器件的不斷出現(xiàn)。首先是A/D轉(zhuǎn)換器:20世紀(jì)90年代世界各國(guó)相繼研發(fā)了新的A/D轉(zhuǎn)換技術(shù)。例如,四斜率A/D轉(zhuǎn)換技術(shù)(美國(guó))、余數(shù)再循環(huán)技術(shù)(美國(guó))、自動(dòng)校準(zhǔn)技術(shù)(英國(guó))、固態(tài)真有效值轉(zhuǎn)換技術(shù)(英國(guó))、約瑟夫森效應(yīng)基準(zhǔn)源(2個(gè)納米穩(wěn)定度)、智能化專用芯片(80C51系列,荷蘭)等,這些新技術(shù)使數(shù)字電壓表向高準(zhǔn)確度、高可靠性及智能化、低成本方向發(fā)展。另外,集成電路的發(fā)展使電壓表只在外圍配置少量元器件,即可構(gòu)成完整的智能儀表,可以完成儲(chǔ)存、計(jì)算、比較、控制等多項(xiàng)功能[4]。
2.廣泛采用新工藝
新一代數(shù)字儀表正朝著標(biāo)準(zhǔn)模塊化的方向發(fā)展。預(yù)計(jì)在不久的將來(lái),更多的數(shù)字儀表將由標(biāo)準(zhǔn)化、通用化、系列化的模塊所構(gòu)成,給電路設(shè)計(jì)、安裝調(diào)試和維修帶來(lái)極大方便。
3.多從顯示儀表
為徹底解決數(shù)字儀表不便于觀察連續(xù)變化量的技術(shù)難題;“數(shù)字/模擬條圖”雙顯示儀表已成為國(guó)際流行款式,它兼有數(shù)字儀表準(zhǔn)確度高、模擬式儀表便于觀察被測(cè)量的變化過(guò)程及變化趨勢(shì)這兩大優(yōu)點(diǎn)。
4.提高安全性
儀器儀表在設(shè)計(jì)和使用中的安全性,對(duì)生產(chǎn)廠家和廣大用戶都至關(guān)重要。一方面廠家必須為儀表設(shè)計(jì)安全保護(hù)電路,并使之符合國(guó)家標(biāo)準(zhǔn);另一方面用戶必須安全操作,時(shí)刻注意儀表上的各種安全警告指示。
5.操作簡(jiǎn)單化
集成電路的發(fā)展使電壓表只在外圍配置少量元件,即可構(gòu)成完整的智能儀表,可以完成儲(chǔ)存、計(jì)算、比較、控制等多項(xiàng)功能。這使的按鍵變少,操作簡(jiǎn)單。但是數(shù)字電壓表并不能完全取代指針式的電壓表,在反映電壓的連續(xù)變化和變化趨勢(shì)方面不如指針表的直觀。為克服這種缺憾,20世紀(jì)90年代初,一種“數(shù)字/光柱”的雙重顯示儀表已經(jīng)出現(xiàn),并成功地應(yīng)用于生產(chǎn)實(shí)踐中[5]。
綜上所述,十幾年來(lái)智能儀器雖然有了很大的發(fā)展,但總的看來(lái),人們還是較習(xí)慣于從硬件的角度做工作,這是由于設(shè)計(jì)者的(硬件)技術(shù)背景,LSI器件不斷迅速更新的沖擊以及在現(xiàn)階段儀器硬件更新的數(shù)量還很大等因素所造成的。這種趨勢(shì)雖然仍會(huì)繼續(xù)下去,但從智能儀表的內(nèi)涵,從軟件的角度上看,軟件的作用還遠(yuǎn)未發(fā)揮出來(lái),這里有許多的領(lǐng)域等待著去開(kāi)發(fā)。智能儀表最終必然會(huì)與人工智能聯(lián)系起來(lái)開(kāi)創(chuàng)出全新的儀器。從這個(gè)觀點(diǎn)看,目前的智能儀器尚處于“幼年時(shí)期”。所以,就儀表的發(fā)展看來(lái)電壓表會(huì)朝著具有微控制處理單元的智能儀表方向發(fā)展。
1.2 課題的意義和目的數(shù)字電壓表是諸多數(shù)字化儀表的核心與基礎(chǔ)。以數(shù)字電壓表為核心,可以擴(kuò)展成各種通用數(shù)字儀表、專用數(shù)字儀表及各種非電量的數(shù)字化儀表(如:溫度計(jì),濕度計(jì),酸度計(jì),重量,厚度儀等),幾乎覆蓋了電子電工測(cè)量,工業(yè)測(cè)量,自動(dòng)化儀表等各個(gè)領(lǐng)域。除此之外,數(shù)字電壓還有著傳統(tǒng)指針電壓表無(wú)可比擬的優(yōu)點(diǎn):讀數(shù)直觀、準(zhǔn)確,顯示范圍寬、分辨力高,轉(zhuǎn)入阻抗高,功耗小、抗干擾強(qiáng)等[3]。因此 對(duì)數(shù)字電壓表作全面深入的了解是很有必要的。但是傳統(tǒng)的數(shù)字電壓表設(shè)計(jì)通常以大規(guī)模ASIC(專用集成電路)為核心器件,并輔以少量中規(guī)模集成電路及顯示器件構(gòu)成,可是這種設(shè)計(jì)方法靈活性差,系統(tǒng)功能固定,難以更新擴(kuò)展,不能滿足日益發(fā)展的電子工業(yè)要求[6]。而應(yīng)用微處理器(單片機(jī))為核心單元的數(shù)字電壓表,其靈活性高、系統(tǒng)功能擴(kuò)展簡(jiǎn)單,性能穩(wěn)定可靠。在這些背景下,設(shè)計(jì)一種以單片機(jī)為基礎(chǔ)、結(jié)構(gòu)簡(jiǎn)單、工作可靠、靈活性好的數(shù)字電壓表是很有意義的。
1.3 本文所作的主要工作1.對(duì)系統(tǒng)總體框架進(jìn)行分析,根據(jù)系統(tǒng)所要實(shí)現(xiàn)的目標(biāo),設(shè)計(jì)基于單片機(jī)的數(shù)字電壓表的硬件系統(tǒng),以模塊設(shè)計(jì)法為依據(jù)進(jìn)行系統(tǒng)各個(gè)部分的具體設(shè)計(jì)。
2.設(shè)計(jì)基于單片機(jī)的數(shù)字控制系統(tǒng),發(fā)揮單片機(jī)的處理功能強(qiáng)大,運(yùn)算速度快的特點(diǎn),對(duì)被測(cè)電壓進(jìn)行實(shí)時(shí)檢測(cè)和顯示。
3.制作印刷電路板,使硬件電路的設(shè)計(jì)更加清晰,同時(shí)使系統(tǒng)的抗干擾能力進(jìn)一不加強(qiáng)。
4.針對(duì)系統(tǒng)的總體框架和硬件設(shè)計(jì)的特點(diǎn),設(shè)計(jì)相應(yīng)的軟件系統(tǒng),更合理
的去完成系統(tǒng)測(cè)電壓的目的。
5.對(duì)系統(tǒng)進(jìn)行整機(jī)調(diào)試,使得基于單片機(jī)的數(shù)字電壓表的實(shí)驗(yàn)結(jié)果盡可能的滿足設(shè)計(jì)指標(biāo)。
第2章 基于單片機(jī)數(shù)字電壓表的總體設(shè)計(jì)2.1 設(shè)計(jì)指標(biāo)在日常維修、教學(xué)和科研中,電壓表是不可缺少的,傳統(tǒng)的數(shù)字電壓表設(shè)計(jì)通常以大規(guī)模ASIC(專用集成電路)為核心器件,并輔以少量中規(guī)模集成電路及顯示器件構(gòu)成,但是這種設(shè)計(jì)方法靈活性差,系統(tǒng)功能固定,難以更新擴(kuò)展,不能滿足日益發(fā)展的電子工業(yè)要求。而應(yīng)用微處理器(單片機(jī))為核心單元,其靈活性高、系統(tǒng)功能擴(kuò)展簡(jiǎn)單,性能穩(wěn)定可靠。本課題目的就是以單片機(jī)為基礎(chǔ)設(shè)計(jì)出一種結(jié)構(gòu)簡(jiǎn)單、工作可靠、靈活性好的直流數(shù)字電壓表。要求數(shù)字電壓表精度為±0.05V,測(cè)量范圍為0~5V。
2.2 系統(tǒng)概述本課題所設(shè)計(jì)的數(shù)字電壓表主要包括兩部分:硬件電路及軟件程序。而硬件電路采用ATMEL公司的AT89C51作為主處理器,系統(tǒng)主要由信號(hào)采集、A/D轉(zhuǎn)換、數(shù)據(jù)處理輸出、驅(qū)動(dòng)顯示等幾個(gè)功能模塊組成。各部分電路的設(shè)計(jì)及原理將會(huì)在硬件電路設(shè)計(jì)部分詳細(xì)介紹;程序的設(shè)計(jì)使用C語(yǔ)言編程,利用Keil 軟件對(duì)其編譯和仿真,詳細(xì)的設(shè)計(jì)算法將會(huì)在程序設(shè)計(jì)部分詳細(xì)介紹。
系統(tǒng)框圖(圖2.1)如下:
圖2-1 硬件原理框圖
被測(cè)直流電壓由A/D轉(zhuǎn)換單元采集后被量化,再由單片機(jī)對(duì)A/D轉(zhuǎn)換的結(jié)果進(jìn)行標(biāo)度變換,得到被測(cè)電壓的數(shù)值,通過(guò)單片機(jī)對(duì)數(shù)次轉(zhuǎn)換結(jié)果求平均值、并通過(guò)SOI串行數(shù)據(jù)接口把所求平均值輸出給顯示驅(qū)動(dòng)單元,由該單元完成譯碼,并驅(qū)動(dòng)數(shù)碼管顯示。
2.2.1 硬件電路圖及工作過(guò)程簡(jiǎn)介電壓表的數(shù)字化是將連續(xù)模擬的電壓量經(jīng)A/D轉(zhuǎn)化后變?yōu)椴贿B續(xù)的離散的數(shù)字量并加以顯示[7]。在設(shè)計(jì)過(guò)程中采用分模塊設(shè)計(jì),按照?qǐng)D2.1把電路分A/D轉(zhuǎn)換、數(shù)據(jù)處理輸出、驅(qū)動(dòng)、顯示四個(gè)單元,分別設(shè)計(jì)。
A/D轉(zhuǎn)換器選用的是八位模/數(shù)轉(zhuǎn)換器ADC0809。其次,計(jì)算機(jī)中的數(shù)字都是十六進(jìn)制數(shù),而我們習(xí)慣于十進(jìn)制數(shù)的讀寫(xiě),因此,在軟件設(shè)計(jì)中則要把十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)。在顯示的時(shí)候也是如此。本裝置的輸出用四位LED顯示,因此在軟件設(shè)計(jì)中還要解決數(shù)字輸出與LED的接口問(wèn)題。硬件則需要將輸出線接到八段數(shù)碼管上[8]。
數(shù)值顯示采用八段數(shù)碼管,由單片機(jī)以動(dòng)態(tài)掃描方式驅(qū)動(dòng),在此方式下能保證足夠的亮度和較長(zhǎng)的使用壽命。
由電路原理圖2.2可以看出ADC0809通過(guò)IN0采集電壓信號(hào)并送給單片機(jī),單片機(jī)將采集來(lái)的信號(hào)進(jìn)行一定的處理然后通過(guò)串口擴(kuò)展的共陰極LED數(shù)碼管顯示采集的電壓值。
數(shù)碼管顯示是采用動(dòng)態(tài)顯示的原理,要顯示的數(shù)碼通過(guò)單片機(jī)的串口發(fā)送然后通過(guò)ZLG7289轉(zhuǎn)換為并行信號(hào)分別加到四個(gè)數(shù)碼管的SA—DP,而四個(gè)數(shù)碼管的公共端分別接ZLG7289的DIG0-DIG3接口,因此要使哪個(gè)數(shù)碼管顯示就把相應(yīng)
的公共端口置零即可。比如:數(shù)字“1”的字型碼通過(guò)串口發(fā)送出來(lái)并經(jīng)過(guò)ZLG7289譯碼加到了四個(gè)數(shù)碼管上,如果其中一個(gè)引腳為“0”那么對(duì)應(yīng)的數(shù)碼管顯示數(shù)字“1”。在此電路中電壓值的三個(gè)數(shù)字分別通過(guò)串口依次的送出,對(duì)應(yīng)的公共端也依次被置“0”,由于兩次置“0”的時(shí)間間隔很短,由于人的視覺(jué)暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位顯示器并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感。因此給人的感覺(jué)就是三個(gè)數(shù)碼管同時(shí)的顯示出電壓值四個(gè)數(shù)字[5]。
數(shù)字電壓表電路圖如圖2.2所示:
圖2-2 電路原理圖
ADC0809的REF(-)接地,REF(+)接電源+5V,因此采集電壓的范圍是0~5V,A/D轉(zhuǎn)換輸出的結(jié)果D0~D7為8位二進(jìn)制數(shù)。轉(zhuǎn)換輸出的結(jié)果在0~255之間分別對(duì)應(yīng)著0~+5V之間的256個(gè)電壓值,因此單片機(jī)必須把A/D轉(zhuǎn)換輸出的結(jié)果轉(zhuǎn)換成可以顯示的電壓值,具體的方法是:
(2.1)
由上公式可知:當(dāng)ADC0809輸出為(11111111)B時(shí),輸入電壓值VIN=5.00V;當(dāng)ADC0809輸出為(00000000)B時(shí),輸入電壓值VIN=0.00V;當(dāng)ADC0809輸出為(10000000)B時(shí),輸入電壓值VIN=2.50V,但是單片機(jī)在進(jìn)行數(shù)學(xué)運(yùn)算時(shí)結(jié)果只讀取整數(shù)部分,因此當(dāng)輸出為(10000000)B時(shí)計(jì)算得來(lái)的電壓值VIN=2.00V。由此可以看出這樣運(yùn)算的輸出結(jié)果很不準(zhǔn)確,在0~+5V之間只有0,1,2,3,4,5六個(gè)電壓值,所以必須把單片機(jī)運(yùn)算結(jié)果中的小數(shù)部分保留下來(lái)[8]。具體方法是:如果保留小數(shù)點(diǎn)后兩位,在運(yùn)算的時(shí)候分子乘以100,保留三位就乘以1000。小數(shù)點(diǎn)后保留兩位的公式如下:
(2.2)
由新公式可知當(dāng)ADC0809輸出位(10000000)B時(shí),單片機(jī)運(yùn)算結(jié)果為2500。然后單片機(jī)將250除以10得到商為250,余數(shù)為0,再將250除以10得到商為25,余數(shù)為0,再將25除以10得到商為2,余數(shù)為5。這樣就可以得到電壓值的四個(gè)數(shù)字,最后分別將2、5、0、0四個(gè)數(shù)通過(guò)串口送出,顯示在四個(gè)數(shù)碼管上,并且把第一個(gè)數(shù)碼管的dp腳(即小數(shù)點(diǎn))直接接地使其一直發(fā)亮,那么數(shù)碼管上就可以顯示輸入的電壓值“2.500”[5]。
2.2.2 軟件程序設(shè)計(jì)簡(jiǎn)介開(kāi)機(jī)后首先初始化,使數(shù)碼管顯示為“0.000”然后調(diào)用A/D轉(zhuǎn)換子程序啟動(dòng)AD轉(zhuǎn)換器,單片機(jī)等待查詢轉(zhuǎn)換結(jié)束信號(hào),如果有信號(hào)則通過(guò)并行口讀取轉(zhuǎn)換數(shù)據(jù)并存儲(chǔ),就這樣連著讀取五次數(shù)據(jù)后求平均值,再按上面的方法通過(guò)串行口把數(shù)據(jù)傳輸出,經(jīng)譯碼在數(shù)碼管顯示。具體方法和程序見(jiàn)程序設(shè)計(jì)部分和附錄。
2.3 小結(jié) 在電路設(shè)計(jì)和軟件設(shè)計(jì)中都采用了分模塊設(shè)計(jì),這種設(shè)計(jì)方法清晰的電路的功能,為設(shè)計(jì)和以后的調(diào)試和維修帶來(lái)了極大的方便。特別是在軟件設(shè)計(jì)中,這中方法曾強(qiáng)了程序的可移植性,為以后的功能擴(kuò)展奠定了基礎(chǔ)。
第3章 基于單片機(jī)數(shù)字電壓表的硬件設(shè)計(jì)3.1 器件的選擇模數(shù)轉(zhuǎn)換器選用ADC0809
單片機(jī)用AT89C51
顯示驅(qū)動(dòng)用ZLG7289
數(shù)碼管用四位共陰級(jí)LED(SM420364)
退耦電容100nf無(wú)極性電容和100μf的電解電容
位電容用10μf的電解電容
零歐電阻 限流電阻
共陰極八段數(shù)碼管sm420364
3.2 A/D轉(zhuǎn)換電路3.2.1 A/D轉(zhuǎn)換芯片的選擇A/D轉(zhuǎn)換器是模擬量輸入通道中的一個(gè)環(huán)節(jié),單片機(jī)通過(guò)A/D轉(zhuǎn)換器把輸入模擬量變成數(shù)字量再處理。
隨著大規(guī)模集成電路的發(fā)展,目前不同廠家已經(jīng)生產(chǎn)出了多種型號(hào)的A/D轉(zhuǎn)換器,以滿足不同應(yīng)用場(chǎng)合的需要。如果按照轉(zhuǎn)換原理劃分,主要有3種類型,即雙積分式A/D轉(zhuǎn)換器、逐次逼近式A/D轉(zhuǎn)換器和并行式A/D轉(zhuǎn)換器。目前最常用的是雙積分和逐次逼近式。
雙積分式A/D轉(zhuǎn)換器具有抗干擾能力強(qiáng)、轉(zhuǎn)換精度高、價(jià)格便宜等優(yōu)點(diǎn),比如ICL71XX系列等,它們通常帶有自動(dòng)較零、七段碼輸出等功能。與雙積分相比,逐次逼近式A/D轉(zhuǎn)換的轉(zhuǎn)換速度更快,而且精度更高,比如ADC0808、ADC0809等,它們通常具有8路模擬選通開(kāi)關(guān)及地址譯碼、鎖存電路等,它們可以與單片機(jī)系統(tǒng)連接,將數(shù)字量送單片機(jī)進(jìn)行分析和顯示[9]。
本設(shè)計(jì)中,要求精度小于0.5%,則選用分辨率為8位的芯片,如ADC0809,ADC0801,ADC0808就能滿足設(shè)計(jì)要求。本電路采用ADC0809。
3.2.2 ADC0809轉(zhuǎn)換原理介紹ADC是一種基本的外圍擴(kuò)展器件,其種類很多,工作原理也不僅相同,比較有代表性的是:?jiǎn)畏e分型,雙積分型,脈寬調(diào)制型和逐次比較型(逐次逼近型)。從產(chǎn)品性價(jià)比、轉(zhuǎn)換速度和精度等方面綜合分析,逐次比較型ADC是相對(duì)應(yīng)用比較廣的類型之一。所以有著廣泛的應(yīng)用[10]。
黑龍江職業(yè)學(xué)院畢業(yè)論文(設(shè)計(jì)) 逐次逼近型ADC實(shí)際采用的方法上從高到底開(kāi)始逐位設(shè)定,比較模擬量輸出,再來(lái)確定原設(shè)定位的正確與否。逐次比較型ADC原理結(jié)構(gòu)如圖2.3所示。其主要由采集保持電路、電壓比較器、逐次比較寄存器、數(shù)/模轉(zhuǎn)換器ADC和鎖存器等部分組成。
其工作原理如下:
首先,被測(cè)模擬電壓ui通過(guò)逐次比較寄存器,將傳遞進(jìn)的脈沖CP信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),該數(shù)字量再經(jīng)過(guò)數(shù)/模轉(zhuǎn)換器生成對(duì)應(yīng)的模擬量Us。當(dāng)獲得模擬量Us的數(shù)值達(dá)到并接近被測(cè)電壓所對(duì)應(yīng)ui后,就可以檢測(cè)出電壓比較器完成最后的反轉(zhuǎn)。此時(shí),逐次比較積存器的計(jì)數(shù)值就是被測(cè)電壓ui所對(duì)應(yīng)的數(shù)字量,從而完成模擬量的轉(zhuǎn)換。以上的分析表明,逐次比較的模/數(shù)轉(zhuǎn)換方法,歸根到底是數(shù)/模轉(zhuǎn)換,采用逐次與模擬量進(jìn)行比較后得到最終的數(shù)字標(biāo)定值[11]。
3.2.3 ADC0809芯片介紹ADC0809是一種8位逐次逼近型A/D轉(zhuǎn)換器。帶8個(gè)模擬量輸入通道,芯片內(nèi)有通道地址譯碼鎖存器,有輸出三態(tài)數(shù)據(jù)鎖存器,啟動(dòng)信號(hào)為脈沖啟動(dòng)方式,每個(gè)通道的轉(zhuǎn)換時(shí)間大約為100μs,可以和單片機(jī)直接接口[9]。
ADC0809的引腳圖和內(nèi)部邏輯結(jié)構(gòu)如圖2.4所示。
圖3-2 圖 3-3
由圖1(b)可知,ADC0809由一個(gè)8路模擬開(kāi)關(guān),一個(gè)地址鎖存與譯碼器、一個(gè)8位A/D轉(zhuǎn)換器和一個(gè)三態(tài)輸出鎖存器組成。多路開(kāi)關(guān)可選通8個(gè)模擬通道IN0—IN7,允許8路模擬分量輸入,共用A/D轉(zhuǎn)換器 進(jìn)行轉(zhuǎn)換。三態(tài)輸出鎖存器用于鎖存A/D轉(zhuǎn)換完的數(shù)字量,當(dāng)OE端為高電平時(shí),才可以從三態(tài)輸出鎖存器取走轉(zhuǎn)換完的數(shù)據(jù)。
IN0—IN7:8條模擬量輸入通道。ADC0809對(duì)輸入模擬量的要求是信號(hào)單極性,電壓范圍是0—5V,若信號(hào)太小,必須進(jìn)行放大:輸入的模擬量在轉(zhuǎn)換過(guò)程中應(yīng)保持不變,如若模擬信號(hào)變化太快,則需在輸入前增加采樣保持電路。
地址輸入和控制線:4條,ALE為地址鎖存允許輸入線,高電平有效。當(dāng)ALE線為高電平時(shí),地址鎖存與譯碼器將A,B,C三條地址線的地址信號(hào)進(jìn)行鎖存,經(jīng)譯碼后被選中的通道的模擬量進(jìn)轉(zhuǎn)化器進(jìn)行轉(zhuǎn)換。A,B,C為地址輸入線,用于選通IN0—IN7上的一路模擬量輸入。通道選擇如表2.1所示。
數(shù)字量輸出及控制線: 11條。START為上跳沿時(shí),所有內(nèi)部寄存器清零;下跳沿時(shí),開(kāi)始進(jìn)行A/D轉(zhuǎn)換:在轉(zhuǎn)換期間,START應(yīng)保持底電平。EOC為轉(zhuǎn)換結(jié)束信號(hào)。當(dāng)EOC為高電平時(shí),表明轉(zhuǎn)換結(jié)束:否則,表明正在進(jìn)行A/D轉(zhuǎn)換。OE為輸出允許信號(hào),用于控制三條輸出鎖存器向單片機(jī)輸出轉(zhuǎn)換得到的數(shù)據(jù)。OE=1,輸出轉(zhuǎn)換得到的數(shù)據(jù)。OE=0,輸出數(shù)據(jù)線呈高阻狀態(tài)。D7—D0為數(shù)字量輸出線。
CLK為時(shí)鐘輸入信號(hào)線。由于ADC0809的內(nèi)部沒(méi)有時(shí)鐘電路,所需時(shí)鐘信號(hào)必須由外界提供,通常使用頻率為500KHz,最大不能超過(guò)1280KHz[11]。
VREF(+),VREF(-)為參考電壓輸入,決定了輸入模擬量的范圍。一般情況VREF(-)接地,VREF(+)接+5V電源。
3.2.4 ADC0809與單片機(jī)的接口方法 電路原理圖2.2可以看出ADC0809的數(shù)據(jù)D0—D7直接與單片機(jī)的總線P0相連。模擬輸入通道地址A、B、C直接接地,因此ADC0809只對(duì)通道IN0輸入的電壓進(jìn)行模數(shù)轉(zhuǎn)換,其他通道直接接地(接地的目的主要是為了減少輸入噪聲,一般情況對(duì)于模數(shù)轉(zhuǎn)換芯片中沒(méi)用到的模擬輸入端都這樣處理)。時(shí)鐘CLK由單片機(jī)的ALE取得,對(duì)于晶振為12MHz的單片機(jī)ALE輸出為2MHz的方波,但前面提到ADC0809的時(shí)鐘頻率一般為500KHz,最大能超過(guò)1280KHz,但在實(shí)際應(yīng)用中2MHz的信號(hào)也可以使ADC0809正常工作。START、ALE和OE分別由單片機(jī)的WR、RD和P2.7經(jīng)或非門(mén)接入、這樣主要是滿足ADC0809的信號(hào)電平與時(shí)序的要求。按此圖中的片選接法。ADC0809通道—IN0的地址為7FFFH。
由于EOC未接入單片機(jī),故只能采用延時(shí)等待的方法來(lái)讀取A/D轉(zhuǎn)換的結(jié)果(即當(dāng)單片機(jī)啟動(dòng)ADC0809后延時(shí)一段時(shí)間再主動(dòng)去讀ADC0809的轉(zhuǎn)換結(jié)果)。但是如果單片機(jī)在進(jìn)行A/D轉(zhuǎn)換時(shí)還要執(zhí)行其他的程序可以將EOC接在單片機(jī)的中斷上,這樣當(dāng)A/D轉(zhuǎn)換完后EOC可以對(duì)單片機(jī)產(chǎn)生中斷使其讀取A/D轉(zhuǎn)換的結(jié)果,這樣做單片機(jī)的使用效率更高。
3.3 單片機(jī)介紹3.3.1 單片機(jī)介紹單片微型計(jì)算機(jī)簡(jiǎn)稱單片機(jī),又稱微型控制或嵌入式控制器,是將計(jì)算機(jī)的基本部件微型化,使之集成在一塊芯片上的微機(jī)。單片機(jī)有著體積小,功耗低,功能強(qiáng),性能價(jià)格比高、易于推廣應(yīng)用等顯著優(yōu)點(diǎn),在自動(dòng)化裝置、智能化儀器儀表、過(guò)程控制和家用電器等領(lǐng)域得到日益廣泛的應(yīng)用。
3.3.2 采用AT89C51的原因在眾多的51系列單片機(jī)中,要算 ATMEL 公司的AT89C51更實(shí)用,它是由北京集成電路設(shè)計(jì)中心在MSC-51單片機(jī)的基礎(chǔ)上精心設(shè)計(jì),由美國(guó)生產(chǎn)的至今為止世界上最新型的高性能八位單片機(jī)。它不但和8051指令、管腳完全兼容,而且其片內(nèi)的4K程序存儲(chǔ)器是FLASH工藝的,這種工藝的存儲(chǔ)器用戶可以用電的方式瞬間擦除、改寫(xiě),一般專為 ATMEL AT89Cx 做的編程器均帶有這些功能。顯而易見(jiàn),這種單片機(jī)對(duì)開(kāi)發(fā)設(shè)備的要求很低,開(kāi)發(fā)時(shí)間也大大縮短[12]。
3.3.3 AT89C51芯片主要性能參數(shù)與MCS—51產(chǎn)品指令系統(tǒng)完全兼容
4K字節(jié)的可重擦寫(xiě)Flash閃速存儲(chǔ)器
1000次擦寫(xiě)周期
全靜態(tài)操作:0Hz–24Hz
三級(jí)加密程序存儲(chǔ)器
128×8字節(jié)內(nèi)部RAM
32個(gè)可編程I/O口線
2個(gè)16位定時(shí)/記數(shù)器
6個(gè)中斷源
可編程串行UART通道
底功耗空閑和掉電模式 圖3-4 AT89C51管腳分
3.3.4 功能介紹AT89C51是一種低損耗、高性能、CMOS八位微處理器,片內(nèi)有4K字節(jié)的在線可重復(fù)編程快擦快寫(xiě)存儲(chǔ)器,能重復(fù)寫(xiě)入/擦除1000次,數(shù)據(jù)保存時(shí)間為十年。它與MCS-51系列單片機(jī)在指令系統(tǒng)和引腳上完全兼容,不僅可完全代替MCS-51系列單片機(jī),而且能使系統(tǒng)具有許多MCS-51單片機(jī),而且能使系統(tǒng)具有許多MCS-51系列產(chǎn)品沒(méi)有的功能。AT89C51可構(gòu)成真正的單片機(jī)最小應(yīng)用系統(tǒng),縮小系統(tǒng)體積,增加系統(tǒng)的可靠性,降低了系統(tǒng)成本。只要程序長(zhǎng)度小于4K,四個(gè)I/O口全部提供給用戶?捎5V電壓編程,而且擦寫(xiě)時(shí)間僅需10毫秒,僅為8751/87C51的擦除時(shí)間的百分之一,與8751/87C51的12V電壓擦寫(xiě)相比,不易損壞器件,沒(méi)有兩種電源的要求,改寫(xiě)時(shí)不拔下芯片,適合許多嵌入式控制領(lǐng)域。工作電壓范圍寬2.7V-6V,全靜態(tài)工作,工作頻率寬,在0M Hz-24M Hz內(nèi),比8751/87C51等51系列的6MHz-12 MHz更具有靈活性,系統(tǒng)能快能慢。AT89C51芯片提供三級(jí)程序存儲(chǔ)器加密,提供了方便靈活而可靠的硬加密手段,能完全保證程序或系統(tǒng)不被仿制[13]。
另外,AT89C51還具有MCS-51系列單片機(jī)的所有優(yōu)點(diǎn)。128×8位內(nèi)部RAM,32位雙向輸入輸出線,兩個(gè)十六位定時(shí)/計(jì)數(shù)器,5個(gè)中斷源,兩級(jí)中斷優(yōu)先級(jí),一個(gè)全雙工異步串行口及時(shí)鐘發(fā)生器等。
3.3.5 芯片管腳介紹及分配引腳描述:
VCC:電源
GND:電源地
P0口:P0口是一組8位漏極開(kāi)路雙向I/O口,也既地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng)8個(gè)TTL邏輯門(mén)電路,對(duì)端口寫(xiě)“1”可作為高阻抗輸入端用。
在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器話程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(底8位)和數(shù)據(jù)總線服用,在訪問(wèn)期間激活內(nèi)部上拉電阻。
在Flash編程時(shí),P0口接受指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻。
P1口:P1口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門(mén)電路。對(duì)端口 寫(xiě)“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可操作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉底時(shí)會(huì)輸出一個(gè)電流(IIL)。
Flash編程和程序校驗(yàn)期間,P1接收底8位地址。
P2口:P2口是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門(mén)電路。對(duì)斷口寫(xiě)“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉底時(shí)會(huì)輸出一個(gè)電流(IIL)。
在訪問(wèn)外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVE @DPTR)時(shí),P2口送出高8位地址數(shù)據(jù)。在訪問(wèn)8位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行MOVE @RI指令)時(shí),P2口線上的內(nèi)容[也即特殊功能存儲(chǔ)器(SFR)區(qū)中R2寄存器的內(nèi)容],在整個(gè)訪問(wèn)期間不改變。
在Flash編程或校驗(yàn)時(shí),P2亦接收高位地址和其他控制信號(hào)。
P3口:P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門(mén)電路。對(duì)P3口寫(xiě)入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。作輸入端時(shí),被外部拉底的P3口將用上拉電阻輸出電流(IIL)。
P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如下表2.2所示:
表 3-5 P3口第二功能表
| |
| |
| |
| |
| |
| |
| |
| WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通) |
| RD(外部數(shù)據(jù)存儲(chǔ)器讀選通) |
P3口還接受一些用于Flash閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。
RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),RET引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。
ALE/PROG:當(dāng)訪問(wèn)外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的底8位字節(jié)。即使不訪問(wèn)外部存儲(chǔ)器,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的正脈沖信號(hào),因此它可對(duì)外部輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過(guò)一個(gè)ALE脈沖。
對(duì)Flash存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。
如有必要,可通過(guò)對(duì)特殊功能寄存器(SFR)區(qū)中的8EH的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVE和MOVX指令A(yù)LE才會(huì)被激活,此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE無(wú)效。
PSEN:程序存貯允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89C51由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,既輸出兩個(gè)脈沖。在此期間,當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器,這兩次有效的PSEN信號(hào)不出現(xiàn)。
EA/VPP:外部訪問(wèn)允許。欲使CPU僅訪問(wèn)外部程序存儲(chǔ)器(地址為0000H—FFFFH),EA端必須保持底電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。
如EA端為高電平(接VCC端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。
Flash存儲(chǔ)器編程時(shí),該腳加上+12V的編程允許電源VPP,當(dāng)然這必須是該器件是使用12V編程電壓VPP。
XTAL1:振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。
XTAL2:振蕩器反相放大器的輸出端。
3.4 顯示驅(qū)動(dòng)單元設(shè)計(jì)3.4.1 ZLG7289芯片介紹
ZLG7289是廣州周立功單片機(jī)發(fā)展有線公司自行設(shè)計(jì)的數(shù)碼管顯示驅(qū)動(dòng)及鍵盤(pán)掃描管理芯片,可直接驅(qū)動(dòng)8位共陰式數(shù)碼管(或64只獨(dú)立LED),同時(shí)還可以掃描管理多達(dá)64只按鍵。
ZLG7289內(nèi)部含有顯示譯碼器,可直接接受BCD碼或16進(jìn)制碼,并同時(shí)具有2種譯碼方式。此外,還具有多種控制指令,如消隱、閃爍、左移、右移、段尋址等。ZLG7289采用SPI串行總線與微控制器接口,僅占用少數(shù)幾根I/O口線。利用片選信號(hào),多片 ZLG7289還可以并接在一起使用,能夠方便地實(shí)現(xiàn)多于8位的顯示或多于64只按鍵的應(yīng)用。
3.4.2 ZLG7289的主要特征很寬的工作電壓范圍:+2.7-6V;
直接驅(qū)動(dòng)8位共陰式數(shù)碼管(1英寸以下)或64只獨(dú)立的LED;
段電流可達(dá)15mA以上,字電流可達(dá)100mA;
利用功率電路可以方便地驅(qū)動(dòng)1英寸以上的大型數(shù)碼管;
具有左移、右移、閃爍、消隱、段點(diǎn)亮等強(qiáng)大功能;
要顯示的數(shù)據(jù)提供有兩種不同的譯碼方式(也可以選擇不譯碼);
不接數(shù)碼管而僅使用鍵盤(pán)管理功能時(shí),工作電流可將至3mA;
與微控制器之間采用SPI串行總線接口,操作方便,占用I/O資源少;
工作溫度范圍:-40~+85℃;
封裝:DIP-28。
3.4.3 ZLG7289引腳功能說(shuō)明表3-6 ZLG7289引腳功能表
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | SPI總線時(shí)鐘輸入信號(hào),上升沿有效 |
| | SPI總線數(shù)據(jù)信號(hào),雙向 |
| | 鍵盤(pán)中斷請(qǐng)求信號(hào),低電平(下將沿)有效 |
| | 數(shù)碼管g段/鍵盤(pán)行信號(hào)0 |
| | 數(shù)碼管f段/鍵盤(pán)行信號(hào)1 |
| | 數(shù)碼管e段/鍵盤(pán)行信號(hào)2 |
| | 數(shù)碼管d段/鍵盤(pán)行信號(hào)3 |
| | 數(shù)碼管c段/鍵盤(pán)行信號(hào)4 |
| | 數(shù)碼管b段/鍵盤(pán)行信號(hào)5 |
| | 數(shù)碼管a段/鍵盤(pán)行信號(hào)6 |
| | 數(shù)碼管dp段/鍵盤(pán)列信號(hào)7 |
| | 數(shù)碼管字選信號(hào)0鍵盤(pán)列信號(hào)0 |
| | 數(shù)碼管字選信號(hào)1/鍵盤(pán)列信號(hào)1 |
| | 數(shù)碼管字選信號(hào)2/鍵盤(pán)列信號(hào)2 |
| | 數(shù)碼管字選信號(hào)3/鍵盤(pán)列信號(hào)3 |
| | 數(shù)碼管字選信號(hào)4/鍵盤(pán)列信號(hào)4 |
| | 數(shù)碼管字選信號(hào)5/鍵盤(pán)列信號(hào)5 |
| | 數(shù)碼管字選信號(hào)6/鍵盤(pán)列信號(hào)6 |
| | 數(shù)碼管字選信號(hào)7/鍵盤(pán)列信號(hào)7 |
| | |
| | |
| | |
3.4.4 ZLG7289與單片機(jī)及數(shù)碼管的連接U1就是ZLG7289。為了使電源更加穩(wěn)定,在Vcc到GND之間接入47-470μF的電解電容。J1是ZLG7289與微處理器的接口。晶振Y1取4-16MHz,調(diào)節(jié)電容
C3和C4通常在10pF左右。復(fù)位信號(hào)是低電平有效,一般只需外接簡(jiǎn)單的RC
圖3-7 只使用數(shù)碼管的應(yīng)用電路
復(fù)位電路,也可以通過(guò)直接拉低
引腳的方法進(jìn)行復(fù)位。
數(shù)碼管必須是共陰式的,不能直接使用共陽(yáng)式的。DPY1和DPY2是4位聯(lián)體式數(shù)碼管,共同組成完整的8位。數(shù)碼管在工作時(shí)要消耗較大的電流,R9-R16是限流電阻,典型值是270Ω。如果要曾大數(shù)碼管的亮度,可以適當(dāng)減小電阻值,最低200Ω[13]。
ZLG7289通常應(yīng)連接共陰式數(shù)碼管,應(yīng)用中無(wú)須用到的數(shù)碼管可以不接,省去數(shù)碼管不影響使用。ZLG7289與單片機(jī)的接口采用3線制I2C串行總線,由、CLK和DIO這3根信號(hào)組成。和CLK是輸入信號(hào),由單片機(jī)提供。DIO信號(hào)是雙向的,必須接到單片機(jī)上具有雙向功能的I/O上。設(shè)計(jì)中使ZLG7289的6-9腳分別于AT89C51的P1.0-P1.3相連。其中6腳為片選輸入端CS,低電平有效,可用來(lái)向芯片發(fā)送數(shù)據(jù),7腳CLK為同步時(shí)鐘輸入端,當(dāng)向芯片發(fā)送數(shù)據(jù)時(shí),此引腳上的電平上生表示數(shù)據(jù)有效;8腳為串行數(shù)據(jù)輸入/輸出端,當(dāng)芯片接受指令時(shí),此引腳為輸入端。SPI信號(hào)線的具體意義參見(jiàn)表2.4。操作SPI總線的時(shí)序圖參見(jiàn)圖2-7、2-8。
表3-8 ZLG7289的SPI串行接口信號(hào)
| | |
| | |
| | SPI總線時(shí)鐘輸入信號(hào),上升沿有效 |
| | SPI總線數(shù)據(jù)信號(hào),雙向 |
圖3-9 存指令時(shí)序圖(單字節(jié)命令)
圖3-10 帶數(shù)據(jù)指令時(shí)序圖(命令字在前,輸入數(shù)據(jù)在后)
3.4.5 時(shí)序圖中的各項(xiàng)延遲時(shí)間 表中2-5各項(xiàng)參數(shù)的測(cè)試條件為:VCC=5.0V,F(xiàn)osc=16MHz
表 3-11 時(shí)序延時(shí)表
| | | | |
| | | | |
| | | | |
| | | | |
| 命令字與輸出數(shù)據(jù)之間的時(shí)間間隔 | | | |
3.4.6 控制指令ZLG7289的控制指令分為單字節(jié)純指令和雙字節(jié)數(shù)據(jù)指令兩大類。在這里直介紹設(shè)計(jì)中所用的單字節(jié)復(fù)位(清除)指令和雙字節(jié)帶數(shù)據(jù)指令中的下載數(shù)據(jù)并按方式1進(jìn)行譯碼指令[13]。
復(fù)位(清除)指令
這是一條軟復(fù)位指令,執(zhí)行后會(huì)將數(shù)碼管所有的顯示內(nèi)容清楚掉,原先設(shè)置的所有閃爍、消隱等屬性也一并清除,就像硬件復(fù)位一樣。
下載數(shù)據(jù)并按方式1進(jìn)行譯碼
在指令格式中,高5位的11001是指令字節(jié)段;a2a1a0是數(shù)碼管顯示數(shù)據(jù)的位地址,位地址編號(hào)從左到右的順序依次位0、1、2、3、4、5、6、7;dp控制小數(shù)點(diǎn)是否顯示,dp=1時(shí)該位的小數(shù)點(diǎn)被點(diǎn)亮,dp=0時(shí)該位的小數(shù)點(diǎn)被熄滅;xxx是無(wú)關(guān)位;d3d2d1d0是要顯示的數(shù)據(jù)。顯示數(shù)據(jù)按照下表中的規(guī)則進(jìn)行譯碼:
表3-12 下載數(shù)據(jù)命令譯碼方式1
3.5 SPI接口技術(shù)3.5.1 SPI總線簡(jiǎn)介SPI,是英語(yǔ)Serial Peripheral Interface的縮寫(xiě),顧名思義就是串行外圍設(shè)備接口。SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時(shí)為PCB的布局上節(jié)省空間,提供方便,正是出于這種簡(jiǎn)單易用的特性,現(xiàn)在越來(lái)越多的芯片集成了這種通信協(xié)議[14]。
3.5.2 SPI總線的基本結(jié)構(gòu)SPI是一個(gè)環(huán)形總線結(jié)構(gòu),由SS(CS)、SCK、SDI、SIO構(gòu)成,其時(shí)序其實(shí)很簡(jiǎn)單,主要是在SCK的控制下,兩個(gè)雙向移位寄存器進(jìn)行數(shù)據(jù)交換。
上升沿發(fā)送、下降沿接收、高位先發(fā)送。
上升沿到來(lái)的時(shí)候,SDO上的電平將被發(fā)送到從設(shè)備的寄存器中。
下降沿到來(lái)的時(shí)候,SDI上的電平將被接收到主設(shè)備的寄存器中。
3.5.3 數(shù)據(jù)的傳輸假設(shè)主機(jī)和從機(jī)初始化就緒:并且主機(jī)的sbuff=0xaa (10101010),從機(jī)的sbuff=0x55 (01010101),下面將分步對(duì)SPI的8個(gè)時(shí)鐘周期的數(shù)據(jù)情況演示一遍(假設(shè)上升沿發(fā)送數(shù)據(jù))[15]。
---------------------------------------------------
脈沖 主機(jī)sbuff 從機(jī)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
---------------------------------------------------
這樣就完成了兩個(gè)寄存器8位的交換,上面的0--1表示上升沿、1--0表示下降沿,sdi、 sdo相對(duì)于主機(jī)而言的。根據(jù)以上分析,一個(gè)完整的傳送周期是16位,即兩個(gè)字節(jié),因?yàn),首先主機(jī)要發(fā)送命令過(guò)去,然后從機(jī)根據(jù)主機(jī)的名準(zhǔn)備數(shù)據(jù),主機(jī)在下一個(gè)8位時(shí)鐘周期才把數(shù)據(jù)讀回來(lái)。
其中CS是控制芯片是否被選中的,也就是說(shuō)只有片選信號(hào)為預(yù)先規(guī)定的使能信號(hào)時(shí)(高電位或低電位),對(duì)此芯片的操作才有效[16]。這就允許在同一總線上連接多個(gè)SPI設(shè)備成為可能。接下來(lái)就負(fù)責(zé)通訊的3根線了。通訊是通過(guò)數(shù)據(jù)交換完成的,這里先要知道SPI是串行通訊協(xié)議,也就是說(shuō)數(shù)據(jù)是一位一位的傳輸?shù)。這就是SCK時(shí)鐘線存在的原因,由SCK提供時(shí)鐘脈沖,SDI,SDO則基于此脈沖完成數(shù)據(jù)傳輸。數(shù)據(jù)輸出通過(guò) SDO線,數(shù)據(jù)在時(shí)鐘上升沿或下降沿時(shí)改變,在緊接著的下降沿或上升沿被讀取。完成一位數(shù)據(jù)傳輸,輸入也使用同樣原理。這樣,在至少8次時(shí)鐘信號(hào)的改變(上沿和下沿為一次),就可以完成8位數(shù)據(jù)的傳輸。
3.6 電壓顯示電路設(shè)計(jì)中采用的是8段LED數(shù)碼管sm420364來(lái)顯示電壓值。LED具有耗電低、亮度高、視角大、線路簡(jiǎn)單、耐震及壽命長(zhǎng)等優(yōu)點(diǎn),它由8個(gè)發(fā)光二極管組成,其中7個(gè)按‘8’字型排列,另一個(gè)發(fā)光二極管為圓點(diǎn)形狀,位于右下角,常用于顯示小數(shù)點(diǎn)。把8個(gè)發(fā)光二極管連在一起,公共端接高電平,叫共陽(yáng)極接法,相反,公共端接低電平的叫共陰極接法,根據(jù)ZLG7289的要求我們采用共陰極接法。當(dāng)發(fā)光二極管導(dǎo)通時(shí),相應(yīng)的一段筆畫(huà)或點(diǎn)就發(fā)亮,從而形成不同的發(fā)光字符。其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(共陽(yáng)極)。若要顯示多個(gè)數(shù)字,只要讓若干個(gè)數(shù)碼管的位碼循環(huán)為低電平就可以了。
根據(jù)設(shè)計(jì)要求,顯示電路需要至少4位LED數(shù)碼管來(lái)顯示電壓值,則有4位LED循環(huán)顯示。設(shè)計(jì)中由ZLG7289的SA~DP驅(qū)動(dòng)LED的段碼顯示,即顯示字符,由ZLG7289的DIG0~DIG3選擇LED位碼,即選擇點(diǎn)亮哪位LED來(lái)顯示。電路圖參考原理圖2.1。
3.7 小結(jié)在滿足設(shè)計(jì)要求的前提下,為保證電路造價(jià)和維修的方便,在設(shè)計(jì)中我盡可能的用電路制作中的常用元件。另外除了上述器件外,其他的元件如電阻,電容的選擇都是由一些典型電路經(jīng)測(cè)試調(diào)節(jié)確定的。所以電路顯得更于理解和分析,這一點(diǎn)給也將給最后的調(diào)試帶來(lái)很大的方便。
第4章 基于單片機(jī)數(shù)字電壓表的軟件設(shè)計(jì)4.1 軟件系統(tǒng)整體設(shè)計(jì)系統(tǒng)的軟件流程如下:
開(kāi)始時(shí)首先初始化ZLG7289,使數(shù)碼管顯示為“0.000”,然后調(diào)用A/D轉(zhuǎn)換子程序啟動(dòng)ADC0809。單片機(jī)等待查詢轉(zhuǎn)換結(jié)束信號(hào),如果有信號(hào)則通過(guò)并行口讀取轉(zhuǎn)換數(shù)據(jù)并存儲(chǔ),就這樣連著讀取五次數(shù)據(jù)后求平均值。再將所求得的結(jié)果進(jìn)行運(yùn)算Dout100/51,將運(yùn)算后的結(jié)果除以10得到千分位,再把商除以10得到百分位,再除以10又分別得到十分位和個(gè)位,最后把個(gè)位,十分位,百分位和千分位通過(guò)串口發(fā)送給ZLG7289經(jīng)譯碼后送至數(shù)碼管顯示,此時(shí)LED數(shù)碼管顯示的就是ADC0809采集的電壓值。
4.1.1 C51簡(jiǎn)介C語(yǔ)言是今年來(lái)在國(guó)內(nèi)外得到迅速推廣應(yīng)用的一種計(jì)算機(jī)語(yǔ)言。C語(yǔ)言功能豐富,表達(dá)力強(qiáng),使用靈活方便,應(yīng)用面廣,目標(biāo)程序效率高,可移植性好,既具有高級(jí)語(yǔ)言的優(yōu)點(diǎn),又有低級(jí)語(yǔ)言的許多特點(diǎn)。因此,C語(yǔ)言特別適合于編寫(xiě)系統(tǒng)軟件。C語(yǔ)言誕生后,許多原來(lái)用匯編語(yǔ)言編寫(xiě)的軟件,現(xiàn)在可以用C語(yǔ)言編寫(xiě)了,而學(xué)習(xí)和使用C語(yǔ)言要比學(xué)習(xí)和使用匯編語(yǔ)言容易得多[17]。
51 的編程語(yǔ)言常用的有二種,一種是匯編語(yǔ)言,一種是C 語(yǔ)言。匯編語(yǔ)言的機(jī)器代碼生成效率很高但可讀性卻并不強(qiáng),復(fù)雜一點(diǎn)的程序就更是難讀懂,而C 語(yǔ)言在大多數(shù)情況下其機(jī)器代碼生成效率和匯編語(yǔ)言相當(dāng),但可讀性和可移植性卻遠(yuǎn)遠(yuǎn)超過(guò)匯編語(yǔ)言,而且C 語(yǔ)言還可以嵌入?yún)R編來(lái)解決高時(shí)效性的代碼編寫(xiě)問(wèn)題。對(duì)于開(kāi)發(fā)周期來(lái)說(shuō),中大型的軟件編寫(xiě)用C 語(yǔ)言的開(kāi)發(fā)周期通常要小于匯編語(yǔ)言很多[17]。
Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),Keil C51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開(kāi)發(fā)調(diào)試工具,全——Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。在開(kāi)發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語(yǔ)言的優(yōu)勢(shì)[18]。
設(shè)計(jì)步驟:
- 建立一個(gè)新的項(xiàng)目;
- 選擇所用單片機(jī);
- 在新建立的項(xiàng)目中加入程序;
- 保存運(yùn)行;
- 編譯是否通過(guò)。
4.1.2 程序流程圖 系統(tǒng)軟件的總體框架如圖4-1所示:
圖4-1程序流程圖
系統(tǒng)上電即初始化,首先,單片機(jī)片選A/D轉(zhuǎn)換器,然后發(fā)出信號(hào)啟動(dòng)A/D轉(zhuǎn)換。此時(shí)單片P3.2口開(kāi)始工作,不斷掃描A/D轉(zhuǎn)換結(jié)束端口有無(wú)結(jié)束信號(hào)。若有,即啟動(dòng)信號(hào)采集,對(duì)A/D轉(zhuǎn)換器的數(shù)據(jù)輸出口送來(lái)的數(shù)值進(jìn)行存儲(chǔ),又重新開(kāi)始,并且準(zhǔn)備下一次的采集;若沒(méi)有,則繼續(xù)等待。每當(dāng)采集系統(tǒng)采集一次,a的值就自增1,直至采集滿5次時(shí)歸零,然后單片機(jī)一邊對(duì)數(shù)據(jù)處理,一邊進(jìn)入下一次的掃描。數(shù)據(jù)處理完之后,通過(guò)SPI總線將數(shù)據(jù)傳給ZLG7289,ZLG7289把接收到的數(shù)據(jù)譯碼后送顯示器顯示出來(lái)。
4.1.3 數(shù)據(jù)采集模塊的設(shè)計(jì) 1.ADC0809內(nèi)部帶有輸出鎖存器,可以與AT89S51單片機(jī)直接相連。
2.初始化時(shí),使ST和OE信號(hào)全為低電平。
3.送要轉(zhuǎn)換的哪一通道的地址到A,B,C端口上。
4.在ST端給出一個(gè)至少有100ns寬的正脈沖信號(hào)。
5.是否轉(zhuǎn)換完畢,根據(jù)EOC信號(hào)來(lái)判斷。
6.當(dāng)EOC變?yōu)楦唠娖綍r(shí),這時(shí)給OE為高電平,轉(zhuǎn)換的數(shù)據(jù)就輸出給單片機(jī)了。
4.1.4 數(shù)據(jù)處理模塊的設(shè)計(jì) 為了得到更高精度和曾強(qiáng)系統(tǒng)的抗干擾能力,當(dāng)微處理器從ADC0809讀取數(shù)據(jù)后,把連續(xù)讀入的5次數(shù)據(jù)進(jìn)行累加求平均值:
(4.1)
再由單片機(jī)對(duì)VO進(jìn)行標(biāo)度變換,得到被測(cè)電壓數(shù)值:
(4.2)
但是單片機(jī)在進(jìn)行數(shù)學(xué)運(yùn)算時(shí)結(jié)果只讀取整數(shù)部分,且要顯示的是三位小數(shù),所以需要給VIN乘以1000:
(4.3)
用取余數(shù)的方法將電壓值按位輸出[5]:
千分位 取余數(shù)輸出
百分位 取余數(shù)輸出
十分位 取余數(shù)輸出
4.2 原程序見(jiàn)附錄A4.3 小結(jié)這一章中主要介紹了軟件部分的設(shè)計(jì)方法,另外要注意的是在程序設(shè)計(jì)上,首先要根據(jù)電路功能要求和硬件電路圖畫(huà)出程序流圖。然后再寫(xiě)出程序,在程序的編譯過(guò)程中很難避免會(huì)出現(xiàn)錯(cuò)誤,這就需要編譯器的提示和個(gè)人的分析,檢查出錯(cuò)誤所在,并且修正直到編譯的通過(guò)為止。為了盡可能減少錯(cuò)誤的出現(xiàn)和檢查的方便,在寫(xiě)程序時(shí),最好按照規(guī)范的程序?qū)懛ㄈ?xiě),并且最好加上詳細(xì)的注釋。
第5章 基于單片機(jī)數(shù)字電壓表的抗干擾設(shè)計(jì)5.1硬件系統(tǒng)的可靠性與抗干擾設(shè)計(jì)硬件抑制干擾主要從形成干擾的三個(gè)方面采取措施[19][20]:
1.消除和抑制噪聲源
2.破壞干擾通道
3.消弱接受電路對(duì)抗噪聲干擾信號(hào)的敏感性
對(duì)此采用的抗干擾措施有以下幾種方法:
5.1.1 供電系統(tǒng)抗干擾措施 任何電源及輸入線路都存在內(nèi)阻,正是這些內(nèi)阻引進(jìn)了電源的噪聲干擾。如果無(wú)內(nèi)阻存在,任何噪聲都會(huì)被電源短路吸收,在線路中不會(huì)建立任何干擾電壓。為保證電子線路正常工作,防止從電源引入干擾,采取以下措施:
1.采用交流穩(wěn)壓器供電
用交流穩(wěn)壓器供電可保證供電的穩(wěn)定性,防止電源系統(tǒng)的過(guò)壓與欠壓,有利于提高整個(gè)系統(tǒng)的可靠性[19]。
2.加裝濾波器
(1)低通濾波器:電源系統(tǒng)的干擾源大部分是高次諧波,因此采用低通濾波器濾去高次諧波,以改善電源波形。
(2)退耦濾波器:一個(gè)直流電源同時(shí)對(duì)幾個(gè)電路供電,為了避免通過(guò)電源內(nèi)阻造成幾個(gè)電路之間互相干擾,應(yīng)在每個(gè)電路的直流電源進(jìn)線處加裝退耦濾波電容[19]。
5.1.2 接地 接地是抑制干擾的重要方法,如能將接地和屏蔽正確結(jié)合起來(lái),就可以解決大部分干擾問(wèn)題。在電子電路中,地線有系統(tǒng)地、機(jī)殼地(屏蔽地)、數(shù)字地(邏輯地)和模擬地等。如果一個(gè)電路有兩點(diǎn)和兩點(diǎn)以上接地,則由于兩點(diǎn)間的地電位差而會(huì)引起干擾,因此一般采用“單點(diǎn)接地” [20]。
1.單點(diǎn)接地
多級(jí)電路通過(guò)公共接地母線后在一點(diǎn)接地,如圖5.1(a)所示。此方法雖然避免了多點(diǎn)接地因地電位差所引起的干擾,但在公共地線上卻存在著A、B和C三個(gè)不同的對(duì)地電位差。如果各級(jí)電平相差不大,這種接地方式可以使用,反之則不能使用。因?yàn)楦唠娖綍?huì)產(chǎn)生較大的地電流,并且使這個(gè)干擾串入到底電平電路中去。這種接地方式僅限于級(jí)數(shù)不多、各級(jí)電平差異不大或抗干擾能力較強(qiáng)的數(shù)字電路[20]。
圖5-1(b)圖是另一種單點(diǎn)接地方式。此時(shí),A、B和C三點(diǎn)對(duì)地電位只與本電路的地電流和地線阻抗有關(guān),各電路之間的電流不形成耦合,該種接地方式一般用于工作頻率在1MHz以下的電路。
a b
圖5-1 接地方式
2.數(shù)字、模擬電路的接地分開(kāi)
一個(gè)系統(tǒng)既有高速數(shù)字電路,又有模擬電路,為避免數(shù)字電路對(duì)模擬電路
的工作造成干擾,兩者的接地不要相混,而分別與電源端地線相連[21]。
5.1.3 傳輸通道的抗干擾措施在電子電路信號(hào)的傳輸過(guò)程中會(huì)產(chǎn)生通道干擾。為了保證傳輸?shù)目煽啃裕?在本設(shè)計(jì)中采取盡可能小連線距離和盡可能大的PCB布線寬度,這樣使電磁波對(duì)信號(hào)的影響降到了最小。
5.2 軟件系統(tǒng)的可靠性與抗干擾設(shè)計(jì)按照可靠性理論,程序設(shè)計(jì)最主要任務(wù)是,確保應(yīng)用程序按照給定的順序有秩序地運(yùn)行。有序運(yùn)行的基礎(chǔ)是硬件的可靠性,可靠性高的硬件基礎(chǔ)可以確保不出現(xiàn)硬件故障;但是在使用時(shí),大量的干擾源雖然不會(huì)造成單片機(jī)硬件系統(tǒng)的破壞,卻常常會(huì)破壞數(shù)字信號(hào)的時(shí)序,更改單片機(jī)寄存器內(nèi)容,導(dǎo)致程序運(yùn)行的不正常。因此,在提高硬件的基礎(chǔ)上,必須在程序設(shè)計(jì)中采取措施,提高軟件的可靠性,減少軟件錯(cuò)誤的發(fā)生保證系統(tǒng)的正常運(yùn)行[22]。
軟件的抗干擾設(shè)計(jì)有關(guān)方面很多,在本設(shè)計(jì)中只對(duì)軟件的本質(zhì)可靠性加以考慮,即本質(zhì)可靠性程序設(shè)計(jì):它是指程序可以不依靠附加的部分就可以完成規(guī)定的功能。為了做到程序設(shè)計(jì)的本質(zhì)可靠性,程序設(shè)計(jì)中從以下幾個(gè)方面做了考慮:
1.最大限度的減少程序錯(cuò)誤和缺陷
程序在編寫(xiě)和調(diào)試時(shí)對(duì)系統(tǒng)將來(lái)所處的環(huán)境不可能做到完全的模擬,因此,看似正確的程序,實(shí)際上還存在一定的缺陷。這些缺陷,有的是顯性的,可以通過(guò)進(jìn)一步的調(diào)試與仿真加以改進(jìn),還有是隱性的,如因?yàn)樾盘?hào)的延時(shí)而造成程序的判斷錯(cuò)誤。這就要求在編寫(xiě)程序時(shí),需作綜合、全面、動(dòng)態(tài)的考慮。
2.足夠的時(shí)序裕度
數(shù)字系統(tǒng)的協(xié)調(diào)、有序運(yùn)行離不開(kāi)正確的時(shí)序。系統(tǒng)在單片機(jī)的控制下,實(shí)現(xiàn)分時(shí)操作,程序運(yùn)行完全依靠時(shí)序調(diào)度、切換控制。
(1)復(fù)位時(shí)序
在系統(tǒng)中,通常需要復(fù)位的不僅僅是單片機(jī),一些帶有工作寄存器的外圍器件也要復(fù)位(如本次設(shè)計(jì)中的ZLG7289),在軟件復(fù)位時(shí),必須先復(fù)位外圍器件,再?gòu)?fù)位主器件。
(2)器件工作時(shí)序
器件工作時(shí)序是器件應(yīng)用程序設(shè)計(jì)的基礎(chǔ)。程序中必須保證時(shí)序工作的正確性,而且要有足夠的序裕度。例如:ZLG7289片選信號(hào)的建立時(shí)間最小為25μs,必須延時(shí)25μs后才能發(fā)揮后續(xù)指令,這是由器件的工作特性決定的。在考慮器件運(yùn)行時(shí)序時(shí),單片機(jī)的操作必須保證時(shí)序信號(hào)的銜接控制和時(shí)序信號(hào)的時(shí)序裕度。
(3)總線時(shí)序
在單片機(jī)應(yīng)用系統(tǒng),有并行總線與串行總線,串行通信中又有通信總線與擴(kuò)展總線。這些總線在規(guī)范化操作時(shí),其時(shí)序由數(shù)據(jù)通信協(xié)議保證,在非規(guī)范運(yùn)行,例如在虛擬總線方式下,其虛擬總線運(yùn)行的可靠性在于時(shí)序的準(zhǔn)確模擬。所以在數(shù)字電壓表的程序設(shè)計(jì)中必須嚴(yán)格按照Z(yǔ)LG7289的SPI總線時(shí)序進(jìn)行設(shè)計(jì)[23]。
5.3 小結(jié) 抗干擾的方法很多,以上介紹的只是本設(shè)計(jì)中所采用的。這些方法也是電路設(shè)計(jì)中最常用和最好用的,但是對(duì)于軟件抗干擾就不是所有的電路所能做到的,它只能在含有微處理單元的電路中才可以去實(shí)現(xiàn)。并且可以通過(guò)軟件的方法去補(bǔ)償一些硬件不能達(dá)到的調(diào)節(jié),或者通過(guò)擬合曲線去處理一些非線形的數(shù)據(jù)。這也是電路中應(yīng)用微處理器的一大益處。
第6章 電路制作及調(diào)試6.1 PCB板的制作CAD是Computer Aided Design(計(jì)算機(jī)輔助制圖)的簡(jiǎn)稱。CAD的特點(diǎn)是速度快,準(zhǔn)確性高,能極大地減輕工程技術(shù)人員的勞動(dòng)強(qiáng)度。電子線路CAD的基本含義是使用計(jì)算機(jī)來(lái)完成電子線路的設(shè)計(jì)過(guò)程,包括電路原理圖的編輯、電路功能仿真、工作環(huán)境模擬、印制板設(shè)計(jì)(自動(dòng)布線、手動(dòng)布線)與檢測(cè)等。電子線路CAD軟件還能迅速形成各種各樣的報(bào)表文件,如元件清單報(bào)表,為元器件的采購(gòu)及工程決算等提供了方便[23]。
目前,電子線路CAD軟件種類很多,如早期的Smartwork、TANGO、EESystem、PCAD、OrCAD、Protel等。其功能大同小異,其中Protel具有操作簡(jiǎn)單、方便、易學(xué)等特點(diǎn),是目前比較流行的電子線路CAD軟件之一[24][25]。
Protel99SE是Protel軟件系列較新的版本,其強(qiáng)大而先進(jìn)的功能,使它自推出以來(lái),一直是大多數(shù)電子設(shè)計(jì)者的手選軟件。因此,我選用Protel99SE來(lái)繪制PCB板。
圖6-2敷銅后的PCB圖
6.2 系統(tǒng)外觀
圖6-3 上電后系統(tǒng)圖
圖6-4 加被測(cè)電壓后系統(tǒng)圖
6.3電路調(diào)試6.3.1 調(diào)試步驟 1.按電路原理圖進(jìn)行焊接,在焊接過(guò)程中首先要對(duì)PCB進(jìn)行檢測(cè),查看PCB是否制作合格。
2 .按電路原理圖焊接元件。
3 .上電測(cè)試:在系統(tǒng)上電開(kāi)始測(cè)量前,要用萬(wàn)用表的電壓檔對(duì)被測(cè)電壓進(jìn)行估測(cè),然后以此選擇適當(dāng)?shù)牧砍,防止過(guò)大電壓燒壞A/D轉(zhuǎn)換器。選擇好量程之后就可以對(duì)系統(tǒng)上電測(cè)量了。
6.3.2 可能出現(xiàn)的問(wèn)題解答 1.上電后電路不工作,數(shù)碼管無(wú)反應(yīng)
檢查此類錯(cuò)誤情況需要從兩個(gè)方面入手:硬件上,檢查電源供電是否正常、晶振是否起振、電路接線是否良好可靠;軟件上,檢查程序觸發(fā)的時(shí)序是否正確,片選是否選通、程序中延時(shí)是否正確。
2.數(shù)碼管出現(xiàn)閃爍現(xiàn)象
正常工作的ZLG7289驅(qū)動(dòng)數(shù)碼管顯示應(yīng)處于一個(gè)很穩(wěn)定的狀態(tài),數(shù)碼管被點(diǎn)亮后不會(huì)出現(xiàn)閃爍和跳動(dòng)的現(xiàn)象。出現(xiàn)閃爍的很大原因是在選定ZLG7289(即將片選信號(hào)/CS置為低電平)后很長(zhǎng)時(shí)間沒(méi)有釋放,導(dǎo)致7289中斷掃描的時(shí)間太長(zhǎng),從而肉眼看到數(shù)碼管出現(xiàn)閃爍和不穩(wěn)定的現(xiàn)象;正確的使用方法是在CS置為低電平后減少不必要的延時(shí),使ALG7289被中斷掃描的時(shí)間降到最低而不至于影響顯示[25]。
3.上電后顯示正常,就是顯示數(shù)值不準(zhǔn)確。
顯示正常表示硬件電路和軟件都正確,對(duì)于數(shù)值顯示不準(zhǔn)確需要調(diào)節(jié)ADC0809的輸入比較電壓。所以需要找一塊更高精度的電壓表進(jìn)行校準(zhǔn)。
6.4 系統(tǒng)調(diào)試及結(jié)果分析設(shè)計(jì)完成之后,我們要對(duì)系統(tǒng)進(jìn)行調(diào)試。調(diào)試過(guò)程可以利用對(duì)部分給定電壓的測(cè)量結(jié)果分析來(lái)完成。首先要校對(duì)零點(diǎn):將A/D轉(zhuǎn)換器的模擬輸入端口接較準(zhǔn)電源,此時(shí)可以調(diào)整ADC0809參考電壓值,直至顯示電壓和標(biāo)準(zhǔn)電源相同[26]。校準(zhǔn)后,就可以進(jìn)行調(diào)試了。表6.1所示為對(duì)系統(tǒng)進(jìn)行測(cè)試結(jié)果:
表6-1 測(cè)試結(jié)果
6.4 小結(jié)PCB布線的好壞直接影響著電路工作的可靠性,所以在布線時(shí)需要對(duì)布線規(guī)則和所用元件PCB封裝做一些了解,要求做到線于線之間相交的次數(shù)最少,無(wú)直角連線。在調(diào)試上,如果電路出現(xiàn)問(wèn)題,可根據(jù)問(wèn)題分析可能問(wèn)題所在模塊,然后在根據(jù)模塊設(shè)計(jì)時(shí)的功能要求去排錯(cuò)修改。另外根據(jù)表6.1去評(píng)價(jià)設(shè)計(jì)是否滿足設(shè)計(jì)指標(biāo)要求。若顯示電壓與實(shí)際電壓的誤差在誤差范圍之內(nèi),則表示系統(tǒng)運(yùn)行正常;若顯示電壓與實(shí)際電壓的誤差很大,則有可能是校零電阻沒(méi)有調(diào)整,可以進(jìn)一步的校準(zhǔn)。
黑龍江職業(yè)學(xué)院畢業(yè)論文(設(shè)計(jì))
結(jié) 論一、主要結(jié)論
本論文通過(guò)參閱大量相關(guān)文獻(xiàn),了解現(xiàn)有數(shù)字電壓表的設(shè)計(jì)原理和發(fā)展方向,在總結(jié)了前人經(jīng)驗(yàn)的基礎(chǔ)上,采用單片機(jī)為核心控制單元,實(shí)現(xiàn)了通過(guò)軟件來(lái)對(duì)數(shù)據(jù)進(jìn)行處理。在設(shè)計(jì)中為了節(jié)省單片機(jī)的端口資源,采用了可以和單片機(jī)進(jìn)行串行通信的顯示驅(qū)動(dòng)芯片ZLG7289。另外,考慮到系統(tǒng)到抗干擾性,在電路設(shè)計(jì)中加入了去耦電容,零歐電阻等用來(lái)抗干擾的元件;在電路制作中,PCB嚴(yán)格按照布線規(guī)則進(jìn)行布線,這一措施使系統(tǒng)的可靠性得以提高。在程序設(shè)計(jì)中最大限度的減少程序缺陷,使程序合理合序運(yùn)行。最后,通過(guò)反復(fù)調(diào)試,各硬件電路的參數(shù)已經(jīng)確定,系統(tǒng)軟件程序也調(diào)試完成,系統(tǒng)各項(xiàng)工作指標(biāo)已滿足。
黑龍江職業(yè)學(xué)院畢業(yè)論文(設(shè)計(jì))
通過(guò)本課題的研究,從原理圖的設(shè)計(jì)到PCB板子的繪制、從實(shí)際硬件電路的搭建、調(diào)試到軟件系統(tǒng)程序的編寫(xiě)、調(diào)試,所有工作形成了一個(gè)完整的系統(tǒng)。整個(gè)工作過(guò)程培養(yǎng)了我獨(dú)立研制的能力,也培養(yǎng)了我工程學(xué)的思維能力,讓我受益匪淺,為我以后的工作奠定了基礎(chǔ)。當(dāng)然也還存在很多問(wèn)題,望各位老師批評(píng)指正,提出您的寶貴意見(jiàn)。
二、進(jìn)一步工作及展望
通過(guò)實(shí)驗(yàn),證明了本電壓表的設(shè)計(jì)方案的可行性,并且有著很好的開(kāi)發(fā)前景,現(xiàn)就本設(shè)計(jì)以后完善及功能擴(kuò)展總結(jié)為以下幾點(diǎn):
1.調(diào)校問(wèn)題。電路在制作時(shí)沒(méi)有考慮ADC0809參考電壓要求,所以對(duì)電源要求較高為穩(wěn)定6V。要解決這個(gè)問(wèn)題,可以從兩個(gè)方面考慮:a.從硬件考慮,給ADC0809參考電壓輸入端加裝濾波、穩(wěn)壓、可調(diào)分壓電路,具體電路由一個(gè)濾波電容、穩(wěn)壓二極管,可變電阻組成。b.從軟件考慮,可以擬合一條曲線,經(jīng)單片機(jī)處理對(duì)不準(zhǔn)確的量化值進(jìn)行修正。這也是本電路采用單片機(jī)后靈活性的體現(xiàn)。并且按照這樣做,還可以節(jié)省印刷PCB板的面積,降低了制作費(fèi)用。
2.精度的提高。由于設(shè)計(jì)指標(biāo)要求的精度不是很高,所以用8位AD轉(zhuǎn)換和程序中求多次電壓平均值的方法就能充分滿足設(shè)計(jì)要求。但是對(duì)于本設(shè)計(jì),如果要得到更高的測(cè)量精度,可以通過(guò)改進(jìn)程序的方法實(shí)現(xiàn)。例如:按誤差理論中的計(jì)算方法處理數(shù)據(jù)。
3.?dāng)U展問(wèn)題。設(shè)計(jì)指標(biāo)要求測(cè)量范圍是0V~+5V。但是實(shí)際中要測(cè)量的范圍多種多樣,要測(cè)量的度量也不相同,比如溫度、壓力、濕度等等,所以本電壓表在實(shí)際應(yīng)用中還需要根據(jù)具體應(yīng)用環(huán)境附加合適的電路完成要求功能。比如要測(cè)量高電壓時(shí)就要加分壓電路,要測(cè)溫度時(shí)就要加溫度傳感器(把溫度變?yōu)殡妷毫浚瑴y(cè)不穩(wěn)定電壓要加采樣保持電路等等。也就是說(shuō),本設(shè)計(jì)的電壓表相當(dāng)一個(gè)表頭,在需要數(shù)字化顯示的儀表中有著廣泛的應(yīng)用。
4.端口的利用。由于設(shè)計(jì)中采用了SPI串行總線,芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,這樣就有足夠的端口供以后使用,比如:設(shè)計(jì)中采用的A/D轉(zhuǎn)換是ADC0809,它能對(duì)8路信號(hào)進(jìn)行AD轉(zhuǎn)換,為了利用這個(gè)特點(diǎn),可以方便的在單片機(jī)上取三個(gè)端口用于ADC0809的地址輸入。
總之,由于設(shè)計(jì)中采用了單片機(jī),而單片機(jī)的應(yīng)用如今已經(jīng)在工業(yè)、電子等方方面面展示出了它的優(yōu)越性,利用單片機(jī)設(shè)計(jì)電路逐漸成發(fā)展趨勢(shì),它與外圍的簡(jiǎn)單電路再加上優(yōu)化程序就可以構(gòu)建任意的產(chǎn)品,使得本設(shè)計(jì)成為現(xiàn)實(shí)。隨著單片機(jī)的日益發(fā)展,它必將在未來(lái)顯示出更大的活力,為電子設(shè)計(jì)增加更多精彩。
致 謝
在畢業(yè)設(shè)計(jì)完成時(shí),作者不由的想起大學(xué)最后這一學(xué)期的學(xué)習(xí)生活。在這里,作者首先要感謝的是導(dǎo)師劉群華、韓峰老師這幾個(gè)月來(lái)給予的關(guān)心與指導(dǎo),尤其是他們一絲不茍的科研態(tài)度、高度的事業(yè)心和責(zé)任感時(shí)刻感染著作者;老師不僅教授給作者知識(shí),更教給作者做人的道理、做學(xué)問(wèn)的態(tài)度,這些都將使作者終生受益,恩師的教導(dǎo)將永不忘記,再一次忠心的感謝老師苦心培育之恩。同時(shí)也忠心感謝在做畢業(yè)設(shè)計(jì)的過(guò)程中給予作者幫助和關(guān)心的老師、同學(xué)和朋友們。這里向他們表示深深的謝意,感謝你們這些年來(lái)為作者所付出的艱辛和無(wú)私的奉獻(xiàn)。
在此,忠心的向在百忙之中審閱作者論文的各位老師表示最誠(chéng)摯的感謝。
參考文獻(xiàn)
[1] 劉振忠.數(shù)字電壓表發(fā)展概況和原理.電訊工程.1998,1
[2] 胡學(xué)海.單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計(jì).電子工業(yè)出版社,2005,2-7
[3] 沙占友.新型數(shù)字電壓表原理與應(yīng)用.機(jī)械工業(yè)出版社.2006,1-6
[4] 柳金龍.淺談數(shù)字電壓表的特點(diǎn).中國(guó)計(jì)量.2004,8:43-44
[5] 黃亮.基于AT89C51單片機(jī)的數(shù)字電壓表的設(shè)計(jì).實(shí)用電子制作.2006,10:25-27
[6] Grinev.V.G,Grineva.L.V. Amplitude digital voltmeter. Instruments and Experimental Techniques,1975,114-117
[7] 王守華,李智.基于PC的數(shù)字電壓表設(shè)計(jì).今日電子.2006,8:81
[8] 何循來(lái).高性能八位單片機(jī)AT89C51.半導(dǎo)體技術(shù).1997,8(4):61-63
[9] 宋鳳娟,李國(guó)忠等.基于89C51單片機(jī)的數(shù)字電壓表設(shè)計(jì).2007,29(2): 89-93
[10] ADC0808/ADC0809 8-Bit up Compatible A/D Cnverters With 8-Channel Multiplexer. National Semiconductor.
[11] 江曉安等.數(shù)字電子技術(shù).西安電子科技大學(xué)出版社,1993,189-204
[12] 余永權(quán).ATMEL89系列單片機(jī)應(yīng)用技術(shù).北京航天航空大學(xué)出版社,2000
[13] ATMEL Corporation.Microcontroller Data Book.Oct 1995
[14] 苗紅霞.單片機(jī)實(shí)現(xiàn)數(shù)字電壓表的軟硬件設(shè)計(jì).河海大學(xué)常州分校學(xué)報(bào).
2002,16(3):74-79
[15] 蔡美琴 張為民等.MCS-51系列單片機(jī)系統(tǒng)及應(yīng)用.高等教育出版,2005
[16] 龔尚福,朱宇.微機(jī)原理與接口技術(shù).西安電子科技大學(xué)出2003.135-142
[17] 王建校,楊建國(guó)等.51系列電片機(jī)及C51程序設(shè)計(jì).科學(xué)出版社,2002
[18] 胡大可.基于單片機(jī)8051的嵌入式開(kāi)發(fā)指南.電子工業(yè)出版社,2001
[19] 楊栓科.模擬電子技術(shù)基礎(chǔ).高等教育出版社.2005
[20] 田良,王堯等.綜合電子設(shè)計(jì)與實(shí)踐.東南大學(xué)出版社,2002
[21] 閻智義,王曉梅等.提高數(shù)字電壓表穩(wěn)定性的方法.長(zhǎng)春工業(yè)大學(xué)學(xué)報(bào).
2003,24(1):50-53
[22] 劉光斌,劉東等.單片機(jī)系統(tǒng)實(shí)用抗干擾技術(shù).人民郵政出版社,2003.322-358
[23] 李東生等.Protel99SE電路設(shè)計(jì)技術(shù)入門(mén)與應(yīng)用.電子工業(yè)出版社,2004
[24] 余家春.Protel99SE電路設(shè)計(jì)實(shí)用教程.中國(guó)鐵道出版社,2002
[25] 陳曉平.Protel99SE-電子線路CAD應(yīng)用教程.東南大學(xué)出版社,2005
[26] 孟凡利.直流數(shù)字電壓表的誤差及分析.計(jì)量技術(shù).2004,9:25-26
附錄 基于單片機(jī)的數(shù)字電壓表設(shè)計(jì)C51原程序