畢業(yè)設(shè)計(jì)---單片機(jī)與ad9954硬軟件的設(shè)計(jì)_第1頁
已閱讀1頁,還剩43頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  第一章 單片機(jī)的簡介</p><p>  一個8位的80c51微處理器,片內(nèi)256字節(jié)數(shù)據(jù)存儲器RAM/SFR,用以存放可以讀寫的數(shù)據(jù),如運(yùn)算的中間結(jié)果,最終結(jié)果以及欲顯示的數(shù)據(jù);片內(nèi)4kb程序存儲器Flash ROM,用以存放程序,一些原始數(shù)據(jù)和表格;4個8位并行I/O口P0~P3,每個端口既可用作輸入,也可用作輸出;兩個16位的定時器/計(jì)數(shù)器,每個定時器/計(jì)數(shù)器都可設(shè)置成計(jì)數(shù)方式,用以對

2、外部事件進(jìn)行計(jì)數(shù),也可設(shè)置成定時方式,并可以根據(jù)計(jì)數(shù)或者定時的結(jié)果實(shí)現(xiàn)計(jì)算機(jī)控制;具有5個中斷源,兩個中斷優(yōu)先級的中斷控制系統(tǒng);一個全雙工UART(通用異步接受發(fā)送器)的串行I/O口,用于實(shí)現(xiàn)單片機(jī)之間或者單片機(jī)與PC機(jī)之間的串行通信;片內(nèi)振蕩器和時鐘產(chǎn)生電路,但石英晶體和微調(diào)電容需要外接,最高允許震蕩頻率為24MHz;89c51與80c51相比具有節(jié)電工作方式,即休閑方式及掉電方式。</p><p>  1.1

3、中央處理器(CPU):</p><p>  CPU是單片機(jī)內(nèi)部的核心部件,是一個8位二進(jìn)制數(shù)的中央處理單元,主要由運(yùn)算器、控制器和寄存器陣列構(gòu)成。</p><p>  1.1.1 運(yùn)算器:</p><p>  運(yùn)算器用來完成算術(shù)運(yùn)算和邏輯運(yùn)算功能,它是 89C51內(nèi)部處理各種信息的主要部件。運(yùn)算器主要由算術(shù)邏輯單元(ALU)、累加器(ACC)、暫存寄存器(TMP1、

4、TMP2)和狀態(tài)寄存器(PSW)組成。算術(shù)邏輯單元(ALU): 89C51中的ALU由加法器和一個布爾處理器組成。 </p><p>  累加器(ACC):用來存放參與算術(shù)運(yùn)算和邏輯運(yùn)算的一個操作數(shù)或運(yùn)算的結(jié)果。</p><p>  暫存寄存器(TMP1、TMP2):用來存放參與算術(shù)運(yùn)算和邏輯運(yùn)算的另一個操作數(shù),它對用戶不開放。</p><p>  狀態(tài)寄存器(PS

5、W):PSW是一個8位標(biāo)志寄存器,用來存放ALU操作結(jié)果的有關(guān)狀態(tài)。</p><p><b>  1.1.2控制器:</b></p><p>  控制器是單片機(jī)內(nèi)部按一定時序協(xié)調(diào)工作的控制核心,是分析和執(zhí)行指令的部件??刂破髦饕沙绦蛴?jì)數(shù)器PC、指令寄存器IR、指令譯碼器ID和定時控制邏輯電路等構(gòu)成。程序計(jì)數(shù)器PC是專門用于存放現(xiàn)行指令的16位地址的。CPU就是根據(jù)P

6、C中的地址到ROM中去讀取程序指令碼和數(shù)據(jù),并送給指令寄存器IR進(jìn)行分析。指令寄存器IR用于存放CPU根據(jù)PC地址從ROM中讀出的指令操作碼。指令譯碼器ID是用于分析指令操作的部件,指令操作碼經(jīng)譯碼后產(chǎn)生相應(yīng)于某一特定操作的信號。定時控制邏輯中定時部件用來產(chǎn)生脈沖序列和多種節(jié)拍脈沖。 </p><p>  1.1.3寄存器陣列:</p><p>  寄存器陣列是單片機(jī)內(nèi)部的臨時存儲單元或固

7、定用途單元,包括通用寄存器組和專用寄存器組。通用寄存器組用來存放過渡性的數(shù)據(jù)和地址,提高CPU的運(yùn)行速度。</p><p>  專用寄存器組主要用來指示當(dāng)前要執(zhí)行指令的內(nèi)存地址,存放特定的操作數(shù),指示指令運(yùn)行的狀態(tài)等。</p><p><b>  1.1.4存儲器:</b></p><p>  89C51單片機(jī)內(nèi)部有256個字節(jié)的RAM數(shù)據(jù)存儲

8、器和4?KB的閃存程序存儲器(Flash),當(dāng)不夠使用時,可分別擴(kuò)展為64 KB外部RAM存儲器和64 KB外部程序存儲器。它們的邏輯空間是分開的,并有各自的尋址機(jī)構(gòu)和尋址方式。這種結(jié)構(gòu)的單片機(jī)稱為哈佛型結(jié)構(gòu)單片機(jī)。</p><p>  程序存儲器是可讀不可寫的,用于存放編好的程序和表格常數(shù)。數(shù)據(jù)存儲器是既可讀也可寫的,用于存放運(yùn)算的中間結(jié)果,進(jìn)行數(shù)據(jù)暫存及數(shù)據(jù)緩沖等。</p><p> 

9、 89C51單片機(jī)對外部電路進(jìn)行控制或交換信息都是通過I/O端口進(jìn)行的。單片機(jī)的I/O端口分為并行I/O端口和串行I/O端口,它們的結(jié)構(gòu)和作用并不相同。</p><p><b>  并行I/O端口:</b></p><p>  89C51有四個8位并行I/O端口,分別命名為P0口、P1口、P2口和P3口,它們都是8位準(zhǔn)雙向口,每次可以并行輸入或輸出8位二進(jìn)制信息。

