單片機(jī)課程設(shè)計(jì)(波形發(fā)生器)_第1頁(yè)
已閱讀1頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  目錄</b></p><p>  1 波形發(fā)生器概述1</p><p>  1.1波形發(fā)生器的背景1</p><p>  1.2波形發(fā)生器的發(fā)展?fàn)顩r1</p><p><b>  2 設(shè)計(jì)要求2</b></p><p><b>

2、  3 硬件設(shè)計(jì)3</b></p><p>  3.1 設(shè)計(jì)方案3</p><p>  3.1.1 系統(tǒng)總框圖3</p><p>  3.2 8255可編程通用并行接口芯片4</p><p>  3.3 DAC0832芯片6</p><p>  3.4 ADC0832芯片7</p>

3、<p>  3.5 51單片機(jī)原理………………………………………………….</p><p>  3.6 硬件原理圖設(shè)計(jì)……………………………………………….</p><p><b>  4 軟件設(shè)計(jì)8</b></p><p>  4.1軟件框圖設(shè)計(jì)…………………………………………………</p><p>  

4、4.2 源程序代碼…………………………………………………………</p><p>  5系統(tǒng)調(diào)試及分析17</p><p>  5.1 運(yùn)行結(jié)果17</p><p>  5.2軟件調(diào)試錯(cuò)誤及處理19</p><p>  5.3硬件接線調(diào)試19</p><p><b>  6心得體會(huì)19</b&g

5、t;</p><p><b>  參考文獻(xiàn)19</b></p><p><b>  附錄120</b></p><p><b>  1.波形發(fā)生器概述</b></p><p><b>  1.1背景</b></p><p>  

6、波形發(fā)生器也稱函數(shù)發(fā)生器,作為實(shí)驗(yàn)信號(hào)源,是現(xiàn)今各種電子電路實(shí)驗(yàn)設(shè)計(jì)應(yīng)用中必不可少的儀器設(shè)備之一。目前,市場(chǎng)上常見的波形發(fā)生器多為純硬件的搭接而成,且波形種類有限,多為鋸齒波,正弦波,方波,三角波等波形。在電子工程、通信工程、自動(dòng)控制、遙測(cè)控制、測(cè)量?jī)x器、儀表和計(jì)算機(jī)等技術(shù)領(lǐng)域,經(jīng)常需要用到各種各樣的信號(hào)波形發(fā)生器。隨著集成電路的迅速發(fā)展,用集成電路可很方便地構(gòu)成各種信號(hào)波形發(fā)生器。用集成電路實(shí)現(xiàn)的信號(hào)波形發(fā)生器與其它信號(hào)波形發(fā)生器相比

7、,其波形質(zhì)量、幅度和頻率穩(wěn)定性等性能指標(biāo),都有了很大的提高。</p><p>  1.2波形發(fā)生器的發(fā)展?fàn)顩r及應(yīng)用</p><p>  波形發(fā)生器是能夠產(chǎn)生大量的標(biāo)準(zhǔn)信號(hào)和用戶定義信號(hào),并保證高精度、高穩(wěn)定性、可重復(fù)性和易操作性的電子儀器。函數(shù)波形發(fā)生器具有連續(xù)的相位變換、和頻率穩(wěn)定性等優(yōu)點(diǎn),不僅可以模擬各種復(fù)雜信號(hào),還可對(duì)頻率、幅值、相移、波形進(jìn)行動(dòng)態(tài)、及時(shí)的控制,并能夠與其它儀器進(jìn)行通

8、訊,組成自動(dòng)測(cè)試系統(tǒng),因此被廣泛用于自動(dòng)控制系統(tǒng)、震動(dòng)激勵(lì)、通訊和儀器儀表領(lǐng)域。</p><p>  在 70 年代前,信號(hào)發(fā)生器主要有兩類:正弦波和脈沖波,而函數(shù)發(fā)生器介于兩類之間,能夠提供正弦波、余弦波、方波、三角波、上弦波等幾種常用標(biāo)準(zhǔn)波形,產(chǎn)生其它波形時(shí),需要采用較復(fù)雜的電路和機(jī)電結(jié)合的方法。這個(gè)時(shí)期的波形發(fā)生器多采用模擬電子技術(shù),而且模擬器件構(gòu)成的電路存在著尺寸大、價(jià)格貴、功耗大等缺點(diǎn),并且要產(chǎn)生較為復(fù)

9、雜的信號(hào)波形,則電路結(jié)構(gòu)非常復(fù)雜。同時(shí),主要表現(xiàn)為兩個(gè)突出問(wèn)題,一是通過(guò)電位器的調(diào)節(jié)來(lái)實(shí)現(xiàn)輸出頻率的調(diào)節(jié),因此很難將頻率調(diào)到某一固定值;二是脈沖的占空比不可調(diào)節(jié)。</p><p>  在 70 年代后,微處理器的出現(xiàn),可以利用處理器、A/D/和 D/A,硬件和軟件使波形發(fā)生器的功能擴(kuò)大,產(chǎn)生更加復(fù)雜的波形。這時(shí)期的波形發(fā)生器多以軟件為主,實(shí)質(zhì)是采用微處理器對(duì) DAC的程序控制,就可以得到各種簡(jiǎn)單的波形。 <

10、/p><p>  90 年代末,出現(xiàn)幾種真正高性能、高價(jià)格的函數(shù)發(fā)生器、但是HP公司推出了型號(hào)為 HP770S的信號(hào)模擬裝置系統(tǒng),它由 HP8770A任意波形數(shù)字化和 HP1776A波形發(fā)生軟件組成。HP8770A實(shí)際上也只能產(chǎn)生8 中波形,而且價(jià)格昂貴。不久以后,Analogic公司推出了型號(hào)為 Data-2020的多波形合成器,Lecroy 公司生產(chǎn)的型號(hào)為9100 的任意波形發(fā)生器等。 </p>

11、<p>  到了二十一世紀(jì),隨著集成電路技術(shù)的高速發(fā)展,出現(xiàn)了多種工作頻率可過(guò) GHz 的DDS 芯片,同時(shí)也推動(dòng)了函數(shù)波形發(fā)生器的發(fā)展,2003 年,Agilent的產(chǎn)品 33220A能夠產(chǎn)生 17 種波形,最高頻率可達(dá)到 20M,2005 年的產(chǎn)品N6030A 能夠產(chǎn)生高達(dá) 500MHz 的頻率,采樣的頻率可達(dá) 1.25GHz。由上面的產(chǎn)品可以看出,函數(shù)波形發(fā)生器發(fā)展很快近幾年來(lái),國(guó)際上波形發(fā)生器技術(shù)發(fā)展主要體現(xiàn)在以

