基于AT89C51的PWM信號發(fā)生器設(shè)計報告_第1頁
基于AT89C51的PWM信號發(fā)生器設(shè)計報告_第2頁
基于AT89C51的PWM信號發(fā)生器設(shè)計報告_第3頁
基于AT89C51的PWM信號發(fā)生器設(shè)計報告_第4頁
基于AT89C51的PWM信號發(fā)生器設(shè)計報告_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 皖西學(xué)院 課程設(shè)計報告書 基于AT89C51的PWM信號發(fā)生器設(shè)計摘 要 單片機集成度高,功能強,可靠性高,體積小,功耗低,使用方便,價格低廉等一系列優(yōu)點,目前已經(jīng)滲入到人們工作和生活的方方面面,幾乎無處不在,無所不為。單片機的應(yīng)用領(lǐng)域已經(jīng)從面向工業(yè)控制,通訊,交通,智能儀表等迅速發(fā)展到家用消費產(chǎn)品,辦公自動化,汽車電子,PC機外圍以及網(wǎng)絡(luò)通訊等廣大領(lǐng)域。 單片機有兩種基本結(jié)構(gòu)形式:一種是在通用微型計算機中廣泛采用的,將程序存儲器和數(shù)據(jù)存儲器合用一個存儲器空間的結(jié)構(gòu),成為普林斯機構(gòu)。另一種是將程序存儲器和數(shù)據(jù)存儲器截然分開,分別尋址的結(jié)構(gòu),一般需要較大的程序存儲器,目前單片機以采用程序存儲器

2、截然分開的結(jié)構(gòu)多。本課題討論的占空比與周期可調(diào)的信號發(fā)生器的核心是目前應(yīng)用極為廣泛的51系列單片機?;趩纹瑱C的信號發(fā)生器的設(shè)計,該課題的設(shè)計目的是充分運用大學(xué)期間所學(xué)的專業(yè)知識,考察現(xiàn)在正在使用的信號發(fā)生器的基本功能,完成一個基本的實際系統(tǒng)的設(shè)計全過程。關(guān)鍵是這個實際系統(tǒng)設(shè)計的過程,在整個過程中我可以充分發(fā)揮自動化的專業(yè)知識。特別是這個信號發(fā)生器的設(shè)計中涉及到一個典型的控制過程。通過單片機控制一個有特殊功能的信號發(fā)生芯片,可以產(chǎn)生一系列有規(guī)律的周期和占空比可調(diào)的波形。這樣一個信號發(fā)生器裝置在控制領(lǐng)域有相當廣泛的應(yīng)用范圍。因為產(chǎn)生一系列的可調(diào)波形可以作為其他一些設(shè)備的數(shù)值輸入,還可以應(yīng)用與設(shè)備

3、檢測,儀器調(diào)試等場合。高頻穩(wěn)定的波形信號也可以用于無線電波的調(diào)頻,解調(diào)。這些都是現(xiàn)代生活中必不可少的一些應(yīng)用。關(guān)鍵詞:PWM 信號發(fā)生器- 25 -目 錄1.簡介- 3 -1.1 proteus- 3 -1.2 Keil- 4 -1.3 PWM- 5 -1.4 AT89C51- 6 -2.設(shè)計原理和方法- 9 -2.1單片機的基本組成- 9 -2.2方案的設(shè)計與選擇- 9 -2.3定時器、的工作原理- 10 -2.3.1工作方式寄存器TMOD- 11 -2.3.2定時/計數(shù)器控制寄存器TCON- 12 -2.4定時/計數(shù)器的工作方式- 12 -2.5設(shè)計方法- 13 -3.系統(tǒng)硬件電路設(shè)計圖-

4、 14 -4.程序框圖- 16 -4.1主程序框圖:- 16 -4.2系統(tǒng)初始化:- 16 -4.3定時器中斷程序框圖:- 16 -4.4鍵盤掃描程序框圖:- 17 -5.性能分析- 18 -5.1定時器中斷分析- 18 -5.2系統(tǒng)性能分析- 18 -6.源程序- 18 -7. 仿真效果圖- 22 -總 結(jié)- 24 -致 謝- 25 -參考文獻- 25 -1.簡介1.1 proteus Proteus ISIS是英國Labcenter公司開發(fā)的電路分析與實物仿真軟件。它運行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件的特點是:(1)實現(xiàn)了單片機仿真和