10、 </p><p><b>  串行I/O端口:</b></p><p>  89C51有一個全雙工的可編程串行I/O端口,它利用了P3口的第二功能,即將P3.1引腳作為串行數(shù)據(jù)的發(fā)送線TXD,將P3.0引腳作為串行數(shù)據(jù)的接收線RXD。 </p><p>  1.1.5 定時器/計(jì)數(shù)器:</p><p>  89C

11、51內(nèi)部有兩個16位可編程定時器/計(jì)數(shù)器,簡稱為定時器0(T0)和定時器1(T1),T0和T1分別由兩個8位寄存器構(gòu)成,其中T0由TH0(高8位)和TL0(低8位)構(gòu)成,T1由TH1(高8位)和TL1(低8位)構(gòu)成。TH0、TL0、TH1、TL1都是SFR中的特殊功能寄存器。</p><p>  T0和T1在TCON和TMOD的控制下可工作在定時器模式或計(jì)數(shù)器模式下,每種模式下又有不同的工作方式。當(dāng)定時或計(jì)數(shù)溢出

12、時還可申請中斷。</p><p>  1.1.6中斷系統(tǒng):</p><p>  單片機(jī)中的中斷是指CPU暫停正在執(zhí)行的原程序轉(zhuǎn)而為中斷源服務(wù)(執(zhí)行中斷服務(wù)程序),在執(zhí)行完中斷服務(wù)程序后再回到原程序繼續(xù)執(zhí)行。中斷系統(tǒng)是指</p><p>  夠處理上述中斷過程所需要的部分電路。</p><p>  89C51的中斷系統(tǒng)由中斷源、中斷允許控制器I

13、E、中斷優(yōu)先級控制器IP、定時器控制器TCON(中斷標(biāo)志寄存器)等構(gòu)成,IE、IP、TCON均為SFR特殊功能寄存器(見表2.2)。</p><p>  1.1.7內(nèi)部總線:</p><p>  總線是用于傳送信息的公共途徑。總線可分為數(shù)據(jù)總線、地址總線和控制總線。單片機(jī)內(nèi)的CPU、存儲器、I/O接口等單元部件都是通過總線連接到一起的。采用總線結(jié)構(gòu)可以減少信息傳輸線的根數(shù),提高系統(tǒng)可靠性,

14、增強(qiáng)系統(tǒng)靈活性。</p><p>  89C51單片機(jī)內(nèi)部總線是單總線結(jié)構(gòu),即數(shù)據(jù)總線和地址總線是公用的。</p><p>  1.1.8 89C51單片機(jī)引腳及其功能:</p><p>  89C51有40條引腳,與其他51系列單片機(jī)引腳是兼容的。這40條引腳可分為I/O端口線、電源線、控制線、外接晶體線四部分。其封裝形式有兩種:雙列直插封裝(DIP)形式和方形

15、封裝形式,如圖所示。</p><p>  (a) 雙列直插式封裝 (b) 方形封裝</p><p>  圖1 89C51封裝和引腳分配圖</p><p>  1.1.9 89C51單片機(jī)工作方式:</p><p>  單片機(jī)在開機(jī)時或在工作中因干擾而使程序失控或工作中程序處于某種死循環(huán)狀態(tài)等情況下都需要復(fù)位。復(fù)位的作用是使中央處理器

16、CPU以及其他功能部件都恢復(fù)到一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。</p><p>  1.1.9.1 復(fù)位原理:</p><p>  89C51單片機(jī)的復(fù)位靠外部電路實(shí)現(xiàn),信號由RESET(RST)引腳輸入,高電平有效,在振蕩器工作時,只要保持RST引腳高電平兩個機(jī)器周期,單片機(jī)即復(fù)位。復(fù)位后,PC程序計(jì)數(shù)器的內(nèi)容為0000H,其他特殊功能寄存器的復(fù)位狀態(tài)如表2.5所示。片內(nèi)RAM

17、中內(nèi)容不變。</p><p>  1.1.9.2 常用復(fù)位電路:</p><p>  一般有上電復(fù)位、手動開關(guān)復(fù)位和自動復(fù)位電路三種,如圖所示。 </p><p>  (a)上電復(fù)位電路;(b) 手動復(fù)位電路;(c) 自動復(fù)位電路</p><p>  圖2 單片機(jī)復(fù)位電路圖</p><p>  1.1.9.3 89C

18、51時鐘電路:</p><p>  單片機(jī)內(nèi)各部件之間有條不紊的協(xié)調(diào)工作,其控制信號是在一種基本節(jié)拍的指揮下按一定時間順序發(fā)出的,這些控制信號在時間上的相互關(guān)系就是CPU時序。而產(chǎn)生這種基本節(jié)拍的電路就是振蕩器和時鐘電路。</p><p>  89C51單片機(jī)內(nèi)部有一個用于構(gòu)成振蕩器的單級反相放大器,如圖所示。</p><p>  圖3 89C51內(nèi)部振蕩器電路圖&

19、lt;/p><p>  引腳XTAL1為反相器輸入端,XTAL2為反相器輸出端。當(dāng)在放大器兩個引腳上外接一個晶體(或陶瓷振蕩器)和電容組成的并聯(lián)諧振電路作為反饋元件時,便構(gòu)成一個自激振蕩器,如下圖所示。</p><p>  圖4 內(nèi)部振蕩器等效電路圖</p><p>  1.2 單片機(jī)的應(yīng)用領(lǐng)域</p><p>  1.2.1 在智能儀器儀表的應(yīng)