12、下幾個(gè)方面:</p><p> ?。?)過(guò)去由于頻率很低應(yīng)用的范圍比較狹小,輸出波形頻率的提高,使得波形發(fā)生器能應(yīng)用于越來(lái)越廣的領(lǐng)域。波形發(fā)生器軟件的開發(fā)正使波形數(shù)據(jù)的輸入變得更加方便和容易。波形發(fā)生器通常允許用一系列的點(diǎn)、直線和固定的函數(shù)段把波形數(shù)據(jù)存入存儲(chǔ)器。同時(shí)可以利用一種強(qiáng)有力的數(shù)學(xué)方程輸入方式,復(fù)雜的波形可以由幾個(gè)比較簡(jiǎn)單的公式復(fù)合成 v=f (t)形式的波形方程的數(shù)學(xué)表達(dá)式產(chǎn)生。從而促進(jìn)了函數(shù)波形發(fā)生

13、器向任意波形發(fā)生器的發(fā)展,各種計(jì)算機(jī)語(yǔ)言的飛速發(fā)展也對(duì)任意波形發(fā)生器軟件技術(shù)起到了推動(dòng)作用。目前可以利用可視化編程語(yǔ)言(如Visual Basic ,Visual C 等等)編寫任意波形發(fā)生器的軟面板,這樣允許從計(jì)算機(jī)顯示屏上輸入任意波形,來(lái)實(shí)現(xiàn)波形的輸入。 </p><p> ?。?)與VXI資源結(jié)合。目前,波形發(fā)生器由獨(dú)立的臺(tái)式儀器和適用于個(gè)人計(jì)算機(jī)的插卡以及新近開發(fā)的VXI模塊。由于VXI總線的逐漸成熟

14、和對(duì)測(cè)量?jī)x器的高要求,在很多領(lǐng)域需要使用VXI系統(tǒng)測(cè)量產(chǎn)生復(fù)雜的波形,VXI的系統(tǒng)資源提供了明顯的優(yōu)越性,但由于開發(fā)VXI模塊的周期長(zhǎng),而且需要專門的VXI機(jī)箱的配套使用,使得波形發(fā)生器VXI模塊僅限于航空、軍事及國(guó)防等大型領(lǐng)域。在民用方面,VXI模塊遠(yuǎn)遠(yuǎn)不如臺(tái)式儀器更為方便。 </p><p> ?。?)隨著信息技術(shù)蓬勃發(fā)展,臺(tái)式儀器在走了一段下坡路之后,又重新繁榮起來(lái)。不過(guò)現(xiàn)在新的臺(tái)式儀器的形態(tài),和幾年前的己

15、有很大的不同。這些新一代臺(tái)式儀器具有多種特性,可以執(zhí)行多種功能。而且外形尺寸與價(jià)格,都比過(guò)去的類似產(chǎn)品減少了一半。</p><p>  早在 1978 年,由美國(guó) Wavetek 公司和日本東亞電波工業(yè)公司公布了最高取樣頻率為 5MHz ,可以形成 256 點(diǎn)(存儲(chǔ)長(zhǎng)度)波形數(shù)據(jù),垂直分辨率為8bit,主要用于振動(dòng)、醫(yī)療、材料等領(lǐng)域的第一代高性能信號(hào)源,經(jīng)過(guò)將近30年的發(fā)展,伴隨著電子元器件、電路、及生產(chǎn)設(shè)備的高

16、速化、高集成化,波形發(fā)生器的性能有了飛速的提高。變得操作越來(lái)越簡(jiǎn)單而輸出波形的能力越來(lái)越強(qiáng)。波形操作方法的好壞,是由波形發(fā)生器控制軟件質(zhì)量保證的,編輯功能增加的越多,波形形成的操作性越好。</p><p><b>  2.設(shè)計(jì)要求</b></p><p><b>  2.1設(shè)計(jì)內(nèi)容</b></p><p>  設(shè)計(jì)一個(gè)波形

17、發(fā)生器,能產(chǎn)生三角波、方波、正弦波。用按鍵來(lái)選擇波形輸出(A按鍵輸出三角波,B按鍵輸出方波,C按鍵輸出正弦波),調(diào)節(jié)電位器能改變輸出波形的頻率。并用四位LED顯示,第1位顯示目前輸出什么波形,后3位顯示頻率值,即經(jīng)A/D轉(zhuǎn)換后得到的數(shù)字值。</p><p><b>  2.2設(shè)計(jì)目的</b></p><p>  1.了解波形發(fā)生器及鍵盤掃描的基本方法</p>

18、;<p>  2.掌握軟硬件的相互配合和相互作用的關(guān)系</p><p><b>  3.硬件設(shè)計(jì)</b></p><p><b>  3.1設(shè)計(jì)方案</b></p><p>  3.1.1系統(tǒng)總體框圖:</p><p><b>  系統(tǒng)框圖</b></p&g

19、t;<p>  使用51單片機(jī)來(lái)控制8255輸入輸出,鍵盤輸入和七段數(shù)碼管顯示由8255控制,按A選擇三角波代碼為A,按B選擇方波代碼為B,按下C選擇正弦波代碼為C。通過(guò)軟件程序來(lái)判斷是哪種波形,由DAC0832產(chǎn)生波形。通過(guò)ADC0809,將模擬量轉(zhuǎn)換成數(shù)字量,數(shù)字量可作為軟件中的參數(shù),通過(guò)電位器調(diào)節(jié)模擬量而改變數(shù)字量從而改變波形頻率。波形的頻率可以通過(guò)一系列的算法計(jì)算出顯示在數(shù)碼管上。</p><p

20、>  3.2 8255芯片</p><p>  8255是Intel公司生產(chǎn)的可編程并行I/O接口芯片,有3個(gè)8位并行I/O口。具有3個(gè)通道3種工作方式的可編程并行接口芯片(40引腳)。 其各口功能可由軟件選擇,使用靈活,通用性強(qiáng)。8255可作為單片機(jī)與多種外設(shè)連接時(shí)的中間接口電路。 </p><p>  8255作為主機(jī)與外設(shè)的連接芯片,必須提供與主機(jī)相連的3個(gè)總線接口,即數(shù)據(jù)線、

21、地址線、控制線接口。同時(shí)必須具有與外設(shè)連接的接口A、B、C口。由于8255可編程,所以必須具有邏輯控制部分,因而8255內(nèi)部結(jié)構(gòu)分為3個(gè)部分:與CPU連接部分、與外設(shè)連接部分、控制部分。 </p><p>  1)與CPU連接部分 </p><p>  根據(jù)定義,8255能并行傳送8位數(shù)據(jù),所以其數(shù)據(jù)線為8根D0~D7。由于8255具有3個(gè)通道A、B、C,所以只要兩根地址線就能尋址A、B、

