版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 題目 數(shù)字電壓表 </p><p><b> 任務(wù)與要求</b></p><p> 開始日期 2011年 4月 20 日完成日期 2011 年5月 25 日</p><p><b> 目錄</b></p><
2、p><b> 1 設(shè)計(jì)方案1</b></p><p> 2 設(shè)計(jì)總體框圖1</p><p> 2.1 硬件部分1</p><p> 2.2 軟件部分2</p><p> 2.2.1主程序設(shè)計(jì)2</p><p> 2.2.2 A/D轉(zhuǎn)換子程序3</p>&
3、lt;p> 2.2.3數(shù)據(jù)處理子程序4</p><p> 3 設(shè)計(jì)單元電路5</p><p> 3.1 模數(shù)轉(zhuǎn)換單元5</p><p> 3.1.1 ADC0808引腳說明5</p><p> 3.1.2 ADC0808通道選擇6</p><p> 3.1.3 ADC0808的工作原理:6
4、</p><p> 3.2 數(shù)據(jù)處理及控制單元7</p><p> 3.3 4位一體七段數(shù)碼管8</p><p> 4 電路原理說明9</p><p> 4.1 模數(shù)轉(zhuǎn)換9</p><p> 4.2 數(shù)據(jù)處理及控制10</p><p><b> 5 參考文獻(xiàn)11
5、</b></p><p> 6 結(jié)論及心得11</p><p><b> 7 附錄12</b></p><p> 7.1 調(diào)試報(bào)告12</p><p> 7.2元器件清單16</p><p> 簡易直流電壓表的設(shè)計(jì)</p><p><b&
6、gt; 1 設(shè)計(jì)方案</b></p><p> 本設(shè)計(jì)主要采用AT89C51芯片和ADC0808芯片來完成一個(gè)簡易的數(shù)字電壓表,能夠?qū)斎氲?~5 V的模擬直流電壓進(jìn)行測量,并通過一個(gè)4位一體的7段LED數(shù)碼管進(jìn)行顯示,測量誤差約為0.02 V。該電壓表的測量電路主要由三個(gè)模塊組成:A/D轉(zhuǎn)換模塊、數(shù)據(jù)處理模塊及顯示控制模塊。A/D轉(zhuǎn)換主要由芯片ADC0808來完成,它負(fù)責(zé)把采集到的模擬量轉(zhuǎn)換為相
7、應(yīng)的數(shù)字量再傳送到數(shù)據(jù)處理模塊。數(shù)據(jù)處理則由芯片AT89C51來完成,其負(fù)責(zé)把ADC0808傳送來的數(shù)字量經(jīng)一定的數(shù)據(jù)處理,產(chǎn)生相應(yīng)的顯示碼送到顯示模塊進(jìn)行顯示;另外它還控制著ADC0808芯片的工作。顯示模塊主要由7段數(shù)碼管組成,顯示測量到的電壓值。</p><p><b> 2 設(shè)計(jì)總體框圖</b></p><p><b> 2.1 硬件部分<
8、/b></p><p> 本實(shí)驗(yàn)采用AT89C51單片機(jī)芯片配合ADC0808模/數(shù)轉(zhuǎn)換芯片構(gòu)成一個(gè)簡易的數(shù)字電壓表,原理電路如圖1所示。該電路通過ADC0808芯片采樣輸入口IN7輸入的0~5 V的模擬量電壓,經(jīng)過模/數(shù)轉(zhuǎn)換后,產(chǎn)生相應(yīng)的數(shù)字量經(jīng)過其輸出通道D0~D7傳送給AT89C51芯片的P0口。AT89C51負(fù)責(zé)把接收到的數(shù)字量經(jīng)過數(shù)據(jù)處理,產(chǎn)生正確的7段數(shù)碼管的顯示段碼,并通過其P1口傳送給數(shù)碼
9、管。同時(shí)它還通過其三位I/O口P3.0、P3.1、P3.2產(chǎn)生位選信號,控制數(shù)碼管的亮滅。另外,AT89C51還控制著ADC0808的工作。其ALE管腳為ADC0808提供了1MHz工作的時(shí)鐘脈沖;P2.3控制ADC0808的地址鎖存端(ALE);P2.4控制ADC0808的啟動端(START);P2.5控制ADC0808的輸出允許端(OE);P3.7控制ADC0808的轉(zhuǎn)換結(jié)束信號(EOC)。系統(tǒng)框圖如圖2所示。</p>
10、<p><b> 圖1電路圖原理</b></p><p><b> 圖2 系統(tǒng)框圖</b></p><p><b> 2.2 軟件部分</b></p><p> 2.2.1主程序設(shè)計(jì)</p><p> 本設(shè)計(jì)采用C語言編程。首先是初始化,主要是針對定時(shí)器T
11、0,設(shè)置其工作方式,裝入計(jì)數(shù)初值,允許中斷等。準(zhǔn)備工作做好后便啟動ADC0808對IN7腳輸入進(jìn)的0~5V電壓模擬信號進(jìn)行數(shù)據(jù)采集并轉(zhuǎn)換成相對應(yīng)的0~255十進(jìn)制數(shù)字量。</p><p> 在數(shù)據(jù)處理子程序中,運(yùn)用標(biāo)度變換知識,編寫算法將0~255十進(jìn)制數(shù)字量轉(zhuǎn)換成0.00~5.00V的數(shù)據(jù),輸出到顯示子程序進(jìn)行顯示。整個(gè)主程序就是在A/D轉(zhuǎn)換,數(shù)據(jù)處理及顯示程序循環(huán)執(zhí)行。整個(gè)程序流程框圖如圖3所示。</
12、p><p><b> 圖3 主程序流程圖</b></p><p> 2.2.2 A/D轉(zhuǎn)換子程序</p><p> 啟動ADC0808對模擬量輸入信號進(jìn)行轉(zhuǎn)換,通過判斷EOC(P1.6引腳)來確定轉(zhuǎn)換是否完成,若EOC為0,則繼續(xù)等待;若EOC為1,則把OE置位,將轉(zhuǎn)換完成的數(shù)據(jù)存儲到AT89C51中。程序流程圖如圖4所示。</p>
13、;<p> 圖4 數(shù)據(jù)處理子程序流程圖</p><p> 2.2.3 數(shù)據(jù)處理子程序</p><p> 數(shù)據(jù)處理子程序主要根據(jù)標(biāo)度變換公式1-1,把0~255十進(jìn)制數(shù)轉(zhuǎn)換為0.00~5.00V。</p><p> ,:模擬測量值;:模擬輸入最小值;:模擬輸入最大值;:模數(shù)轉(zhuǎn)換后的值;:模數(shù)轉(zhuǎn)換后的最小值;:模數(shù)轉(zhuǎn)換后的最大值。</p>
14、;<p> 在本設(shè)計(jì)中,根據(jù)要求知,,,,,則上式可以簡化為。</p><p><b> 3 設(shè)計(jì)單元電路</b></p><p> 3.1 模數(shù)轉(zhuǎn)換單元</p><p> 此處采用ADC0808模塊實(shí)現(xiàn),它是典型的8位8通道逐次逼近式A/D轉(zhuǎn)換器,主要由8路模擬開關(guān)、地址所存譯碼電路、逐次逼近寄存器SAR、樹狀模擬開關(guān)、
15、256R電阻分壓器、電壓比較器及三態(tài)輸出鎖存器等組成。</p><p> 3.1.1 ADC0808引腳說明</p><p> ADC0808芯片為28引腳雙列直插式封裝,其引腳如圖5所示,</p><p> 圖5 ADC0808的引腳圖</p><p> (1)IN0~I(xiàn)N7:8路模擬量輸入通道。</p><p
16、> (2)A、B、C:模擬通道地址線。這3根地址線用于對8路模擬通道的選擇,其譯碼關(guān)系如表1-1所示。其中,A為低地址,C為高地址,引腳圖中為ADDA,ADDB和ADDC。</p><p> (3)ALE:地址鎖存允許信號。對應(yīng)ALE上跳沿,A、B、C地址狀態(tài)送入地址鎖存器中。</p><p> (4)START:轉(zhuǎn)換啟動信號。START上升沿時(shí),復(fù)位ADC0808;START
17、下降沿時(shí)啟動芯片,開始進(jìn)行A/D轉(zhuǎn)換;在A/D轉(zhuǎn)換期間,START應(yīng)保持低電平。本信號有時(shí)簡寫為ST。</p><p> (5)D7~D0:數(shù)據(jù)輸出線。為三態(tài)緩沖輸出形式,可以和單片機(jī)的數(shù)據(jù)線直接相連。D0為最低位,D7為最高。 </p><p> (6)OE:輸出允許信號。用于控制三態(tài)輸出鎖存器向單片機(jī)輸出轉(zhuǎn)換得到的數(shù)據(jù)。OE=0,輸出數(shù)據(jù)線呈高阻;OE=1,輸出轉(zhuǎn)換得到的數(shù)據(jù)。&l
18、t;/p><p> (7)CLK:時(shí)鐘信號。ADC0808的內(nèi)部沒有時(shí)鐘電路,所需時(shí)鐘信號由外界提供,因此有時(shí)鐘信號引腳。通常使用頻率為500KHz的時(shí)鐘信號。</p><p> (8)EOC:轉(zhuǎn)換結(jié)束信號。EOC=0,正在進(jìn)行轉(zhuǎn)換;EOC=1,轉(zhuǎn)換結(jié)束。使用中該狀態(tài)信號即可作為查詢的狀態(tài)標(biāo)志,又可作為中斷請求信號使用。</p><p> (9)Vcc:+5V電源
19、,GND:地。 </p><p> (10)Vref:參考電壓。參考電壓用來與輸入的模擬信號進(jìn)行比較,作為逐次逼近的基準(zhǔn)。其典型值為+5V(Vref(+)=+5V, Vref(-)=0V)。</p><p> 3.1.2 ADC0808通道選擇</p><p> 表1 ADC0808通道選擇表 </p><p> 多路模擬開關(guān)可選通8
20、路模擬通道,允許8路模擬量分時(shí)輸入,并共用一個(gè)A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。地址鎖存與譯碼電路完成對A、B、C三個(gè)地址位進(jìn)行鎖存與譯碼,如表1所示。</p><p> 3.1.3 ADC0808的工作原理:</p><p> 首先輸入3位地址,并使ALE=1,將地址存入地址鎖存器中。此地址經(jīng)譯碼選通8路模擬輸入之一到比較器。START上升沿將逐次逼近寄存器復(fù)位。下降沿啟動 A/D轉(zhuǎn)換,之后EO
21、C輸出信號變低,指示轉(zhuǎn)換正在進(jìn)行。直到A/D轉(zhuǎn)換完成,EOC變?yōu)楦唠娖?,指示A/D轉(zhuǎn)換結(jié)束,結(jié)果數(shù)據(jù)已存入鎖存器,這個(gè)信號可用作中斷申請。當(dāng)OE輸入高電平時(shí),輸出三態(tài)門打開,轉(zhuǎn)換結(jié)果的數(shù)字量輸出到數(shù)據(jù)總線上。</p><p> 圖6 ADC0808信號的時(shí)序配合</p><p> 3.2 數(shù)據(jù)處理及控制單元</p><p> 此處采用AT89C51,它所需要實(shí)
22、現(xiàn)的功能,一是將模數(shù)轉(zhuǎn)換后的數(shù)據(jù)經(jīng)過處理并顯示于4位一體的LED上,二是提供LED的位控信號,選擇所應(yīng)顯示數(shù)據(jù)的一位8段數(shù)碼管,三是提供高電平將ADC0808的鎖存器打開,使得數(shù)字信號能夠輸出給單片機(jī)。</p><p> 圖7 AT89C51的引腳</p><p> AT89C51的引腳說明如下:</p><p> (1)VCC:電源電壓;</p>
23、<p> (2)GND:接地;</p><p> (3)P0口:P0口是一組8位漏極開路雙向I/O口,每位引腳可驅(qū)動8個(gè)TTL邏輯門路口</p><p> 管腳寫“1”時(shí),被定義為高阻抗輸入。在訪問外部數(shù)據(jù)存儲器或程序存儲器時(shí),它可以被定</p><p> 義為數(shù)據(jù)總線和地址總線的低八位。在FLASH編程時(shí),P0 口作為原碼輸入口;當(dāng)FLASH
24、</p><p> 進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須接上拉電阻。</p><p> (4) RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。</p><p> (5)/PSEN:外部程序存儲器的選通信號</p><p> (6)XTAL1:片內(nèi)高增益反向放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。(
25、7)XTAL2:片內(nèi)高增益反向放大器的輸出端。</p><p> 3.3 4位一體七段數(shù)碼管</p><p> 本實(shí)驗(yàn)的顯示模塊主要由一個(gè)4位一體的7段LED數(shù)碼管構(gòu)成,用于顯示測量到的電壓值。它是一個(gè)共陰極的數(shù)碼管,每一位數(shù)碼管的原理圖如圖所示。每一位數(shù)碼管的a,b,c,d,e,f,g和dp端都各自連接在一起,用于接收AT89C51的P0口產(chǎn)生的顯示段碼。1,2,3,4引腳端為其位選
26、端,用于接收AT89C51的P1口產(chǎn)生的位選碼。圖8為一位數(shù)碼管的原理圖。</p><p> 圖8一位數(shù)碼管的原理圖。</p><p><b> 4 電路原理說明 </b></p><p><b> 4.1 模數(shù)轉(zhuǎn)換</b></p><p> 如圖1電路原理圖所示,三個(gè)地址位ADDA,ADD
27、B,ADDC均接高電平+5V電壓,因而所需測量的外部電壓可由ADC0808的IN7端口輸入。由于ADC0808在進(jìn)行A/D轉(zhuǎn)換時(shí)需要有CLK信,本設(shè)計(jì)中利用AT89C51的定時(shí)中斷產(chǎn)生一個(gè)100KHZ的脈沖,由P1.4口送給ADC0808的時(shí)鐘端,通過軟件給其輸入一個(gè)正脈沖,可立即啟動A/D轉(zhuǎn)換。在軟件設(shè)計(jì)中,由于我們對單片機(jī)知識還沒能很熟練的掌握,用中斷方式較復(fù)雜,且這個(gè)程序CPU工作量不大,查詢方式對速度不會產(chǎn)生影響,所以我們采用查
28、詢方式,確保仿真的進(jìn)度和準(zhǔn)確度。</p><p> 在A/D轉(zhuǎn)換開始之前,逐次逼近寄存器的SAR的內(nèi)容為0,在A/D轉(zhuǎn)換過程中,SAR存放“試探”數(shù)字量,在轉(zhuǎn)換完畢后,它的內(nèi)容即為A/D轉(zhuǎn)換的結(jié)果數(shù)字量。邏輯控制與定時(shí)電路在START正脈沖啟動后工作,沒來一個(gè)CLK脈沖,該電路就可能告知向SAR中傳送一次試探值,對應(yīng)輸出U0與U1比較,確定一次逼近值,經(jīng)過8次逼近,即可獲得最后轉(zhuǎn)換的結(jié)果數(shù)字量。此處,EOC端口
29、的信號顯示ADC0808的狀態(tài),開始A/D轉(zhuǎn)換時(shí),EOC為低電平,轉(zhuǎn)換結(jié)束后,輸出高電平。</p><p> 4.2 數(shù)據(jù)處理及控制</p><p> A/D轉(zhuǎn)換完畢后,單片機(jī)的P1.6口接收到一高電平,立馬通過P1將OE置1,ADC0808的三態(tài)輸出鎖存器被打開,轉(zhuǎn)換完的數(shù)字信號經(jīng)過與D0~D7相連的P0口進(jìn)入AT89C51。AT89C51根據(jù)公式1-1將數(shù)字信號轉(zhuǎn)換為模擬量,然后利
30、用程序獲取模擬量的每一位,分別通過P0口輸出到LED上。與此同時(shí),AT89C51會通過P1.0~P1.3口選擇用哪一段LED顯示所傳出的數(shù)據(jù)。例如,當(dāng)P1.0~P1.3=1110,則LED接收到的數(shù)據(jù)會在第四段LED上顯示。 </p><p> 另外,AT89C51一旦獲得了數(shù)據(jù)后便會將ST置0,即模數(shù)轉(zhuǎn)換器停止轉(zhuǎn)換,知道LED獲得新的數(shù)據(jù)并顯示出來,ST才會重新置1.由于AT89C51轉(zhuǎn)換速率很快(微妙量級)
31、,所</p><p> 以不會影響其接收新的數(shù)據(jù)。最終顯示如下圖所示。</p><p> 圖9 運(yùn)行中的電路圖</p><p><b> 5 參考文獻(xiàn)</b></p><p> [1] 胡乾坤,李廣斌,李玲,喻紅.單片微型計(jì)算機(jī)原理與應(yīng)用.華中科技大學(xué)出版社,2005</p><p>
32、[2] 朱清慧,張鳳瑞,翟天嵩,王志奎.Proteus教程.清華大學(xué)出版社,2008</p><p> [3] 李廣弟.單片機(jī)基礎(chǔ).北京航空航天大學(xué)出版社,1994</p><p> [4] 譚運(yùn)光.單片機(jī)開發(fā)手冊.華齡出版社,1994</p><p><b> 6 結(jié)論及心得</b></p><p> 我選擇的
33、是簡易直流電壓表,這個(gè)所用到的芯片都是我們比較熟悉的,89c52和0808模/ 數(shù)轉(zhuǎn)換器。總的來說,這次課設(shè)完成得還算順利,因?yàn)槔蠋熃o的題目都很經(jīng)典,加之所要實(shí)現(xiàn)的功能也很簡單,因而我們能夠獲得的資源就比較豐富。在網(wǎng)上看了許多相關(guān)的電路和程序,也試過直接復(fù)制,但是由于程序不全而泡湯,于是決定自己設(shè)計(jì)電路和編寫匯編程序。在編寫匯編程序時(shí),循環(huán)顯示部分是用以往課程設(shè)計(jì)時(shí)編寫的程序的,直接復(fù)制到這個(gè)設(shè)計(jì)中來時(shí),忘記了刪除一個(gè)命令,導(dǎo)致最后一位
34、在仿真的時(shí)候總是顯示有問題,甚至顯示不了。后來經(jīng)過仔細(xì)檢查,終于發(fā)現(xiàn)了問題的所在并及時(shí)進(jìn)行了修正。在編寫程序過程中還出現(xiàn)了一個(gè)比較有趣的問題,這也算是匯編程序的一個(gè)弊端,就是做乘除的時(shí)候,結(jié)果很容易超出八位,如果不加以處理的話,很容易導(dǎo)致顯示不正常。</p><p> 下面是一段用于中斷處理顯示數(shù)據(jù)的程序。由于模數(shù)轉(zhuǎn)換之后得到的是0~255的八位二進(jìn)制數(shù),所以要通過中斷程序?qū)⒅癁?~5.00的十進(jìn)制小數(shù)。從前
35、面分析我們知道,只要將得到的二進(jìn)制數(shù)除以51,便可以直接得到個(gè)位。由于匯編不能處理小數(shù),所以只能將所得的余數(shù)乘以10,再除以51,得到十分位,以此類推,可以繼續(xù)得到百分位。但是問題就出現(xiàn)在這里,以十分位的計(jì)算為例。得到個(gè)位后,當(dāng)余數(shù)超過25,比如是26時(shí),乘以10的話得到260,就會溢出,而很難進(jìn)行除法操作得到正確的十分位結(jié)果。所以一開始我們就把乘數(shù)減小,變?yōu)?,這樣的話即使余數(shù)是50(除數(shù)為51,50是最大的余數(shù),余數(shù)保存在B),乘以
36、5,得到的是250,也不會溢出,然后再除以51,這樣可以得到十分位的一半,最后把結(jié)果乘以2,就能得到正確的十分位了。于是我們就這樣進(jìn)行編程進(jìn)行仿真,結(jié)果當(dāng)測量電壓十分位為偶數(shù)時(shí),可以部分正常顯示,當(dāng)測量電壓十分位為奇數(shù)時(shí),則依然顯示的是偶數(shù)。這是顯而易見的,因?yàn)樽詈笪覀兪怯蒙坛艘?得到的結(jié)果,還是由于匯編只能進(jìn)行整數(shù)除法的問題,導(dǎo)致結(jié)果只能是偶數(shù)。最后通過思考,想出了幾個(gè)方案,一是利用溢出標(biāo)志位來決定結(jié)果是否進(jìn)行</p>
37、<p><b> INSER:</b></p><p> PUSH PSW;</p><p> PUSH ACC;現(xiàn)場保護(hù)</p><p><b> PUSH DPH;</b></p><p><b> PUSH DPL;</b></p>
38、<p><b> SETB P3.1</b></p><p><b> CLR EA</b></p><p><b> MOV A,P2;</b></p><p> MOV B,#33H;給B及時(shí)數(shù)55</p><p><b> DIV AB;&l
39、t;/b></p><p> MOV R0,A;以上可得到個(gè)位</p><p><b> ;;;;;;;;</b></p><p><b> MOV A,B</b></p><p> MOV B,#5;給B及時(shí)數(shù)5,與A相乘,避免得數(shù)超過八位</p><p>&
40、lt;b> MUL AB;</b></p><p> MOV B,#33H;</p><p><b> DIV AB;</b></p><p><b> MOV R4,B;</b></p><p> MOV B,#2H;再乘以2,以達(dá)到目的</p><
41、p><b> MUL AB;</b></p><p><b> MOV R1,A;</b></p><p><b> MOV A,R4;</b></p><p><b> CLR CY;</b></p><p> CJNE A,#26,LO
42、OP1;判斷余數(shù),以確定A是否少加了1</p><p> SUBB A,#26;超過51的一半則減去26或者25,并使上一位加1</p><p><b> INC R1;</b></p><p><b> LOOP1:</b></p><p><b> JC LOOP2;</
43、b></p><p> SUBB A,#25;等于26也進(jìn)行加1操作</p><p><b> INC R1;</b></p><p><b> LOOP2:</b></p><p> MOV B,#2;余數(shù)乘以2,以達(dá)到實(shí)際的余數(shù)</p><p> MUL
44、AB;以上可得到十分位</p><p><b> ;;;;;;;;</b></p><p> MOV B,#5H給B及時(shí)數(shù)5,與A相乘,避免得數(shù)超過八位</p><p><b> MUL AB;</b></p><p> MOV B,#33H;給B及時(shí)數(shù)51</p><p
45、><b> DIV AB;</b></p><p><b> MOV R4,B;</b></p><p> MOV B,#2; 再乘以2,以達(dá)到目的</p><p><b> MUL AB;</b></p><p><b> MOV R2,A;<
46、/b></p><p><b> MOV A,R4;</b></p><p><b> CLR CY;</b></p><p> CJNE A,#26,LOOP3;同上面的操作,以得到百分位</p><p><b> INC R2;</b></p>
47、<p><b> LOOP3:</b></p><p><b> JC LOOP4;</b></p><p> INC R2;以上得到百分位</p><p><b> LOOP4:</b></p><p><b> ;;;;;;;;</b&
48、gt;</p><p> POP DPL;恢復(fù)現(xiàn)場</p><p><b> POP DPH;</b></p><p><b> POP ACC;</b></p><p><b> POP PSW;</b></p><p><b>
49、RETI</b></p><p><b> 7 附錄</b></p><p><b> 7.1 調(diào)試報(bào)告</b></p><p> 由于此次設(shè)計(jì)的程序較簡單,因而其在keil里運(yùn)行的時(shí)候很順利。但是當(dāng)將程序加入連接好的電路中并開始仿真時(shí),就遇到了上述的問題。通過思考解決了這些問題之后,仿真就完全沒問題了。
50、</p><p> 在焊實(shí)際元件的過程中,第一次把電路焊好了,但是完全沒有顯示。第二次重新焊了電路,終于實(shí)現(xiàn)了功能。電壓的調(diào)節(jié)是通過電位器來實(shí)現(xiàn)的,如果要測量其他電壓,只需要把電位器的兩端拆下來即可。不過在過程中還是遇到了單片機(jī)的輸出電流不足以驅(qū)動數(shù)碼管的為題,導(dǎo)致顯示的時(shí)候亮度不夠,于是利用反相器來放大電流,就可以在白天也有比較好的亮度用于觀察了。實(shí)際電路圖及工作狀態(tài)圖如下:</p><p
51、><b> 源程序如下:</b></p><p><b> ORG 0000H</b></p><p> LJMP CLOCK</p><p><b> ORG 0003H</b></p><p> LJMP INSER;跳轉(zhuǎn)到外部中斷0</p>
52、<p><b> ORG 000BH</b></p><p> LJMP INSER1;</p><p><b> ORG 0030H</b></p><p><b> CLOCK:</b></p><p> MOV DPTR,#TAB;把tab的首地址給d
53、ptr</p><p> MOV R0,#00H;賦初值</p><p> MOV R1,#00H;</p><p> MOV R2,#00H;</p><p> MOV TL0,#0FEH;</p><p><b> SETB ET0;</b></p><p>
54、 MOV TH0,#0FFH</p><p> MOV TL0,#0E0H</p><p><b> SETB IT0</b></p><p><b> SETB TR0</b></p><p><b> SETB PX0</b></p><p&g
55、t; SETB EX0;打開中斷0</p><p> SETB EA;打開中斷開關(guān)</p><p><b> CONNECT:</b></p><p> MOV R7,#10</p><p><b> SETB P3.0</b></p><p><b>
56、 CLR P3.0</b></p><p><b> setb ea</b></p><p> DISPLAY:;循環(huán)顯示程序段</p><p><b> CLR P1.1</b></p><p> MOV A,#0FH;給A賦值,用來和時(shí)進(jìn)行邏輯運(yùn)算,以達(dá)到分別顯示時(shí)的十位和個(gè)
57、位</p><p> ANL A,R0;邏輯與,把R0的值給A</p><p> MOVC A,@A+DPTR;查表得到電壓個(gè)位的位選碼</p><p> MOV P0,A;送出顯示</p><p><b> CLR P0.7</b></p><p> LCALL DELAY</p
58、><p><b> SETB P1.1</b></p><p><b> ;;;;;;</b></p><p><b> CLR P1.2</b></p><p> MOV A,#0FH;</p><p> ANL A,R1;邏輯與,把R1的低四位
59、給A</p><p> MOVC A,@A+DPTR;查表得到十分位的位選碼</p><p> MOV P0,A;送出顯示</p><p> LCALL DELAY</p><p><b> SETB P1.2</b></p><p><b> ;;;;;;</b>
60、</p><p><b> CLR P1.3</b></p><p> MOV A,#0FH;</p><p> ANL A,R2;把R2低四位給A</p><p> MOVC A,@A+DPTR;查表得百分位的位選碼</p><p> MOV P0,A;送出顯示</p>
61、<p><b> SETB P0.7</b></p><p> LCALL DELAY</p><p><b> SETB P1.3</b></p><p><b> ;;;;;;</b></p><p> DJNZ R7,L3</p><
62、;p><b> CLR P3.1</b></p><p><b> SETB P3.0</b></p><p> LJMP CONNECT;</p><p><b> L3:</b></p><p> LJMP DISPLAY;</p><
63、p><b> INSER:</b></p><p> PUSH PSW;</p><p> PUSH ACC;現(xiàn)場保護(hù)</p><p><b> PUSH DPH;</b></p><p><b> PUSH DPL;</b></p><
64、p><b> SETB P3.1</b></p><p><b> CLR EA</b></p><p><b> MOV A,P2;</b></p><p> MOV B,#33H;</p><p><b> DIV AB;</b><
65、;/p><p><b> MOV R0,A;</b></p><p><b> ;;;;;;;;</b></p><p><b> MOV A,B</b></p><p><b> MOV B,#5;</b></p><p>&
66、lt;b> MUL AB;</b></p><p> MOV B,#33H;</p><p><b> DIV AB;</b></p><p><b> MOV R4,B;</b></p><p> MOV B,#2H;</p><p><b
67、> MUL AB;</b></p><p><b> MOV R1,A;</b></p><p><b> MOV A,R4;</b></p><p><b> CLR CY;</b></p><p> CJNE A,#26,LOOP1;</p
68、><p> SUBB A,#26;</p><p><b> INC R1;</b></p><p><b> LOOP1:</b></p><p><b> JC LOOP2;</b></p><p> SUBB A,#25;</p>
69、<p><b> INC R1;</b></p><p><b> LOOP2:</b></p><p><b> MOV B,#2;</b></p><p><b> MUL AB;</b></p><p><b> ;
70、;;;;;;;</b></p><p><b> MOV B,#5H</b></p><p><b> MUL AB;</b></p><p> MOV B,#33H;</p><p><b> DIV AB;</b></p><p>
71、;<b> MOV R4,B;</b></p><p><b> MOV B,#2;</b></p><p><b> MUL AB;</b></p><p><b> MOV R2,A;</b></p><p><b> MOV A,
72、R4;</b></p><p><b> CLR CY;</b></p><p> CJNE A,#26,LOOP3</p><p><b> INC R2;</b></p><p><b> LOOP3:</b></p><p>&
73、lt;b> JC LOOP4;</b></p><p><b> INC R2;</b></p><p><b> LOOP4:</b></p><p><b> ;;;;;;;;</b></p><p> POP DPL;恢復(fù)現(xiàn)場</p&g
74、t;<p><b> POP DPH;</b></p><p><b> POP ACC;</b></p><p><b> POP PSW;</b></p><p><b> RETI</b></p><p><b>
75、DELAY:</b></p><p> MOV R5,#01H;延時(shí)500us子程序</p><p><b> L1:</b></p><p> MOV R6,#0FFH;</p><p><b> L2:</b></p><p> DJNZ R6,L
76、2;</p><p> DJNZ R5,L1;</p><p><b> RET</b></p><p> TAB:DB 0C0H,0F9H,0A4H,0B0H,99H</p><p> DB 92H,82H,0F8H,80H,90H</p><p><b> INSER1:&
77、lt;/b></p><p><b> CLR EX0;</b></p><p><b> CPL P3.3;</b></p><p> MOV TH0,#0FFH;</p><p> MOV TL0,#0E0H;</p><p><b> SETB
78、 EX0;</b></p><p><b> RETI</b></p><p><b> END</b></p><p><b> 7.2 元器件清單</b></p><p> 1. AT89C51芯片 1塊</p&g
79、t;<p> 2. ADC0808芯片 1塊</p><p> 3. 4位一體數(shù)碼 1個(gè)</p><p> 4. 6MHz晶振 1個(gè)</p><p> 5. 33pF電容 2個(gè)</p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)-- 簡易直流電壓表的設(shè)計(jì)
- 基于單片機(jī)的直流電壓表的課程設(shè)計(jì)
- 數(shù)字直流電壓表設(shè)計(jì)方案
- 數(shù)字電壓表課程設(shè)計(jì)--簡易數(shù)字電壓表的設(shè)計(jì)
- 簡易數(shù)字電壓表課程設(shè)計(jì)
- 簡易數(shù)字電壓表 課程設(shè)計(jì)
- 簡易數(shù)字電壓表課程設(shè)計(jì)
- 基于_單片機(jī)的簡易數(shù)字直流電壓表畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的簡易數(shù)字直流電壓表畢業(yè)設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)報(bào)告--簡易電壓表設(shè)計(jì)
- 數(shù)字電壓表課程設(shè)計(jì)--基于單片機(jī)的簡易數(shù)字電壓表的設(shè)計(jì)
- 基于ethercat模塊的總線直流電壓表設(shè)計(jì)-開題答辯
- 電子測量課程設(shè)計(jì)---直流數(shù)字電壓表
- 數(shù)字電壓表課程設(shè)計(jì)--基于單片機(jī)的簡易數(shù)字電壓表的設(shè)計(jì)
- 4位半積分式數(shù)字直流電壓表設(shè)計(jì).pdf
- 單片機(jī)課程設(shè)計(jì)--簡易數(shù)字電壓表的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--簡易數(shù)字電壓表
- 課程設(shè)計(jì)----單片機(jī)簡易數(shù)字電壓表
- 基于avratmega16數(shù)字式直流電壓表設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--簡易數(shù)字電壓表的設(shè)計(jì)
評論
0/150
提交評論