頻率計數器2016_第1頁
頻率計數器2016_第2頁
頻率計數器2016_第3頁
頻率計數器2016_第4頁
頻率計數器2016_第5頁
已閱讀5頁,還剩13頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、等級: 課 程 設 計課程名稱單片機原理及應用課題名稱頻率計數器專 業 班 級測控技術與儀器學 號201301200135姓 名傅名揚指導老師尋大勇等2016年3月11日電氣信息學院課程設計任務書課題名稱頻率計數器姓 名傅名揚 專業測控技術與儀器班級1301學號35指導老師尋大勇課程設計時間2016年2月29日-2016年3月11日教研室意見意見: 審核人:一、任務及要求設計任務:本課題以單片機為核心,設計和制作一個頻率計數器,來完成對輸入的信號進行頻率計數,計數的頻率結果能夠顯示出來。要求能夠對0250KHz的信號頻率進行準確計數,計數誤差不超過±1HZ。設計要求:(1)確定系統設

2、計方案;(2)進行系統的硬件設計;(3)完成應用程序設計; (4) 應用系統的硬件和軟件的調試。二、進度安排第一周:周一:集中布置課程設計任務和相關事宜,查資料確定系統總體方案。周二周三:完成硬件設計和電路連接周四周日:完成軟件設計第二周:周一周三:程序調試周四周五:設計報告撰寫。周五進行答辯和設計結果檢查。三、參考資料1、王迎旭等.單片機原理及及應用. 2版.機械工業出版社,20122、胡漢才.單片機原理及其接口技術.3版.清華大學出版社,2010.3、戴燦金.51單片機及其C語言程序設計開發實例.清華大學出版社,2010目 錄第1章 設計任務及要求11.1設計任務11.1設計要求21.3設

3、計目的2第2章 系統方案設計32.1頻率計數器的基本原理32.2總體方案4第3章 系統硬件電路設計52.2總體方案42.2總體方案4第4章 系統軟件設計6 4.1總體思路74.2局部設計8第5章 系統仿真及調試10參考文獻11附錄A 仿真圖12附錄B 程序清單13第1章設計任務及要求11設計任務:本課題以單片機為核心,設計和制作一個頻率計數器,來完成對輸入的信號進行頻率計數,計數的頻率結果能夠顯示出來。要求能夠對0250KHz的信號頻率進行準確計數,計數誤差不超過±1HZ。12設計要求:(1)確定系統設計方案;(2)進行系統的硬件設計;(3)完成應用程序設計;(4)應用系統的硬件和軟

4、件的調試。1.3設計目的(1)了解定時、計數器的結構及其工作原理;(2)掌握單片機的定時、計數器的控制方式;(3)掌握應用單片機進行頻率測試控制的原理;(4)能根據設計任務要求編制數顯頻率計數器的程序,理解程序對計數器的控制原理;(5)會利用電路仿真軟件繪制數顯頻率計數器的電路原理圖;  (6)會用KeilC51軟件對源程序進行編譯調試及與Proteus軟件聯調,實現電路仿真。第2章 系統方案設計21率計數器的基本原理頻率的測量實際上就是在1S時間內對信號進行計數,計數值就是信號頻率。也就是用一個頻率穩定度高的頻率源作為基準時鐘, 對比測量其他信號的頻率。通常情況下計算每秒內待測信號

5、的脈沖個數,此時我們稱閘門時間為1秒。閘門時間也可以大于或小于一秒。閘門時間越長,得到的頻率值就越準確,但閘門時間越長則每測一次頻率的間隔就越長。閘門時間越短,測的頻率值刷新就越快,但測得的頻率精度就受影響。測量一個信號的頻率有兩種方法:第一種是計時法,用基準信號去測量被測信號的高電平持續的時間,然后轉換成被測信號的頻率。第二種是 計數法,計算在基準信號高電平期間通過的被測信號個數。根據設計要求 測量0HZ250KHZ的正弦信號,首先要將正弦信號通過過零比較轉換成方 波信號,然后變成測量方波信號。如果用第一種方法,當信號頻率超過 1KHZ 的時候測量精度將超出測量精度要求,所以當被測信號的頻率