20、用:</p><p>  單片機(jī)具有體積小、功耗低、控制功能強(qiáng)、擴(kuò)展靈活、微型化和使用方便等優(yōu)點(diǎn),廣泛應(yīng)用于儀器儀表中,結(jié)合不同類型的傳感器,可實(shí)現(xiàn)諸如電壓、功率、頻率、濕度、溫度、流量、速度、厚度、角度、長度、硬度、元素、壓力等物理量的測量。采用單片機(jī)控制使得儀器儀表數(shù)字化、智能化、微型化,且功能比起采用電子或數(shù)字電路更加強(qiáng)大。例如精密的測量設(shè)備(功率計(jì),示波器,各種分析儀)。</p><p

21、>  1.2.2在家用電器中的應(yīng)用:</p><p>  可以這樣說,現(xiàn)在的家用電器基本上都采用了單片機(jī)控制,從電飯煲、洗衣機(jī)、電冰箱、空調(diào)機(jī)、彩電、其他音響視頻器材、再到電子秤量設(shè)備,五花八門,無所不在。</p><p>  1.2.3在工業(yè)控制中的應(yīng)用:</p><p>  用單片機(jī)可以構(gòu)成形式多樣的控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)。例如工廠流水線的智能化管理,電梯

22、智能化控制、各種報(bào)警系統(tǒng),與計(jì)算機(jī)聯(lián)網(wǎng)構(gòu)成二級控制系統(tǒng)等。</p><p>  1.2.4在計(jì)算機(jī)網(wǎng)絡(luò)和通信領(lǐng)域中的應(yīng)用:</p><p>  現(xiàn)代的單片機(jī)普遍具備通信接口,可以很方便地與計(jì)算機(jī)進(jìn)行數(shù)據(jù)通信,為在計(jì)算機(jī)網(wǎng)絡(luò)和通信設(shè)備間的應(yīng)用提供了極好的物質(zhì)條件,現(xiàn)在的通信設(shè)備基本上都實(shí)現(xiàn)了單片機(jī)智能控制,從手機(jī)、電話機(jī)、小型程控交換機(jī)、樓宇自動通信呼叫系統(tǒng)、列車無線通信、再到日常工作中隨處

23、可見的移動電話,集群移動通信,無線電對講機(jī)等。</p><p>  1.2.5單片機(jī)在醫(yī)用設(shè)備領(lǐng)域中的應(yīng)用:</p><p>  單片機(jī)在醫(yī)用設(shè)備中的用途亦相當(dāng)廣泛,例如醫(yī)用呼吸機(jī),各種分析儀,監(jiān)護(hù)儀,超聲診斷設(shè)備及病床呼叫系統(tǒng)等等。 </p><p>  此外,單片機(jī)在工商、金融、科研、教育、國防航空等領(lǐng)域都有著十分廣泛的用途。

24、 </p><p>  1.3單片機(jī)的發(fā)

25、展趨勢</p><p>  單片機(jī)現(xiàn)在可以說是百花齊放,百家爭鳴的時期,世界上各大芯片制造公司都推出了自己的單片機(jī),從8位、16位到32位,數(shù)不勝數(shù),應(yīng)有盡有,有與主流C51系列兼容的,也有不兼容的,但它們各具特色,互成互補(bǔ),為單片機(jī)的應(yīng)用提供了廣闊的天地。</p><p>  縱觀單片機(jī)的發(fā)展過程,可以預(yù)示單片機(jī)的發(fā)展趨勢,大致有:</p><p>  1.3.1

26、微型單片化:</p><p>  現(xiàn)在常規(guī)的單片機(jī)普遍都是將中央處理器(CPU)、隨機(jī)存取數(shù)據(jù)存儲(RAM)、只讀程序存儲器(ROM)、并行和串行通信接口,中斷系統(tǒng)、定時電路、時鐘電路集成在一塊單一的芯片上,增強(qiáng)型的單片機(jī)集成了如A/D轉(zhuǎn)換器、PMW(脈寬調(diào)制電路)、WDT(看門狗)、有些單片機(jī)將LCD(液晶)驅(qū)動電路都集成在單一的芯片上,這樣單片機(jī)包含的單元電路就更多,功能就越強(qiáng)大。甚至單片機(jī)廠商還可以根據(jù)用戶

27、的要求量身定做,制造出具有自己特色的單片機(jī)芯片。</p><p>  此外,現(xiàn)在的產(chǎn)品普遍要求體積小、重量輕,這就要求單片機(jī)除了功能強(qiáng)和功耗低外,還要求其體積要小。現(xiàn)在的許多單片機(jī)都具有多種封裝形式,其中SMD(表面封裝)越來越受歡迎,使得由單片機(jī)構(gòu)成的系統(tǒng)正朝微型化方向發(fā)展。</p><p>  1.3.2低功耗CMOS化:</p><p>  MCS-51系列的

28、8031推出時的功耗達(dá)630mW,而現(xiàn)在的單片機(jī)普遍都在100mW左右,隨著對單片機(jī)功耗要求越來越低,現(xiàn)在的各 個單片機(jī)制造商基本都采用了CMOS(互補(bǔ)金屬氧化物半導(dǎo)體工藝)。像80C51就采用了HMOS(即高密度金屬氧化物半導(dǎo)體工藝)和CHMOS(互補(bǔ)高密度金屬氧化物半導(dǎo)體工藝)。CMOS雖然功耗低,但由于其物理特征決定其工作速度不夠高,而CHMOS則具備了高速和低功耗的特點(diǎn),這些特征,更適合于要求低功耗像電池供電的應(yīng)用場合。所以

29、這種工藝將是今后一段時期單片機(jī)發(fā)展的主要途徑。</p><p>  1.3.3主流與多品種共存:</p><p>  現(xiàn)在雖然單片機(jī)的品種繁多,各具特色,但仍以80C51為核心的單片機(jī)占主流,兼容其結(jié)構(gòu)和指令系統(tǒng)的有PHILIPS公司的產(chǎn)品,ATMEL公司的產(chǎn)品和中國臺灣的Winbond系列單片機(jī)。所以80C51占據(jù)了半壁江山。而Microchip公司的PIC精簡指令集合(RISC)也有著

