版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 目錄</b></p><p><b> 1引言1</b></p><p> 2 PROTEUS軟件仿真2</p><p> 2.1 PROTEUS軟件簡介2</p><p> 2.1.1 PROTUES ISIS的啟動2</p><p
2、> 2.1.2 PROTUES ISIS的工作界面3</p><p> 2.2 Keil簡介3</p><p> 2.3 利用PROTUES ISIS仿真與調試4</p><p> 3 主要芯片簡介5</p><p> 3.1 AT89C51芯片5</p><p> 3.2 ADC0808
3、7</p><p> 3.3 74LS1618</p><p> 3.4 七段數碼管簡介9</p><p> 4 系統總體設計10</p><p> 4.1 工作原理10</p><p> 4.2 系統結構框圖10</p><p> 4.3 系統硬件設計10</p&
4、gt;<p> 4.3.1 單片機的選擇10</p><p> 4.3.2 時鐘電路的設計11</p><p> 4.3.3復位電路11</p><p> 4.3.4 A/D轉化電路及測量電路的設計12</p><p> 4.3.5 顯示模塊設計12</p><p> 4.4系統程序
5、設計13</p><p> 4.4.1 初始化程序13</p><p> 4.4.2主程序13</p><p> 4.4.3 A/D轉換子程序的設計14</p><p> 4.4.4 循環(huán)顯示的程序15</p><p> 4.4.5 顯示程序16</p><p> 4.
6、4.6 中斷子程序、延時子程序和查表17</p><p> 5.1 總體設計仿真電路18</p><p> 5.2 仿真結果19</p><p><b> 6 總結21</b></p><p><b> 參考文獻22</b></p><p><b>
7、; 附錄23</b></p><p><b> 1引言</b></p><p> 數字電壓表的基本工作原理是利用A/D轉換電路將待測的模擬信號轉換成數字信號,通過相應換算后將測試結果以數字形式顯示出來的一種電壓表。較之于一般的模擬電壓表,數字電壓表具有精度高、測量準確、讀數直觀、使用方便等優(yōu)點。</p><p> 在測量儀
8、器中,電壓表是必須的,而且電壓表的好壞直接影響到測量精度。具有一個精度高、轉換速度快、性能穩(wěn)定的電壓表才能符合測量的要求。為此,我們設計了數字電壓表,此作品主要由A/D0808轉換器和單片機AT89C51構成,A/D轉換器在單片機的控制下完成對模擬信號的采集和轉換功能,最后由數碼管顯示采集的電壓值。</p><p> 電壓表的數字化測量,關鍵在于如何把隨時連續(xù)變化的模擬量轉化成數字量,完成這種轉換的電路叫模數轉
9、換器(A/D)。數字電壓表的核心部件就是A/D轉換器,由于各種不同的A/D轉換原理構成了各種不同類型的DVM。一般說來,A/D轉換的方式可分為兩類:雙積分型和逐次逼近型。</p><p> 雙積分型A/D轉換器是先用積分器將輸入的模擬電壓轉換成時間或頻率,再將其數字化。根據轉化的中間量不同,它又分為U-T(電壓-時間)式和U-F(電壓-頻率)式兩種。</p><p> 逐次逼近式A/D
10、轉換器分為比較式和斜坡電壓式,根據不同的工作原理,比較式又分為逐次比較式及零平衡式等。斜坡電壓式又分為線性斜坡式和階梯斜坡式兩種。</p><p> 在高精度數字電壓表中,常采用由積分式和比較式相結合起來的復合式A/D轉換器。本設計以AT89C51單片機為核心,以雙積分型A/D轉換器ADC0808、七段數碼管為主體,構造了一款簡易的數字電壓表,能夠實現自動和手動測量8路0.00~5.00V的直流電壓,最小分辨率
11、為0.02V。</p><p> 2 PROTEUS軟件仿真</p><p> 2.1 PROTEUS軟件簡介</p><p> PROTEUS ISIS是英國Labcenter公司開發(fā)的電路分析與實物仿真軟件。它運行于Windows操作系統上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件的特點是:1.實現了單片機仿真和SPICE電路仿真相結合。
12、具有模擬電路仿真、數字電路仿真、單片機及其外圍電路組成的系統的仿真、RS232動態(tài)仿真、I2C調試器、SPI調試器、鍵盤和LCD系統仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。2.支持主流單片機系統的仿真。目前支持的單片機類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。3.提供軟件調試功能。在硬件仿真系統中具有全速、單步、設置
13、斷點等調試功能,同時可以觀察各個變量、寄存器等的當前狀態(tài),因此在該軟件仿真系統中,也必須具有這些功能;同時支持第三方的軟件編譯和調試環(huán)境,如Keil C51 uVision2等軟件。4.具有強大的原理圖繪制功能??傊撥浖且豢罴瘑纹瑱C和SPICE分析于一身的仿真軟件,功能極其強大。</p><p> 2.1.1 PROTUES ISIS的啟動</p><p> 雙擊桌面上的ISIS
14、 6 Professional圖標或者單擊屏幕左下方的“開始”→“程序”→“Proteus 6 Professional” →“ISIS 6 Professional”,出現如圖2-1所示屏幕,表明進入PROTEUS ISIS集成環(huán)境。</p><p> 圖2-1 PROTEUS ISIS啟動時的屏幕</p><p> 2.1.2 PROTUES ISIS的工作界面</p>
15、<p> PROTEUS ISIS的工作界面是一種標準的Windows界面,如圖2-2所示。包括:標題欄、主菜單、標準工具欄、繪圖工具欄、狀態(tài)欄、對象選擇按鈕、預覽對象方位控制按鈕、仿真進程控制按鈕、預覽窗口、對象選擇器窗口、圖形編輯窗口。</p><p> 圖2-2 PROTEUS ISIS的工作界面</p><p> 2.2 Keil簡介</p>&l
16、t;p><b> 1.系統概述 </b></p><p> Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統,與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。用過匯編語言后再使用C來開發(fā),體會更加深刻。 </p><p> Keil C51軟件提供豐富的庫函數和功能強大的集成開
17、發(fā)調試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到Keil C51生成的目標代碼效率非常之高,多數語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現高級語言的優(yōu)勢。下面詳細介紹Keil C51開發(fā)系統各部分功能和使用。 </p><p> 2. Keil C51單片機軟件開發(fā)系統的整體結構 </p><p> C51工具包的整體結構,
18、如圖(1)所示,其中uVision與Ishell分別是C51 for Windows和for Dos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調試、仿真等整個開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及A51編譯器編譯生成目標文件(.OBJ)。目標文件可由LIB51創(chuàng)建生成庫文件,也可以與庫文件一起經L51連接定位生成絕對目標文件(.ABS)。ABS文件由OH51轉換成標準的Hex文件,以
19、供調試器dScope51或tScope51使用進行源代碼級調試,也可由仿真器使用直接對目標板進行調試,也可以直接寫入程序存貯器如EPROM中。 </p><p> 使用獨立的Keil仿真器時,注意事項 </p><p> (1)仿真器標配11.0592MHz的晶振,但用戶可以在仿真器上的晶振插孔中換插其他頻率的晶振。 </p><p> (2)仿真器上的復位按
20、鈕只復位仿真芯片,不復位目標系統。 </p><p> (3)仿真芯片的31腳(/EA)已接至高電平,所以仿真時只能使用片內ROM,不能使用片外ROM;但仿真器外引插針中的31腳并不與仿真芯片的31腳相連,故該仿真器仍可插入到擴展有外部ROM(其CPU的/EA引腳接至低電平)的目標系統中使用。</p><p> 2.3 利用PROTUES ISIS仿真與調試</p>&l
21、t;p> 1.將所設計的硬件電路用PROTEUS畫出來,聯好各個引腳,圖如圖1-7。</p><p> 2.在Keil里面將編寫的程序編譯并調試好,沒有錯誤后生成一個*.hex的文件。</p><p> 3.在PROTEUS中將Keil中生成的*.hex的文件軟件下載到AT89C51芯片中,保存并運行,看結果是否正確,有問題的話繼續(xù)調試軟硬件,直到結果與預期的基本一致。仿真結果
22、舉例如圖3-3、3-4所示。</p><p> 轉換的自動和手動模式轉換可以通過按鈕SB1和SB0來切換。當啟動仿真時,電壓表開始工作,并默認進入自動切換通道狀態(tài),想要在當前顯示的某一路手動停止通道切換,以使電壓表之后一直保持在該通道測量,只需按一下SB0。想要結束單一某一路的測量,只需按一下SB1就可以使電壓表恢復自動變換通道的測量和顯示方式。</p><p><b> 3
23、 主要芯片簡介</b></p><p> 3.1 AT89C51芯片</p><p><b> 主要功能:</b></p><p><b> 1.8位CPU;</b></p><p> 2.片內振蕩器頻率范圍1.2-12MHZ;</p><p> 3.1
24、28字節(jié)片內數據存儲器;</p><p> 4.4KB片內程序存儲器</p><p> 5.程序存儲器尋址范圍64KB;</p><p> 6.片外數據存儲器尋址范圍64KB;</p><p> 7.21字節(jié)專用寄存器;</p><p> 8.4個8位并行I/O口:P0 P1 P2 P3;</p>
25、<p> 9.1個全雙工串行I/O口;</p><p> 10.2個16位定時器/計數器;</p><p> 11.中斷系統有5個中斷源,可編程為2個優(yōu)先級;</p><p> 12.111條指令;</p><p> 13.有很強的位尋址、位處理能力;</p><p> 14.片內單總線結構;
26、</p><p> 15.單一+5V電源。</p><p> MCS-51系列單片機是雙列直插式封裝的40引腳芯片。</p><p> 圖3-1 AT89C51芯片引腳圖</p><p> P0口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅動8個TTL邏輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入當訪問外部程序
27、和數據存儲器時,P0口也被作為低8位地址/數據復用。在這種模式下,P0具有內部上拉電阻。在flash編程時,P0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。</p><p> P1口:P1口是一個具有內部上拉電阻的8位雙向I/O口,P1輸出緩沖器能驅動4個TTL邏輯電平。對P1端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于
28、內部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1.2分別作定時器/計數器2的外部計數輸入(P1.0/T2)和時器/計數器2的觸發(fā)輸入(P1.1/T2EX)。 P2口:P2口是一個具有內部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅動4個TTL邏輯電平。對P2端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲器或用
29、16位地址讀取外部數據存儲器(例如執(zhí)行MOVX @DPTR)時,P2口送出高八位地址。在這種應用中,P2口使用很強的內部上拉發(fā)送1。在使用8位地址(如MOVX @RI)訪問外部數據存儲器時,P2口輸出P2鎖存器的內容。在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。</p><p> P3口:P3口是一個具有內部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅動4個TTL邏輯電平。對P3端口寫
30、“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。P3口亦作為AT89C51特殊功能(第二功能)使用,在flash編程和校驗時,P3口也接收一些控制信號。</p><p> RST: 復位輸入。晶振工作時,RST腳持續(xù)2個機器周期高電平將使單片機復位。看門狗計時完成后,RST腳輸出96個晶振周期的高電平。特殊寄存器AUXR(地址8
31、EH)上的DISRTO位可以使此功能無效。DISRTO默認狀態(tài)下,復位高電平有效。</p><p> ALE/PROG:地址鎖存控制信號(ALE)是訪問外部程序存儲器時,鎖存低8位地址的輸出脈沖。在flash編程時,此引腳(PROG)也用作編程輸入脈沖。在一般情況下,ALE以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時器或時鐘使用。然而,特別強調,在每次訪問外部數據存儲器時,ALE脈沖將會跳過。如果需要,
32、通過將地址為8EH的SFR的第0位置 “1”,ALE操作將無效。這一位置 “1”,ALE僅在執(zhí)行MOVX或MOVC指令時有效。否則,ALE將被微弱拉高。這個ALE使能標志位(地址為8EH的SFR的第0位)的設置對微控制器處于外部執(zhí)行模式下無效。</p><p> :外部程序存儲器選通信號()是外部程序存儲器選通信號。當AT89C51從外部程序存儲器執(zhí)行外部代碼時,在每個機器周期被激活兩次,而在訪問外部數據存儲器
33、時,將不被激活。</p><p> /VPP:訪問外部程序存儲器控制信號。為使能從0000H到FFFFH的外部程序存儲器讀取指令,必須接GND。為了執(zhí)行內部程序指令,應該接VCC。在flash編程期間,也接收12伏VPP 電壓。</p><p> XTAL1:振蕩器反相放大器和內部時鐘發(fā)生電路的輸入端。</p><p> XTAL2:振蕩器反相放大器的輸出端。
34、</p><p> 3.2 ADC0808</p><p> ADC0809的內部邏輯結構圖如圖2-2所示。ADC0809由8路模擬開關,地址鎖存與譯碼器、比較器、256樹形開關、逐次逼近式寄存器SAR、控制電路和三態(tài)輸出鎖存器等組成。</p><p> 圖3-2 ADC0809的內部邏輯結構圖</p><p> CLK:時鐘信號,
35、典型值為500~640KHZ</p><p> VREF+、VREF- :基準電壓輸入,通常 VREF+接+5V、VREF- 接地</p><p> ALE:地址鎖存允許,其上升沿鎖存ADDC~ADDA的地址信號 </p><p> START:A/D轉換啟動信號,上升沿啟動A/D轉換。</p><p> EOC:轉換完成信號,啟動
36、轉換后,EOC輸出低電平,轉換完成后輸出高電平。該信號可用作向單片機提出中斷申請,或者作為查詢信號。</p><p> OE:數字量輸出允許信號,該引腳輸入高電平時,轉換后的數字量從D0~D7腳輸出。</p><p> IN0~IN7:模擬電壓輸入,八個引腳可分別接八路模擬信號。</p><p> ADDA、ADDB、ADDC:通道選擇信號,其輸入電平的組合選
37、擇模擬通道IN0~IN7之一 。 </p><p> 3.3 74LS161</p><p> 74LS161是常用的四位二進制可預置的同步加法計數器,他可以靈活的運用在各種數字電路,以及單片機系統種實現分頻器等很多重要的功能,:</p><p> 圖3-3 74ls161引腳圖</p><p> 管腳圖介紹:時鐘CP和四個數據輸
38、入端P0~P3清零/MR使能CEP,CET置數PE數據輸出端Q0~Q3以及進位輸出TC. (TC=Q0·Q1·Q2·Q3·CET)</p><p> 表3-1 74LS161功能表</p><p> 從74LS161功能表功能表中可以知道,當清零端CR=“0”,計數器輸出Q3、Q2、Q1、Q0立即為全“0”,這個時候為異步復位功能。當C
39、R=“1”且LD=“0”時,在CP信號上升沿作用后,74LS161輸出端Q3、Q2、Q1、Q0的狀態(tài)分別與并行數據輸入端D3,D2,D1,D0的狀態(tài)一樣,為同步置數功能。而只有當CR=LD=EP=ET=“1”、CP脈沖上升沿作用后,計數器加1。74LS161還有一個進位輸出端CO,其邏輯關系是CO= Q0·Q1·Q2·Q3·CET。合理應用計數器的清零功能和置數功能,一片74LS161可以組成16
40、進制以下的任意進制分頻器</p><p> 3.4 七段數碼管簡介</p><p> 7段LED數碼管,是在一定形狀的絕緣材料上,利用單只LED組合排列成“8”字型的數碼管,分別引出它們的電極,點亮相應的點劃來顯示出0-9的數字。</p><p> LED數碼管根據LED的接法不同分為共陰和共陽兩類,了解LED的這些特性,對編程是很重要的,因為不同類型的數碼管
41、,除了它們的硬件電路有差異外,編程方法也是不同的。右圖是共陰和共陽極數碼管的內部電路,它們的發(fā)光原理是一樣的,只是它們的電源極性不同而已。</p><p> 將多只LED的陰極連在一起即為共陰式,而將多只LED的陽極連在一起即為共陽式。以共陰式為例,如把陰極接地,在相應段的陽極接上正電源,該段即會發(fā)光。當然,LED的電流通常較小,一般均需在回路中接上限流電阻。假如將“b”和“c”段接上正電源,其它端接地或懸空,
42、那么“b”和“c”段發(fā)光,此時,數碼管顯示將顯示數字“1”。而將“a”、“b”、“d”、“e”和“g”段都接上正電源,其它引腳懸空,此時數碼管將顯示“2”。依此類推。</p><p><b> 4 系統總體設計</b></p><p><b> 4.1 工作原理</b></p><p> 系統采用12M晶振產生脈沖做
43、AT89C51的內部時鐘信號,通過軟件設置單片機的內部定時器T0產生中斷信號。利用中斷設置單片機的P2.4口取反產生脈沖做AT89C51的時鐘信號。通過鍵盤選擇八路通道中的一路,將該路電壓送入ADC0808相應通道,單片機軟件設置ADC0808開始A/D轉換,轉換結束ADC0808的EOC端口產生高電平,同時將ADC0808的EO端口置為高電平,單片機將轉換后結果存到片內RAM。系統調出顯示子程序,將保存結果轉化為0.00-5.00V分
44、別保存在片內RAM;系統調出顯示子程序,將轉化后數據查表,輸出到LED顯示電路,將相應電壓顯示出來,程序進入下一個循環(huán)。</p><p> 4.2 系統結構框圖</p><p> 根據項目要求,確定該系統的設計方案,圖4-1為該系統設計方案的結構框圖。硬件電路由6部分組成:單片機、時鐘電路、復位電路、LED顯示電路、A/D轉換器和測量電壓輸入電路。</p><p&g
45、t; 圖4-1 系統結構框圖</p><p> 4.3 系統硬件設計</p><p> 4.3.1 單片機的選擇</p><p> 設計這樣的應用系統,可以選擇帶有EPROM的單片機,應用程序直接存儲在片內,不用在外部擴展程序存儲器,電路可以簡化。此電路選擇Atmel公司生產的AT89C51。AT89系列與MCS-51系列單片機相比有兩大優(yōu)勢:第一,片內程
46、序存儲器采用閃速存儲器,使程序的寫入更加方便;第二,提供了更小尺寸的芯片,使整個電路體積更小。它以較小的體積、良好的性價比倍受青睞</p><p> 4.3.2 時鐘電路的設計</p><p> 單片機工作的時間基準是由時鐘電路提供的,在單片機的XTAL1和XYAL2兩個管腳接一只晶振及兩只電容就構成了單片機的時鐘電路,電路中電容器C1和C2對振蕩頻率有微調作用,通常取(30±
47、;10)pF石英晶體選擇6MHz或12MHz都可以。時鐘電路如圖4-2所示。</p><p> 圖4-2 系統時鐘電路 </p><p><b> 4.3.3復位電路</b></p><p> 單片機的RST管腳為主機提供了一個外部復位信號輸入口。復位信號是高電平有效,高電平有效的持續(xù)時間為2個機器周期以上。單片機的復位方式可由手動復位
48、方式完成。電阻、電容器的參考值R1=10KΩ、C1=10uF、Ch=0.01uF。復位電路如圖4-3所示。</p><p> 圖4-3 系統復位電路</p><p> 4.3.4 A/D轉化電路及測量電路的設計</p><p> A/D轉換器的功能是將模擬量轉換為與其大小成正比的數字量信號。能實現這種轉換的原理和方法很多,此設計采用ADC0808轉換器。ADC
49、0808是一種逐次逼近型的8位A/D轉換器件,片內有8路模擬開關,可輸入8個模擬量,單極性,量程為0~+5V。引腳功能如下:</p><p> IN0~IN7:8路模擬量輸入。</p><p> ADDA、ADDB、ADDC:模擬量輸入通道地址選擇,其8位編碼分別對應IN0~IN7.</p><p> ALE:地址鎖存允許,上升沿將通道選擇信號存入地址鎖存器。
50、</p><p> START:ADC轉換啟動信號,正脈沖有效,引腳信號要求保持在200ns以上,其上升沿將內部逐次逼近寄存器清零。</p><p> EOC:轉換解釋信號,可做為中斷請求信號或供CPU查詢。</p><p> CLK:時鐘輸入端,要求頻率范圍在10kHz~1.2MHz.</p><p> OE:允許輸出信號。<
51、/p><p> Vcc:芯片工作電壓。</p><p> VREF(+)、VREF(-):基準參考電壓的正、負值。</p><p> OUT1~OUT8:8路數字量輸出端。</p><p> 基于上述,單片機的P2口高四位分別對應ADC0808的CLK、ALE、EOC和OE端,用軟件設定給定的值。</p><p>
52、 IN0~IN7分別接上滑動變阻器,另一端全部接電位器,根據選擇的通道,電位器選擇測量相應通道的電位。</p><p> 4.3.5 顯示模塊設計</p><p> 單片機應用系統中,通常都需要進行人機對話。這包括人對應用系統的狀態(tài)干預與數據輸入,以及應用系統向人們顯示運行狀態(tài)與運行結果。顯示器、鍵盤電路就是用來完成人機對話活動的人機通道。</p><p>
53、 在應用系統中,設計要求不同,使用的LED顯示器的位數也不同,因此生產廠家就生產了多種位數、尺寸、型號不同的LED顯示器。在我們的設計中,選擇4位一體的共陰極時鐘型LED顯示器,采用動態(tài)顯示方式。</p><p><b> 4.4系統程序設計</b></p><p> 4.4.1 初始化程序</p><p> ORG 0000H<
54、/p><p> SJMPSTART</p><p> ORG 0003H</p><p> LJMP INT01</p><p> START:MOVDPTR,#TAB</p><p><b> 4.4.2主程序</b></p><p> 圖4-4
55、 主程序流程圖</p><p> 它包含通道的選擇及模擬量轉化為數字量的算法,把通道選擇的值和數字量整數部分,十分位,小數位分別放入寄存器,為下面的顯示子程序作準備。</p><p> WAIT: MOV A,#0FFH</p><p> MOV P3,A</p><p> MOV A,P3</p><
56、;p> ANL A,#07H ;使P3口的低三位為1,從而選擇通道</p><p> JNB P3.3,LOOP1 ;判斷P3.3是否為0,若為0跳轉,即有中斷</p><p> MOV R0,A ;把控制通道的值送給累加器R0</p><p><b> SWAP A </b></p>
57、;<p> MOV P3,A ;通道7有效</p><p> CLR P2.5 ;允許鎖存輸出</p><p> SETB P2.5 ;一位位輸出</p><p> CLR P2.5</p><p> JNB P2.6,$;為1時AD轉換結束</p>
58、;<p> SETB P2.7 ;數據輸出允許信號</p><p> MOV A,#0FFH </p><p> MOV P1,A</p><p> MOV A,P1</p><p> CLR P2.7</p><p> MOV B,#51;算出對
59、應的電壓的整數倍</p><p> DIV AB ;算出電壓的值的小數部分并存儲</p><p><b> MOV R1,A</b></p><p> MOV A,B </p><p> MOV B,#2</p><p><b>
60、MUL AB</b></p><p> MOV B,#10</p><p><b> DIV AB</b></p><p><b> MOV R2,A</b></p><p><b> MOV R3,B</b></p><p&
61、gt; LCALLDISP</p><p> SJMP WAIT</p><p> 4.4.3 A/D轉換子程序的設計 </p><p> A/D轉換程序的功能是采集數據,在整個系統設計中占有很高的地位。當系統置好后,單片機掃描轉換結束管腳P2.6的輸入電平狀態(tài),當輸入為高電平則轉換完成,將轉換的數值轉換并顯示輸出。若輸入為低電平,則繼續(xù)掃描。<
62、/p><p> 圖4-5 A/D轉換子程序流程圖</p><p> MOV A,#0FFH </p><p> MOV P3,A</p><p> MOV A,P3</p><p> ANL A,#07H</p><p> JNB P3.3,LOOP1<
63、;/p><p> MOV R0,A</p><p><b> SWAP A</b></p><p> MOV P3,A ;通道7有效 </p><p> CLR P2.5 ;允許鎖存輸出 </p><p> SETB P2.5 </p>
64、<p> CLR P2.5 ;一位位的輸出</p><p> JNB P2.6,$;為1時ad轉換結束</p><p> SETB P2.7 ;數據輸出允許信號</p><p> 4.4.4 循環(huán)顯示的程序</p><p> 即有中斷(P3.3=0)時,數碼管從0到7八個通道依次循環(huán)顯示。它是
65、由低電平觸發(fā)引起的的中斷。此段程序也包含了八路模擬直流電壓轉化為數字電壓的算法,并把通道選擇的值和數字量整數部分,十分位,小數位分別放入寄存器,為下面的顯示子程序作準備。</p><p> LOOP1:INC R0</p><p><b> MOV A,R0</b></p><p> CJNE A,#08H,NEXT ;判斷
66、是否是八個通道顯示完,如果是則進行下</p><p> MOVA,#00H ;一輪的循環(huán)</p><p> NEXT:MOV R0,A</p><p><b> SWAP A</b></p><p><b> MOV P3,A</b></p>
67、<p> CLR P2.5 </p><p> SETB P2.5</p><p> CLR P2.5</p><p> JNB P2.6,$</p><p> SETB P2.7 </p><p> MOV A,#0FFH</p><p&
68、gt; MOV P1,A</p><p> MOV A,P1</p><p> CLR P2.7</p><p> MOV B,#51</p><p><b> DIV AB</b></p><p><b> MOV R1,A</b>
69、</p><p><b> MOV A,B</b></p><p> MOV B,#2</p><p><b> MUL AB</b></p><p> MOV B,#10</p><p><b> DIV AB</b></
70、p><p><b> MOV R2,A</b></p><p><b> MOV R3,B</b></p><p> LCALL DISP</p><p> JNB P3.3, LOOP1</p><p> SJMP WAIT</p><p
71、> 4.4.5 顯示程序</p><p> 它包含了位碼和段碼的設置,位碼控制哪個數碼管顯示;段碼控制顯示的數值</p><p> DISP: MOV R4,#0FH</p><p> LOOP:MOVA,R3</p><p> MOVCA,@A+DPTR</p><p><b&g
72、t; MOVP0,A</b></p><p> LCALLDELAY</p><p><b> SETBP2.3</b></p><p><b> MOVA,R2</b></p><p> MOVCA,@A+DPTR</p><p><b
73、> CLRP2.2</b></p><p><b> MOVP0,A</b></p><p> LCALLDELAY</p><p><b> SETBP2.2</b></p><p><b> MOVA, R1</b></p>
74、<p> MOVCA,@A+DPTR</p><p> ADD A,#80H</p><p><b> CLR P2.1</b></p><p> MOV P0, A</p><p> LCALLDELAY</p><p><b> SETBP2.1
75、</b></p><p><b> MOVA,R0</b></p><p> MOVCA,@A+DPTR</p><p><b> CLRP2.0</b></p><p><b> MOVP0,A</b></p><p>
76、LCALLDELAY</p><p> SETBP2.0 </p><p> DJNZ R4,LOOP</p><p><b> RET</b></p><p> 4.4.6 中斷子程序、延時子程序和查表</p><p> INT01: INC R0</p>&
77、lt;p><b> RETI</b></p><p> DELAY: MOVR6,#20</p><p> D1:MOVR7,#250</p><p><b> DJNZR7,$</b></p><p> DJNZR6,D1</p><p>
78、;<b> RET</b></p><p> TAB: DB 3FH,06H,5BH,4FH,66H</p><p> DB 6DH,7DH,07H,7FH,6FH</p><p> 5 數字電壓表硬件電路及仿真</p><p> 5.1 總體設計仿真電路</p><p> 圖5
79、-1 總體電路設計仿真圖</p><p> 說明:圖下部分為八通道直流電壓輸入電路,它由滑動變阻器控制輸入電壓的大小,從而控制ADC0808各輸入端的電壓示數,從而變化地顯示在數碼管上。74LS161為四位二進制加法計數器,用來控制P3口的低三位,進而控制ADC0809的A、B、C三個地址選擇端,從而控制不同的輸入通道。用軟件設計使ADC0808工作輸出的數字量通過p1口輸入單片機,從單片機的p0口輸出到數碼管
80、中顯示出來。單片機P2口的低四位作為LED位碼的輸出控制信號。</p><p> 當P1口輸出段碼信號的BCD碼后,輸出具有一定驅動能力的七段字形碼,由于4-LED的段碼輸入管腳是并聯在一起的,所以每一位LED的段碼輸入管腳都能獲得這個段碼信號。若要控制在每一時刻只有一位LED被點亮,必須靠位碼信號控制。P2口低四位輸出位碼信號后接到LED的位碼控制端,因此P2口的低四位的位碼信號在每一時刻只有一位是“1”,其
81、他位全為“0”,然后按時間順序改變輸出“1”的位置,控制在每一時刻只有一位LED被點亮,達到動態(tài)顯示的目的。</p><p><b> 5.2 仿真結果</b></p><p> 圖5-2 通道1仿真結果</p><p> 圖5-3 通道7仿真結果</p><p> 補充:當調整滑動變阻器時,相應的電阻值在數碼管
82、上也同時顯示。當按下switch鍵時,會顯示從0---7通道的電壓值顯示,按下button鍵單路選擇顯示。</p><p><b> 6 總結</b></p><p> 做了一周的課程設計,我基本上圓滿的完成了課設的相關任務,達到了課程設計的技術要求,相信這對以后也是有幫助的。通過課程設計這一實踐環(huán)節(jié),我對這個學期以來所學到知識有了更深層的理解,而且自己分析問題和
83、解決實際問題的能力也有一定的提高。</p><p> 同時在這個過程中我也發(fā)現了自己許多的不足,包括對所學的基礎知識理解不是很透徹,以至于電路設計了很長時間,最后還得連夜趕著寫論文。還有對理論知識的運用不很靈活,常常在一個問題想半天,結果還是換一個角度好一點。</p><p> 本設計以AT89C51單片機為控制核心,通過集成摸數轉換芯片ADC0808將被測信號轉換成數字信號,經單片機
84、內部程序處理后,由七段數碼管顯示測量結果。仿真測試表明,系統性能良好,測量讀數穩(wěn)定易讀、更新速度合理,直流電壓測量范圍為0.00~5.00V,最小分辨率為0.02V,滿足任務書指標要求。但是,該系統也存在一定程度的不足,例如:輸入電壓易發(fā)生干擾不穩(wěn)定,且驅動能力可能存在不足,需在被測信號的輸入端加上一部分驅動電路,比如將量程轉換電路改成帶放大能力的自動量程轉換電路,將幅值較小的信號經適當放大后再測量,可顯著提高精度。</p>
85、<p> 認真的做完這次單片機課程設計后,我感覺自己有了很大的提高。但是由于時間的原因,這次課程設計沒能達到自己預想的那么好,所幸的是功夫不負有心人,所有功能指標都已基本實現了。在接下來的時間里,我會繼續(xù)把它做好。最后我還總結出了一個結論,當認真的投入到一項工作中時,不但會收獲許多,而且還會感覺到很大的樂趣。</p><p><b> 參考文獻</b></p>
86、<p> [1] 張剛毅,彭喜元.單片機原理與應用設計.北京:電子工業(yè)出版社,2008</p><p> [2] 吳金戌,沈慶陽,郭庭吉.8051單片機實踐與應用.北京:清華大學出版社,2002</p><p> [3] 黃智偉.全國大學生電子設計競賽訓練教程.北京:電子工業(yè)出版社,2004</p><p> [4] 汪德彪.MCS-51
87、單片機原理及接口技術(第一版).北京:電子工業(yè)出版社,2003</p><p> [5] 徐愛鈞.智能化測量控制儀表原理與設計(第二版).北京:北京航空航天大學出版社,2004</p><p><b> 附錄 </b></p><p> ORG 0000H</p><p> SJMPSTART</p&
88、gt;<p> ORG 0003H</p><p> LJMP INT01 ;中斷入口地址</p><p> START:MOVDPTR,#TAB ;表首地址送給DPTR</p><p> WAIT: MOV A,#0FFH </p><p> MOV P3,A</p
89、><p> MOV A,P3</p><p> ANL A,#07H ;選擇ADC0808通道</p><p> JNB P3.3,LOOP1 ;判斷是否有中斷</p><p> MOV R0,A ;把控制通道的值送給寄存器</p><p&
90、gt; SWAP A </p><p> MOV P3,A</p><p> CLR P2.5 ;啟動AD轉換</p><p> SETB P2.5</p><p> CLR P2.5</p><p> JNB P2.6,$</p><p&g
91、t; SETB P2.7 ;允許AD轉換輸出</p><p> MOV A,#0FFH ;P1口為準雙向口,先輸入1</p><p> MOV P1,A </p><p> MOV A,P1</p><p> CLR P2.7</p><p>
92、; MOV B,#51;計算,以使其在數碼管顯示</p><p><b> DIV AB</b></p><p> MOV R1,A ;轉換出的整數部分</p><p> MOV A,B </p><p> MOV B,#2</p><p><b
93、> MUL AB</b></p><p> MOV B,#10 </p><p><b> DIV AB</b></p><p> MOV R2,A ;轉換出的十分位</p><p> MOV R3,B ;轉換出的百分位</p&
94、gt;<p> LCALLDISP</p><p> SJMP WAIT</p><p> LOOP1:INC R0 </p><p><b> MOV A,R0</b></p><p> CJNE A,#08H,NEXT ;控制循環(huán)次數</p>&
95、lt;p> MOVA,#00H</p><p> NEXT:MOV R0,A </p><p><b> SWAP A</b></p><p><b> MOV P3,A</b></p><p> CLR P2.5 </p><p>
96、 SETB P2.5</p><p> CLR P2.5</p><p> JNB P2.6,$</p><p> SETB P2.7 </p><p> MOV A,#0FFH</p><p> MOV P1,A</p><p> MOV A,P1
97、</p><p> CLR P2.7</p><p> MOV B,#51</p><p><b> DIV AB</b></p><p><b> MOV R1,A</b></p><p><b> MOV A,B</b&g
98、t;</p><p> MOV B,#2</p><p><b> MUL AB</b></p><p> MOV B,#10</p><p><b> DIV AB</b></p><p><b> MOV R2,A</b>&l
99、t;/p><p><b> MOV R3,B</b></p><p> LCALL DISP</p><p> JNB P3.3, LOOP1</p><p> SJMP WAIT</p><p> DISP: MOV R4,#0FH ;顯示程序</p&g
100、t;<p> LOOP:MOVA,R3</p><p> MOVCA,@A+DPTR</p><p><b> CLR P2.3</b></p><p><b> MOVP0,A</b></p><p> LCALLDELAY</p><
101、p> SETBP2.3 ;控制哪個數碼管顯示</p><p><b> MOVA,R2</b></p><p> MOVCA,@A+DPTR</p><p><b> CLRP2.2</b></p><p><b> MOVP0,A</b>
102、</p><p> LCALLDELAY</p><p><b> SETBP2.2</b></p><p><b> MOVA, R1</b></p><p> MOVCA,@A+DPTR</p><p> ADD A,#80H</p>&
103、lt;p><b> CLR P2.1</b></p><p> MOV P0, A</p><p> LCALLDELAY</p><p><b> SETBP2.1</b></p><p><b> MOVA,R0</b></p>&l
104、t;p> MOVCA,@A+DPTR</p><p><b> CLRP2.0</b></p><p><b> MOVP0,A</b></p><p> LCALLDELAY</p><p> SETBP2.0 </p><p> DJNZ
105、R4,LOOP</p><p><b> RET</b></p><p> INT01: INC R0 ;中斷子程序</p><p><b> RETI</b></p><p> DELAY: MOVR6,#20;延時子程序</p><p> D
106、1:MOVR7,#250</p><p><b> DJNZR7,$</b></p><p> DJNZR6,D1</p><p><b> RET</b></p><p> TAB: DB 3FH,06H,5BH,4FH,66H</p><p> D
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設計-數字電壓表
- 單片機課程設計---數字電壓表
- 單片機課程設計-數字電壓表
- 單片機(數字電壓表)課程設計
- 單片機課程設計----數字電壓表
- 單片機課程設計-數字電壓表
- 單片機課程設計--數字電壓表
- 單片機課程設計--數字電壓表
- 單片機課程設計---數字電壓表設計
- 單片機課程設計---數字電壓表設計
- 單片機課程設計---數字電壓表設計
- 單片機課程設計--簡易數字電壓表
- 單片機(數字電壓表)課程設計.rar
- 單片機課程設計數字電壓表
- 單片機數字電壓表課程設計.doc
- 單片機(數字電壓表)課程設計.rar
- 單片機(數字電壓表)課程設計.rar
- 單片機課程設計---數字電壓表 (2)
- 單片機課程設計報告——數字電壓表
- 課程設計----單片機簡易數字電壓表
評論
0/150
提交評論