5、SPICE電路仿真相結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機及其外圍電路組成的系統(tǒng)的仿真、RS232動態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。(2)支持主流單片機系統(tǒng)的仿真。目前支持的單片機類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。(3) 提供軟件調(diào)試功能。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點等調(diào)試功能,同時可以觀察各個變量、寄存器等的當前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;同時支持第三方的軟件編譯和

6、調(diào)試環(huán)境,如Keil C51 uVision2等軟件。(4) 具有強大的原理圖繪制功能??傊撥浖且豢罴瘑纹瑱C和SPICE分析于一身的仿真軟件,功能極其強大。本章介紹Proteus ISIS軟件的工作環(huán)境和一些基本操作。特點:支持ARM7,PIC ,AVR,HC11以及8051系列的微處理器CPU模型,更多模型正在開發(fā)中: 交互外設(shè)模型有LCD顯示、RS232終端、通用鍵盤、開關(guān)、按鈕、LED等;強大的調(diào)試功能,如訪問寄存器與內(nèi)存,設(shè)置斷點和單步運行模式;支持如IAR、Keil和Hitech等開發(fā)工具的源碼C和匯編的調(diào)試;一鍵“make”特性:一個鍵完成編譯與仿真操作;內(nèi)置超過6000標準

7、SPICE模型,完全兼容制造商提供的SPICE模型;DLL界面為應(yīng)用提供特定的模式;基于工業(yè)標準的SPICE3F5混合模型電路仿真器14種虛擬儀器:示波器、邏輯分析儀、信號發(fā)生器、規(guī)程分析儀等;高級仿真包含強大的基于圖形的分析功能:模擬、數(shù)字和混合瞬時圖形;頻率;轉(zhuǎn)換;噪聲;失真;付立葉;交流、直流和音頻曲線;模擬信號發(fā)生器包括直流、正旋、脈沖、分段線性、音頻、指數(shù)、單頻FM;數(shù)字信號發(fā)生器包括尖脈沖、脈沖、時鐘和碼流;集成PROTEUS PCB設(shè)計形成完整的電子設(shè)計系統(tǒng)。1.2 Keil Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相

8、比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。運行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。如果你使用C語言編程,那么Keil幾乎就是你的不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強大的軟件仿真調(diào)試工具也會令你事半功倍。 (1)系統(tǒng)概述 Keil C51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點,只要看一下編譯后

9、生成的匯編代碼,就能體會到Keil C51生成的目標代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。下面詳細介紹Keil C51開發(fā)系統(tǒng)各部分功能和使用。 (2)Keil C51單片機軟件開發(fā)系統(tǒng)的整體結(jié)構(gòu) C51工具包的整體結(jié)構(gòu),uVision與Ishell分別是C51 for Windows和for Dos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及C51編譯器編譯生成目標文件(.OBJ)。目標文件可由LIB51創(chuàng)建生成庫文件,也可以與

10、庫文件一起經(jīng)L51連接定位生成絕對目標文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標準的Hex文件,以供調(diào)試器dScope51或tScope51使用進行源代碼級調(diào)試,也可由仿真器使用直接對目標板進行調(diào)試,也可以直接寫入程序存貯器如EPROM中。1.3 PWM(1)簡介 脈沖寬度調(diào)制(PWM),是英文“Pulse Width Modulation”的縮寫,簡稱脈寬調(diào)制,是一種模擬控制方式,其根據(jù)相應(yīng)載荷的變化來調(diào)制晶體管柵極或基極的偏置,來實現(xiàn)開關(guān)穩(wěn)壓電源輸出晶體管或晶體管導(dǎo)通時間的改變,這種方式能使電源的輸出電壓在工作條件變化時保持恒定,是利用微處理器的數(shù)字信號對模擬電路進行控制的一種非常有效