30、強(qiáng)勁的發(fā)展勢頭,中國臺灣的HOLTEX公司近年的單片機(jī)產(chǎn)量與日俱增,與其底價(jià)質(zhì)優(yōu)的優(yōu)勢,占據(jù)一定的市場份額。此外還有MOTOROLA公司的產(chǎn)品,日本幾大公司的專用單片機(jī)。在一定的時期內(nèi),這種情形將得以延續(xù),將不存在某個單片機(jī)一統(tǒng)天下的壟斷局面,走的是依存互補(bǔ)、相輔相成、共同發(fā)展的道路。</p><p>  九十年代以后,單片機(jī)在結(jié)構(gòu)上采用雙CPU或內(nèi)部流水線,CPU位數(shù)有8位、16位、32位,時鐘頻率高達(dá)20MH

31、Z,片內(nèi)帶有PWM輸出、監(jiān)視定時器WDT、可編程計(jì)數(shù)器陣列PCA、DMA傳輸、調(diào)制解調(diào)器等。芯片向高度集成化、低功耗方向的發(fā)展,使得單片機(jī)在大量數(shù)據(jù)的實(shí)時處理、高級通信系統(tǒng)、數(shù)字信號處理、復(fù)雜工業(yè)過程控制、高級機(jī)器人以及局域網(wǎng)等方面得到大量應(yīng)用。這類單片機(jī)有NEC公司的MPD7800,MITSUBISHI公司的M337700,REVKWELL公司的R6500。</p><p>  第二章 AD9954簡介<

32、/p><p>  2.1 AD9954的內(nèi)部結(jié)構(gòu)</p><p>  AD9954的內(nèi)部結(jié)構(gòu)如圖1所示,其主要特性如下:</p><p>  ● 內(nèi)置400MSPs時鐘;</p><p>  ● 內(nèi)含l4位DAC;</p><p>  ●相位、幅度可編程;</p><p>  ●有32位頻率轉(zhuǎn)換字;

33、</p><p>  ●可用串行I/O控制;</p><p>  ●內(nèi)置超高速模擬比較器</p><p>  ●可自動線性和非線性掃頻</p><p>  ●內(nèi)部集成有1024 X 32位RAM;</p><p>  ●采用1.8V電源供電;</p><p>  ●可4 20倍倍頻;</p

34、><p>  ●支持大多數(shù)數(shù)字輸入中的5、,輸入電平;</p><p><b>  ●可實(shí)現(xiàn)多片同步。</b></p><p><b>  2.2引腳說明</b></p><p>  AD9954采用48腳TQFP/EP封裝,其引腳排列如圖2所示,各引腳定義如下:I/0 UPDATE:在該引腳的上升沿可

35、把內(nèi)部緩沖存儲器中的內(nèi)容送到I/O寄存器中。引腳電平的建立和保持與SYNC-CLK輸出信號有關(guān);</p><p>  DVDD和AVDD:數(shù)字與模擬電源引腳,電壓值為1.8V;</p><p>  DGND和AGND:數(shù)字地與模擬地;</p><p>  OSC/RE~CLK和OSC/REFCLK:參考時鐘或振蕩輸入端;</p><p>  

36、限srAI。OUT:振蕩器輸出端;</p><p>  CLKMODESEt.ECT:振蕩器控制端,為1時使能振蕩器,為0時不使能振蕩器;</p><p>  LOOP—FILTER:該引腳應(yīng)與AVDD間串聯(lián)一個1kQ電阻和一個0.1ttF電容;</p><p>  IOUT和IOUT:DAC輸出端,使用時應(yīng)接一個上拉電阻;</p><p>

37、  DACBP:DAC去耦端,使用時應(yīng)接一個0.01ttF的旁路電容;</p><p>  DAC—R鯽:DAC復(fù)位端,使用時應(yīng)通過一個3.92kQ的電阻接至AGND端;</p><p>  CO oUT:比較器輸出端,可以輸出方波或脈沖信號;</p><p>  COMP_IN和COMP—IN:比較器輸入端;</p><p>  PWRDW

38、NCTL:外部電源掉電控制輸入引腳;</p><p>  砒蕊r:芯片復(fù)位端;</p><p>  IOSYNC:異步串行端口控制復(fù)位引腳;為1時,當(dāng)前I/O操作立即停止;為0時開始新的I/O操作;不用時,此引腳必須接地;</p><p>  SDO:采用3線串口操作時,SDO為串行數(shù)據(jù)輸出端。</p><p>  采用2線串口操作時,SDO

39、不用,可以不連;</p><p>  C—S:片選端,低電平有效,允許多芯片共用I/O總線;</p><p>  SCLK:I/O操作的串行數(shù)據(jù)時鐘輸入端;sD10:采用3線串口操作時,SDO為串行數(shù)據(jù)輸入端,采用2線操作時,SDO為雙向串行數(shù)據(jù)端;</p><p>  DVDD_I/o:I/0電源,可以是1.8v或3.3V;</p><p>

40、;  SYNC—IN:同步多片AD9954的輸入信號,使用時與主AD9954的SYNC—CLK的輸出相連;</p><p>  SYNC—CLK:時鐘輸出腳,為內(nèi)部時鐘的1/4,可用作外圍硬件同步;</p><p>  OSK:在編程操作時可用該腳來控制幅度與時間斜率,與SYNC-CLK同步;當(dāng)OSK不能被編程時,此腳接DGND;</p><p>  PS1和PS0

41、:可用來選擇4個RAM段控制字區(qū)中的一個。</p><p>  2.3 AD9954的串行操作</p><p>  在AD9954的串行操作中,指令字節(jié)用來指定讀/寫操作和寄存器地址。由于串行操作是在寄存器級別上發(fā)生的,因此串行端口控制器應(yīng)能識別指令字節(jié)寄存器地址和自動產(chǎn)生適當(dāng)?shù)募拇嫫髯止?jié)地址。在串行操作指令階段和通信階段,一般先傳送指令階段的指令字,指令階段對應(yīng)于SCLK的前8個上升沿

