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

下載本文檔

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

文檔簡介

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

2、截然分開的結(jié)構(gòu)多。本課題討論的占空比與周期可調(diào)的信號發(fā)生器的核心是目前應(yīng)用極為廣泛的51系列單片機(jī)。基于單片機(jī)的信號發(fā)生器的設(shè)計(jì),該課題的設(shè)計(jì)目的是充分運(yùn)用大學(xué)期間所學(xué)的專業(yè)知識,考察現(xiàn)在正在使用的信號發(fā)生器的基本功能,完成一個基本的實(shí)際系統(tǒng)的設(shè)計(jì)全過程。關(guān)鍵是這個實(shí)際系統(tǒng)設(shè)計(jì)的過程,在整個過程中我可以充分發(fā)揮自動化的專業(yè)知識。特別是這個信號發(fā)生器的設(shè)計(jì)中涉及到一個典型的控制過程。通過單片機(jī)控制一個有特殊功能的信號發(fā)生芯片,可以產(chǎn)生一系列有規(guī)律的周期和占空比可調(diào)的波形。這樣一個信號發(fā)生器裝置在控制領(lǐng)域有相當(dāng)廣泛的應(yīng)用范圍。因?yàn)楫a(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è)計(jì)原理和方法- 9 -2.1單片機(jī)的基本組成- 9 -2.2方案的設(shè)計(jì)與選擇- 9 -2.3定時器、的工作原理- 10 -2.3.1工作方式寄存器tmod- 11 -2.3.2定時/計(jì)數(shù)器控制寄存器tcon- 12 -2.4定時/計(jì)數(shù)器的工作方式- 12 -2.5設(shè)計(jì)方法- 13 -3.系統(tǒng)硬件電路設(shè)計(jì)圖-

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 -參考文獻(xiàn)- 25 -1.簡介1.1 proteus proteus isis是英國labcenter公司開發(fā)的電路分析與實(shí)物仿真軟件。它運(yùn)行于windows操作系統(tǒng)上,可以仿真、分析(spice)各種模擬器件和集成電路,該軟件的特點(diǎn)是:(1)實(shí)現(xiàn)了單片機(jī)仿真和

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

6、調(diào)試環(huán)境,如keil c51 uvision2等軟件。(4) 具有強(qiáng)大的原理圖繪制功能。總之,該軟件是一款集單片機(jī)和spice分析于一身的仿真軟件,功能極其強(qiáng)大。本章介紹proteus isis軟件的工作環(huán)境和一些基本操作。特點(diǎn):支持arm7,pic ,avr,hc11以及8051系列的微處理器cpu模型,更多模型正在開發(fā)中: 交互外設(shè)模型有l(wèi)cd顯示、rs232終端、通用鍵盤、開關(guān)、按鈕、led等;強(qiáng)大的調(diào)試功能,如訪問寄存器與內(nèi)存,設(shè)置斷點(diǎn)和單步運(yùn)行模式;支持如iar、keil和hitech等開發(fā)工具的源碼c和匯編的調(diào)試;一鍵“make”特性:一個鍵完成編譯與仿真操作;內(nèi)置超過6000標(biāo)準(zhǔn)

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

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