11、的技術(shù)。 PWM控制技術(shù)以其控制簡單,靈活和動態(tài)響應(yīng)好的優(yōu)點而成為電力電子技術(shù)最廣泛應(yīng)用的控制方式,也是人們研究的熱點。由于當今科學(xué)技術(shù)的發(fā)展已經(jīng)沒有了學(xué)科之間的界限,結(jié)合現(xiàn)代控制理論思想或?qū)崿F(xiàn)無諧振軟開關(guān)技術(shù)將會成為PWM控制技術(shù)發(fā)展的主要方向之一。(2)基本原理 隨著電子技術(shù)的發(fā)展,出現(xiàn)了多種PWM技術(shù),其中包括:相電壓控制PWM、脈寬PWM法、隨機PWM、SPWM法、線電壓控制PWM等,而在鎳氫電池智能充電器中采用的脈寬PWM法,它是把每一脈沖寬度均相等的脈沖列作為PWM波形,通過改變脈沖列的周期可以調(diào)頻,改變脈沖的寬度或占空比可以調(diào)壓,采用適當控制方法即可使電壓與頻率協(xié)調(diào)變化。可以通過

12、調(diào)整PWM的周期、PWM的占空比而達到控制充電電流的目的。 盡管模擬控制看起來可能直觀而簡單,但它并不總是非常經(jīng)濟或可行的。其中一點就是,模擬電路容易隨時間漂移,因而難以調(diào)節(jié)。能夠解決這個問題的精密模擬電路可能非常龐大、笨重(如老式的家庭立體聲設(shè)備)和昂貴。模擬電路還有可能嚴重發(fā)熱,其功耗相對于工作元件兩端電壓與電流的乘積成正比。模擬電路還可能對噪聲很敏感,任何擾動或噪聲都肯定會改變電流值的大小。 通過以數(shù)字方式控制模擬電路,可以大幅度降低系統(tǒng)的成本和功耗。此外,許多微控制器和DSP已經(jīng)在芯片上包含了PWM控制器,這使數(shù)字控制的實現(xiàn)變得更加容易了。(3)脈沖寬度調(diào)制優(yōu)點 PWM的一個優(yōu)點是從處

13、理器到被控系統(tǒng)信號都是數(shù)字形式的,無需進行數(shù)模轉(zhuǎn)換。讓信號保持為數(shù)字形式可將噪聲影響降到最小。噪聲只有在強到足以將邏輯1改變?yōu)檫壿?或?qū)⑦壿?改變?yōu)檫壿?時,也才能對數(shù)字信號產(chǎn)生影響。 對噪聲抵抗能力的增強是PWM相對于模擬控制的另外一個優(yōu)點,而且這也是在某些時候?qū)WM用于通信的主要原因。從模擬信號轉(zhuǎn)向PWM可以極大地延長通信距離。在接收端,通過適當?shù)腞C或LC網(wǎng)絡(luò)可以濾除調(diào)制高頻方波并將信號還原為模擬形式。 總之,PWM既經(jīng)濟、節(jié)約空間、抗噪性能強,是一種值得廣大工程師在許多設(shè)計應(yīng)用中使用的有效技術(shù)。1.4 AT89C51 AT89C51是一種帶4K字節(jié)FLASH存儲器(FPEROMFla

14、sh Programmable and Erasable Read Only Memory)的低電壓高性能CMOS 8位微處理器,俗稱單片機。(1)主要特性:² 全靜態(tài)工作:0Hz-24MHz² 三級程序存儲器鎖定² 128×8位內(nèi)部RAM² 32可編程I/O線² 兩個16位定時器/計數(shù)器² 5個中斷源² 可編程串行通道² 低功耗的閑置和掉電模式² 片內(nèi)振蕩器和時鐘電路(2)管腳說明: VCC:供電電壓。 GND:接地。 P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當

15、 P0口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的低八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須接上拉電阻。 P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為低八位地址接收。 P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,

16、其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。 P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 P

17、3口也可作為AT89C51的一些特殊功能口,如下表所示: 口管腳 備選功能 P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口) P3.2 /INT0(外部中斷0) P3.3 /INT1(外部中斷1) P3.4 T0(記時器0外部輸入) P3.5 T1(記時器1外部輸入) P3.6 /WR(外部數(shù)據(jù)存儲器寫選通) P3.7 /RD(外部數(shù)據(jù)存儲器讀選通) P3口同時為閃爍編程和編程校驗接收一些控制信號。 RST:復(fù)位輸入。當振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平 時間。 ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié)。 在FLASH編

18、程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。 /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。 /EA/VPP:當/EA保持低電平時