22、C口及控制寄存器,故地址線為兩根A0~A1。此外CPU要對(duì)8255進(jìn)行讀、寫與片選操作,所以控制線為片選、復(fù)位、讀、寫信號(hào)。各信號(hào)的引腳編號(hào)如下: </p><p> ?。?)數(shù)據(jù)總線DB:編號(hào)為D0~D7,用于8255與CPU傳送8位數(shù)據(jù)。 </p><p> ?。?)地址總線AB:編號(hào)為A0~A1,用于選擇A、B、C口與控制寄存器。 </p><p> ?。?)

23、控制總線CB:片選信號(hào)、復(fù)位信號(hào)RST、寫信號(hào)、讀信號(hào)。當(dāng)CPU要對(duì)8255進(jìn)行讀、寫操作時(shí),必須先向8255發(fā)片選信號(hào)選中8255芯片,然后發(fā)讀信號(hào)或?qū)懶盘?hào)對(duì)8255進(jìn)行讀或?qū)憯?shù)據(jù)的操作。 </p><p>  2)與外設(shè)接口部分 </p><p>  根據(jù)定義,8255有3個(gè)通道A、B、C與外設(shè)連接,每個(gè)通道又有8根線與外設(shè)連接,所以8255可以用24根線與外設(shè)連接,若進(jìn)行開關(guān)量控制,

24、則8255可同時(shí)控制24路開關(guān)。各通道的引腳編號(hào)如下: </p><p>  (1)A口:編號(hào)為PA0~PA7,用于8255向外設(shè)輸入輸出8位并行數(shù)據(jù)。 </p><p> ?。?)B口:編號(hào)為PB0~PB7,用于8255向外設(shè)輸入輸出8位并行數(shù)據(jù)。 </p><p> ?。?)C口:編號(hào)為PC0~PC7,用于8255向外設(shè)輸入輸出8位并行數(shù)據(jù),當(dāng)8255工作于應(yīng)答

25、I/O方式時(shí),C口用于應(yīng)答信號(hào)的通信。 </p><p><b>  3)控制器 </b></p><p>  8255將3個(gè)通道分為兩組,即PA0~PA7與PC4~PC7組成A組,PB0~PB7與PC0~PC3組成B組。如圖7.5所示,相應(yīng)的控制器也分為A組控制器與B組控制器,各組控制器的作用如下: </p><p> ?。?)A組控制器:控

26、制A口與上C口的輸入與輸出。 </p><p> ?。?)B組控制器:控制B口與下C口的輸入與輸出。 </p><p><b>  8255管腳</b></p><p><b>  特性</b></p><p>  (1)一個(gè)并行輸入/輸出的LSI芯片,多功能的I/O器件,可作為CPU總線與外圍的接

27、口. </p><p>  (2)具有24個(gè)可編程設(shè)置的I/O口,即3組8位的I/O口為PA口,PB口和PC口.它們又可分為兩組12位的I/O口,A組包括A口及C口(高4位,PC4~PC7),B組包括B口及C口(低4位,PC0~PC3).A組可設(shè)置為基本的I/O口,閃控(STROBE)的I/O閃控式,雙向I/O3種模式;B組只能設(shè)置為基本I/O或閃控式I/O兩種模式,而這些操作模式完全由控制寄存器的控制字決定.

28、</p><p><b>  引腳功能</b></p><p>  RESET:復(fù)位輸入線,當(dāng)該輸入端處于高電平時(shí),所有內(nèi)部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成輸入方式。 </p><p>  CS:芯片選擇信號(hào)線,當(dāng)這個(gè)輸入引腳為低電平時(shí),即/CS=0時(shí),表示芯片被選中,允許8255與CPU進(jìn)行通訊;/CS=1時(shí),8255無(wú)

29、法與CPU做數(shù)據(jù)傳輸. </p><p>  RD:讀信號(hào)線,當(dāng)這個(gè)輸入引腳為低跳變沿時(shí),即/RD產(chǎn)生一個(gè)低脈沖且/CS=0時(shí),允許8255通過(guò)數(shù)據(jù)總線向CPU發(fā)送數(shù)據(jù)或狀態(tài)信息,即CPU從8255讀取信息或數(shù)據(jù)。 </p><p>  WR:寫入信號(hào),當(dāng)這個(gè)輸入引腳為低跳變沿時(shí),即/WR產(chǎn)生一個(gè)低脈沖且/CS=0時(shí),允許CPU將數(shù)據(jù)或控制字寫入8255。 </p><

30、p>  D0~D7:三態(tài)雙向數(shù)據(jù)總線,8255與CPU數(shù)據(jù)傳送的通道,當(dāng)CPU 執(zhí)行輸入輸出指令時(shí),通過(guò)它實(shí)現(xiàn)8位數(shù)據(jù)的讀/寫操作,控制字和狀態(tài)信息也通過(guò)數(shù)據(jù)總線傳送。 </p><p>  8255具有3個(gè)相互獨(dú)立的輸入/輸出通道端口,用+5V單電源供電,能在以下三種方式下工作。 </p><p>  方式0————基本輸入輸出方式;方式1————選通輸入/出方式;方式2————雙

31、向選通輸入/輸出方式; </p><p>  PA0~PA7:端口A輸入輸出線,一個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個(gè)8位的數(shù)據(jù)輸入鎖存器。 工作于三種方式中的任何一種; </p><p>  PB0~PB7:端口B輸入輸出線,一個(gè)8位的I/O鎖存器, 一個(gè)8位的輸入輸出緩沖器。 不能工作于方式二; </p><p>  PC0~PC7:端口C輸入輸出線,一個(gè)8位

32、的數(shù)據(jù)輸出鎖存器/緩沖器, 一個(gè)8位的數(shù)據(jù)輸入緩沖器。端口C可以通過(guò)工作方式設(shè)定而分成2個(gè)4位的端口, 每個(gè)4位的端口包含一個(gè)4位的鎖存器,分別與端口A和端口B配合使用,可作為控制信號(hào)輸出或狀態(tài)信號(hào)輸入端口。'不能工作于方式一或二。 </p><p>  A1,A0:地址選擇線,用來(lái)選擇8255的PA口,PB口,PC口和控制寄存器. </p><p>  當(dāng)A1=0,A0=0時(shí),P

33、A口被選擇; </p><p>  當(dāng)A1=0,A0=1時(shí),PB口被選擇; </p><p>  當(dāng)A1=1,A0=0時(shí),PC口被選擇; </p><p>  當(dāng)A1=1.A0=1時(shí),控制寄存器被選擇.</p><p>  3.3 DAC0832芯片</p><p>  D0~D7:8位數(shù)據(jù)輸入線,TTL電平,有效時(shí)