9、生成的匯編代碼,就能體會到keil c51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。下面詳細(xì)介紹keil c51開發(fā)系統(tǒng)各部分功能和使用。 (2)keil c51單片機(jī)軟件開發(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編譯器編譯生成目標(biāo)文件(.obj)。目標(biāo)文件可由lib51創(chuàng)建生成庫文件,也可以與

10、庫文件一起經(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中。1.3 pwm(1)簡介 脈沖寬度調(diào)制(pwm),是英文“pulse width modulation”的縮寫,簡稱脈寬調(diào)制,是一種模擬控制方式,其根據(jù)相應(yīng)載荷的變化來調(diào)制晶體管柵極或基極的偏置,來實(shí)現(xiàn)開關(guān)穩(wěn)壓電源輸出晶體管或晶體管導(dǎo)通時間的改變,這種方式能使電源的輸出電壓在工作條件變化時保持恒定,是利用微處理器的數(shù)字信號對模擬電路進(jìn)行控制的一種非常有效

11、的技術(shù)。 pwm控制技術(shù)以其控制簡單,靈活和動態(tài)響應(yīng)好的優(yōu)點(diǎn)而成為電力電子技術(shù)最廣泛應(yīng)用的控制方式,也是人們研究的熱點(diǎn)。由于當(dā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法、隨機(jī)pwm、spwm法、線電壓控制pwm等,而在鎳氫電池智能充電器中采用的脈寬pwm法,它是把每一脈沖寬度均相等的脈沖列作為pwm波形,通過改變脈沖列的周期可以調(diào)頻,改變脈沖的寬度或占空比可以調(diào)壓,采用適當(dāng)控制方法即可使電壓與頻率協(xié)調(diào)變化??梢酝ㄟ^

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

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

14、sh programmable and erasable read only memory)的低電壓高性能cmos 8位微處理器,俗稱單片機(jī)。(1)主要特性: 全靜態(tài)工作:0hz-24mhz 三級程序存儲器鎖定 1288位內(nèi)部ram 32可編程i/o線 兩個16位定時器/計(jì)數(shù)器 5個中斷源 可編程串行通道 低功耗的閑置和掉電模式 片內(nèi)振蕩器和時鐘電路(2)管腳說明: vcc:供電電壓。 gnd:接地。 p0口:p0口為一個8位漏級開路雙向i/o口,每腳可吸收8ttl門電流。當(dāng) p0口的管腳第一次寫1時,被定義為高阻輸入。p0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的低八位。在fia

15、sh編程時,p0 口作為原碼輸入口,當(dāng)fiash進(jìn)行校驗(yàn)時,p0輸出原碼,此時p0外部必須接上拉電阻。 p1口:p1口是一個內(nèi)部提供上拉電阻的8位雙向i/o口,p1口緩沖器能接收輸出4ttl門電流。p1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,p1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在flash編程和校驗(yàn)時,p1口作為低八位地址接收。 p2口:p2口為一個內(nèi)部上拉電阻的8位雙向i/o口,p2口緩沖器可接收,輸出4個ttl門電流,當(dāng)p2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,p2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。p2

16、口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,p2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,p2口輸出其特殊功能寄存器的內(nèi)容。p2口在flash編程和校驗(yàn)時接收高八位地址信號和控制信號。 p3口:p3口管腳是8個帶內(nèi)部上拉電阻的雙向i/o口,可接收輸出4個ttl門電流。當(dāng)p3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3口將輸出電流(ill)這是由于上拉的緣故。 p3口也可作為at89c51的一些特殊功能口,如下表所示: 口管腳 備選功能 p3.0 rxd(串行輸入口) p3.1 t

17、xd(串行輸出口) 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口同時為閃爍編程和編程校驗(yàn)接收一些控制信號。 rst:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持rst腳兩個機(jī)器周期的高電平 時間。 ale/prog:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié)。 在flash編程期間,此引腳用于輸入編程脈沖。在平時,ale端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作

18、對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ale脈沖。如想禁止ale的輸出可在sfr8eh地址上置0。此時, ale只有在執(zhí)行movx,movc指令是ale才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ale禁止,置位無效。 /psen:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機(jī)器周期兩次/psen有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/psen信號將不出現(xiàn)。 /ea/vpp:當(dāng)/ea保持低電平時,則在此期間外部程序存儲器(0000h-ffffh),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/ea將內(nèi)部鎖定為re

19、set;當(dāng)/ea端保持高電平時,此間內(nèi)部程序存儲器。在flash編程期間,此引腳也用于施加12v編程電源(vpp)。 xtal1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。 xtal2:來自反向振蕩器的輸出。 (3)振蕩器特性: xtal1和xtal2分別為反向放大器的輸入和輸出。該反向放大器可以配置 為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件, xtal2應(yīng)不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外 部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。2.設(shè)計(jì)原理和方法2.1單片機(jī)的基本組成圖1 51單片機(jī)框圖2.2方案的設(shè)計(jì)與選擇

20、在電子技術(shù)領(lǐng)域中,實(shí)現(xiàn)函數(shù)信號發(fā)生器的方法有很多種,可以采用不同的原理及器件構(gòu)成不同的電路,但是可以實(shí)現(xiàn)相同的功能。(1)方案的比較:方案一:采用單片函數(shù)發(fā)生器如8038,8038可同時產(chǎn)生正弦波,方波等,而且方法簡單易行。用d/a轉(zhuǎn)換器的輸出來改變調(diào)制電壓,也可以實(shí)現(xiàn)數(shù)控的調(diào)頻進(jìn)而改變周期,但是產(chǎn)生的頻率穩(wěn)定度不高。方案二:采用鎖相式頻率合成器,利用鎖相環(huán),降壓控振蕩器(voc)的輸出,頻率鎖定在所需的頻率上,該方案性能良好,但是難以達(dá)到輸出頻率覆蓋系數(shù)的要求,其電路復(fù)雜。方案三:采用單片機(jī)編程的方法實(shí)現(xiàn)。該方法可以通過編程,來控制方波信號輸出的周期和占空比,并且只要改變程序的相關(guān)參數(shù),便可

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

22、用到兩個定時器,定時器0和定時器1。其中定時器0工作在方式1下,決定輸出信號的周期,定時器1工作在方式1下,決定輸出信號的占空比。按鍵period+和period-改變信號的周期,按鍵period+用于增大信號的周期,按一下就增大5ms,當(dāng)增大到60ms后,就歸為5ms。按鍵period-用于減小輸出信號的周期,按一次鍵,輸出信號的周期增大5ms,當(dāng)增大到60ms后,周期就歸于5ms。按鍵zkb+和zkb-改變信號的占空比,按鍵zkb+用于增加信號的占空比,按下一次鍵,占空比就增加1,上限值為99,當(dāng)再次按鍵時,就讓占空比歸1。按鍵zkb-用于減小信號的占空比,按下一次鍵,占空比就減1,下限值

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

24、的個數(shù),回零,置位定時/計(jì)數(shù)器溢出中斷標(biāo)志位,產(chǎn)生溢出中斷。圖2 定時器/計(jì)數(shù)器內(nèi)部結(jié)構(gòu)和控制信號2.3.1工作方式寄存器tmod工作方式寄存器tmod(地址:89h)為8位寄存器,8位分為兩組,高四位控制t1,低四位控制t0。用于設(shè)置定時/計(jì)數(shù)器的工作方式。其格式如下表2.3.1所示。表2.3.1 定時/計(jì)數(shù)器方式控制寄存器tmod d7 d6d5 d4d3 d2 d1 d0gatem1m0gatem1m0| t1方式字段 | t0方式字段 |下面對tmod的各位作以說明: (1)gate:門控位。 gate0時,僅有運(yùn)行控制位tr0(或tr1)=1,就可以啟動定時/計(jì)數(shù)器工作; gata1

25、時,由tr0(或tr1)=1和外部中斷引腳(int0或int1)上的高電平共 同啟動定時/計(jì)數(shù)器工作。 (2) 定時/計(jì)數(shù)模式選擇位。 =0為定時模式; =1為計(jì)數(shù)模式。 (3)m1,m0工作方式選擇位。定時/計(jì)數(shù)器工作方式選擇如下表2.3.2所示。 表2.3.2 定時/計(jì)數(shù)器工作方式設(shè)置表m1 m0工作方式說明0 0方式013位定時/計(jì)數(shù)器0 1方式116位定時/計(jì)數(shù)器1 0方式28位初值自動重裝入的8位定時/計(jì)數(shù)器1 1方式3僅適用于t0,分成兩個8位定時/計(jì)數(shù)器;t1停止計(jì)數(shù)2.3.2定時/計(jì)數(shù)器控制寄存器tcon tcon的字節(jié)地址為88h,可進(jìn)行位尋址,位地址為88h8fh。 格式如

26、下表2.3.3所示。表2.3.3 定時/計(jì)數(shù)器控制寄存器tcon d7 d6d5 d4d3 d2d1 d0tf1tr1tf0tr0ie1it1ie0it0在tcon寄存器中,定時/計(jì)數(shù)器的控制僅用了其中的高四位。 (1)tf1,tf0t1,t0溢出中斷請求標(biāo)志位。當(dāng)計(jì)數(shù)溢出時該位由硬件自動置為1。cpu響應(yīng)中斷后由硬件自動清0。工作時,cpu可隨時查詢tf的狀態(tài)。所以,可用作查詢測試的標(biāo)志。也可以用軟件置1或清0,同硬件置1或清0的效果一樣。 (2)tr1,tr0運(yùn)行控制位。 置1時,啟動定時/計(jì)數(shù)器工作;還與gate位的狀態(tài)有關(guān)。 置0時,停止定時/計(jì)數(shù)器工作。由軟件置1或清0。所以,用軟件

27、可控制定時/計(jì)數(shù)器的啟動與停止。2.4定時/計(jì)數(shù)器的工作方式 (1)方式0為13位計(jì)數(shù),由tl0的低5位(高3位未用)和th0的8位組成,最大計(jì)數(shù)值為(8192個脈沖)。啟動后計(jì)數(shù)器加1計(jì)數(shù)。tl0的低5位計(jì)數(shù)滿回零后向進(jìn)位,當(dāng)13位計(jì)數(shù)滿回零時,中斷溢出位置1,產(chǎn)生中斷請求。定時器模式時有:nt/ tcy (tcy指令周期)計(jì)數(shù)初值計(jì)算的公式為: (x計(jì)數(shù)初值,n計(jì)數(shù)個數(shù))定時器的初值還可以采用計(jì)數(shù)個數(shù)直接取補(bǔ)法獲得。 (2)方式1和方式0基本相同,唯一的區(qū)別是方式1的計(jì)數(shù)位數(shù)是16位,由tl1作為低8位、th1作為高8位,組成了16位加1計(jì)數(shù)器 。其最大計(jì)數(shù)值為(65536個脈沖),是幾種

28、方式中計(jì)數(shù)值最大的方式。計(jì)數(shù)個數(shù)(n)與計(jì)數(shù)初值(x)的關(guān)系為: (3)方式2為自動重裝初值的8位計(jì)數(shù)方式。在這種方式下,在和兩個寄存器中,專用于寄存8位計(jì)數(shù)初值并保持不變,進(jìn)行8位加1計(jì)數(shù),當(dāng)計(jì)數(shù)溢出時,除產(chǎn)生溢出中斷請求外,還自動將中不變的初值重新裝載到。計(jì)數(shù)個數(shù)與計(jì)數(shù)初值的關(guān)系為: (4)方式3只適用于t0定時/計(jì)數(shù)器,t0定時器處于方式3時,t1只能工作在0,1,2方式。tl0和th0被分成為兩個獨(dú)立的8位定時/計(jì)數(shù)器。其中tl0可作為8位定時/計(jì)數(shù)器,th0只能作為8位定時器。2.5設(shè)計(jì)方法 (1)方波的產(chǎn)生 在本設(shè)計(jì)方案中,采用的定時器產(chǎn)生周期和占空比可調(diào)的方波。對比于工作方式0,

29、工作方式1具有16位的寄存器,定時時間更長,產(chǎn)生的頻率范圍更寬。對比于工作方式2,雖然方式2的自動重載功能使定時更加準(zhǔn)確,但對于產(chǎn)生低頻來說,方式2的只有256us的定時時間,產(chǎn)生的中斷多,誤差更大,因此選擇設(shè)置在工作方式1下,gate=0。設(shè)定定時器設(shè)置初始值,即給高低電平分別分配定時時間。當(dāng)程序啟動,由輸入給定高電平,定時器開始加1計(jì)數(shù),當(dāng)高電平16位計(jì)數(shù)滿回零時,tf置1,產(chǎn)生中斷,高電平轉(zhuǎn)為低電平,當(dāng)?shù)碗娖?6位計(jì)數(shù)滿回零時,tf置1,產(chǎn)生中斷,低電平再轉(zhuǎn)為高電平,得出方波。(2)高電平時間的測量本設(shè)計(jì)方案中,采用定時器測量高電平的時間。將定時器設(shè)置在工作方式1下,并設(shè)置gate=1,