42、,其對應(yīng)的指令字(8比特)包含了以下信息:</p><p>  其中R/W位用于決定指令字后的操作是讀還是寫,高電平為讀出,低電平為寫入;6、5位的電平高低與操作無關(guān);4~0位則對應(yīng)于A4~A0,表示操作串行寄存器地址,該地址信息同時包含了與該指令字所在指令段對應(yīng)的通信段的傳送字節(jié)數(shù)。指令階段后接著是通訊階段,傳送對應(yīng)于字節(jié)數(shù)的幾個通信周期。</p><p>  通信周期完成后,AD995

43、4的串口控制器即認(rèn)為接下來的8個SCLK的上升沿對應(yīng)的是下一個通信周期的指令字。IOSYNC引腳為高時將立即終止當(dāng)前的通信周期,而當(dāng)IOSYNC引腳狀態(tài)回到低電平時,AD9954串口控制器即認(rèn)為接下來的8個系統(tǒng)時鐘的上升沿對應(yīng)的是下一個通信周期的指令字,從而保持通信的同步。</p><p>  AD9954的串行操作有兩種數(shù)據(jù)傳送方式,即從最高位開始傳送和從最低位開始傳送,這是由控制寄存器0的第8位來決定的。默認(rèn)

44、狀態(tài)為低電平,此時先傳送最高位,若為高電平則先傳送最低位。串行操作 </p><p>  的讀/寫時序如圖3所示。</p><p>  2.4 AD9954的RAM</p><p>  AD9954內(nèi)部的1024×32靜態(tài)RAM具有雙向單一人口,對它進(jìn)行的讀/寫操作不能同時進(jìn)行,寫操作優(yōu)先。RAM的使能位是CFR<31> (控制功能寄存器的31

45、位),此位為低時,對RAM的操作只能通過串行端口;此位為高且CFR<30> 為邏輯0時,RAM的輸出為相位累加器的輸入,此時給芯片提供的是頻率轉(zhuǎn)換字;此位為高且CFR<30> 為邏輯1時,RAM的輸出可作為相位偏移加法器的輸入給芯片提供相位偏移控制字。寫RAM的操作首先通過控制PSI、PSO來選擇RAM段,然后再對相應(yīng)的RAM控制寄存器寫RAM操作的地址變化率、起始地址、終止地址、模式控制和停留方式位。RAM段控

46、制寄存器的5、6、7位可用來指示RAM操作的5種模式,即直接轉(zhuǎn)換模式、上斜坡模式、雙向斜變模式、連續(xù)雙向斜變模式和連續(xù)循環(huán)模式。其中連續(xù)循環(huán)模式是使能RAM,RAM模式控制字為100,這種模式可提供自動、連續(xù)、單向的掃頻,地址發(fā)生器從起始地址開始,當(dāng)其增加到終止地址后會自動回到起始地址重新開始下次循環(huán)。</p><p>  RAM段控制寄存器的39 24位可定義RAM控制器在每個地址停留的SYNC-CIK的周期數(shù)

47、.取值范圍是1—65535;9、8、23—16位用于定義10位終止地址;3—0、15—10位則用于定義10位起始地址。</p><p><b>  寄存器表1。</b></p><p>  2.5 如下為DDS的基本原理</p><p>  第三章 單片機(jī)與AD9954通信</p><p><b>  3.1

48、硬件原理 </b></p><p><b>  3.2 程序圖</b></p><p>  此程序的關(guān)健是單片機(jī)與AD9954進(jìn)行通信,只須看懂時序圖就可以了。</p><p><b>  第四單 調(diào)試</b></p><p>  下面用KEIL uVision與 porteus仿真軟件

49、介紹數(shù)字計(jì)算器的仿真與調(diào)試。</p><p>  4.1Keil C51單片機(jī)軟件開發(fā)系統(tǒng)</p><p>  4.1.1 系統(tǒng)的整體結(jié)構(gòu):</p><p>  C51工具包的整體結(jié)構(gòu)中,其中uVision與Ishell分別是C51 for Windows和for Dos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個開發(fā)流程。開發(fā)人員可用IDE

50、本身或其它編輯器編輯C或匯編源文件。然后分別由C51及A51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng)L51連接定位生成絕對目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級調(diào)試,也可由仿真器使用直接對目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如EPROM中。</p><p>  4.1.

51、2 采用KEIL 開發(fā)的89c51單片機(jī)應(yīng)用程序步驟:</p><p>  ★.在uVision 集成開發(fā)環(huán)境中創(chuàng)建新項(xiàng)目(Project),擴(kuò)展文件名為.UV2,并為該項(xiàng)目選定合適的單片機(jī)CPU器件(本設(shè)計(jì)采用ATMEL 公司下的AT89C51)</p><p>  ★.用uVision 的文本編輯器編寫源文件,可以是匯編文件(.ASM),也可以使C語言文件(擴(kuò)展名.C),并將該文件添加

52、到項(xiàng)目中去。一個項(xiàng)目文件可以包含多個文件,除了源程序文件外,還可以是庫文件、頭文件或文本說明文件。</p><p>  ★.通過uVision 2 的相關(guān)選擇項(xiàng),配置編譯環(huán)境、連接定位器以及Debug調(diào)試器的功能。</p><p>  ★.對項(xiàng)目中的源文件進(jìn)行編譯連接,生成絕對目標(biāo)代碼和可選的HEX文件,如果出現(xiàn)編譯連接錯誤則返回到第2步,修改源文件中的錯誤后重構(gòu)整個項(xiàng)目。</p&g

