




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、快速掃頻信號(hào)發(fā)生器的設(shè)計(jì)摘要:信號(hào)發(fā)生器又稱信號(hào)源或振蕩器,是一種非常重要的儀器,在通信、測(cè)控、醫(yī)療、教學(xué)領(lǐng)域、實(shí)踐應(yīng)用領(lǐng)域及科技領(lǐng)域中都有著廣泛的應(yīng)用,由于實(shí)際應(yīng)用需要不同頻率的波形,因此設(shè)計(jì)一個(gè)頻率可調(diào)的信號(hào)發(fā)生器具有一定的實(shí)際意義。 本文設(shè)計(jì)的信號(hào)發(fā)生裝置是以STC89C52RC單片機(jī)為主控制器,由復(fù)位電路、晶振電路、信號(hào)產(chǎn)生電路、LED顯示電路、濾波電路等構(gòu)成硬件電路,采用語言進(jìn)行編程,通過DDS技術(shù),根據(jù)采樣定理并通過單片機(jī)控制AD9850芯片,產(chǎn)生頻率在050MHZ的連續(xù)可調(diào)正弦波。本文詳細(xì)介紹了STC89C52RC 單片機(jī)的基本原理,分析了STC89C52RC 各個(gè)管腳的功能及它
2、在設(shè)計(jì)電路中的作用,介紹了芯片AD9850的基本結(jié)構(gòu)及工作原理。最后結(jié)合此設(shè)計(jì)的硬件原理和軟件原理,給出了實(shí)驗(yàn)結(jié)果, 并在產(chǎn)生正弦波的基礎(chǔ)上又實(shí)現(xiàn)了快速掃頻功能。關(guān)鍵字:信號(hào)發(fā)生器;DDS技術(shù);AD9850;快速掃頻中圖分類號(hào):TK514引言1.1 發(fā)展背景電子時(shí)代的來臨,電子元件的日新月異,功能不斷強(qiáng)大,給人們帶來了極大的方便,波形發(fā)生器作為一種常用的信號(hào)源,是現(xiàn)代測(cè)試領(lǐng)域內(nèi)應(yīng)用最廣泛的儀器之一,在科研、教學(xué)、應(yīng)用等領(lǐng)域不可或缺的電子儀器,也是電子測(cè)量領(lǐng)域中最基本、應(yīng)用最廣泛的一類電子儀器之一。自上世紀(jì)20年代波形發(fā)生器誕生以來,隨著晶體管的出現(xiàn),DDS技術(shù)的產(chǎn)生,集成電路的迅速發(fā)展, 用集
3、成電路可很方便地構(gòu)成各種波形發(fā)生器,用集成電路實(shí)現(xiàn)的波形發(fā)生器與其它波形發(fā)生器相比, 其波形質(zhì)量、幅度和頻率穩(wěn)定性等性能指標(biāo), 都有了很大的提高1。隨著單片機(jī)的功能不斷強(qiáng)大,在社會(huì)生活中各個(gè)領(lǐng)域的應(yīng)用更加廣泛, 單片機(jī)集成度高,體積小,可靠性高,抗干擾能力優(yōu)于一般的通用CPU,控制功能強(qiáng),低電壓,低功耗,易擴(kuò)展,性價(jià)比高,便于生產(chǎn)攜帶。單片機(jī)應(yīng)用廣泛,小到涉及千家萬戶的家用電器,如全自動(dòng)洗衣機(jī)、熱水器、高級(jí)音響設(shè)備、電子游戲等,大到國家航空航天,如衛(wèi)星、巡航導(dǎo)彈、火炮、通信、遙感、信息情報(bào)收集等國家安全機(jī)密。另外,單片機(jī)在工業(yè)實(shí)時(shí)控制中系統(tǒng)也有廣泛用途,如過程控制中的各種測(cè)控參數(shù):壓力、流量、
4、液位、溫度、濕度、酸堿度、化學(xué)成分等。從新型單片機(jī)的性能看出,單片機(jī)正朝多品種、多規(guī)格、超小型、低功耗、廉價(jià)的方向發(fā)展。單片機(jī)在社會(huì)生活的意義逐漸顯現(xiàn),并扮演越來越重要的作用。本設(shè)計(jì)采用單片機(jī)作為主要核心,設(shè)計(jì)簡(jiǎn)易波形發(fā)生器。背景中關(guān)于DDS的部分還是太少1.2 研究思路波形發(fā)生器的研究理論基礎(chǔ)知識(shí)主要有模擬電子技術(shù)、數(shù)字電子技術(shù)、單片機(jī)的中斷系統(tǒng)的設(shè)計(jì),另外還涉及顯示模塊,按鍵掃描模塊的基本知識(shí)。單片機(jī)體積小、重量輕、可靠性高、靈活性好、開發(fā)較為容易。它功能強(qiáng)大,提供了相當(dāng)多的相關(guān)功能模塊,所以使用非常方便,用51單片機(jī)來設(shè)計(jì)波形發(fā)生器是完全可行的。基于MCS-51 的波形發(fā)生器設(shè)計(jì),首先要
5、有明確的設(shè)計(jì)目的和設(shè)計(jì)方案,要設(shè)計(jì)出硬件總體框架圖。總體系統(tǒng)框架如圖1.2.1 所示。圖1.2.1 系統(tǒng)框圖圖中,系統(tǒng)以單片機(jī)AT89C52RC 為核心,主要有按鍵模塊、顯示模塊、DDS技術(shù)模塊、濾波電路模塊等,在設(shè)計(jì)過程中,波形的產(chǎn)生主要通過C環(huán)境下的程序控制單片機(jī)及芯片 AD9850工作。這要依靠單片機(jī)的中斷系統(tǒng),波形輸入頻率改變通過外部中斷系統(tǒng)實(shí)現(xiàn),在設(shè)計(jì)過程中,要進(jìn)行硬件和軟件的調(diào)試,及時(shí)發(fā)現(xiàn)問題解決問題,直到能夠輸出所要求的波形和實(shí)現(xiàn)掃頻功能為止。1.3 研究意義快速掃頻信號(hào)發(fā)生器目前廣泛用于放大器、各種濾波器、及其有源或無源網(wǎng)絡(luò)的頻率特性, 利用掃頻信號(hào)可對(duì)被測(cè)網(wǎng)絡(luò)進(jìn)行快速、定性或
6、定量的動(dòng)態(tài)測(cè)量, 給出被測(cè)網(wǎng)絡(luò)的傳輸特性、阻抗等參數(shù)的實(shí)時(shí)測(cè)量結(jié)果。而掃頻信號(hào)驅(qū)動(dòng)是整個(gè)測(cè)量系統(tǒng)設(shè)計(jì)中的關(guān)鍵環(huán)節(jié)之一, 設(shè)計(jì)完成一個(gè)能夠產(chǎn)生等幅、波形失真小、頻率隨時(shí)間線性變化的掃頻信號(hào)源是本文研究的主要目標(biāo)。通過對(duì)此波形發(fā)生器的設(shè)計(jì),可以對(duì)51單片機(jī)有了更加深刻的認(rèn)識(shí),對(duì)其各個(gè)引腳功能掌握的更為透徹。同時(shí)對(duì)DDS信號(hào)處理技術(shù)以及芯片AD9850有了更加深刻的認(rèn)識(shí)與了解,對(duì)DDS的發(fā)展過程有了一定的把握,并對(duì)最新的DDS技術(shù)有了一定的了解,再次認(rèn)識(shí)到單片機(jī)的應(yīng)用具有使用范圍廣的特點(diǎn)和對(duì)各個(gè)行業(yè)的技術(shù)改造,產(chǎn)品智能化的更新?lián)Q代起著重要推動(dòng)作用。在設(shè)計(jì)波形發(fā)生器的過程中,需要完成硬件設(shè)計(jì)和軟件設(shè)計(jì)
7、,所以需要設(shè)計(jì)電路硬件原理圖。在繪制原理圖過程中,對(duì)PROTEL99SE軟件進(jìn)行了熟悉和應(yīng)用,對(duì)軟件中的各個(gè)文件編輯器進(jìn)行了掌握,并且知道了在原理圖設(shè)計(jì)和繪制時(shí),要對(duì)元件有合理的布局和放置。在編寫C程序過程中,對(duì)KEIL軟件進(jìn)行全面復(fù)習(xí),熟悉軟件的編程環(huán)境,調(diào)試過程中的單步執(zhí)行等功能進(jìn)行熟練練習(xí)。通過這次研究,在自己動(dòng)手設(shè)計(jì)硬件原理圖和軟件編程的過程中,可以很好的了解到波形發(fā)生器的總體設(shè)計(jì)過程和功能的實(shí)現(xiàn)過程,自己著手硬件和軟件的制作,一定程度上提高了自己的動(dòng)手能力和解決問題的能力。2 波形發(fā)生器硬件設(shè)計(jì) 硬件部分主要由單片機(jī)控制模塊,DDS直接數(shù)字式頻率合成器模塊,鍵盤輸入模塊,輸入顯示模塊
8、和功率放大模塊等組成。2.1 STC89C52單片機(jī)簡(jiǎn)介STC89C52系列單片機(jī)是宏晶科技公司推出的新一代增強(qiáng)型8051單片機(jī),具有超強(qiáng)抗干擾、高速、低功耗一種新型51內(nèi)核的單片機(jī),與普通的51單片機(jī)完全兼容,12MHZ時(shí)鐘周期與6MHZ時(shí)鐘周期可以任意切換,無需專用編程器,無需專用仿真器,通過串口可直接下載用戶程序,具有EEPROM功能和看門狗功能,它是控制波形輸出的核心,主要包括運(yùn)算器和控制器兩大部分,片內(nèi)含有 8k 字節(jié)Flash 閃速存儲(chǔ)器,512字節(jié)內(nèi)部RAM,32個(gè)I/O接口線,3個(gè)16位定時(shí)/計(jì)數(shù)器,一個(gè)5向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,18個(gè)字節(jié)的特殊功能寄存器,片內(nèi)
9、振蕩器及時(shí)鐘電路,工作頻率范圍040MHZ,相當(dāng)于普通8051的080MHZ,實(shí)際工作頻率可達(dá)48MHZ,同時(shí),片內(nèi)采用單總線結(jié)構(gòu),有較強(qiáng)的位處理能力,兼容MCS-51指令系統(tǒng),為工業(yè)和生活提供許多高性價(jià)比的應(yīng)用場(chǎng)合,可靈活應(yīng)用于各種控制領(lǐng)域。2.1.1 STC89C51引腳及各引腳功能其引腳圖如圖 2.1.1所示圖2.1.1 STC89C52單片機(jī)引腳圖各引腳功能介紹:40只引腳按功能分為3類:電源及時(shí)鐘引腳、控制引腳、I/O口引腳。1. 電源及時(shí)鐘引腳1) 電源引腳(1)Vcc(40腳):+5V電源;(2)Vss(20腳):接地。2) 時(shí)鐘引腳(1)XTAL1(19腳):接外部晶體,如果采
10、用外接振蕩器時(shí),振蕩器的輸出應(yīng)接到此引腳上。(2)XTAL2(18腳):接外部晶體的另一端或采用外接振蕩器時(shí)懸空。2. 控制引腳提供控制信號(hào),有的引腳還具有復(fù)用功能。 (1) RST/VPD(9腳):復(fù)位與備用電源。 (2) EA*/VPP(Enable Address/Voltage Pulse of Programing,31腳) EA*:為內(nèi)外程序存儲(chǔ)器選擇控制端。 EA*=1,訪問片內(nèi)程序存儲(chǔ)器,但在PC(程序計(jì)數(shù)器)值超過0FFFH(對(duì)于8051、8751)時(shí),即超出片內(nèi)程序存儲(chǔ)器的4K字節(jié)地址范圍時(shí),將自動(dòng)轉(zhuǎn)向執(zhí)行外部程序存儲(chǔ)器內(nèi)的程序。 EA*=0,單片機(jī)則只訪問外部程序存儲(chǔ)器。
11、 VPP:本引腳的第二功能。用于施加編程電壓(例如+21V或+12V)。對(duì)AT89C51,加在VPP腳的編程電壓為+12V或+5V。(3) ALE/PROG*(30腳):第一功能:ALE為地址鎖存允許,可驅(qū)動(dòng)8個(gè)LS型TTL負(fù)載。第二功能:PROG*為編程脈沖輸入端。此外,單片機(jī)在運(yùn)行時(shí),ALE端一直有正脈沖信號(hào)輸出,此頻率為時(shí)鐘振蕩器頻率fosc的1/6。該正脈沖信號(hào)可以作時(shí)鐘源或定時(shí)信號(hào)使用。注意:每當(dāng)AT89C51單片機(jī)訪問外部RAM時(shí)(即執(zhí)行MOVX類指令時(shí)),要丟失1個(gè)ALE脈沖。因此,嚴(yán)格來說,ALE還不宜作為精確的時(shí)鐘源或定時(shí)信號(hào)。PROG*為該引腳的第二功能,在對(duì)片內(nèi)Flash
12、存儲(chǔ)器編程時(shí),此引腳作為編程脈沖輸入端。(4) PSEN*(29腳):外部程序存儲(chǔ)器的讀選通信號(hào)。在單片機(jī)讀外部程序存儲(chǔ)器時(shí),此引腳輸出脈沖的負(fù)跳沿作為讀外部程序存儲(chǔ)器的選通信號(hào)。3. 并行I/O口引腳(1) P0口:當(dāng)89C51擴(kuò)展外部存儲(chǔ)器及I/O接口芯片時(shí),P0口作為地址總線(低8位)及數(shù)據(jù)總線的分時(shí)復(fù)用端口,為雙向I/O口。當(dāng)作為低八位地址總線時(shí)需外接地址鎖存器。也可作為通用的I/O口使用,但需加上拉電阻,這時(shí)為準(zhǔn)雙向口。當(dāng)作為普通的I/O輸入時(shí),應(yīng)先向端口的輸出鎖存器寫入1。(2) P1口:8位準(zhǔn)雙向I/O口,可驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。(3) P2口:8位準(zhǔn)雙向I/O口,與地址總線
13、(高8位)復(fù)用,可驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。(4) P3口:8位準(zhǔn)雙向I/O口,雙功能復(fù)用口,可驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。P3口還可提供第二功能,定義如表2.1所列。表2.1 P3口第二功能綜上所述,P0口作為地址總線(低8位)及數(shù)據(jù)總線使用時(shí),為雙向口。作為通用的I/O口使用時(shí),為準(zhǔn)雙向口,這時(shí)需加上拉電阻。P1口、P2口、P3口均為準(zhǔn)雙向口。要特別注意準(zhǔn)雙向口與雙向口的差別。準(zhǔn)雙向口僅有兩個(gè)狀態(tài)。雙向口P0口的口線內(nèi)無固定上拉電阻,為雙向三態(tài)I/O口。這是由于P0口作為數(shù)據(jù)總線使用時(shí),必須要有高阻的“懸浮”狀態(tài)。而準(zhǔn)雙向I/O口則無需高阻的“懸浮”狀態(tài)。 2.1.2 單片機(jī)最小系統(tǒng)單片機(jī)最
14、小系統(tǒng),是指用最少的元件組成的單片機(jī)可以工作的系統(tǒng)小系統(tǒng)一般應(yīng)該包括:單片機(jī)、晶振電路、復(fù)位電路。其電路如圖2.1.2所示。圖2.1.2 單片機(jī)應(yīng)用最小系統(tǒng)2.2 DDS正弦波產(chǎn)生電路DDS 是直接數(shù)字頻率合成的簡(jiǎn)稱(即Direct Digital Frequency Synthesize)。直接數(shù)字頻率合成技術(shù)是近年來隨著微電子技術(shù)的發(fā)展而發(fā)展起來的。其基本原理是利用采樣定理,通過查表法產(chǎn)生波形,是一種全數(shù)字化的頻率合成器,主要由頻率控制寄存器、相位累加器、正弦計(jì)算器和參考時(shí)鐘等部分構(gòu)成。DDS 頻率分辨率高,輸出頻點(diǎn)多,可達(dá)N個(gè)頻點(diǎn)(N 位相位累加器位數(shù));頻率切換速度快,可達(dá)us 量級(jí);
15、頻率切換時(shí)相位連續(xù);可以輸出寬帶正交信號(hào);輸出相位噪聲低,對(duì)參考頻率源的相位噪聲有改善作用;可以產(chǎn)生任意波形;全數(shù)字化實(shí)現(xiàn),便于集成,體積小,重量輕7。該電路也是信號(hào)發(fā)生器的主要部分,DDS芯片在單片機(jī)的數(shù)字信號(hào)控制下產(chǎn)生高精度的一定幅度的正弦波,DDS同 DSP(數(shù)字信號(hào)處理)一樣,是一項(xiàng)關(guān)鍵的數(shù)字化技術(shù)。與傳統(tǒng)的頻率合成器相比,DDS具有低成本、低功耗、高分辨率和快速轉(zhuǎn)換時(shí)間等優(yōu)點(diǎn),廣泛使用在電信與電子儀器領(lǐng)域,是實(shí)現(xiàn)設(shè)備全數(shù)字化的一個(gè)關(guān)鍵技術(shù)。DDS由于采取的芯片不同會(huì)有很多種,但基本原理相同,本系統(tǒng)采用的是由美國AD公司生產(chǎn)的AD9850芯片。2.2.1 AD9850簡(jiǎn)介AD9850
16、采用先進(jìn)的CMOS 工藝, 其功耗在3. 3V 供電時(shí)僅為155mW , 擴(kuò)展工業(yè)級(jí)溫度范圍為- 40 80 , 最大支持時(shí)鐘頻率為125MHz,此時(shí)輸出的頻率分辨率達(dá)0.0291Hz,采用28腳SSOP 表面封裝形式。AD9850的引腳排列及外圍電路如圖2.2.1所示:圖2.2.1 AD9850引腳及其外圍電路AD9850 內(nèi)含可編程DDS 系統(tǒng)和高速比較器,能實(shí)現(xiàn)全數(shù)字編程控制的頻率合成。其組成結(jié)構(gòu)圖如圖2.2.2 所示:圖2.2.2 AD9850的組成框圖可編程DDS 系統(tǒng)的核心是相位累加器, 它由一個(gè)加法器和一個(gè)N位相位寄存器組成, N一般為2432。每來一個(gè)外部參考時(shí)鐘,相位寄存器便
17、以步長(zhǎng)M 遞加。相位寄存器的輸出與相位控制字相加后可輸入到正弦查詢表地址上。正弦查詢表包含一個(gè)正弦波周期的數(shù)字幅度信息, 每一個(gè)地址對(duì)應(yīng)正弦波中0°360°范圍的一個(gè)相位點(diǎn)。查詢表把輸入地址的相位信息映射成正弦波幅度信號(hào), 然后驅(qū)動(dòng)DAC 以輸出模擬量。相位寄存器每過2N/M個(gè)外部參考時(shí)鐘后返回到初始狀態(tài)一次, 相應(yīng)地正弦查詢表每經(jīng)過一個(gè)循環(huán)也回到初始位置, 從而使整個(gè)DDS 系統(tǒng)輸出一個(gè)正弦波。輸出的正弦波周期TO = Tc2N/ M , 頻率fout = Mfc/ 2N ,Tc、fc 分別為外部參考時(shí)鐘的周期和頻率5。AD9850 采用32 位的相位累加器將信號(hào)截?cái)喑?
18、4 位輸入到正弦查詢表,查詢表的輸出再被截?cái)喑?0位后輸入到DAC , DAC 再輸出兩個(gè)互補(bǔ)的電流。DAC滿量程輸出電流通過一個(gè)外接電阻RSET調(diào)節(jié), 調(diào)節(jié)關(guān)系為ISET=32(1.248V/ RSET) , RSET的典型值是3. 9k。將DAC的輸出經(jīng)低通濾波后接到AD9850內(nèi)部的高速比較器上即可直接輸出一個(gè)抖動(dòng)很小的方波。其系統(tǒng)功能如圖2.2.3所示。圖2.2.3 AD9850系統(tǒng)功能圖AD9850 在接上精密時(shí)鐘源和寫入頻率相位控制字之后就可產(chǎn)生一個(gè)頻率和相位都可編程控制的模擬正弦波輸出, 此正弦波可直接用作頻率信號(hào)源或經(jīng)內(nèi)部的高速比較器轉(zhuǎn)換為方波輸出。在125MHz 的時(shí)鐘下,
19、32 位的頻率控制字可使AD9850 的輸出頻率分辨率達(dá)0. 0291Hz ; 并具有5位相位控制位,而且允許相位按增量180°、90°、45°、22. 5°、11. 25°或這些值的組合進(jìn)行調(diào)整5。2.2.2 AD9850 的控制字與控制時(shí)序AD9850有40位控制字, 32位用于頻率控制,5位用于相位控制, 1位用于電源休眠( Powerdown) 控制, 2位用于選擇工作方式。這40位控制字可通過并行方式或串行方式輸入到AD9850 ,圖2.2.4是控制字并行輸入的控制時(shí)序圖。圖2.2.4 控制字并行輸入的時(shí)序圖在并行裝入方式中,通過8位
20、總線D0D7將可數(shù)據(jù)輸入到寄存器,在重復(fù)5次之后再在FQ-UD上升沿把40位數(shù)據(jù)從輸入寄存器裝入到頻率/相位數(shù)據(jù)寄存器(更新DDS 輸出頻率和相位) , 同時(shí)把地址指針復(fù)位到第一個(gè)輸入寄存器。接著在W-CLK 的上升沿裝入8位數(shù)據(jù),并把指針指向下一個(gè)輸入寄存器,連續(xù)5個(gè)W-CLK上升沿后, W-CLK的邊沿就不再起作用,直到復(fù)位信號(hào)或FQ-UD上升沿把地址指針復(fù)位到第一個(gè)寄存器。在串行輸入方式,W-CLK上升沿25引腳的一位數(shù)據(jù)串行移入,當(dāng)移動(dòng)40位后,用一個(gè)FQ-UD脈沖即可更新輸出頻率和相位。圖2.2.5是相應(yīng)的控制字串行輸入的控制時(shí)序圖。圖2.2.5 控制字串行輸入的時(shí)序圖并行寫入方式的
21、優(yōu)點(diǎn)是數(shù)據(jù)傳輸?shù)乃俣瓤欤軌蛱嵘麄€(gè)系統(tǒng)的處理速度,但占用的單片機(jī)的I/O口資源太多。與并行方式相比,串行寫入方式在數(shù)據(jù)傳輸?shù)乃俣壬弦髢?yōu)點(diǎn)是能節(jié)省很多I/O口資源。所以,本系統(tǒng)采用STC89S51單片機(jī)作為控制核心,通過串行寫入控制字的方式控制AD9850芯片,加上鍵盤和LED顯示部分等外圍電路,構(gòu)成整個(gè)系統(tǒng)電路。AD9850的復(fù)位(RESET) 信號(hào)為高電平有效,且脈沖寬度不小于5個(gè)參考時(shí)鐘周期。AD9850的參考時(shí)鐘頻率一般遠(yuǎn)高于單片機(jī)的時(shí)鐘頻率, 因此AD9850的復(fù)位(RESET) 端可與單片機(jī)的復(fù)位端直接相連。需要注意的是用于選擇工作方式的兩個(gè)控制位,無論并行還是串行最
22、好都寫成00,并行時(shí)的10、01和串行時(shí)的10、01、11 都是工廠測(cè)試用的保留控制字,不慎使用可能導(dǎo)致難以預(yù)料的后果。2.3低通濾波器的設(shè)計(jì)由于AD9850內(nèi)部沒有低通濾波器,因此輸出的掃頻信號(hào)含有高頻噪聲,需要在其輸出端口加低通濾波器。由于AD9850的系統(tǒng)時(shí)鐘典型為125MHZ,而DDS最高能輸出系統(tǒng)時(shí)鐘的一半,但為了更好降低DDS的雜散諧波,產(chǎn)生平滑的信號(hào)波形,一般將最高輸出控制在系統(tǒng)時(shí)鐘的40,本系統(tǒng)設(shè)計(jì)中,濾波器最高輸出頻率設(shè)定為50MHZ,為了能降低AD9850系統(tǒng)時(shí)鐘的干擾,采用具有較窄過渡帶特性的七階橢圓濾波器,具有下降更快的過渡帶,通帶設(shè)計(jì)為55MHZ,通過實(shí)際中的不斷調(diào)試
23、以確定濾波器組件值,如圖2.3.1所示。圖2.3.1 低通濾波器原理圖2.4 鍵盤輸入顯示電路 該電路模塊主要用于顯示要輸入的顯示的頻率,包括位八段數(shù)碼管、顯示驅(qū)動(dòng)電路。由于輸入與顯示電路元件較多,而單片機(jī)的接口有限,所以必須對(duì)單片機(jī)的輸入輸出口進(jìn)行擴(kuò)展,接口擴(kuò)展電路是輸入顯示電路的重要組成部分。顯示電路如圖2.4.1所示:圖2.4.1 輸入顯示電路2.4.1 數(shù)碼管顯示電路簡(jiǎn)介常用的LED顯示器為8段(或7段,8段比7段多了1個(gè)小數(shù)點(diǎn)“dp”段)。每一個(gè)段對(duì)應(yīng)1個(gè)發(fā)光二極管。這種顯示器有共陽極和共陰極2種。共陰極LED顯示器的發(fā)光二極管的陰極連接在一起,通常此公共陰極接地。當(dāng)某個(gè)發(fā)光二極管的
24、陽極為高電平時(shí),發(fā)光二極管點(diǎn)亮,相應(yīng)的段被顯示。同樣,共陽極LED顯示器的發(fā)光二極管的陽極連接在一起,通常此公共陽極接正電壓,當(dāng)某個(gè)發(fā)光二極管的陰極接低電平時(shí),發(fā)光二極管被點(diǎn)亮,相應(yīng)的段被顯示,本設(shè)計(jì)采用的是共陰極LED顯示器作為整個(gè)系統(tǒng)的輸入頻率顯示器。2.4.2 LED顯示器工作原理個(gè)LED顯示塊有位位選線和×N根段碼線。段碼線控制顯示字符的字型,而位選線為各個(gè)LED顯示塊中各段的公共端,它控制該LED顯示位的亮或暗。LED顯示器有靜態(tài)顯示和動(dòng)態(tài)顯示2種顯示方式。1.LED靜態(tài)顯示方式靜態(tài)顯示是指數(shù)碼管顯示某一字符時(shí),相應(yīng)的發(fā)光二極管恒定導(dǎo)通或恒定截止。這種顯示方式的各位數(shù)碼管相
25、互獨(dú)立,公共端恒定接地(共陰極)或接正電源(共陽極)。每個(gè)數(shù)碼管的8個(gè)字段分別與一個(gè)8位I/O口地址相連,I/O口只要有段碼輸出,相應(yīng)字符即顯示出來,并保持不變,直到I/O口輸出新的段碼。采用靜態(tài)顯示方式,較小的電流即可獲得較高的亮度,且占用CPU時(shí)間少,編程簡(jiǎn)單,顯示便于監(jiān)測(cè)和控制,但其占用的口線多,硬件電路復(fù)雜,成本高,只適合于顯示位數(shù)較少的場(chǎng)合。2.LED動(dòng)態(tài)顯示方式動(dòng)態(tài)顯示是一位一位地輪流點(diǎn)亮各位數(shù)碼管,這種逐位點(diǎn)亮顯示器的方式稱為位掃描。通常,各位數(shù)碼管的段選線相應(yīng)并聯(lián)在一起,由一個(gè)8位的I/O口控制:各位的位選線由另外的I/O口線控制。動(dòng)態(tài)方式顯示時(shí),各數(shù)碼管分時(shí)輪流選通,要使其穩(wěn)
26、定顯示必須采用掃描方式,即在某一時(shí)刻只選通一位數(shù)碼管,并送出相應(yīng)的段碼,在另一時(shí)刻選通另一位數(shù)碼管,并送出相應(yīng)的段碼,依此規(guī)律循環(huán),即可使各位數(shù)碼管顯示將要顯示的字符,雖然這些字符是在不同的時(shí)刻分別顯示,但由于人眼存在視覺暫留效應(yīng),只要每位顯示間隔足夠短就可以給人同時(shí)顯示的感覺。本設(shè)計(jì)采用的是動(dòng)態(tài)顯示方式。2.4.3 鍵盤輸入電路鍵盤輸入電路如圖2.4.2所示:圖2.4.2鍵盤輸入電路鍵盤是由一組規(guī)則排列的按鍵組成,一個(gè)按鍵實(shí)際上是一個(gè)開關(guān)元件,也就是說鍵盤是一組規(guī)則排列的開關(guān)。單片機(jī)系統(tǒng)中,若使按鍵較多時(shí),通常采用矩陣式(也稱行列式)鍵盤。矩陣式鍵盤由行線和列線組成,按鍵位于行、列線的交叉點(diǎn)
27、上,其結(jié)構(gòu)如圖2.4.3所示。圖2.4.3 4*4行列式鍵盤識(shí)別按鍵的方法很多,其中,最常見的方法是掃描法。按鍵按下時(shí),與此鍵相連的行線與列線導(dǎo)通,行線在無鍵按下時(shí)處在高電平,顯然,如果讓所有的列線也處在高電平,那么,按鍵按下與否不會(huì)引起行線電平的變化,因此,必須使所有列線處在低電平,只有這樣,當(dāng)有鍵按下時(shí),該鍵所在的行電平才會(huì)由高電平變?yōu)榈碗娖健PU根據(jù)行電平的變化,便能判定相應(yīng)的行有鍵按下。在單片機(jī)應(yīng)用系統(tǒng)中,鍵盤掃描只是CPU 的工作內(nèi)容之一。CPU對(duì)鍵盤的響應(yīng)取決于鍵盤的工作方式,鍵盤的工作方式應(yīng)根據(jù)實(shí)際應(yīng)用系統(tǒng)中CPU的工作狀況而定,其選取的原則是既要保證CPU能及時(shí)響應(yīng)按鍵操作,
28、又不要過多占用CPU的工作時(shí)間。通常,鍵盤的工作方式有三種,即編程掃描、定時(shí)掃描和中斷掃描。編程 掃 描 方式是利用CPU完成其它工作的空余調(diào)用鍵盤掃描子程序來響應(yīng)鍵盤輸入的要求。在執(zhí)行鍵功能程序時(shí),CPU不再響應(yīng)鍵輸入要求,直到CPU 重新掃描鍵盤為止。定時(shí)掃描方式就是每隔一段時(shí)間對(duì)鍵盤掃描一次,它利用單片機(jī)內(nèi)部的定時(shí)器產(chǎn)生一定時(shí)間的定時(shí),當(dāng)定時(shí)時(shí)間到就產(chǎn)生定時(shí)器溢出中斷,CPU 響應(yīng)中斷后對(duì)鍵盤進(jìn)行掃描,并在有鍵按下時(shí)識(shí)別出該鍵,再執(zhí)行該鍵的功能程序。采用上述兩種鍵盤掃描方式時(shí),無論是否按鍵,CPU 都要定時(shí)掃描鍵盤,而單片機(jī)應(yīng)用系統(tǒng)工作時(shí),并非經(jīng)常需要鍵盤輸入,因此,CPU 經(jīng)常處于空掃
29、描狀態(tài),為提高CPU工作效率,可采用中斷掃描工作方式。其工作過程如下:當(dāng)無鍵按下時(shí),CPU處理自己的工作,當(dāng)有鍵按下時(shí),產(chǎn)生中斷請(qǐng)求,CPU轉(zhuǎn)去執(zhí)行鍵盤掃描子程序,并識(shí)別鍵號(hào)。信號(hào)發(fā)生器設(shè)計(jì)中要用到十六個(gè)按鍵,因此設(shè)計(jì)過程中選擇行列式鍵盤,為提高CPU利用率,按鍵掃描采取中斷掃描方式口。3 軟件設(shè)計(jì)部分3.1系統(tǒng)程序流程硬件電路設(shè)計(jì)對(duì)系統(tǒng)的穩(wěn)定性,抗干擾能力有很大的影響,但是軟件程序設(shè)計(jì)對(duì)于系統(tǒng)的穩(wěn)定性、準(zhǔn)確性、響應(yīng)速度也有很大的關(guān)系。本設(shè)計(jì)方案中對(duì)應(yīng)硬件電路的程序包括:LED顯示子程序、LCD初始化4x4矩陣鍵盤子程序、轉(zhuǎn)換子程序、掃頻子程序。主程序流程圖如圖3.4所示:圖3.1 系統(tǒng)流程圖
30、程序設(shè)計(jì)中通過4X4矩陣鍵盤輸入我們需要產(chǎn)生的頻率值,并在8位7段數(shù)碼管上實(shí)時(shí)顯示,對(duì)于我們輸入的數(shù)值只需按下確認(rèn)按鈕,就能講我們?cè)O(shè)定的頻率值通過單片機(jī)傳遞給AD9850,使AD9850輸出我們想要得到的頻率值。系統(tǒng)由初始化開始,對(duì)程序中用到的管腳定義進(jìn)行聲明,顯示部分,鍵盤部分,參數(shù)變量,AD9850部分都進(jìn)行初始化,以避免發(fā)生不確定因素,使程序跑飛。在初始化結(jié)束后,程序就進(jìn)入主函數(shù)部分。在主函數(shù)中首先打開總中斷和外部中斷0。然后將P0口的高四位付予高電平。這里應(yīng)用外部中斷作為中斷的觸發(fā)是因?yàn)橄到y(tǒng)中我們采用中斷法來對(duì)鍵盤進(jìn)行讀取。這樣做的好處是我們可以隨時(shí)更改我們需要輸入到系統(tǒng)中的數(shù)值,并且
31、不會(huì)占用太多單片機(jī)的資源,提高效率。當(dāng)然,要讀取到4X4鍵盤上任一按鍵的中斷請(qǐng)求,我們需要用到一個(gè)74LS21(四輸入與門),將鍵盤的四行或則四列分別引到74LS21的輸入端,然后將輸出端引到單片機(jī)的P3.2(INT0)段,并將INT0設(shè)置成"1",即下降沿觸發(fā)方式。這樣一旦有按鍵按下,74LS21就輸出一個(gè)低電平,INT0就由高電平變成低電平,這樣單片機(jī)就檢測(cè)到有外部中斷請(qǐng)求。P1、P2、P3口也要進(jìn)行相應(yīng)的初始化,為程序的后續(xù)執(zhí)行做好準(zhǔn)備。AD9850的初始化主要是對(duì)AD9850進(jìn)行復(fù)位。AD9850的各個(gè)功能管腳復(fù)位后,為后面的數(shù)據(jù)傳輸工作做好準(zhǔn)備。接下來是LED的顯
32、示。我們需要做到7段8位數(shù)碼管的循環(huán)顯示,并且在系統(tǒng)剛上電的時(shí)候我們是LED能夠顯示Fo=000Hz這樣8個(gè)字符。對(duì)于8位數(shù)碼管位選擇控制,我們通過P1口的低3位,經(jīng)過74HC138譯碼器輸出選擇信號(hào)。使8位數(shù)碼管循環(huán)顯示。數(shù)碼管的顯示卻又和鍵盤的輸入息息相關(guān)。本系統(tǒng)采用4X4的矩陣鍵盤,對(duì)鍵盤進(jìn)行逐行掃描,并結(jié)合中斷法來判斷是否有鍵按下。在讀鍵盤期間,我們關(guān)閉外部中斷,防止干擾帶來的多次中斷誤判。在消抖處理方面,我們?cè)诎存I按下后,采用延時(shí)十多毫秒再讀取鍵值的辦法。但是本系統(tǒng)不采用循環(huán)語句來判斷,因?yàn)椴捎醚h(huán)語句會(huì)使CPU占用系統(tǒng)資源,降低單片機(jī)的工作效率。因此這里我們采用定時(shí)器中斷法,讓定時(shí)
33、器等待十多毫秒后觸發(fā)定時(shí)器中斷,提高了系統(tǒng)的工作效率。軟件中對(duì)按鍵的不同功能也作了分類。有功能鍵和數(shù)字鍵兩種。只有按下更改鍵后,才能向系統(tǒng)重新輸入數(shù)值,按下確認(rèn)鍵后,才能將數(shù)值傳送給單片機(jī)。其它的功能鍵,按下后就能直接通過單片機(jī)控制AD9850執(zhí)行相應(yīng)的操作了。若沒有按鍵被按下,系統(tǒng)就只能執(zhí)行當(dāng)前的操作,直到有觸發(fā)命令的到來。3.2 AD9850程序AD9850在此系統(tǒng)中采用串口方式,即利用D7端口今天傳輸數(shù)據(jù)。其他的端口還有復(fù)位端口,寫始終端口,頻率端口,在AD9850中都要對(duì)這些端口進(jìn)行初始化。程序如下: void ad9850_reset()ad9850_w_clk=0;ad9850_f
34、q_up=0;/rest信號(hào)ad9850_rest=0;ad9850_rest=1;ad9850_rest=0;/w_clk信號(hào)ad9850_w_clk=0;ad9850_w_clk=1;ad9850_w_clk=0;/fq_up信號(hào)ad9850_fq_up=0;ad9850_fq_up=1;ad9850_fq_up=0;在對(duì)AD9850進(jìn)行復(fù)位后,就是向AD9850進(jìn)行控制,這部分主要包括寫數(shù)據(jù)與命令。最主要的還是控制字K在程序中的處理。K值在程序中用X來表示,并且要結(jié)合模塊中使用的有源晶振的頻率值。我們也可以對(duì)頻率進(jìn)行一定的修正,減小晶振帶來的誤差。在AD9850中,對(duì)于計(jì)數(shù)容量為2l的相
35、位累加器和具有M個(gè)相位取樣點(diǎn)的正弦波波形存儲(chǔ)器,若頻率控制字為K,輸出信號(hào)頻率fo為參考時(shí)鐘頻率為fc,則DDS系統(tǒng)輸出信號(hào)的頻率為:=。由奈奎斯特采樣定理可知,DDS輸出的最大頻率為:=。則可得頻率控制字為:K=。程序中我們?yōu)榱耸咕茸畲蠡琇取值為32,其程序如下:void ad9850_wr(unsigned char w0,double frequency)unsigned char i,w;long int y;double x;x=4294795550/125;/修正頻率使之更精確,減小晶振帶來的誤差 frequency=frequency/1000000;這里應(yīng)該是單位統(tǒng)一為MH
36、zfrequency=frequency*x;y=frequency;/寫w4數(shù)據(jù)w=(y>>=0);for(i=0;i<8;i+)ad9850_bit_data=(w>>i)&0x01;ad9850_w_clk=1;ad9850_w_clk=0;/寫w3數(shù)據(jù)w=(y>>8);for(i=0;i<8;i+)ad9850_bit_data=(w>>i)&0x01;ad9850_w_clk=1;ad9850_w_clk=0;/寫w2數(shù)據(jù)w=(y>>16);for(i=0;i<8;i+)ad9850_bit
37、_data=(w>>i)&0x01;ad9850_w_clk=1;ad9850_w_clk=0;/寫w1數(shù)據(jù)w=(y>>24);for(i=0;i<8;i+)ad9850_bit_data=(w>>i)&0x01;ad9850_w_clk=1;ad9850_w_clk=0;/寫w0數(shù)據(jù)w=w0; for(i=0;i<8;i+)ad9850_bit_data=(w>>i)&0x01;ad9850_w_clk=1;ad9850_w_clk=0;/移入始能ad9850_fq_up=1;ad9850_fq_up=0;3
38、.3 4×4矩陣鍵盤子程序設(shè)計(jì)4×4矩陣鍵盤工作原理及介紹已經(jīng)在前面詳細(xì)的給出,故這里不再重復(fù)。其程序流程圖如圖3.3.1所示:圖3.3.1 鍵盤掃描流程圖程序代碼如下:void key_scan() interrupt 0 /外部中斷 0 EX0=0; TMOD&=0XF1;/設(shè)置定時(shí)器0為模式1方式, TH0=0X2E; /設(shè)置初值,為12毫秒 TL0=0X00; ET0=1; /開啟定時(shí)器中斷0 TR0=1; /啟動(dòng)定時(shí)器計(jì)數(shù) void timer0_isr(void) interrupt 1 /定時(shí)器0的中斷函數(shù) TR0=0; /中斷后我們停止計(jì)數(shù) Read
39、Key(); /定時(shí)器計(jì)數(shù)12毫秒后產(chǎn)生中斷,調(diào)用此函數(shù),讀取鍵值void ReadKey(void) /讀鍵盤值 unsigned char i,j,key; j=0xfe; key=0xff; /設(shè)定初值 for (i=0;i<4;i+) P0=j; /P0口低4位循環(huán)輸出0,掃描鍵盤 if (P0&0xf0)!=0xf0) /如果有鍵按下,P0口高4位不會(huì)為1, key=P0; /讀取P0口,退出循環(huán),否則循環(huán)下次 break; j=_crol_(j,1); /此函數(shù)功能為左循環(huán)移位 if (key=0xff) /如果讀取不到P0口的值,比如是干擾,我們不做鍵值處理,返回
40、l_keyold=0xff; P0=0xf0; /恢復(fù)P0口,等待按鍵按下 EX0=1; /返回之前,開啟外中斷 return; if(l_keyold=key) /檢測(cè)按鍵放開否,如果一樣表明沒放開, TH0=0X2E; /繼續(xù)啟動(dòng)定時(shí)器,檢測(cè)按鍵松開否 TL0=0; TR0=1; return; TH0=0X2E; TL0=0; TR0=1; /繼續(xù)啟動(dòng)定時(shí)器,檢測(cè)按鍵松開否 l_keyold=key; /獲取鍵碼做為放開的憑證 for(i=0;i<17;i+) /查表獲得相應(yīng)的16進(jìn)制值存放l key變量中 if (key=key_tab) l_key=i; break; 3.4
41、數(shù)碼管顯示程序設(shè)計(jì) 數(shù)碼管的程序流程圖如圖3.4.1所示:圖3.4.1 數(shù)碼管顯示流程圖程序如下:void display(unsigned char *lp,unsigned char lc)/顯示 unsigned char i; /定義變量 P2=0; /端口2為輸出 P1=P1&0xF8; for(i=0;i<lc;i+) /循環(huán)顯示 P2=tablelp; /查表法得到要顯示數(shù)字的數(shù)碼段 delay(); /延時(shí)5個(gè)空指令 if(i=7) /檢測(cè)顯示完8位否,完成直接退出,不讓P1口再加1,否則進(jìn)位影響到第四位數(shù)據(jù) break; P2=0; /清0端口,準(zhǔn)備顯示下位 P
42、1+; /下一位數(shù)碼管 程序中將P1口的前3位(即低3位)輸出0,對(duì)應(yīng)138譯門輸入腳,全0為第一位數(shù)碼管,然后再檢測(cè)是否8位數(shù)碼管已完全顯示,若沒有,P1口右移一位,顯示下一位數(shù)碼管。3.5 鍵盤顯示轉(zhuǎn)換程序在程序的設(shè)計(jì)中,我們需要將輸入的按鍵轉(zhuǎn)換為相應(yīng)的數(shù)值在數(shù)碼管上顯示,這里就需要設(shè)計(jì)一段轉(zhuǎn)換程序,具體代碼如下所示:void diszf()/處理轉(zhuǎn)換給數(shù)碼管顯示字符bit nums=1;unsigned long tmp; l_tmpdate0=freq/10000000; tmp=freq/10000000; if(tmp=0 && nums)l_tmpdate0=12
43、; else nums=0; tmp=freq%10000000; l_tmpdate1=tmp/1000000; if(l_tmpdate1=0 && nums)l_tmpdate1=12; else nums=0; tmp=tmp%1000000; l_tmpdate2=tmp/100000; if(l_tmpdate2=0 && nums)l_tmpdate2=12; else nums=0; tmp=tmp%100000; l_tmpdate3=tmp/10000; if(l_tmpdate3=0 && nums)l_tmpdate3=1
44、2; else nums=0; tmp=tmp%10000; l_tmpdate4=tmp/1000; if(l_tmpdate4=0 && nums)l_tmpdate4=12; else nums=0; tmp=tmp%1000; l_tmpdate5=tmp/100; if(l_tmpdate5=0 && nums)l_tmpdate5=12; else nums=0; tmp=tmp%100; l_tmpdate6=tmp/10; if(l_tmpdate6=0 && nums)l_tmpdate6=12; else nums=0; tmp=tmp%10; l_tmpdate7=tmp%10;3.6 掃頻程序 在運(yùn)行掃頻程序時(shí),由于之前的按鍵已經(jīng)全部被占用,故我們這里將兩個(gè)記憶鍵中的一個(gè)改為掃頻開始按鍵。只有按下此鍵后,我們才開始對(duì)起始頻率,終止頻率,步
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 供水供電合同模板
- 2025授權(quán)代理協(xié)議簡(jiǎn)化版合同
- 廢鋼回收企業(yè)與鋼廠購銷合同
- 家居裝修半包服務(wù)合同書
- 辦公室文員勞動(dòng)合同模板
- 2025化肥罐車運(yùn)輸合同
- 2025商務(wù)翻譯材料:合同翻譯指南
- 《古代印度文化》課件
- 2025建筑材料合同范本
- 2025定期租船合同(農(nóng)產(chǎn)品格式)
- DB32-T 5082-2025 建筑工程消防施工質(zhì)量驗(yàn)收標(biāo)準(zhǔn)
- 室速的觀察及護(hù)理
- 餐飲公司績(jī)效考核辦法
- 2025年03月春季河北邯鄲市叢臺(tái)區(qū)博碩人才引進(jìn)50人筆試歷年參考題庫考點(diǎn)剖析附解題思路及答案詳解
- 2025年新高考?xì)v史模擬試卷2(含答案解析)
- 急診一科一品一特色護(hù)理
- 物流行業(yè)招聘流程及人員配置
- 液化氣充裝站建站可行性研究報(bào)告
- 電力安全工作規(guī)程(完整版)
- 《廣東省智慧高速公路建設(shè)指南(試行)》
- 《分布式生活垃圾中轉(zhuǎn)站臭氣處理技術(shù)規(guī)程》
評(píng)論
0/150
提交評(píng)論