19、,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。 XTAL2:來自反向振蕩器的輸出。 (3)振蕩器特性: XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置 為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件, XTAL2應(yīng)不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外 部時鐘信號的脈寬無任何要求,

20、但必須保證脈沖的高低電平要求的寬度。2.設(shè)計原理和方法2.1單片機的基本組成圖1 51單片機框圖2.2方案的設(shè)計與選擇 在電子技術(shù)領(lǐng)域中,實現(xiàn)函數(shù)信號發(fā)生器的方法有很多種,可以采用不同的原理及器件構(gòu)成不同的電路,但是可以實現(xiàn)相同的功能。(1)方案的比較:方案一:采用單片函數(shù)發(fā)生器如8038,8038可同時產(chǎn)生正弦波,方波等,而且方法簡單易行。用D/A轉(zhuǎn)換器的輸出來改變調(diào)制電壓,也可以實現(xiàn)數(shù)控的調(diào)頻進而改變周期,但是產(chǎn)生的頻率穩(wěn)定度不高。方案二:采用鎖相式頻率合成器,利用鎖相環(huán),降壓控振蕩器(VOC)的輸出,頻率鎖定在所需的頻率上,該方案性能良好,但是難以達到輸出頻率覆蓋系數(shù)的要求,其電路復(fù)雜。

21、方案三:采用單片機編程的方法實現(xiàn)。該方法可以通過編程,來控制方波信號輸出的周期和占空比,并且只要改變程序的相關(guān)參數(shù),便可以改變輸出波形的周期和占空比。由于編程的方法產(chǎn)生的是數(shù)字信號,所以信號的精度可以做到很高。并且電路簡單。 鑒于方案一的信號頻率不夠穩(wěn)定和方案二的電路復(fù)雜,頻率覆蓋系數(shù)難以達標等缺點,所以決定采用方案三的設(shè)計方法。方案三不僅僅是軟硬件結(jié)合,而且它使用的元器件,容易得到,且價格便宜,使得硬件的開銷達到最省。 在此次設(shè)計中,利用AT89C51單片機,軟硬件結(jié)合,實現(xiàn)占空比和周期可調(diào)。案件的操作是通過數(shù)字電路跟外部中斷0來控制的??梢暂敵稣伎毡仍?%到99%可調(diào),精度為1%,周期在5

22、ms到60ms可調(diào),精度為5ms的方波。 本設(shè)計用到一個AT89C51微處理器,4個按鍵,一個四輸入與門。AT89C51用到兩個定時器,定時器0和定時器1。其中定時器0工作在方式1下,決定輸出信號的周期,定時器1工作在方式1下,決定輸出信號的占空比。按鍵PERIOD+和PERIOD-改變信號的周期,按鍵PERIOD+用于增大信號的周期,按一下就增大5ms,當增大到60ms后,就歸為5ms。按鍵PERIOD-用于減小輸出信號的周期,按一次鍵,輸出信號的周期增大5ms,當增大到60ms后,周期就歸于5ms。按鍵ZKB+和ZKB-改變信號的占空比,按鍵ZKB+用于增加信號的占空比,按下一次鍵,占空比

23、就增加1,上限值為99,當再次按鍵時,就讓占空比歸1。按鍵ZKB-用于減小信號的占空比,按下一次鍵,占空比就減1,下限值為1,當再次按鍵時,就讓占空比回歸到99。通過上面的步驟,可以實現(xiàn)占空比和周期的可調(diào)。 同時,設(shè)計中采用了上電或開關(guān)復(fù)位電路用以應(yīng)對其他可能事件。開關(guān)閉合復(fù)位后回復(fù)初值:占空比50%,周期35ms。2.3定時器、的工作原理定時/計數(shù)器實質(zhì)上是一個加1計數(shù)器,它可以工作于定時方式,也可以工作于計數(shù)方式,兩種工作方式實際是對脈沖計數(shù),只不過是所計脈沖來源不同。定時/計數(shù)器的內(nèi)部結(jié)構(gòu)和控制信號如下圖2所示:當其工作于定時方式時, =0,開關(guān)S打向上,計數(shù)器,的計數(shù)脈沖來自振蕩器的1