53、t;<p>  ★.對沒有語法錯誤的程序進(jìn)行仿真調(diào)試,調(diào)試成功后將HEX文件寫入到單片機(jī)應(yīng)用系統(tǒng)的ROM中。</p><p><b>  第五章 結(jié)束語</b></p><p>  畢業(yè)設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識,發(fā)現(xiàn)、提出、分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程。隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機(jī)已經(jīng)

54、成為當(dāng)今計(jì)算機(jī)應(yīng)用中空前活躍的領(lǐng)域,在生活中可以說得是無處不在。因此作為自動化專業(yè)的學(xué)生來說掌握單片機(jī)的開發(fā)技術(shù)是十分重要的。</p><p>  我的題目是單片機(jī)與AD9954硬軟件的設(shè)計(jì),對于我們這些工科學(xué)生來說,這是一次考驗(yàn)。怎么才能找到課堂所學(xué)與實(shí)際應(yīng)用的最佳結(jié)合點(diǎn)?怎樣讓自己的業(yè)余更接近專業(yè)?怎樣讓自己的計(jì)劃更具有序性,而不會忙無一用?這都是我們所要考慮和努力的。這次畢業(yè)設(shè)計(jì)我學(xué)到很多很多的東西,學(xué)會了

55、怎么樣去制定計(jì)劃,怎么樣去實(shí)現(xiàn)這個計(jì)劃,并掌握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒。不僅鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識,掌握了一種系統(tǒng)的研究方法,可以進(jìn)行一些簡單的編程。通過這次畢業(yè)設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。</p><

56、;p>  同時在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,對單片機(jī)匯編語言掌握得不夠好。這次畢業(yè)設(shè)計(jì)通過自己的努力,同學(xué)的幫助,還有老師的辛勤指導(dǎo)下,最終順利完成了。</p><p><b>  參考文獻(xiàn):</b></p><p>  [1] 侯玉寶, 陳忠平,,李成群. 《基于Proteus的51系列單片機(jī)設(shè)計(jì)與仿真

57、》 北京 電子工業(yè)出版社,2008</p><p>  [2] 沈德金,陳粵初.MCS-51系列單片機(jī)接口電路與應(yīng)用程序?qū)嵗本┖娇蘸教齑髮W(xué)出版社,1990</p><p>  [3] 胡漢才.單片機(jī)原理及接口技術(shù).清華大學(xué)出版社,1996</p><p>  [4] 何立民.MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì).北京航空航天大學(xué)出版社,1990.1</

58、p><p>  [5] 張毅剛、彭喜元、姜守達(dá)、喬立巖.新編MCS-51系列單片機(jī)應(yīng)用設(shè)計(jì).哈爾濱工業(yè)大學(xué)出版社,2003.6</p><p>  [6] 康萬新,謝維成,楊加國.《畢業(yè)設(shè)計(jì)指導(dǎo)及案例剖析》,清華大學(xué)出版社, 2007年</p><p>  [7] 馬忠梅等.《單片機(jī)C語言應(yīng)用程序設(shè)計(jì)》.北京航空航天大學(xué)出版社,1997:201-211</p&g

59、t;<p>  [8] 付家才,《單片機(jī)控制工程實(shí)踐技術(shù)》,化學(xué)工業(yè)出版社,2004年</p><p>  [9] 及力,馬東升.《Protel 99SE原理圖與PCB設(shè)計(jì)教程》,電子工業(yè)出版社,2007年</p><p>  [10] 黃智偉.《全國大學(xué)生電子設(shè)計(jì)競賽系統(tǒng)設(shè)計(jì)》,北京航空航天大學(xué)出版社,2006年</p><p><b> 

60、 附表一:</b></p><p><b>  附表二:</b></p><p>  #include <reg51.h></p><p>  //#include"AD9954.h"</p><p>  unsigned long CFR1 =0;</p>&l

61、t;p>  unsigned long CFR1SLAVE=0x00800000;</p><p>  unsigned long CFR2 =0;</p><p>  unsigned long ASF;</p><p>  unsigned long ARR;</p><p>  unsigned long FTW0;</p&

62、gt;<p>  unsigned long POW0;</p><p>  unsigned long FTW1;</p><p>  unsigned long NLSCW=0xFF000053E2;</p><p>  unsigned long PLSCW=0xFF000053E2;</p><p>  unsigne

63、d long multfreq=0xFFFFFFFF;//計(jì)算頻率控制字的系數(shù)</p><p>  unsigned long CS2,PWR,RET,CLKMS;</p><p>  sbit PS1=P1^0;</p><p>  sbit PS0=P1^1; //RAM部分先擇控制</p><p>  sbit SDIO=P1^3;//

64、當(dāng)做為3線口操作時做為串行數(shù)據(jù)輸入,采用2線時,為雙向數(shù)據(jù)口</p><p>  sbit SCLK=P1^4;//串行數(shù)據(jù)時鐘輸入端</p><p>  sbit CS=P1^5;//片選項(xiàng),允許多個芯片共用I/O總線 </p><p>  sbit OSK=P1^2;//編程操作時用來控制幅度與時間的斜率</p><p>  sbi

65、t IO_UPDATE=P2^1;//在上升沿將buffer中的數(shù)據(jù)送到I/O寄存器中</p><p>  sbit IO_SYNC=P1^7;//異步串行端口復(fù)位控制,為高停止,為0時繼續(xù)開始新的I/O操作</p><p>  sbit SDO=P1^6;</p><p>  //sbit jiak=P2^3;</p><p>  //sb

66、it youyik=P2^2;</p><p>  //sbit zuoyik=P2^1;</p><p>  //sbit jiank=P2^0;</p><p>  /***********************************************************************</p><p>  **函數(shù)

67、名稱:端口操作</p><p>  **功能描述:AD9954端口基本操作</p><p><b>  **輸 入:無</b></p><p><b>  **輸 出:無</b></p><p><b>  **全局變量:無</b></p><p>&l

