




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、課題八 簡易信號發(fā)生器,任務(wù)一輸出1000Hz的方波 任務(wù)二 每秒閃爍一次的LED,課題目標,本課題的任務(wù)是用單片機實現(xiàn)簡易信號發(fā)生器頻率計。通過簡易頻率計的實現(xiàn),學(xué)會編寫單片機中斷服務(wù)程序的編寫,以及定時中斷的應(yīng)用。,圖8-1 簡易頻率計實物圖,課題分析,單片機系統(tǒng)要做三件事,一是要進行1s鐘的定時,二是要測量外部被測信號的周期數(shù),三是將頻率顯示出來。單片機中的多個定時器/計數(shù)器既能進行定時,也能計數(shù),因而在本課題中采用單片機內(nèi)部的定時器來完成課題任務(wù)。為了容易理解定時器/計數(shù)器作這兩個方面的應(yīng)用,本課題分為“輸出1000Hz的方波”、“每秒閃爍一次的LED”和“簡易頻率計”三個任務(wù)。,在一
2、個單片機系統(tǒng)中,為了實現(xiàn)頻率的測量,就是要對外部信號進行計數(shù),每到1s時,將計數(shù)所得的數(shù)值送到顯示器上。,從P1.0輸出1000Hz的方波,實際上就是要求從P1.0輸出周期為1ms的方波。為了簡化程序,將輸出的方波的占空比設(shè)定為50%,則高電平和低電平的時間各為1ms的一半,即各為500s。也就是在單片機中實現(xiàn)500s的定時,每次定時時間到了的時候,將P1.0的電平改變就可以了。一個引腳的電平的改變,使用取反指令就可以完成,具體的指令如“P10=P10;”,任務(wù)一輸出1000Hz的方波,二、程序設(shè)計分析,一、任務(wù)目標 任務(wù)的目標是使用AT89S51單片機,利用定時中斷實現(xiàn)從P1.0輸出1000
3、Hz的方波。,圖8-2 采用指令延遲程序框圖,圖8-3 中斷服務(wù)程序的流程圖,采用匯編延時方法: org 00h loop:setb p1.0 lcall delay clr p1.0 lcall delay sjmp loop delay:mov r0,#249 djnz r0,$ ret end,總結(jié):實現(xiàn)定時功能,比較方便的辦法是利用單片機內(nèi)部的定時/計數(shù)器。也可以采用下面三種方法:,軟件定時:軟件定時不占用硬件資源,但占用了CPU時間,降低了CPU的利用率。 采用時基電路定時:例如采用555電路,外接必要的元器件(電阻和電容),即可構(gòu)成硬件定時電路。但在硬件連接好以后,定時值與定時范圍
4、不能由軟件進行控制和修改,即不可編程。 采用可編程芯片定時:這種定時芯片的定時值及定時范圍很容易用軟件來確定和修改,此種芯片定時功能強,使用靈活。在單片機的定時/計數(shù)器不夠用時,可以考慮進行擴展。,相關(guān)知識,一、 定時器/計數(shù)器簡介 與外部中斷控制一樣,定時/計數(shù)器的工作也是由兩個特殊功能寄存器控制,這兩個 特殊功能寄存器是TMOD和TCON。 模式控制寄存器TMOD,是對定時器0和定時器1的計數(shù)方式和計數(shù)器控制方式進行設(shè)置的寄存器,低4位用于T0,高4位用于T1,GATE:門控位。 :定時/計數(shù)模式選擇位。 0為定時模式; =1為計數(shù)模式。,二、定時器/計數(shù)器的控制寄存器TMOD,M1M0:
5、工作方式設(shè)置位。定時/計數(shù)器有四種工作方式,由M1M0進行設(shè)置。,三、 定時/計數(shù)器的工作方式 1、方式0 方式0為13位計數(shù),由TL0的低5位(高3位未用)和TH0的8位組成。TL0的低5位溢出時向TH0進位,TH0溢出時,置位TCON中的TF0標志,向CPU發(fā)出中斷請求。,定時器模式時有:Nt/ Tcy 機器周期Tcy,定時時間t 。 計數(shù)初值計算的公式為: 定時器的初值還可以采用計數(shù)個數(shù)直接取補法獲得。 計數(shù)模式時,計數(shù)脈沖是T0引腳上的外部脈沖。,2、方式1 方式1的計數(shù)位數(shù)是16位,由TL0作為低8位、TH0作為高8位,組成了16位加1計數(shù)器 。,計數(shù)個數(shù)與計數(shù)初值的關(guān)系為:,3、方
6、式2 方式2為自動重裝初值的8位計數(shù)方式。,工作方式2特別適合于用作較精確的脈沖信號發(fā)生器。,計數(shù)個數(shù)與計數(shù)初值的關(guān)系為:,4、方式3 方式3只適用于定時/計數(shù)器T0,定時器T1處于方式3時相當于TR1=0,停止計數(shù)。,工作方式3將T0分成為兩個獨立的8位計數(shù)器TL0和TH0 。,一般情況下,當定時器T1用作串口波特率發(fā)生器時,定時器T0才設(shè)置為工作模式3。,方式3時的T1結(jié)構(gòu),#include #define uchar unsigned char #define uint unsigned int sbit d1=P10; void main() TMOD=0 x10; TH1=(6553
7、6-500)/256; TL1=(65536-500)%256; EA=1; ET1=1; TR1=1; While(1); void ex() interrupt 3 d1=!d1; TH1=(65536-500)/256; TL1=(65536-500)%256;,C語言程序,匯編語言程序:,ORG 0000H LJMP MAIN ;跳轉(zhuǎn)到主程序 ORG 000BH ;T0的中斷入口地址 LJMP DVT0 ;轉(zhuǎn)向中斷服務(wù)程序 ORG 0100H MAIN:MOV TMOD,#01H ;置T0工作于方式1 MOV TH0,#0FEH ;裝入計數(shù)初值 MOV TL0,#0CH SETB ET
8、0 ;T0開中斷 SETB EA ;CPU開中斷 SETB TR0 ;啟動T0 SJMP $ ;等待中斷 DVT0:CPL P1.0 ;P1.0取反輸出 MOV TH0,#0FEH ;重新裝入計數(shù)值 MOV TL0,#0CH RETI ;中斷返回 END,任務(wù)二每秒閃爍一次的LED,利用定時中斷實現(xiàn)將LED每秒閃爍一次。,與課題二相似,要使LED每秒閃爍一次,按LED的點亮?xí)r間和熄滅時間相同進行處理,則只需要進行0.5s的定時。具體處理是,每過0.5s,將LED的狀態(tài)取反就可以實現(xiàn)目標了。或者說,與本課題中的任務(wù)一類似,只不過是頻率變得很低了,周期更長了 。,任務(wù)目標,程序設(shè)計分析,為了完成0
9、.5s的定時,一般來說,有兩種方案可以實現(xiàn)。 第一種方案是采用硬件定時的基礎(chǔ)上,增加一個存儲單元,每次中斷時使用該存儲單元進行計數(shù),當達到某個計數(shù)值時再執(zhí)行對應(yīng)的程序,這樣就延長了定時的時間長度。 第二種方案是也是采用一個定時器進行硬件定時,在每次中斷時輸出一個脈沖,然后采用硬件計數(shù)的方式進行延長定時時間。,程序設(shè)計分析,因?qū)嶒炿娐肪д駀OSC12MHz,所以T1的初值的裝入語句如下: TH1=(65536-50000)/256; TL1=(65536-50000)%256; 每定時0.5s鐘時間到了,就停止T0的計數(shù),而從T0的計數(shù)單元中讀取計數(shù)的數(shù)值,然后進行數(shù)據(jù)處理,送到數(shù)碼管顯示出來。
10、,由本課題中的任務(wù)二中可知,T1工作在定時狀態(tài)下,最大定時時間約為65ms,達不到1s的定時,所以采用定時50ms,共定時10次,即可完成0.5s的定時功能。,一、 定時0.5s,匯編語言程序(中斷法),ORG 00H LJMP MAIN ORG 000BH LJMP DVT0 ORG 0100H MAIN:MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV R0,#10 SETB ET0 SETB EA SETB TR0 SJMP $,DVT0:DJNZ R0,NT0 MOV R0,#10 CPL P1.0 NT0: MOV TH0,#3CH MOV T
11、L0,#0B0H SETB TR0 RETI END,ORG 0100H MAIN:MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV R0,#10 SETB TR0 SS: JNB TF0,$ DVT0:DJNZ R0,NT0 MOV R0,#10 CPL P1.0 NT0: CLR TF0 MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 LJMP SS END,匯編語言程序(查詢法),C語言程序:,#include #define uchar unsigned char #define uint unsigned int sbi
12、t d1=P10; uchar tt; void main() tt=0; TMOD=0 x10; TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1; ET1=1; TR1=1;,while(1) if(tt=10) tt=0; d1=!d1; void ex() interrupt 3 TH1=(65536-50000)/256; TL1=(65536-50000)%256; tt+; ,本章小結(jié) 單片機中斷系統(tǒng)、定時系統(tǒng)是單片機系統(tǒng)重要的內(nèi)容。 單片機的中斷系統(tǒng)能有效地解決慢速工作的外圍設(shè)備與快速工作的CPU之間的矛盾,可以提高工作效率,提高實時處理功能,以便對隨機發(fā)生的事件作出快速響應(yīng)和及時處理。中斷的處理過程包括:中斷請求、中斷響應(yīng)、中斷服務(wù)及中斷返回。單片機對中斷的處理主要通過中斷寄存器TCON、 SCON、 IE、 IP實現(xiàn)。 MCS-51芯片中有定時器/計數(shù)器電路,它可以實現(xiàn)定
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 硬膜下血腫并發(fā)癥及防治策略
- 醫(yī)療教育中多元智能的融合與實踐
- 提升教學(xué)效率教育技術(shù)工具使用策略
- 從新開始健康成長
- 道路硬化后期管護方案
- 內(nèi)墻面滲水修補方案
- 食道超聲心動圖技術(shù)解析
- 網(wǎng)吧合伙入股協(xié)議書范本
- 角色設(shè)計結(jié)課
- 鋼材供貨合同協(xié)議書范本
- 2024中儲糧集團財務(wù)限公司人員招聘公開招聘歷年考點共500題附帶答案
- 村務(wù)監(jiān)督主任培訓(xùn)會-深化整治群眾身邊不正之風(fēng) 筑牢基層監(jiān)督防線
- 藥品追溯管理制度培訓(xùn)
- 2024年安徽省合肥市北城片區(qū)七年級數(shù)學(xué)第一學(xué)期期末學(xué)業(yè)水平測試試題含解析
- 2025至2030中國銅冶煉行業(yè)發(fā)展現(xiàn)狀及應(yīng)用需求現(xiàn)狀分析報告
- 20250617國金證券機器人行業(yè)研究垂直領(lǐng)域具身智能機器人的野望416mb
- 物理●湖北卷丨2024年湖北省普通高中學(xué)業(yè)水平選擇性考試物理試卷及答案
- 工程項目管理的四控、六管、一協(xié)調(diào)主要內(nèi)容
- 醫(yī)用X射線設(shè)備項目商業(yè)計劃書范文參考
- 四年級奧數(shù)講義
- 江蘇省南京市2024屆高一數(shù)學(xué)下學(xué)期期末試題(含解析)
評論
0/150
提交評論