34、間應(yīng)大于90ns(否則鎖存器的數(shù)據(jù)會(huì)出錯(cuò)); </p><p>  * ILE:數(shù)據(jù)鎖存允許控制信號(hào)輸入線,高電平有效; </p><p>  * CS:片選信號(hào)輸入線(選通數(shù)據(jù)鎖存器),低電平有效; </p><p>  * WR1:數(shù)據(jù)鎖存器寫選通輸入線,負(fù)脈沖(脈寬應(yīng)大于500ns)有效。由ILE、CS、WR1的邏輯組合產(chǎn)生LE1,當(dāng)LE1為高電平時(shí),數(shù)據(jù)鎖存

35、器狀態(tài)隨輸入數(shù)據(jù)線變換,LE1的負(fù)跳變時(shí)將輸入數(shù)據(jù)鎖存; </p><p>  * XFER:數(shù)據(jù)傳輸控制信號(hào)輸入線,低電平有效,負(fù)脈沖(脈寬應(yīng)大于500ns)有效; </p><p>  * WR2:DAC寄存器選通輸入線,負(fù)脈沖(脈寬應(yīng)大于500ns)有效。由WR2、XFER的邏輯組合產(chǎn)生LE2,當(dāng)LE2為高電平時(shí),DAC寄存器的輸出隨寄存器的輸入而變化,LE2的負(fù)跳變時(shí)將數(shù)據(jù)鎖存器的

36、內(nèi)容打入DAC寄存器并開始D/A轉(zhuǎn)換。 </p><p>  * IOUT1:電流輸出端1,其值隨DAC寄存器的內(nèi)容線性變化; </p><p>  * IOUT2:電流輸出端2,其值與IOUT1值之和為一常數(shù); </p><p>  * Rfb:反饋信號(hào)輸入線,改變Rfb端外接電阻值可調(diào)整轉(zhuǎn)換滿量程精度; </p><p>  * Vcc:

37、電源輸入端,Vcc的范圍為+5V~+15V; </p><p>  * VREF:基準(zhǔn)電壓輸入線,VREF的范圍為-10V~+10V; </p><p>  * AGND:模擬信號(hào)地 </p><p>  DGND:數(shù)字信號(hào)地 </p><p>  3.4 ADC0809芯片</p><p>  ADC0809是美國(guó)國(guó)

38、家半導(dǎo)體公司生產(chǎn)的CMOS工藝8通道,8位逐次逼近式A/D模數(shù)轉(zhuǎn)換器。其內(nèi)部有一個(gè)8通道多路開關(guān),它可以根據(jù)地址碼鎖存譯碼后的信號(hào),只選通8路模擬輸入信號(hào)中的一個(gè)進(jìn)行A/D轉(zhuǎn)換。是目前國(guó)內(nèi)應(yīng)用最廣泛的8位通用A/D芯片 </p><p><b>  1.主要特性</b></p><p>  1)8路輸入通道,8位A/D轉(zhuǎn)換器,即分辨率為8位。 </p>

39、<p>  2)具有轉(zhuǎn)換起停控制端。 </p><p>  3)轉(zhuǎn)換時(shí)間為100μs(時(shí)鐘為640kHz時(shí)),130μs(時(shí)鐘為500kHz時(shí))  </p><p>  4)單個(gè)+5V電源供電 </p><p>  5)模擬輸入電壓范圍0~+5V,不需零點(diǎn)和滿刻度校準(zhǔn)。 </p><p>  6)工作溫度范圍為-40~+85攝氏度

40、</p><p>  7)低功耗,約15mW。 </p><p><b>  2.內(nèi)部結(jié)構(gòu)</b></p><p>  ADC0809是CMOS單片型逐次逼近式A/D轉(zhuǎn)換器,內(nèi)部結(jié)構(gòu)如圖所示,它由8路模擬開關(guān)、地址鎖存與譯碼器、比較器、8位開關(guān)樹型A/D轉(zhuǎn)換器、逐次逼近寄存器、邏輯控制和定時(shí)電路組成。 </p><p>

41、  3.外部特性(引腳功能)</p><p>  ADC0809芯片有28條引腳,采用雙列直插式封裝,如圖所示。下面說(shuō)明各引腳功能。 </p><p>  IN0~I(xiàn)N7:8路模擬量輸入端。 </p><p>  2-1~2-8:8位數(shù)字量輸出端。 </p><p>  ADDA、ADDB、ADDC:3位地址輸入線,用于選通8路模擬輸入中的一

42、路 </p><p>  ALE:地址鎖存允許信號(hào),輸入,高電平有效。 </p><p>  START: A/D轉(zhuǎn)換啟動(dòng)脈沖輸入端,輸入一個(gè)正脈沖(至少100ns寬)使其啟動(dòng)(脈沖上升沿使0809復(fù)位,下降沿啟動(dòng)A/D轉(zhuǎn)換)。 </p><p>  EOC: A/D轉(zhuǎn)換結(jié)束信號(hào),輸出,當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),此端輸出一個(gè)高電平(轉(zhuǎn)換期間一直為低電平)。 </p&

43、gt;<p>  OE:數(shù)據(jù)輸出允許信號(hào),輸入,高電平有效。當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),此端輸入一個(gè)高電平,才能打開輸出三態(tài)門,輸出數(shù)字量。 </p><p>  CLK:時(shí)鐘脈沖輸入端。要求時(shí)鐘頻率不高于640KHZ。 </p><p>  REF(+)、REF(-):基準(zhǔn)電壓。 </p><p>  Vcc:電源,單一+5V。 </p>&l

44、t;p><b>  GND:地。 </b></p><p>  ADC0809的工作過(guò)程</p><p>  首先輸入3位地址,并使ALE=1,將地址存入地址鎖存器中。此地址經(jīng)譯碼選通8路模擬輸入之一到比較器。START上升沿將逐次逼近寄存器復(fù)位。下降沿啟動(dòng) A/D轉(zhuǎn)換,之后EOC輸出信號(hào)變低,指示轉(zhuǎn)換正在進(jìn)行。直到A/D轉(zhuǎn)換完成,EOC變?yōu)楦唠娖剑甘続/D轉(zhuǎn)