68、t;b>  **調(diào)用模塊:無</b></p><p>  ***********************************************************************/</p><p>  void SCLK_0(void)</p><p><b>  {</b></p><

69、;p><b>  SCLK=0;</b></p><p><b>  }</b></p><p>  void SCLK_1(void)</p><p><b>  {</b></p><p><b>  SCLK=1;</b></p>

70、<p><b>  }</b></p><p>  void SDIO_0(void)</p><p><b>  {</b></p><p><b>  SDIO=0;</b></p><p><b>  }</b></p>&

71、lt;p>  void SDIO_1(void)</p><p><b>  {</b></p><p><b>  SDIO=1;</b></p><p><b>  }</b></p><p>  void CS_Enable(void)</p><

72、;p><b>  {</b></p><p><b>  CS=0; </b></p><p><b>  }</b></p><p>  void CS_Disable(void)</p><p><b>  {</b></p>&l

73、t;p><b>  CS=1;</b></p><p><b>  }</b></p><p>  void CS2_Enable(void)</p><p><b>  {</b></p><p><b>  CS2=0;</b></p>

74、;<p><b>  }</b></p><p>  void CS2_Disable(void)</p><p><b>  {</b></p><p><b>  CS2=1;</b></p><p><b>  }</b></p&

75、gt;<p>  void IO_UPDATE_0(void)</p><p><b>  {</b></p><p>  IO_UPDATE=0;</p><p><b>  }</b></p><p>  void IO_UPDATE_1(void)</p><

76、p><b>  {</b></p><p>  IO_UPDATE=1;</p><p><b>  }</b></p><p>  void IO_SYNC_1(void)</p><p><b>  {</b></p><p>  IO_SYN

77、C=1;</p><p><b>  }</b></p><p>  void IO_SYNC_0(void)</p><p><b>  {</b></p><p>  IO_SYNC=0;</p><p><b>  }</b></p>

78、<p>  void PS0_Set_High(void)</p><p><b>  {</b></p><p><b>  PS0=1;</b></p><p><b>  }</b></p><p>  void PS0_Set_Low(void)</p

79、><p><b>  {</b></p><p><b>  PS0=0;</b></p><p><b>  }</b></p><p>  void PS1_Set_High(void)</p><p><b>  {</b><

80、;/p><p><b>  PS1=1;</b></p><p><b>  }</b></p><p>  void PS1_Set_Low(void)</p><p><b>  {</b></p><p><b>  PS1=0;</b

81、></p><p><b>  }</b></p><p>  /***********************************************************************</p><p>  **函數(shù)名稱:IO9954_Init</p><p>  **功能描述:IO_Init

82、</p><p><b>  **輸 入:無</b></p><p><b>  **輸 出:無</b></p><p><b>  **全局變量:無</b></p><p><b>  **調(diào)用模塊:無</b></p><p> 

83、 ***********************************************************************/</p><p>  void IO9954_Init()</p><p><b>  {</b></p><p><b>  PWR=0;</b></p><

84、;p><b>  RET=0;</b></p><p><b>  CS2=0;</b></p><p><b>  CLKMS=0;</b></p><p>  IO_UPDATE=0;</p><p>  IO_SYNC=0;</p><p>

85、<b>  SDIO=0;</b></p><p><b>  SCLK=0;</b></p><p><b>  CS=0;</b></p><p><b>  SDO=0;</b></p><p><b>  }</b></