24、2分頻后的脈沖(即fosc/12),即對系統(tǒng)的機器周期計數(shù)。檔開關(guān)K受控合上時,每過一個周期,計數(shù)器,加1;當記滿了預(yù)設(shè)的個數(shù),回零,置位定時/計數(shù)器溢出中斷標志位,產(chǎn)生溢出中斷。圖2 定時器/計數(shù)器內(nèi)部結(jié)構(gòu)和控制信號2.3.1工作方式寄存器TMOD工作方式寄存器TMOD(地址:89H)為8位寄存器,8位分為兩組,高四位控制T1,低四位控制T0。用于設(shè)置定時/計數(shù)器的工作方式。其格式如下表2.3.1所示。表2.3.1 定時/計數(shù)器方式控制寄存器TMOD D7 D6D5 D4D3 D2 D1 D0GATEM1M0GATEM1M0| T1方式字段 | T0方式字段 |下面對TMOD的各位作以說明:

25、 (1)GATE:門控位。 GATE0時,僅有運行控制位TR0(或TR1)=1,就可以啟動定時/計數(shù)器工作; GATA1時,由TR0(或TR1)=1和外部中斷引腳(INT0或INT1)上的高電平共 同啟動定時/計數(shù)器工作。 (2) 定時/計數(shù)模式選擇位。 =0為定時模式; =1為計數(shù)模式。 (3)M1,M0工作方式選擇位。定時/計數(shù)器工作方式選擇如下表2.3.2所示。 表2.3.2 定時/計數(shù)器工作方式設(shè)置表M1 M0工作方式說明0 0方式013位定時/計數(shù)器0 1方式116位定時/計數(shù)器1 0方式28位初值自動重裝入的8位定時/計數(shù)器1 1方式3僅適用于T0,分成兩個8位定時/計數(shù)器;T1停

26、止計數(shù)2.3.2定時/計數(shù)器控制寄存器TCON TCON的字節(jié)地址為88H,可進行位尋址,位地址為88H8Fh。 格式如下表2.3.3所示。表2.3.3 定時/計數(shù)器控制寄存器TCON D7 D6D5 D4D3 D2D1 D0TF1TR1TF0TR0IE1IT1IE0IT0在TCON寄存器中,定時/計數(shù)器的控制僅用了其中的高四位。 (1)TF1,TF0T1,T0溢出中斷請求標志位。當計數(shù)溢出時該位由硬件自動置為1。CPU響應(yīng)中斷后由硬件自動清0。工作時,CPU可隨時查詢TF的狀態(tài)。所以,可用作查詢測試的標志。也可以用軟件置1或清0,同硬件置1或清0的效果一樣。 (2)TR1,TR0運行控制位。

27、 置1時,啟動定時/計數(shù)器工作;還與GATE位的狀態(tài)有關(guān)。 置0時,停止定時/計數(shù)器工作。由軟件置1或清0。所以,用軟件可控制定時/計數(shù)器的啟動與停止。2.4定時/計數(shù)器的工作方式 (1)方式0為13位計數(shù),由TL0的低5位(高3位未用)和TH0的8位組成,最大計數(shù)值為(8192個脈沖)。啟動后計數(shù)器加1計數(shù)。TL0的低5位計數(shù)滿回零后向進位,當13位計數(shù)滿回零時,中斷溢出位置1,產(chǎn)生中斷請求。定時器模式時有:Nt/ Tcy (Tcy指令周期)計數(shù)初值計算的公式為: (X計數(shù)初值,N計數(shù)個數(shù))定時器的初值還可以采用計數(shù)個數(shù)直接取補法獲得。 (2)方式1和方式0基本相同,唯一的區(qū)別是方式1的計數(shù)

28、位數(shù)是16位,由TL1作為低8位、TH1作為高8位,組成了16位加1計數(shù)器 。其最大計數(shù)值為(65536個脈沖),是幾種方式中計數(shù)值最大的方式。計數(shù)個數(shù)(N)與計數(shù)初值(X)的關(guān)系為: (3)方式2為自動重裝初值的8位計數(shù)方式。在這種方式下,在和兩個寄存器中,專用于寄存8位計數(shù)初值并保持不變,進行8位加1計數(shù),當計數(shù)溢出時,除產(chǎn)生溢出中斷請求外,還自動將中不變的初值重新裝載到。計數(shù)個數(shù)與計數(shù)初值的關(guān)系為: (4)方式3只適用于T0定時/計數(shù)器,T0定時器處于方式3時,T1只能工作在0,1,2方式。TL0和TH0被分成為兩個獨立的8位定時/計數(shù)器。其中TL0可作為8位定時/計數(shù)器,TH0只能作為