45、換結(jié)束,結(jié)果數(shù)據(jù)已存入鎖存器,這個(gè)信號(hào)可用作中斷申請(qǐng)。當(dāng)OE輸入高電平 時(shí),輸出三態(tài)門打開,轉(zhuǎn)換結(jié)果的數(shù)字量輸出到數(shù)據(jù)總線上。 </p><p>  轉(zhuǎn)換數(shù)據(jù)的傳送 A/D轉(zhuǎn)換后得到的數(shù)據(jù)應(yīng)及時(shí)傳送給單片機(jī)進(jìn)行處理。數(shù)據(jù)傳送的關(guān)鍵問(wèn)題是如何確認(rèn)A/D轉(zhuǎn)換的完成,因?yàn)橹挥写_認(rèn)完成后,才能進(jìn)行傳送。為此可采用下述三種方式。 </p><p> ?。?)定時(shí)傳送方式 </p>&l

46、t;p>  對(duì)于一種A/D轉(zhuǎn)換器來(lái)說(shuō),轉(zhuǎn)換時(shí)間作為一項(xiàng)技術(shù)指標(biāo)是已知的和固定的。例如ADC0809轉(zhuǎn)換時(shí)間為128μs,相當(dāng)于6MHz的MCS-51單片機(jī)共64個(gè)機(jī)器周期??蓳?jù)此設(shè)計(jì)一個(gè)延時(shí)子程序,A/D轉(zhuǎn)換啟動(dòng)后即調(diào)用此子程序,延遲時(shí)間一到,轉(zhuǎn)換肯定已經(jīng)完成了,接著就可進(jìn)行數(shù)據(jù)傳送。 </p><p><b> ?。?)查詢方式 </b></p><p>  

47、A/D轉(zhuǎn)換芯片由表明轉(zhuǎn)換完成的狀態(tài)信號(hào),例如ADC0809的EOC端。因此可以用查詢方式,測(cè)試EOC的狀態(tài),即可確認(rèn)轉(zhuǎn)換是否完成,并接著進(jìn)行數(shù)據(jù)傳送。 </p><p><b> ?。?)中斷方式 </b></p><p>  把表明轉(zhuǎn)換完成的狀態(tài)信號(hào)(EOC)作為中斷請(qǐng)求信號(hào),以中斷方式進(jìn)行數(shù)據(jù)傳送。 </p><p>  不管使用上述哪種方

48、式,只要一旦確定轉(zhuǎn)換完成,即可通過(guò)指令進(jìn)行數(shù)據(jù)傳送。首先送出口地址并以信號(hào)有效時(shí),OE信號(hào)即有效,把轉(zhuǎn)換數(shù)據(jù)送上數(shù)據(jù)總線,供單片機(jī)接受。</p><p>  3.5 51單片機(jī)原理結(jié)構(gòu)</p><p><b>  引腳功能</b></p><p>  MCS-51是標(biāo)準(zhǔn)的40引腳雙列直插式集成電路芯片,引腳分布請(qǐng)參照----單片機(jī)引腳圖: &l

49、t;/p><p><b>  8051引腳</b></p><p>  l P0.0~P0.7 P0口8位雙向口線(在引腳的39~32號(hào)端子)。 </p><p>  l P1.0~P1.7 P1口8位雙向口線(在引腳的1~8號(hào)端子)。 </p><p>  l P2.0~P2.7 P2口8位雙向口線(在引腳的21~28號(hào)端

50、子)。 </p><p>  l P3.0~P3.7 P3口8位雙向口線(在引腳的10~17號(hào)端子)。 </p><p>  這4個(gè)I/O口具有不完全相同的功能,大家可得學(xué)好了,其它書本里雖然有,但寫的太深,初學(xué)者很難理解,這里都是按我自已的表達(dá)方式來(lái)寫的,相信你也能夠理解。 </p><p><b>  四個(gè)I/O口:</b></p&g

51、t;<p><b>  P0口有三個(gè)功能</b></p><p>  1、外部擴(kuò)展存儲(chǔ)器時(shí),當(dāng)做數(shù)據(jù)總線(如圖1中的D0~D7為數(shù)據(jù)總線接口) </p><p>  2、外部擴(kuò)展存儲(chǔ)器時(shí),當(dāng)作地址總線(如圖1中的A0~A7為地址總線接口) </p><p>  3、不擴(kuò)展時(shí),可做一般的I/O使用,但內(nèi)部無(wú)上拉電阻,作為輸入或輸出時(shí)

52、應(yīng)在外部接上拉電阻。 </p><p><b>  P1口</b></p><p>  只做I/O口使用:其內(nèi)部有上拉電阻。 </p><p><b>  P2口有兩個(gè)功能</b></p><p>  1、擴(kuò)展外部存儲(chǔ)器時(shí),當(dāng)作地址總線使用 </p><p>  2、做一般I

53、/O口使用,其內(nèi)部有上拉電阻; </p><p><b>  P3口有兩個(gè)功能</b></p><p>  除了作為I/O使用外(其內(nèi)部有上拉電阻),還有一些特殊功能,由特殊寄存器來(lái)設(shè)置,具體功能請(qǐng)參考我們后面的引腳說(shuō)明。 </p><p>  有內(nèi)部EPROM的單片機(jī)芯片(例如8751),為寫入程序需提供專門的編程脈沖和編程電源,這些信號(hào)也是

54、由信號(hào)引腳的形式提供的, </p><p>  即:編程脈沖:30腳(ALE/PROG) </p><p>  編程電壓(25V):31腳(EA/Vpp) </p><p><b>  3.6 硬件原理圖</b></p><p><b>  見附錄</b></p><p>

55、;  單片機(jī)的P0口:雙向三態(tài)I/O口,在外接存儲(chǔ)器時(shí),與地址總線的低8位及數(shù)據(jù)總線復(fù)用,能以吸收電流的方式驅(qū)動(dòng)8個(gè)TTL負(fù)載..</p><p>  P2口:是8位準(zhǔn)雙向I/O口,在訪問(wèn)外部存儲(chǔ)時(shí),它可以作為高8位地址總線送出高8位地址.</p><p>  當(dāng)P0口做地址總線的低8位時(shí),需要通過(guò)一個(gè)74LS373進(jìn)行鎖存,再通過(guò)74LS138譯碼器進(jìn)行譯碼輸出來(lái)控制各個(gè)功能模塊.<

56、;/p><p>  CS8255接F228H,CS0809接F230H,CS0832接F218H.</p><p>  DAC0832模塊用來(lái)產(chǎn)生波形,將數(shù)字量轉(zhuǎn)換成模擬量輸出,連接到示波器上.DI0到DI7接P0口,此時(shí)P0口作為數(shù)據(jù)總線直接與DI0到DI7相連接.</p><p>  ADC0809模塊用于產(chǎn)生一個(gè)數(shù)字量來(lái)作延時(shí)參數(shù),通過(guò)調(diào)節(jié)電位器來(lái)改變參數(shù)的值就可

