版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 信息與電氣工程學院</b></p><p><b> 《課程設計報告》</b></p><p> 題 目: 頻率計數器 </p><p> 專 業(yè): 通信工程 </p><p> 班 級:
2、 二 </p><p> 姓 名: </p><p> 學 號: </p><p> 指導教師: </p><p><b> 任務書</b>
3、</p><p><b> 一、設計目的</b></p><p> 1、通過單片機課程設計,熟練掌握匯編語言或C語言的編程方法,將理論聯(lián)系到實踐中去,提高我們的動腦和動手的能力。</p><p> 2、通過頻率計數器的設計系統(tǒng)掌握51單片機的應用。掌握8279芯片的原理及軟件編程及硬件設計的方法,掌握根據課題的要求,提出選擇設計方案,查找
4、所需元器,設計并搭建硬件電路,編程寫入EPROM并進行調試等。</p><p> 3、訓練整體分析的能力,以及故障排除的能力;</p><p><b> 二、設計任務</b></p><p> 利用AT89S51單片機的T0、T1的定時計數器功能,來完成對輸入的信號進行頻率計數,計數的頻率結果采用8279通過4位動態(tài)數碼管顯示出來。要求能
5、夠對0-250KHZ的信號頻率進行準確計數,計數誤差不超過±1HZ。</p><p> 三、整體設計思路框圖及原理圖</p><p> 頻率計數器的系統(tǒng)工作原理:首先,頻率信號由頻率產生電路,單片機中控制信</p><p> 號線發(fā)出控制信號,啟動定時計數器1進行定時,定時計數器0進行計數,其采樣得到的數字信號數據在相應的碼制轉換模塊中轉換為顯示代碼
6、。最后發(fā)出顯示控制與驅動信號,驅動外部的數碼管顯示相應的數據。</p><p> 系統(tǒng)通過軟件設置單片機的內部定時器T1產生中斷信號。系統(tǒng)調出轉換顯示程序,將轉換為二進制的數據在轉換成十進制數并輸出到LCD顯示電路,將相應頻率顯示出來</p><p> P2口接數碼管位選,P0接數碼管段選,實現(xiàn)數據的動態(tài)顯示,如圖4.1所示。</p><p> P0口功能 :
7、P0口具有兩種功能:第一,P0口可以作為通用I/O接口使用,P0.7—P0.0用于傳送CPU的輸入/輸出數據。輸出數據時可以得到鎖存,不需外接專用鎖存器,輸入數據可以得到緩沖。第二,P0.7—P0.0在CPU訪問片外存儲器時用于傳送片外存儲器de低8位地址,然后傳送CPU對片外存儲器的讀寫。</p><p> P1口 功能 :P1口的功能和P0口de第一功能相同,僅用于傳遞I/O輸入/輸出數據。 &
8、lt;/p><p> P2口的功能 :P2口的第一功能和上述兩組引腳的第一功能相同,即它可以作為通用I/O使用。它的第二功能和P0口引腳的第二功能相配合,作為地址總線用于輸出片外存儲器的高8位地址。 </p><p> P3口功能 :P3口有兩個功能:第一功能與其余三個端口的第一功能相同;第二功能作控制用,每個引腳都不同。</p><p> 表4.1 P3口第二功
9、能</p><p> 時鐘電路和復位電路</p><p><b> 1.時鐘電路</b></p><p> 單片機的時鐘一般需要多相時鐘,所以時鐘電路由振蕩器和分頻器組成。</p><p> MCS-51內部有一個用于構成振蕩器的可控高增益反向放大器。兩個引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端
10、。在片外跨接一晶振和兩個匹配電容C1、C2如圖4.2所示,就構成一個自激振蕩器。振蕩頻率根據實際要求的工作速度,從幾百千赫至24MHz可適當選取某一頻率。匹配電容C1、C2要根據石英晶體振蕩器的要求選取。</p><p> 當晶振頻率為12MHz時,C1C2一般選30pF左右。圖4.2中PD是電源控制寄存器PCON.1的掉電方式位,正常工作方式PD=0。當PD=1時單片機進入掉電工作方式,是一種節(jié)能工作方式。上
11、述電路是靠MCS-51單片機內部電路產生振蕩的。也可以由外部振蕩器或時鐘直接驅動MCS-51。本設計采用內部電路產生振蕩。 </p><p><b> 2.復位電路</b></p><p> 復位是單片機的初始化操作。其功能主要是將程序計數器(PC)初始化為0000H,使單片機從0000H單元開始執(zhí)行程序,并將特殊功能寄存器賦一些特定值。復位是使單片機退出低功耗工
12、作方式而進入正常狀態(tài)一種操作。復位是上電的第一個操作,然后程序從0000H開始執(zhí)行。在運行中,外界干擾等因素可能會使單片機的程序陷入死循環(huán)狀態(tài)或“跑飛”。要使其進入正常狀態(tài),唯一辦法是將單片機復位,以重新啟動。</p><p> 復位后,程序計數器(PC)及各特殊功能寄存器(SFR)的值如表4.2所示。</p><p> 表4.2 程序計數器及各特殊功能寄存器的復位值</p&g
13、t;<p> RST引腳是復位端,高電平有效。在該引腳輸入至少連續(xù)兩個機器周期以上的高電平,單片機復位。RST引腳內部有一個斯密特ST觸發(fā)器以對輸入信號整形,保證內部復位電路的可靠,所以外部輸入信號不一定要求是數字波形。使用時,一般在此引腳與VSS引腳之間接一個8.2kΩ的下拉電阻,與VCC引腳之間接一個約10μF的電解電容,即可保證上電自動復位。</p><p> 圖4.3自動和手動復位電路圖
14、</p><p> 上電或手動復位要求電源接通后,單片機自動復位,并且在單片機運行期間,用開關操作也能使單片機復位。上電后,由于電容C3的充電和反相門的作用,使RST持續(xù)一段時間的高電平。當單片機已在運行當中時,按下復位鍵K后松開,也能使RST為一段時間的高電平,從而實現(xiàn)上電或手動復位的操作。本設計采用手動復位電路。</p><p> 四、程序流程圖與源程序</p>&l
15、t;p> 對于該頻率計數器將采集的數值除以51即可,頻率計數器的軟件流程圖如圖5.1所示。</p><p> 頻率計數器軟件流程圖</p><p><b> C語言源程序:</b></p><p> #include<reg51.h></p><p> #include<absacc.h
16、></p><p> #include<intrins.h></p><p> #define D8279 XBYTE[0xFF80]//8279 數據口地址</p><p> #define C8279 XBYTE[0xFF82]//8279 狀態(tài)/命令口地址</p><p> #define uc
17、har unsigned char</p><p> #define uint unsigned int</p><p> uint BD; //頻率</p><p> uchar tt=0; </p><p> uchar idata diss[4]={0,0,0,0};//顯示緩沖區(qū)</p>&l
18、t;p> uchar code ledseg[] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,</p><p> 0x7f,0x6f};//LED顯示常數表</p><p> voiddisled(d) //顯示位置子程序 </p><p> ucharidata*d;</p>&
19、lt;p><b> {</b></p><p><b> uchari;</b></p><p> C8279=0x90;</p><p> for(i=0;i<4;i++)</p><p><b> {</b></p><p>
20、 C8279=i+0x80;</p><p> D8279=ledseg[*d];</p><p><b> d++;</b></p><p><b> }</b></p><p><b> }</b></p><p> void init8
21、279() //初始化8279</p><p><b> {</b></p><p> C8279=0; //置8279工作方式</p><p> C8279=0x2f;//置鍵盤掃描速率</p><p> C8279=0xc1; //清除 LED 顯示</p>&
22、lt;p><b> }</b></p><p> voiddisplay()//顯示子程序</p><p><b> {</b></p><p> diss[0]=BD%10;</p><p> diss[1]=(BD%100)/10;</p><p>
23、 diss[2]=(BD%1000)/100;</p><p> diss[3]=BD/1000;</p><p> disled(diss);</p><p><b> }</b></p><p> void first(void)//初始化子程序</p><p><b>
24、 {</b></p><p> init8279();//初始化8279</p><p> TMOD=0x15;</p><p> TH1=0x4C; //定時0.05秒</p><p><b> TL1=0x00;</b></p><p><b>
25、 TH0=0x00;</b></p><p><b> TL0=0x00;</b></p><p> EA=1; //開定時器1中斷</p><p><b> ET1=1;</b></p><p> TR0=1; //開始計數</p><p>
26、 TR1=1; //開始定時</p><p><b> }</b></p><p> main() //主程序</p><p><b> { </b></p><p> uchar flag; //啟動標志</p><p><b> P1=
27、0xff;</b></p><p><b> while(1)</b></p><p><b> {</b></p><p><b> flag=P1;</b></p><p> if(flag==0xfe) //檢測啟動標志</p><
28、;p><b> break;</b></p><p><b> }</b></p><p> first(); //初始化</p><p><b> while(1)</b></p><p> display();</p><p&
29、gt;<b> }</b></p><p> void t1(void) interrupt 3 // 定時器1中斷子程序</p><p><b> {</b></p><p><b> TR1=0;</b></p><p><b> tt++;<
30、/b></p><p> TH1=0x4C;//重裝初值</p><p> TL1=0x00; </p><p> TR1=1; </p><p> if(tt==20) //定時1秒</p><p><b> {</b></p><p> t
31、t=0;TR0=0;</p><p> BD=256*TH0+TL0;</p><p><b> TH0=0;</b></p><p><b> TL0=0;</b></p><p><b> TR0=1;</b></p><p><b&g
32、t; }</b></p><p><b> }</b></p><p><b> 五、原理圖 </b></p><p><b> 六、設計心得體會</b></p><p> 創(chuàng)新,是要我們學會將理論很好地聯(lián)系實際,并不斷地去開動自己的大腦,從為人類造福的
33、意愿出發(fā),做自己力所能及的,別人卻沒想到的事。使之不斷地戰(zhàn)勝別人,超越前人。通過基于8051單片機頻率計數器的設計,我不僅加深了對單片機理論的理解,將理論很好地應用到實際當中去,而且我還學會了如何去培養(yǎng)我們的創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。同時,更重要的是,我在這一設計過程中,學會了堅持不懈,不輕易言棄。設計過程,也好比是我們人類成長的歷程,常有一些不如意,也許這就是在對我們提出了挑戰(zhàn),勇敢過,也戰(zhàn)勝了。</p>
34、<p> 在設計程序時,不能妄想一次就將整個程序設計好,反復修改、不斷改進是程序設計的必經之路;要養(yǎng)成注釋程序的好習慣,一個程序的完美與否不僅僅是實現(xiàn)功能,而應該讓人一看就能明白你的思路,這樣也為資料的保存和交流提供了方便;在設計課程過程中遇到問題是很正常德,但我們應該將每次遇到的問題記錄下來,并分析清楚,以免下次再碰到同樣的問題。同時在設計過程中遇到了很多困難,都及時向老師、同學請教并得到解決。因此要感謝指導老師在我們遇到
35、困難時,給予我們的建議與鼓勵。 </p><p><b> 七、參考文獻</b></p><p> 趙全利、肖興達.《單片機原理及應用教程》(第二版).機械工業(yè)出版社,2007</p><p> 蔡美琴等.《MCS-51系列單片機系統(tǒng)及其應用》.高等教育出版社.</p><p> 吳國經.《單片機應用技
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論