29、8位定時器。2.5設(shè)計方法 (1)方波的產(chǎn)生 在本設(shè)計方案中,采用的定時器產(chǎn)生周期和占空比可調(diào)的方波。對比于工作方式0,工作方式1具有16位的寄存器,定時時間更長,產(chǎn)生的頻率范圍更寬。對比于工作方式2,雖然方式2的自動重載功能使定時更加準確,但對于產(chǎn)生低頻來說,方式2的只有256us的定時時間,產(chǎn)生的中斷多,誤差更大,因此選擇設(shè)置在工作方式1下,GATE=0。設(shè)定定時器設(shè)置初始值,即給高低電平分別分配定時時間。當程序啟動,由輸入給定高電平,定時器開始加1計數(shù),當高電平16位計數(shù)滿回零時,TF置1,產(chǎn)生中斷,高電平轉(zhuǎn)為低電平,當?shù)碗娖?6位計數(shù)滿回零時,TF置1,產(chǎn)生中斷,低電平再轉(zhuǎn)為高電平,得

30、出方波。(2)高電平時間的測量本設(shè)計方案中,采用定時器測量高電平的時間。將定時器設(shè)置在工作方式1下,并設(shè)置GATE=1,此時要用軟件使TR1=1,同時外部中斷1(INT1)引腳也為高電平時,才能啟動定時/計數(shù)器工作。所以將控制輸出的方波接在外部中斷1的輸入引腳上,當輸入高電平,定時器開始啟動,在下降沿的時候,讀T1的值,即可算出高電平時間T1_high。3.系統(tǒng)硬件電路設(shè)計圖 對于系統(tǒng)的軟件仿真采用了proteus軟件設(shè)計仿真。 四個獨立按鍵分別與單片機的P1.0,P1.1,P1.2,P1.3相連接,并且通過一個四輸入的與非門,將與非門的輸出當做單片機外部中斷0的觸發(fā)信號。當有按鍵按下時,就會

31、進入外部中斷程序。 P1.4口輸出信號連接到示波器,檢測輸出波形。 RST復(fù)位引腳接入上電或開關(guān)復(fù)位,電源接通后,單片機自動復(fù)位,并且在單片機運行期間,用開關(guān)操作也能使單片機復(fù)位。系統(tǒng)硬件仿真電路原理圖如下圖所示:4.程序框圖4.1主程序框圖:圖4 主程序流程圖4.2系統(tǒng)初始化: 初始化程序主要是給計數(shù)器0和1賦初值,初始化占空比為50%,信號周期為35ms,設(shè)置定時器0和定時器1的工作方式,并開啟計數(shù)器0和計數(shù)器1,設(shè)置外部中斷的觸發(fā)方式,開啟總中斷。4.3定時器中斷程序框圖: 定時器0用于控制輸出信號的周期,定時器1用于控制輸出信號的占空比。開始賦初始值結(jié)束 圖5 定時器中斷程序框圖4.4

32、鍵盤掃描程序框圖: 當有按鍵按下時,進入到外部中斷,然后暫時關(guān)閉外部中斷,啟動延時程序,以消除抖動。然后檢測是哪個按鍵被按下,然后對頻率或占空比的變量做出相應(yīng)的賦值,并且將占空比的值送到數(shù)碼管顯示。并且對定時器0和定時器1分別賦新的初值,開啟外部中斷,定時器0和1中斷,中斷程序結(jié)束。開始 關(guān)中斷延時消抖是否有鍵按下 N N判斷按鍵號 Y按鍵處理計算定時器初值送入初值關(guān)中斷結(jié)束 圖6 鍵盤掃描程序框圖5.性能分析5.1定時器中斷分析 本次周期占空比可調(diào)的信號發(fā)生器的設(shè)計采用了定時器0和定時器1中斷,定時器0中斷用于控制信號的周期,定時器1用于控制信號的占空比。當調(diào)節(jié)輸出信號的占空比時,信號的頻率