57、以改變時(shí)間,</p><p>  8255鍵盤掃描顯示模塊,用來(lái)顯示波形代碼以及波形周期.PB作輸入口,PC和PA作輸出口,PA口地址為F228H,PB口地址為F229H,PC口地址為F22AH.PB口用來(lái)判斷是否有鍵按下.PC口與譯碼器相連,譯碼用來(lái)作位選,PA口用來(lái)作段選.</p><p><b>  4軟件設(shè)計(jì)</b></p><p> 

58、 4.1系統(tǒng)軟件框圖設(shè)計(jì)</p><p><b>  主程序框圖</b></p><p><b>  三角波框圖</b></p><p><b>  方波框圖</b></p><p>  注:R2是用來(lái)記數(shù),每產(chǎn)生25個(gè)方波測(cè)一次頻率.</p><p>

59、<b>  頻率計(jì)算</b></p><p><b>  正弦波</b></p><p><b>  注:R5用來(lái)查表.</b></p><p><b>  框圖說(shuō)明:</b></p><p>  主程序:先進(jìn)行8255的初始化,然后掃描鍵盤第二行,判斷是

60、否有鍵值按下,若A按下,則輸出三角波,B按下輸出方波,C按下輸出正弦波,在用DA轉(zhuǎn)換產(chǎn)生波形的時(shí)候也需要不斷的掃描鍵盤判斷是否有新的按鍵,否則按鍵無(wú)法跳出.</p><p>  頻率計(jì)算:波形的周期是根據(jù)AD轉(zhuǎn)換輸出的數(shù)字量與波形實(shí)際周期的關(guān)系得出的,需要用肉眼觀察示波器上波形的周期,不難發(fā)現(xiàn)波形周期與數(shù)字量成線形關(guān)系,通過(guò)一系列的算法即可得到波形大致周期,有誤差.再把周期顯示在數(shù)碼管上.</p>

61、<p>  三角波:波形先上升再下降,當(dāng)三角波輸出完一個(gè)周期時(shí)計(jì)算三角波的頻率.</p><p>  方波:方波只有兩個(gè)值,可以采用兩個(gè)極端值0和FFH.每產(chǎn)生25個(gè)方波測(cè)量一次方波的頻率.</p><p>  正弦波:可以利用查表來(lái)產(chǎn)生。查表法是事先將正弦波的數(shù)據(jù)計(jì)算出來(lái),列表放在程序中,運(yùn)行時(shí)直接調(diào)取數(shù)據(jù)。用公式y(tǒng)=127.5+127.5sin(360n/m)可計(jì)算出正弦波的

62、輸出值.每產(chǎn)生一個(gè)正弦波測(cè)量一次頻率.</p><p><b>  4.2源代碼</b></p><p>  C8255 EQU 0F22BH ;8255命令口地址</p><p>  P8255A EQU 0F228H ;8255 PA口地址</p><p>  P8255B EQU 0F22

63、9H ;8255 PB口地址</p><p>  P8255C EQU 0F22AH ;8255 PC口地址</p><p>  KEYVAL EQU 30H ;讀到的鍵碼</p><p>  NUMS1 EQU 31H</p><p>  NUMS2 EQU 32H</p><p

64、>  NUMS3 EQU 33H</p><p><b>  ORG 0000H</b></p><p>  SJMP START</p><p><b>  ORG 0080H</b></p><p>  START:MOV SP,#60H </p><p&

65、gt;  LCALL DINGSHI</p><p>  MOV KEYVAL,#00H ;顯示初始值</p><p>  MOV DPTR,#C8255</p><p>  MOV A,#82H ;PB口輸入,PA,PC口輸出</p><p>  MOVX @DPTR,A</p><p>

66、;  MOV DPTR,#P8255C</p><p>  MOV A,#00H</p><p>  MOVX @DPTR,A</p><p><b>  KB_DIS:</b></p><p>  LCALL RD_KB ;讀鍵子程序</p><p>  LCALL DISP

67、 ;波形代碼顯示子程序</p><p>  LCALL WAVE ;波形顯示</p><p>  SJMP KB_DIS ;循環(huán)掃描</p><p><b>  WAVE:</b></p><p>  CJNE R6,#7CH,ZHENGXIAN</p><p> 

68、 FANGBO: ;方波發(fā)生器</p><p>  MOV R2,#50</p><p>  FANGBODI: </p><p>  MOV A,#0H</p><p>  MOV DPTR,#0F218H </p><p>  MOVX @DPTR,A</p><

69、;p>  SETB P3.0 ;初始化</p><p>  MOV DPTR,#0F230H </p><p>  MOVX @DPTR,A ;啟動(dòng) A_D</p><p>  JNB P3.0,$ ;等待 EOC變高</p><p>  JB P3.0,$ ;等待 EOC變

70、低</p><p>  MOV DPH,#0F2H </p><p>  MOVX A,@DPTR ;讀 A_D 數(shù)據(jù)</p><p>  MOV P1,A </p><p><b>  ;數(shù)據(jù)輸出</b></p><p><b>  MOV R1,A</b>

71、;</p><p><b>  MOV R4,A</b></p><p><b>  DJNZ R1,$</b></p><p>  LCALL RD_KB ;掃描鍵盤</p><p>  LCALL DISP</p><p>  CJNE R6,#7CH,ZHENGX

72、IAN ;判斷鍵值</p><p>  CJNE R2,#25,FANGBOGAO</p><p>  LCALL DISPFANGBO ;顯示頻率</p><p>  FANGBOGAO:</p><p>  MOV DPTR,#0F218H</p><p>  MOV A,#255</p>

73、<p>  MOVX @DPTR,A</p><p>  SETB P3.0 </p><p>  MOV DPTR,#0F230H </p><p>  MOVX @DPTR,A ;啟動(dòng) A_D</p><p>  JNB P3.0,$ ;等待 EOC變高</p><

74、p>  JB P3.0,$ ;等待 EOC變低</p><p>  MOV DPH,#0F2H </p><p>  MOVX A,@DPTR ;讀 A_D 數(shù)據(jù)</p><p>  MOV P1,A</p><p><b>  ;數(shù)據(jù)輸出</b></p><p

75、><b>  MOV R1,A</b></p><p><b>  MOV R4,A</b></p><p><b>  DJNZ R1,$</b></p><p>  LCALL RD_KB</p><p>  LCALL DISP</p><p&g

76、t;  CJNE R6,#7CH,ZHENGXIAN</p><p>  DJNZ R2,FANGbodi</p><p>  LCALL DISPFANGBO</p><p>  SJMP FANGBO</p><p>  ZHENGXIAN:CJNE R6,#39H,SANJIAO ;正弦波發(fā)生器</p><p&g

