的原理,很容易想到利用51單片機的T0、T1兩個定時/計數器,一個用來定時,另一個用來計數。
1.3 設計課題總體方案介紹及工作原理說明
本次設計主要分成兩大方面:硬件電路的設計和軟件程序的設計。硬件電路方面,采用單片機最小系統,便可實現課題要求。程序的設計方面,本人采用C語言編寫程序。
1.3.1 數字頻率計總體方案設計
本方案主要以單片機為核心,利用單片機的計數、定時功能來實現頻率的計數并且利用單片機的動態掃描法把測出的數據送到數字顯示電路顯示。其原理框圖如圖2所示:
圖1-2 單片機原理框圖
本方案主要以單片機為核心,利用單片機的計數器和定時器的功能對被測信號進行計數。編寫相應的程序可以使單片機自動調節測量的量程,并把測出的頻率數據送到顯示電路顯示。
2 硬件系統的設計
2.1 硬件系統各模塊功能簡要介紹
本次課程設計用到的硬件電路有七個部分組成(見表2-1和圖2)電路圖見附錄A。
表2-1 硬件電路說明
2.2 硬件電路主要部分的介紹
2.2.1數碼管電路

圖2-1 數碼管電路
如圖2所示數碼管電路采用了兩個4位一體共陽數碼管,P0口接為段控口,電阻的作用是限流,P2口為位控口控制三極管通和斷,當其為低電平時三極管接通,相應的數碼管顯示。
2.2.2 獨立鍵盤電路
圖2-2 獨立鍵盤電路
如圖2,獨立鍵盤電路采用按鍵低電平有效。接P1口,P1口是一個帶內部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅動4個TTL邏輯門電路。對端口寫“1”,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流。
2.2.3復位電路
圖2-3 復位電路
如圖3,復位電路采用手動復位的方式,利用一個電容電壓的不可突變性使得復位信號能夠維持2個周期的高電平。
2.2.4 晶振電路
圖2-4 晶振電路
如圖2-4,當MCS-51內部的定時器/計數器被選定為定時器工作模式時,計數輸入信號是內部時鐘脈沖,每個機器周期產生一個脈沖使計數器增1,因此定時器/計數器的輸入脈沖的周期與機器周期一樣,輸入脈沖的頻率為時鐘振蕩的1/12。當采用12MHz頻率的晶體時,計數速率為1MHz,輸入脈沖的周期間隔為1us。當定時器/計數器用作計數器時,計數脈沖來自相應的外部輸入引腳T0和T1。當輸入信號產生由1至0的負跳變時,計數器的值增1,對外部輸入引腳進行采樣。
2.2.5 電源電路
圖2-5 電源電路
如圖2-5,采用2種供電方式,一種為USB供電,另一種是外接12V電源。
2.2.6下載口電路
如圖2-6下載口電路
如圖2-6所示,用PC的USB口供電,通過下載口把程序導入芯片。
2.2.7 AT89S52芯片
圖2-7 AT89C52芯片
如圖2-7,主控制器采用AT89C52,是ATMEL公司生產的一款性能穩定的8位單片機。AT89C52具有1個8KB的Flash程序存儲器,1個256字節的RAM,4個8位的雙向可位尋址I/O端口,看門狗定時器,2個數據指針,3個16位的定時/計數器及一個串行口和1個6向量二級中斷結構,全雙工串行口,片內晶體振蕩器及時鐘電路。
3 軟件系統的設計
3.1 使用單片機資源的情況
內部RAM:20H單元存鍵碼;40H--47H單元為顯示頻率、脈寬、占空比的緩沖區;30H--37H單元為顯示學號信息的緩沖區;21H--24H、60H和66H為間接存數區;SP指向70H單元;使用了通用寄存器區的第0組和第2組通用寄存器組;使用了專用寄存器區中的A、IE、P0、P2、P3,其中P0口為段控口,P2口為位控口,P3.4口作為頻率待測信號的輸入口,P3.2為待測周期、脈寬、占空比信號的輸入口。
3.2 軟件系統各模塊功能簡要介紹
程序中主要的子程序為:測量頻率程序,測量周期程序,測量脈寬程序,測量占空比程序,其次有把二進制轉化為是十進制的進制轉化程序和顯示程序。測量頻率程序,測量周期程序,測量脈寬程序,測量占空比子程序在下一節中會介紹,而其它子程序相對比較簡單,本節主要介紹進制轉化子程序。
進制轉化子程序是利用對10循環求取余數的方法,把二進制數轉化為十進制數。其核心是“移位相減”即把被除數向余數單元左移,然后把余數和除數想減,然后把被除數移位后騰出來的低位存放商,這樣除法完成后,被除數已經全部轉移到余數單元并逐次被減得到最后的余數,而被除數單元被商代替。
3.3 設計原理簡介
本次設計的重點的合理利用定時/計數器。
測量頻率:使用T0的計數功能,T1的計時功能,當它們同時工作時如計時時間為1S,則T0中計的數即為頻率。
測量周期:此處定義周期為信號兩個相鄰上升沿的時間差,因此定時器從第一個上升沿開始計時到第二個上升沿結束計時即可測得周期。
因為測量脈寬和占空比的原理和測量周期的一致,此處便不再重復。
3.4 軟件系統程序流程框圖
4 設計誤差分析及總結
4.1 誤差分析
由于程序中所用的定時/計數器均在查詢的方式下工作,加上實物晶振頻率的誤差,測量誤差在所難免,而且由于受程序和單片機本身所限,對測量量也有一定的要求。
由于系統的晶振頻率為12MHz所以單片機的機器周期T1為1uS,定時/計數器用的是查詢方式,故Tmin=2T1,Tmax=1S,而受顯示數碼位控所限,fmax=65535Hz綜上,對待測頻率信號打要求是:

。對待測周期信號的要求是

。對待測脈寬信號的要求是:

。由于占空比程序使用的是定時/計數器的工作方式2,故不同的待測信號,要求不同,不符合測量要求的信號,將會出現較大的誤差。
在測量范圍內的誤差,主要由晶振系統和定時器查詢程序所占的時間產生,其中最大的是頻率的誤差,因此要靠調節延時程序的初值,減小誤差。
4.2 頻率計的使用說明
待測頻率信號從P3.4口引入,待測周期信號和待測脈寬及占空比信號從P3.2口引入。測量不同的待測信號之前要按復位鍵S1手動復位。S2鍵測周期,S3鍵測頻率,S4鍵測脈寬,S5鍵測占空比,按S6顯示學號信息。
4.3 實物的運行分析
用keil4編程,把生成的.hex文件通過下載口導入單片機,測得數據如表4-1所示:
表4-1 實物的運行分析
由表4-1可知,實物測量誤差較小,完成設計任務。
4.4 設計總結
基于單片機的頻率計的設計涉及到計算機的硬軟件知識,通過對系統的設計和調試,本次設計主要完成了以下工作:提出基于單片機的數字頻率計設計的基本方案;完成了硬件電路設計和軟件電路的設計;編譯了頻率計的控制程序、數碼轉化程序、數據顯示程序等系統軟件程序;對硬件電路進行了誤差分析。
通過本次課程設計,使我更加熟悉了單片機最小系統,在設計的過程中,難點首先是程序的編寫,這使我不得不把教材完整的看一遍。然后是求余程序的編寫,移位相減解決了這個問題。再次是對頻率連續可測量并使顯示不間斷,在延時程序中調用顯示程序使這個問題得到了解決。其實設計程序中最主要的問題就是程序的循環了,這就要有清晰的思路,課程設計本身就是一個發現問題解決問題的平臺,只是這一次我利用這個平臺發現了一些顯而易見的問題,本次設計暴露的我課本知識掌握不牢的缺點,今后應當努力學習基礎知識。
致 謝
在這實習的兩周中我了解到了很多書本上未曾有過的東西,在我多次陷入困境時找到了出路,從而使我們能輕松完成此次設計同時結合實踐操作,可以體現現代化的設計方法和理念,使電子課程設計在培養我們能力方面得到比較大的提高。通過此次的課程設計我對數字電子課本上的基本知識有了更深刻的領悟和掌握,由于我設計的是數字頻率計涉及的知識面很廣所以我查閱了很多的書籍并上網查閱了相關的知識才完成了這份課程設計,在這個過程中遇到了種種的問題但是通過老師和同學的幫助以及查閱書籍最終解決了問題。謝學校和老師對我的培養,給我這個自己動手的機會和空間。經過一段時間,終于在完成了設計,對自己的能力有了很大的提升。在此我要感謝每一個幫助過我的人。在此我要感謝我的老師和同學,在我最困難的時候伸出援助之手,用他們的智慧幫我解決各個難題。
總而言之,感謝每一位關心過我的人,他們今天對我的付出,成為我將來工作的動力。
參考文獻
1.馬忠梅,單片機的C語言Windows環境編程寶典[M], 北京:北京航空航天大學出版社,2003.6
2.李光飛,單片機C程序設計指導[M],北京:北京航空航天大學出版社,2003.01
3.李光飛,單片機課程設計實例指導[M],北京:北京航空航天大學出版社,2004.9
4.現代電子系統設計浙江大學出版社何小艇主編
5.EDA技術使用教程科學出版社潘松編著
6.電子技術基礎數字部分康華光高等教育出版社1998年
7.實用電子電路手冊高等教育出版社1992年
8.新型集成器件實用電路楊幫文電子工業出版社2002年6)電子技術課程設計書艾永樂付子義焦作工學院電氣系1998年
附錄A
PCB圖
元器件布局圖