30、此時要用軟件使tr1=1,同時外部中斷1(int1)引腳也為高電平時,才能啟動定時/計(jì)數(shù)器工作。所以將控制輸出的方波接在外部中斷1的輸入引腳上,當(dāng)輸入高電平,定時器開始啟動,在下降沿的時候,讀t1的值,即可算出高電平時間t1_high。3.系統(tǒng)硬件電路設(shè)計(jì)圖 對于系統(tǒng)的軟件仿真采用了proteus軟件設(shè)計(jì)仿真。 四個獨(dú)立按鍵分別與單片機(jī)的p1.0,p1.1,p1.2,p1.3相連接,并且通過一個四輸入的與非門,將與非門的輸出當(dāng)做單片機(jī)外部中斷0的觸發(fā)信號。當(dāng)有按鍵按下時,就會進(jìn)入外部中斷程序。 p1.4口輸出信號連接到示波器,檢測輸出波形。 rst復(fù)位引腳接入上電或開關(guān)復(fù)位,電源接通后,單片機(jī)

31、自動復(fù)位,并且在單片機(jī)運(yùn)行期間,用開關(guān)操作也能使單片機(jī)復(fù)位。系統(tǒng)硬件仿真電路原理圖如下圖所示:4.程序框圖4.1主程序框圖:圖4 主程序流程圖4.2系統(tǒng)初始化: 初始化程序主要是給計(jì)數(shù)器0和1賦初值,初始化占空比為50%,信號周期為35ms,設(shè)置定時器0和定時器1的工作方式,并開啟計(jì)數(shù)器0和計(jì)數(shù)器1,設(shè)置外部中斷的觸發(fā)方式,開啟總中斷。4.3定時器中斷程序框圖: 定時器0用于控制輸出信號的周期,定時器1用于控制輸出信號的占空比。開始賦初始值結(jié)束 圖5 定時器中斷程序框圖4.4鍵盤掃描程序框圖: 當(dāng)有按鍵按下時,進(jìn)入到外部中斷,然后暫時關(guān)閉外部中斷,啟動延時程序,以消除抖動。然后檢測是哪個按鍵被

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