77、t;  MOV R5,#00H</p><p><b>  SIN:</b></p><p><b>  MOV A,R5</b></p><p>  MOV DPTR,#TAB</p><p>  MOVC A,@A+DPTR</p><p>  MOV DPTR,#0F2

78、18H</p><p>  MOVX @DPTR,A</p><p>  SETB P3.0 ;初始化</p><p>  MOV DPTR,#0F230H </p><p>  MOVX @DPTR,A ;啟動(dòng) A_D</p><p>  JNB P3.0,$ ;等待 E

79、OC變高</p><p>  JB P3.0,$ ;等待 EOC變低</p><p>  MOV DPH,#0F2H </p><p>  MOVX A,@DPTR ;讀 A_D 數(shù)據(jù)</p><p>  MOV P1,A</p><p><b>  MOV R4,A<

80、/b></p><p><b>  MOV R1,A</b></p><p><b>  DJNZ R1,$</b></p><p><b>  INC R5</b></p><p>  LCALL RD_KB</p><p>  LCALL DI

81、SP</p><p>  CJNE R6,#39H,SANJIAO</p><p>  CJNE R5,#128,CC</p><p>  LCALL DISPZHENGXIAN</p><p>  CC:CJNE R5,#0,DD</p><p>  LCALL DISPZHENGXIAN</p>&l

82、t;p>  DD:SJMP SIN</p><p>  SANJIAO:CJNE R6,#77H,NEXT1 ;三角波發(fā)生器</p><p><b>  MOV A,#0</b></p><p><b>  SJUP:</b></p><p>  MOV DPTR,#0F218H<

83、/p><p>  MOVX @DPTR,A </p><p><b>  ;三角上升波形</b></p><p><b>  INC A</b></p><p><b>  PUSH ACC</b></p><p>  SETB P3.0

84、;初始化</p><p>  MOV DPTR,#0F230H </p><p>  MOVX @DPTR,A ;啟動(dòng) A_D</p><p>  JNB P3.0,$ ;等待 EOC變高</p><p>  JB P3.0,$ ;等待 EOC變低</p><p>  MO

85、V DPH,#0F2H </p><p>  MOVX A,@DPTR ;讀 A_D 數(shù)據(jù)</p><p>  MOV P1,A ;數(shù)據(jù)輸出</p><p><b>  MOV R4,A</b></p><p><b>  MOV R1,A</b></p>

86、;<p><b>  DJNZ R1,$</b></p><p>  LCALL RD_KB</p><p>  LCALL DISP</p><p><b>  POP ACC </b></p><p>  CJNE R6,#77H,NEXT1</p><p>

87、;  CJNE A,#44H,SJUP</p><p>  LCALL DISPSANJIAO ;顯示頻率</p><p>  SJDO: MOV DPTR,#0F218H</p><p>  MOVX @DPTR,A ;三角下降波形</p><p><b>  DEC A</b>&

88、lt;/p><p><b>  PUSH ACC</b></p><p>  SETB P3.0 ;初始化</p><p>  MOV DPTR,#0F230H </p><p>  MOVX @DPTR,A ;啟動(dòng) A_D</p><p>  JNB P3.0,$

89、 ;等待 EOC變高</p><p>  JB P3.0,$ ;等待 EOC變低</p><p>  MOV DPH,#0F2H </p><p>  MOVX A,@DPTR ;讀 A_D 數(shù)據(jù)</p><p>  MOV P1,A ;數(shù)據(jù)輸出</p><p>&

90、lt;b>  MOV R4,A</b></p><p><b>  MOV R1,A</b></p><p><b>  DJNZ R1,$</b></p><p>  LCALL RD_KB</p><p>  LCALL DISP</p><p><

91、;b>  POP ACC </b></p><p>  CJNE R6,#77H,NEXT1</p><p>  CJNE A,#0H,SJDO</p><p>  LCALL DISPSANJIAO</p><p>  SJMP SANJIAO</p><p><b>  NEXT1:RE

92、T</b></p><p>  DISPZHENGXIAN: ;頻率顯示模塊</p><p>  LCALL DINGSHI</p><p><b>  PUSH ACC</b></p><p>  MOV A,R4 ;頻率顯示算法設(shè)計(jì)</p><p>&

93、lt;b>  MOV B,#2</b></p><p><b>  DIV AB</b></p><p><b>  MOV B,#5</b></p><p><b>  MUL AB</b></p><p>  ADD A,#180</p>&

94、lt;p><b>  MOV R0,A</b></p><p><b>  MOV A,B</b></p><p><b>  ADDC A,#0</b></p><p><b>  MOV B,A</b></p><p><b>  MO

95、V A,R0</b></p><p>  ANL A,#0FH</p><p>  MOV DPTR,#LEDSEG</p><p>  MOVC A,@A+DPTR</p><p>  MOV NUMS1,A</p><p><b>  MOV A,R4</b></p>

96、<p><b>  MOV B,#2</b></p><p><b>  DIV AB</b></p><p><b>  MOV B,#5</b></p><p><b>  MUL AB</b></p><p>  ADDC A,#180&

97、lt;/p><p><b>  MOV R0,A</b></p><p><b>  MOV A,B</b></p><p><b>  ADDC A,#0</b></p><p><b>  MOV B,A</b></p><p>&

98、lt;b>  MOV A,R0</b></p><p><b>  SWAP A</b></p><p>  ANL A,#0FH</p><p>  MOV DPTR,#LEDSEG</p><p>  MOVC A,@A+DPTR</p><p>  MOV NUMS2,A&

99、lt;/p><p><b>  MOV A,R4</b></p><p><b>  MOV B,#2</b></p><p><b>  DIV AB</b></p><p><b>  MOV B,#5</b></p><p>&l

100、t;b>  MUL AB</b></p><p>  ADDC A,#180</p><p><b>  MOV R0,A</b></p><p><b>  MOV A,B</b></p><p><b>  ADDC A,#0</b></p>

101、<p><b>  MOV B,A</b></p><p><b>  MOV A,R0</b></p><p>  ANL B,#0FH</p><p><b>  MOV A,B</b></p><p>  MOV DPTR,#LEDSEG</p>

102、<p>  MOVC A,@A+DPTR</p><p>  MOV NUMS3,A</p><p>  MOV DPTR,#P8255C</p><p>  MOV A,#08H</p><p>  MOVX @DPTR,A ;位選</p><p>  MOV DPTR,#P8255A</

103、p><p>  MOV A,NUMS1</p><p>  MOVX @DPTR,A ;段選</p><p>  LCALL DINGSHI</p><p>  MOV DPTR,#P8255C</p><p>  MOV A,#10H</p><p>  MOVX @DPTR,A<