6、高于 1KHZ 的時候需要將被測信號進行分頻處理。如果被測信號頻率很高需要 將被測信號進行多次分頻直到達到設計的精度要求。本課程設計采用 AT89C51 單片機為控制器件來制作一個0HZ250KHZ 的頻率計數器,并將 所得到的頻率通過數碼管顯示出來。根據設計要求用單片機的內部T0 生基準信號,由INTO輸入被測信號,通過定時方式計算被測信號的持續 時間。通過單片機計算得出結果,最后通過數碼管顯示測量結果。系統的原理框圖如下圖所示: 頻率源AT89C51單片機數碼顯示管22總體方案系統采用AT89C51單片機作為控制核心,門控信號由AT89S51 內部的 計數定時器產生,單位為1s。由于單片機

7、的計數頻率上限較低(12MHZ 完成運算、控制及顯示功能。由于使用了單片機,使整個系統具有極為靈活的可編程性,能方便地對系統進行功能擴展與改進。原理圖如下圖:在本設計方案中,我通過程序設定T0工作在計數狀態下,T1工作在計時狀態下。T0計數器對輸入的信號經行計數,其最大計數值為fOSC/24, 當fOSC=12MHz 時,T0的最大計數頻率為500kHz。由于信號的頻率就是每秒鐘信號脈沖的個數,于是我讓T1工作在定時狀態下,定時時間為1每定時1秒鐘到,就停止T0的計數,然后從T0的計數單元中讀取計數的數值,即完成了信號頻率的測量,最后通過六位數碼管顯示出頻率值。單片機處理數碼管顯示。第3章 系

8、統硬件電路設計3.1 主要控制模塊 AT89C51是一種帶4K字節FLASH存儲器(FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節閃存可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃速存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。

9、AT89C51單片機為很多嵌入式控制系統提供了一種靈活性高且價廉的方案。外形及引腳排列如圖所示。 管腳說明:VCC:供電電壓。 GND:接地。 P0:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部 必須被拉高。 P1:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸 出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入, P1口被外部下拉為低

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

11、。 P3:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門 電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。 作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由 于上拉的緣故。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(外部數據存儲器寫選 通)P3.7 /RD(外部數據存儲器讀選通)P3口同時為閃爍編程和編程 校驗接收一些控制信號。I/O口作為輸入口時有兩種工作方式即所謂的

12、讀端口與讀引腳讀端口時實際上并不從外部讀入數據而是把端口鎖 存器的內容讀入到內部總線經過某種運算或變換后再寫回到端口鎖 存器只有讀端口時才真正地把外部的數據讀入到內部總線上面圖中的兩個三角形表示的就是輸入緩沖器CPU將根據不同的指令分別發 出讀端口或讀引腳信號以完成不同的操作這是由硬件自動完成的不需要我們操心1然后再實行讀引腳操作否則就可能讀入出錯為什么看 上面的圖如果不對端口置1端口鎖存器原來的狀態有可能為0Q端為 0Q為1加到場效應管柵極的信號為1該場效應管就導通對地呈現低阻抗,此時即使引腳上輸入的信號為1也會因端口的低阻抗而使信號變低使得外加的1信號讀入后不一定是1若先執行置1操作則可以

13、使場效應管截止引腳信號直接加到三態緩沖器中實現正確的讀入由于在輸入 操作時還必須附加一個準備動作所以這類I/O口被稱為準雙向口 89C51的P0/P1/P2/P3口作為輸入時都是準雙向口接下來讓我們再看另 一個問題從圖中可以看出這四個端口還有一個差別除了P1口外P0P2P3口都還有其他的功能 RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高 電平時間。 ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存 地址的地位字節。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外

14、部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數據存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執行 MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執行狀態ALE禁止,置位無效。 /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不出現。 /EA/VPP :當/EA 保持低電平時,則在此期間外部程序存儲器 (0000H-FFFFH),不管是否有內部程序存儲器。注意加密方式1時, /EA將內部鎖定

15、為RESET;當/EA端保持高電平時,此間內部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。 XTAL2:來自反向振蕩器的3.2時鐘模塊如圖所示是采用內部振蕩方式使 8051 單片機產生時鐘信號,在單片 機芯片的X1 和X2 引腳兩端跨接石英晶體振蕩器和兩個電容構成穩定的自激振蕩電路,其中電容對振蕩頻率起微調作用,晶振頻率為12MHZ。3.3復位模塊 復位是單片機的初始化操作,其功能是CPU 從000H 單元開始執行程序, 除了使系統正常初始化,當程序運行出錯或操作錯誤使系統處于鎖死狀態時,為擺脫困境,也

16、需要按復位鍵重新啟動。如圖為按鍵手動復位方式, 通過復位端經電阻和電源+5V 接通實現復位功能。3.4 顯示模塊本次設計中采用了LED顯示器,即數碼管。數碼管的每一個數碼段是 一只發光二極管。當發光二極管導通時,相應的一個點或者一個筆畫發光, 控制發光二極管發光組合,可以顯示出所需字符。本電路采用的是共陰的 數碼管,其編碼如下: 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40 語言程序為:unsignedchar code dispcode=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,

17、0x7f,0x6f,0x00,0x40; 第4章 系統軟件設計4.1 總體思路根據課程設計所要求的功能,在KEIL51 開發環境下編譯程序,首先要定義相關參量,然后初始化中斷,打開外中斷,T0 是工作在計數狀態下,對輸入的頻率信號進行計數,但對工作在計數狀態下的T0,最大的計數值為f OSC /24,由于f OSC 12MHz, 因此: T0 的最大計數頻率為 250KHz。對于頻率的概念就是在一秒計數脈沖的個數,即為頻率值。所以T1 工作在定時狀態下,每定時1 秒中到,就停止T0 的計數,而從T0 的計數單元中讀取計數的數值,然后進行數據處理。送到數碼管顯示出來。 T1 工作在定時狀態下,最

18、大定時時間為65ms,達不到1 秒的定時,所以采用定時50ms,共定時20 次,即可完成1 秒的定時功能。參考相關資料編譯實現相關功能程序,實現課程設計所要求的功能,其大致流程為:初始化 T0/T1 初始化(設置T0 部脈沖計數,T1為1S 定時) P3*2接受外 部中斷請求 T1 定時器 是否達到1S 計數顯示 結束 12 按照程序流程圖把編寫好的程序用KEIL-51 單片機編譯系統編譯,編譯成 功后,再把程序轉換為可執行文件。4.2局部設計在程序編寫過程中首先要考慮數碼管是共陰還是共陽的,不同的數碼管的結構不一樣,所采用的編碼也不一樣, 本電路采用的是共陰的數碼管,所以其編碼: 0x3f,

19、0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40 熄滅所用C 語言程序為:unsigned char code dispcode=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40; 接下來要考慮哪個口做定時器哪個口做計數器接口,該電路的設計思做定時器接口,而T0做計數器接口,并且還要考慮定時器/計 數器的工作模式,根據設計思路來設計程序,故編寫出了如下的C 語言程 序:TMOD 位寄存器,用于控制T0和T1 的工作方式和工作模式。低4 位用于T0,高4 位用于T1

20、。我們要將T0 口作為定時器那么低四位中的位的編碼應該為1,而將T1口作為計數器接口那么高四位中的C/ 的編碼應該為0,并且要使T0和T1 都工作在模式1 方式,那么其編碼都應該為01,所以就有編碼為00010101,轉化為十六進制編碼就是0x15。 所以有TMOD=0x15 TH0=0; /初始化計時器1 的高位 TL0=0; /初始化計時器1 的低位 TH1=(65536-4000)/256;/初始化計時器1 的高位 TL1=(65536-4000)%256;/初始化計時器1 的低位 TR1=1; /開計時器1 TR0=1; /開計時器0 ET0=1; /開外部計時中斷0 13 ET1=1

21、; /開外部計時中斷1 EA=1; /開總中斷 定義完了定時器和計數器以及中斷的內容之后進入主程序的編寫,編寫完所有程序之后進行編譯并將生成的可執行文件后寫入AT89C51 單片機。此時單片機上顯示6 位全零,加入信號源時數碼管 能顯示輸入信號的頻率說明程序基本上沒有問題了。心得體會本次實習讓我們體味到設計電路、連接電路、調測電路過程中的樂苦與酸甜。設計是我們將來必需的技能,這次實習恰恰給我們提供了一個應用自己所學知識的機會,從到互聯網上查閱資料到對電路的設計對電路的調試再到最后電路的成型,都對我所學的知識進行了檢驗。在實習的過程中發現以前學的單片機知識掌握不牢。同時,在設計的過程中,我遇到了

22、一些以前沒有見到過的元件,于是我通過查找資料來學習認識這些元件的功能和作用。 制作是一個考驗人耐心的過程,不能有絲毫的急躁,馬虎,對電路的檢查要一步一步來,最重要的是要熟練地掌握課本上的知識,這樣才能對試驗中出現的問題進行分析解決。在整個課程設計完后,最大的感覺是:有收獲。以前上課都是上一些最基本的東西而現在卻可以將以前學的東西作出有實際價值的東西。在這個過程中,我的確學得到很多在書本上學不到的東西,如:如何利用現有的元件組裝得到所需產品、利用計算機來畫圖等等。但也遇到了不少的挫折,有時遇到了一個錯誤怎么找也找不到原因所在,找了老半天結果卻是接頭的方向接錯了,有時更是忘接電源了。在學習中的小問

23、題在課堂上犯的很少,在動手的過程中卻犯的很多。特別是在接電路時,一不小心就會犯錯,而且很不容易檢查出來。但現在回過頭來看,還是挺有成就感的。我的動手能力又有了進一步的提高,這讓我甚是欣慰。通過緊張有序的設計實踐,在完成目標的那一刻,不知不解自信心也增強了.在課程設計中自己動腦子解決遇到的問題,書本上的知識有了用武之地,這又鞏固和深化了自己的知識結構。由于種種原因,我們實習之前準備嚴重不足,包括心理上和自身能力上。不過最終還是圓滿的完成了給定的目標。不辱使命!當然也要特別感謝學校給我們這次學習的機會。這次課設對我來說意義非凡,和老師同學們一起為之奮斗的過程也是一份難以忘懷的美好回憶。 參考文獻

24、1.單片機原理與應用 機械工業出版社2.51 系列單片機設計實例 北京航空航天大學出版社3.計算機硬件技術基礎實驗教程 重慶大學出版社4.微型計算機接口技術及應用 劉樂善主編 華中科技大學出版社 5.單片微型計算機原理及接口技術陳光東等 華中科技大學出版社附錄A:仿真圖 附錄B:源程序 #include <AT89X51.H>Unsigned char code dispbit= 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f;/共陰數碼管選通數組unsigned char code dispcode= 0x3f, 0x06, 0x5b

25、, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f,0x6f,0x00,0x40;/數碼管顯示的數字數組unsigned char dispbuf8=0,0,0,0,0,0,10,10;/數碼管顯示內容數組unsigned char temp8;/數碼管顯示內容緩沖數組 unsigned char dispcount;/顯示計數unsigned char T0count; /計時器0的計數 unsigned char timecount; bit flag; /頻率計開始工作標志位 unsigned long x; /八個數碼管顯示的數 void main(void) un

26、signed char i; TMOD=0x15;/設置兩個計時器模式 TH0=0; /初始化計時器1的高位 TL0=0; /初始化計時器1的低位 TH1=(65536-3991)/256;/初始化計時器1的高位 TL1=(65536-3991)%256;/初始化計時器1的低位 TR1=1; /開計時器1 TR0=1; /開計時器0 ET0=1; /開外部計時中斷0 ET1=1; /開外部計時中斷1 EA=1; /開總中斷 while(1) if(flag=1) flag=0; x=T0count*65536+TH0*256+TL0; for(i=0;i<8;i+) / tempi=0; /清緩沖數組內容 i=0; while(x/10) tempi=x%10; /把個位數給緩沖區 x=x/10; i+; tempi=x; / 把十位數給緩沖 for(i=0;i<6;i+) dispbufi=tempi;/把高六位的數給顯示緩沖區 timecount=0;/清0 T0count=0; TH0=0; TL0=0; TR0=1; void t0(void) interrupt 1 using 0 /中斷計時器0實行的函數 T0count+; vo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論