33、,tz為定時器1的計(jì)數(shù)次數(shù)。給tx裝入初值為:tx=(65536-n);給tz裝入初值為tz=(65536-n); 當(dāng)定時器0計(jì)數(shù)到時,開啟定時器1,定時器1開始計(jì)數(shù),并且p1.4口輸出高電平。當(dāng)經(jīng)過一個周期中高電平持續(xù)的時間后,定時器1計(jì)數(shù)時間就到了,程序進(jìn)入到定時器1中斷執(zhí)行,然后關(guān)掉定時器1,并且輸出低電平。因?yàn)槎〞r器0中斷是一直開著的,當(dāng)經(jīng)過一個周期中低電平持續(xù)的時間后,定時器0計(jì)數(shù)又到了,進(jìn)入定時器0中斷執(zhí)行,如此循環(huán)。當(dāng)改變period或者zkb的時候,就可以相應(yīng)改變輸出信號的周期跟占空比。5.2系統(tǒng)性能分析 該系統(tǒng)實(shí)現(xiàn)占空比跟周期可調(diào)的信號發(fā)生器。占空比的調(diào)節(jié)范圍是1%到99%,

34、精度是1%,當(dāng)達(dá)到上限值時,再次增加時,占空比歸于1%,達(dá)到下限時,再次減少,占空比自動歸于99%。周期的調(diào)節(jié)范圍是5ms到60ms,精度是5ms,當(dāng)達(dá)到上限值時,再次增加時,周期自動歸于5ms,當(dāng)達(dá)到下限值時,再次減少時,周期自動歸于60ms)。 總之,這次設(shè)計(jì)達(dá)到了設(shè)計(jì)要求,輸出的信號穩(wěn)定度高,誤差小,并且方便調(diào)節(jié),硬件電路簡單。6.源程序#include #define uchar unsigned char#define uint unsigned int/float fosc=12000000; /系統(tǒng)時鐘頻率sbit key1=p10; /控制周期的增加sbit key2=p11;