33、就不變;如果調(diào)節(jié)信號的頻率,占空比就不變。設(shè)period表示輸出的周期,zkb表示輸出的占空比,TX為定時器0的計數(shù)次數(shù),TZ為定時器1的計數(shù)次數(shù)。給TX裝入初值為:TX=(65536-N);給TZ裝入初值為TZ=(65536-N); 當定時器0計數(shù)到時,開啟定時器1,定時器1開始計數(shù),并且P1.4口輸出高電平。當經(jīng)過一個周期中高電平持續(xù)的時間后,定時器1計數(shù)時間就到了,程序進入到定時器1中斷執(zhí)行,然后關(guān)掉定時器1,并且輸出低電平。因為定時器0中斷是一直開著的,當經(jīng)過一個周期中低電平持續(xù)的時間后,定時器0計數(shù)又到了,進入定時器0中斷執(zhí)行,如此循環(huán)。當改變period或者zkb的時候,就可以相應(yīng)

34、改變輸出信號的周期跟占空比。5.2系統(tǒng)性能分析 該系統(tǒng)實現(xiàn)占空比跟周期可調(diào)的信號發(fā)生器。占空比的調(diào)節(jié)范圍是1%到99%,精度是1%,當達到上限值時,再次增加時,占空比歸于1%,達到下限時,再次減少,占空比自動歸于99%。周期的調(diào)節(jié)范圍是5ms到60ms,精度是5ms,當達到上限值時,再次增加時,周期自動歸于5ms,當達到下限值時,再次減少時,周期自動歸于60ms)。 總之,這次設(shè)計達到了設(shè)計要求,輸出的信號穩(wěn)定度高,誤差小,并且方便調(diào)節(jié),硬件電路簡單。6.源程序#include <reg51.h>#define uchar unsigned char#define uint uns

35、igned int/float fosc=12000000; /系統(tǒng)時鐘頻率sbit key1=P10; /控制周期的增加sbit key2=P11; /控制周期的減少sbit key3=P12; /控制占空比的增加sbit key4=P13; /控制占空比的減少sbit clk=P14; /信號輸出端口uint zkb=50; /占空比初值,取值范圍為1到99uint period=35; /周期初值,取值范圍為5ms到60msuint time0_H,time0_L,time1_H,time1_L; /延時程序 void delayms(uint z) uint i,j; for(i=z;

36、i-;i>0) for(j=110;j-;j>0);/系統(tǒng)初始化void init() TMOD=0x11; /定時器0和1都工作在方式1 time0_H=(65536-35000)/256; time0_L=(65536-35000)%256; time1_H=(65536-17500)/256; time1_L=(65536-17500)%256; TH0=time0_H; /定時器0裝入初值,計數(shù)器計數(shù)35000次,35ms TL0=time0_L; TH1=time1_H; /定時器1裝入初值,計數(shù)器計數(shù)17500次,17.5ms TL1=time1_L; IT0=1; /

37、外部中斷0為下降沿觸發(fā) EX0=1; /開外部中斷0允許位 ET0=1; /定時器T0中斷允許 ET1=1; /定時器T1中斷允許 EA=1; /開啟總中斷 TR0=1; /開啟定時器0/主程序void main() init( ); while(1); /TO中斷程序void T0_time() interrupt 1 TR1=1; /開定時器1 TH0=time0_H; TL0=time0_L; clk=1;/T1中斷程序void T1_time() interrupt 3 TR1=0; /關(guān)定時器1 TH1=time1_H; TL1=time1_L; clk=0;/鍵盤掃描程序void

38、keyscan() interrupt 0 /外部中斷0 float TX,TZ; EX0=0; /關(guān)中斷 delayms(10); /延時消抖 if(P1!=0x0F) if(key1=0) period=period+5; if(period>60) period=5; if(key2=0) period=period-5; if(period<5) period=60; if(key3=0) zkb=zkb+1; if(zkb>99) zkb=1; if(key4=0) zkb=zkb-1; if(zkb<1) zkb=99; TX=(65536-(period)*1000); TZ=(65536-(period/2)*1000+(50-zkb)*period*10); time0_H=(uint)TX/256; time0_L=(uint)TX%256; time1_H=(uint)TZ/256; time1_L=(uint)TZ%256; P1=0x0f; EX0=1; TR0=1; TR1=1;7. 仿真效果圖1.

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論