86、p><p>  /***********************************************************************</p><p>  **函數(shù)名稱:nNop</p><p>  **功能描述:US級軟件延時(不精確)</p><p>  **輸 入:延時參數(shù),值越大時延時越久</p>

87、<p><b>  **輸 出:無</b></p><p><b>  **全局變量:無</b></p><p><b>  **調(diào)用模塊:無</b></p><p>  ************************************************************

88、***********/</p><p>  void nNop(unsigned long nValue)</p><p><b>  {</b></p><p>  unsigned long i;</p><p>  for(i=nValue;i>0;i--);</p><p><

89、;b>  }</b></p><p>  /***********************************************************************</p><p>  **函數(shù)名稱:WriteByte</p><p>  **功能描述:向AD9954發(fā)送一字節(jié)數(shù)據(jù)MSB FIRST</p>&l

90、t;p>  **輸 入:unsigned char data發(fā)送的數(shù)據(jù)</p><p><b>  **輸 出:無</b></p><p><b>  **全局變量:無</b></p><p>  **調(diào)用模塊:端口操作nNop</p><p>  **********************

91、*************************************************/</p><p>  void WriteByte(unsigned char Data)</p><p><b>  {</b></p><p>  unsigned char k;</p><p>  for(k=0;

92、k<8;k++)</p><p><b>  {</b></p><p><b>  SCLK_0();</b></p><p>  nNop(4);//延時很重要</p><p>  if((Data&0x80)==0x80)</p><p><b>

93、;  SDIO_1();</b></p><p><b>  else</b></p><p><b>  SDIO_0();</b></p><p>  Data=Data<1;</p><p>  nNop(2);//延時很重要</p><p><

94、b>  SCLK_1();</b></p><p>  nNop(4);//延時很重要</p><p><b>  }</b></p><p><b>  }</b></p><p>  /**********************************************

95、*************************</p><p>  **函數(shù)名稱:ReadByte</p><p>  **功能描述:從AD9954讀取一字節(jié)數(shù)據(jù)MSB FIRST</p><p><b>  ** 輸 入:無</b></p><p>  **輸 出:unsigned char讀回的數(shù)據(jù)</p&

96、gt;<p><b>  **全局變量:無</b></p><p>  **調(diào)用模塊:端口操作</p><p>  ***********************************************************************/</p><p>  unsigned char ReadByte(vo

97、id)</p><p><b>  {</b></p><p>  unsigned char Data=0;</p><p>  unsigned char k;</p><p><b>  SDIO=0;</b></p><p>  for(k=0;k<8;k++)

98、</p><p><b>  {</b></p><p><b>  SCLK_0();</b></p><p><b>  nNop(1);</b></p><p><b>  nNop(1);</b></p><p><b

99、>  SCLK_1();</b></p><p><b>  nNop(1);</b></p><p><b>  nNop(1);</b></p><p>  Data=Data<<1;</p><p><b>  if(SDIO)</b><

100、;/p><p><b>  {</b></p><p>  Data|=0x01;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  SDIO=1;</b></p>

101、<p>  return Data;</p><p><b>  }</b></p><p>  /***********************************************************************</p><p>  **函數(shù)名稱:RW_Reg</p><p> 

102、 **功能描述:AD9954讀寫寄存器操作</p><p>  **輸 入:unsigned char addr寄存器地址</p><p>  **unsigned char *buf寫寄存器:指向發(fā)送數(shù)據(jù)的指針</p><p>  **讀寄存器:指向讀回?cái)?shù)據(jù)的指針</p><p>  **unsigned char num發(fā)送或讀回的數(shù)據(jù)長

103、度 num Byte</p><p>  **unsigned char rw讀寫選擇1 讀0寫</p><p><b>  **輸 出:無</b></p><p><b>  **全局變量:無</b></p><p>  **調(diào)用模塊:ReadByte WriteByte</p>&

104、lt;p>  ***********************************************************************/</p><p>  void RW_Reg(unsigned char addr,unsigned char*buf,unsigned char num,unsigned char rw)</p><p><b> 

105、 {</b></p><p>  unsigned char ins;</p><p><b>  if(rw==1)</b></p><p><b>  {</b></p><p>  ins=addr|0x80;</p><p>  WriteByte(ins

106、);</p><p><b>  do{</b></p><p>  buf[num-1]=ReadByte();</p><p><b>  num--;</b></p><p><b>  nNop(5);</b></p><p><b>

107、  }</b></p><p>  while(num);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  ins=addr;

108、</b></p><p>  WriteByte(ins);</p><p><b>  do{</b></p><p>  WriteByte(buf[num-1]);</p><p><b>  num--;</b></p><p><b>  nN

109、op(5);</b></p><p><b>  }</b></p><p>  while(num);</p><p><b>  }</b></p><p><b>  }</b></p><p>  /*****************

110、******************************************************</p><p>  **函數(shù)名稱AD9954_Write_Reg</p><p>  **功能描述:AD9954寫寄存器操作</p><p>  **輸 入:unsigned long command寫入寄存器的指令</p><p>

111、  **unsigned char num發(fā)送或讀回的數(shù)據(jù)長度num Byte</p><p>  **unsigned char addr寄存器地址</p><p><b>  **輸 出:無</b></p><p><b>  **全局變量:無</b></p><p>  **調(diào)用模塊:RW_R

112、eg</p><p>  ***********************************************************************/</p><p>  void AD9954_Write_Reg(unsigned long command,unsigned char num,unsigned char addr)</p><p&g

113、t;<b>  {</b></p><p>  unsigned char temp_com[5]={0,0,0,0,0};</p><p>  unsigned char i;</p><p>  unsigned long temp;</p><p>  temp=command;</p><p&

114、gt;  for(i=0;i<num;i++)</p><p><b>  {</b></p><p>  temp_com[i]=(temp&0xff);</p><p>  temp=temp>>8;</p><p><b>  }</b></p><

115、;p>  RW_Reg(addr,temp_com,num,0);</p><p><b>  }</b></p><p>  /***********************************************************************??</p><p>  **函數(shù)名稱:FTW_Float</

116、p><p>  **功能描述:將浮點(diǎn)型頻率值MHZ轉(zhuǎn)換成頻率控制字</p><p>  **輸 入:float freqfloat浮點(diǎn)型頻率值MHZ</p><p>  **輸 出:unsigned long4 byte頻率控制字</p><p><b>  **全局變量:無</b></p><p>

117、<b>  **調(diào)用模塊:無</b></p><p>  ***********************************************************************/</p><p>  unsigned long FTW_Float(float freqfloat)</p><p><b>  {

118、</b></p><p>  unsigned long temp=0; </p><p>  float freqf=0;</p><p>  freqf=freqfloat/20;//AD9954主頻20MHZ</p><p>  temp=(freqf*multfreq);</p><p>  ret

119、urn(temp);</p><p><b>  }</b></p><p>  /***********************************************************************??</p><p>  **函數(shù)名稱:更新數(shù)據(jù)操作</p><p>  **功能描述:每次更新

120、寄存器的固定操作</p><p><b>  **輸 入:無</b></p><p><b>  **輸 出:無</b></p><p><b>  **全局變量:無</b></p><p><b>  **調(diào)用模塊:無</b></p>&l

121、t;p>  ***********************************************************************/</p><p>  void AD9954_Updata_First(void)</p><p><b>  {</b></p><p>  IO9954_Init();</p

122、><p>  CS_Enable();</p><p>  IO_SYNC_1();</p><p><b>  nNop(40);</b></p><p>  IO_SYNC_0();</p><p>  IO_UPDATE_0();</p><p><b>  }

123、</b></p><p>  void AD9954_Updata_Final(void)</p><p><b>  {</b></p><p>  CS_Disable();</p><p><b>  nNop(20);</b></p><p>  IO_U

124、PDATE_1();</p><p><b>  }</b></p><p>  /*****************************************************************************</p><p>  *Single-Tone Mode</p><p>  ***

125、***************************************************************************/</p><p>  /***********************************************************************</p><p>  **函數(shù)名稱:AD9954_SingleTone_I

126、nit</p><p>  **功能描述:AD9954 Single-Tone Mode初始化</p><p><b>  **輸 入:無</b></p><p><b>  **輸 出:無</b></p><p>  **全局變量:CFR1 CFR2 AD9954功能控制寄存器</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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論