104、/p><p>  MOV DPTR,#P8255A</p><p>  MOV A,NUMS2</p><p>  MOVX @DPTR,A</p><p>  LCALL DINGSHI</p><p>  MOV DPTR,#P8255C</p><p>  MOV A,#18H</p&g

105、t;<p>  MOVX @DPTR,A</p><p>  MOV DPTR,#P8255A</p><p>  MOV A,NUMS3</p><p>  MOVX @DPTR,A</p><p><b>  POP ACC</b></p><p><b>  RET&

106、lt;/b></p><p>  DISPSANJIAO:</p><p>  LCALL DINGSHI</p><p><b>  PUSH ACC</b></p><p><b>  MOV A,R4</b></p><p><b>  MOV B,#4

107、</b></p><p><b>  DIV AB</b></p><p><b>  MOV B,#5</b></p><p><b>  MUL AB</b></p><p>  ADD A,#100</p><p><b> 

108、 MOV R0,A</b></p><p><b>  MOV A,B</b></p><p><b>  ADDC A,#0</b></p><p><b>  MOV B,A</b></p><p><b>  MOV A,R0</b>&l

109、t;/p><p>  ANL A,#0FH</p><p>  MOV DPTR,#LEDSEG</p><p>  MOVC A,@A+DPTR</p><p>  MOV NUMS1,A</p><p><b>  MOV A,R4</b></p><p><b>

110、;  MOV B,#4</b></p><p><b>  DIV AB</b></p><p><b>  MOV B,#5</b></p><p><b>  MUL AB</b></p><p>  ADDC A,#100</p><p&g

111、t;<b>  MOV R0,A</b></p><p><b>  MOV A,B</b></p><p><b>  ADDC A,#0</b></p><p><b>  MOV B,A</b></p><p><b>  MOV A,R0

112、</b></p><p><b>  SWAP A</b></p><p>  ANL A,#0FH</p><p>  MOV DPTR,#LEDSEG</p><p>  MOVC A,@A+DPTR</p><p>  MOV NUMS2,A</p><p&g

113、t;<b>  MOV A,R4</b></p><p><b>  MOV B,#4</b></p><p><b>  DIV AB</b></p><p><b>  MOV B,#5</b></p><p><b>  MUL AB<

114、;/b></p><p>  ADDC A,#100</p><p><b>  MOV R0,A</b></p><p><b>  MOV A,B</b></p><p><b>  ADDC A,#0</b></p><p><b>

115、;  MOV B,A</b></p><p><b>  MOV A,R0</b></p><p>  ANL B,#0FH</p><p><b>  MOV A,B</b></p><p>  MOV DPTR,#LEDSEG</p><p>  MOVC A

116、,@A+DPTR</p><p>  MOV NUMS3,A</p><p>  MOV DPTR,#P8255C</p><p>  MOV A,#08H</p><p>  MOVX @DPTR,A</p><p>  MOV DPTR,#P8255A</p><p>  MOV A,NUM

117、S1</p><p>  MOVX @DPTR,A</p><p>  LCALL DINGSHI</p><p>  MOV DPTR,#P8255C</p><p>  MOV A,#10H</p><p>  MOVX @DPTR,A</p><p>  MOV DPTR,#P8255A&

118、lt;/p><p>  MOV A,NUMS2</p><p>  MOVX @DPTR,A</p><p>  LCALL DINGSHI</p><p>  MOV DPTR,#P8255C</p><p>  MOV A,#18H</p><p>  MOVX @DPTR,A</p>

119、;<p>  MOV DPTR,#P8255A</p><p>  MOV A,NUMS3</p><p>  MOVX @DPTR,A</p><p><b>  POP ACC</b></p><p><b>  RET</b></p><p>  DISP

120、FANGBO:</p><p>  LCALL DINGSHI</p><p><b>  PUSH ACC</b></p><p><b>  MOV A,R4</b></p><p><b>  MOV B,#5</b></p><p><b&

121、gt;  DIV AB</b></p><p><b>  ADD A,#12</b></p><p>  ANL A,#0FH</p><p>  MOV DPTR,#LEDSEG</p><p>  MOVC A,@A+DPTR</p><p>  MOV NUMS1,A</

122、p><p><b>  MOV A,R4</b></p><p><b>  MOV B,#5</b></p><p><b>  DIV AB</b></p><p><b>  ADD A,#12</b></p><p><b

123、>  SWAP A</b></p><p>  ANL A,#0FH</p><p>  MOV DPTR,#LEDSEG</p><p>  MOVC A,@A+DPTR</p><p>  MOV NUMS2,A</p><p>  MOV DPTR,#P8255C</p><

124、p>  MOV A,#08H</p><p>  MOVX @DPTR,A</p><p>  MOV DPTR,#P8255A</p><p>  MOV A,NUMS1</p><p>  MOVX @DPTR,A</p><p>  LCALL DINGSHI</p><p>  M

125、OV DPTR,#P8255C</p><p>  MOV A,#10H</p><p>  MOVX @DPTR,A</p><p>  MOV DPTR,#P8255A</p><p>  MOV A,NUMS2</p><p>  MOVX @DPTR,A</p><p>  LCALL

126、DINGSHI</p><p><b>  POP ACC</b></p><p><b>  RET</b></p><p>  DISP:MOV DPTR,#P8255A ;顯示鍵值</p><p>  MOV A,KEYVAL</p><p>  MOVX @DPT

127、R,A</p><p><b>  RET</b></p><p><b>  RD_KB:</b></p><p>  MOV A,#01H ;掃描第二行</p><p>  MOV DPTR,#P8255C</p><p>  MOVX @DPTR,A&l

128、t;/p><p>  MOV DPTR,#P8255B</p><p>  MOVX A,@DPTR</p><p>  CJNE A,#0FFH,J_KEYL0 ;判斷是否有鍵按下,有鍵轉(zhuǎn)J-KEYL0</p><p>  SJMP NOKEY</p><p>  J_KEYL0:LCALL DINGSHI ;

129、延時(shí)消抖</p><p>  MOV DPTR,#P8255B ;讀鍵值</p><p>  MOVX A,@DPTR</p><p>  MOV R7,#08H</p><p>  CJNE A,#0FFH,KEYCAL ;計(jì)算鍵值</p><p>  SJMP NOKEY</p>

130、<p>  KEYCAL:MOV R0,#08H</p><p>  SHIFT:RRC A</p><p><b>  JNC CALC</b></p><p><b>  INC R7</b></p><p>  DJNZ R0,SHIFT</p><p> 

131、 CALC:MOV DPTR,#LEDSEG ;換算顯示碼</p><p><b>  MOV A,R7</b></p><p>  MOVC A,@A+DPTR</p><p>  MOV KEYVAL,A</p><p><b>  MOV R6,A</b></p><p&

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論