35、 /控制周期的減少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;i-;i0) for(j=110;j-;j0);/系統(tǒng)初始化void init() tmod=0x11; /定時器0和1都工作在方式1 time0_h

36、=(65536-35000)/256; time0_l=(65536-35000)%256; time1_h=(65536-17500)/256; time1_l=(65536-17500)%256; th0=time0_h; /定時器0裝入初值,計(jì)數(shù)器計(jì)數(shù)35000次,35ms tl0=time0_l; th1=time1_h; /定時器1裝入初值,計(jì)數(shù)器計(jì)數(shù)17500次,17.5ms tl1=time1_l; it0=1; /外部中斷0為下降沿觸發(fā) ex0=1; /開外部中斷0允許位 et0=1; /定時器t0中斷允許 et1=1; /定時器t1中斷允許 ea=1; /開啟總中斷 tr0=

37、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 keyscan() interrupt 0 /外部中斷0 float tx,tz; ex0=0; /關(guān)中斷 delayms(10); /延時消抖 if(p1!=0x0

38、f) if(key1=0) period=period+5; if(period60) period=5; if(key2=0) period=period-5; if(period99) zkb=1; if(key4=0) zkb=zkb-1; if(zkb1) 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. 電路通電仿真初始狀態(tài) 初始

溫馨提示

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

評論

0/150

提交評論