單片機(jī)課程設(shè)計(jì) 頻率計(jì)數(shù)器
《單片機(jī)課程設(shè)計(jì) 頻率計(jì)數(shù)器》由會(huì)員分享,可在線閱讀,更多相關(guān)《單片機(jī)課程設(shè)計(jì) 頻率計(jì)數(shù)器(29頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、湖南工程學(xué)院 課 程 設(shè) 計(jì) 課程名稱 單片機(jī)課程設(shè)計(jì) 課題名稱 頻率計(jì)數(shù)器 專 業(yè) 電子科學(xué)與技術(shù) 班 級(jí) 0981 學(xué) 號(hào) 姓 名 指導(dǎo)教師 2012年 5 月 25 日 湖南工程學(xué)院 課 程 設(shè) 計(jì) 任 務(wù) 書 課程名稱 單片機(jī)課程設(shè)計(jì)
2、 課 題 頻率計(jì)數(shù)器 專業(yè)班級(jí) 電子科學(xué)與技術(shù)0981 學(xué)生姓名 學(xué) 號(hào) 指導(dǎo)老師 審 批 任務(wù)書下達(dá)日期 2012 年 5 月 14 日 任務(wù)完成日期 2012年 5 月 25 日 設(shè)計(jì)內(nèi)容與設(shè)計(jì)要求 設(shè)計(jì)內(nèi)容: 本課題以單片機(jī)為核
3、心,設(shè)計(jì)和制作一個(gè)頻率計(jì)數(shù)器,來完成對(duì)輸入的信號(hào)進(jìn)行頻率計(jì)數(shù),計(jì)數(shù)的頻率結(jié)果通過6位動(dòng)態(tài)數(shù)碼管顯示出來。要求能夠?qū)?-250KHZ的信號(hào)頻率進(jìn)行準(zhǔn)確計(jì)數(shù),計(jì)數(shù)誤差不超過1HZ。 設(shè)計(jì)要求: 1. 設(shè)計(jì)方案要合理、正確; 2. 系統(tǒng)硬件設(shè)計(jì); 3. 完成必要元器件選擇; 4. 系統(tǒng)軟件設(shè)計(jì)及調(diào)試; 5. 寫出設(shè)計(jì)報(bào)告。 主要設(shè)計(jì)條件 1. MCS-51單片機(jī)實(shí)驗(yàn)操作臺(tái)1臺(tái); 2. PC機(jī)及單片機(jī)調(diào)試軟件; 3. 單片機(jī)應(yīng)用系統(tǒng)板1套; 4. 制作工具1套; 5. 系統(tǒng)設(shè)計(jì)所需的元器件。 說 明 書 格 式 課程設(shè)計(jì)封面 課程設(shè)計(jì)任務(wù)書 目 錄 一、
4、設(shè)計(jì)的內(nèi)容、要求及目的 二、系統(tǒng)總體方案選擇與說明 三、系統(tǒng)方框圖與工作原理 四、各部分方案選定、功能及計(jì)算 五、器件說明 六、應(yīng)用系統(tǒng)的程序設(shè)計(jì) 七、調(diào)試說明、使用說明 八、設(shè)計(jì)總結(jié) 九、參考文獻(xiàn) 附錄:程序清單,設(shè)計(jì)電路原理圖 進(jìn) 度 安 排 設(shè)計(jì)時(shí)間分為二周 第一周 星期一、上午:布置課題任務(wù),課題介紹及講課。 下午:借閱有關(guān)資料,總體方案討論。 星期二、確定總體方案,學(xué)習(xí)與設(shè)計(jì)相關(guān)內(nèi)容。 星期三、各部分方案設(shè)計(jì)。 星期四、各部分設(shè)計(jì)。 星期五、設(shè)計(jì)及上機(jī)調(diào)試。 第二周 星期一:設(shè)計(jì)及上機(jī)調(diào)試。 星期二
5、:調(diào)試,中期檢查。 星期三:調(diào)試、寫說明書。 星期四--星期五上午:寫說明書、完成電子版并打印成稿。 星期五下午:答辯。 參 考 文 獻(xiàn) 參考文獻(xiàn) 1、 《單片機(jī)原理與應(yīng)用》 王迎旭等編 機(jī)械工業(yè)出版社 2、 《51系列單片機(jī)設(shè)計(jì)實(shí)例》 樓然苗等編 北京航空航天大學(xué)出版社 3、 《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)實(shí)驗(yàn)教程》 黃勤等編 重慶大學(xué)出版社 4、 《微型計(jì)算機(jī)接口技術(shù)及應(yīng)用》 劉樂善主編 華中科技大學(xué)出版社 5、《單片微型計(jì)算機(jī)原理及接口技術(shù)》陳光東等 華中科技大學(xué)出版社 目錄 第一章.設(shè)計(jì)的內(nèi)容、要求及目的 1 1.1 設(shè)計(jì)任務(wù) 1 1.2 電路原理圖 1
6、 1.3 系統(tǒng)板上硬件連線 2 1.4 程序設(shè)計(jì)內(nèi)容 2 第二章.設(shè)計(jì)原理及總體方案 3 2.1頻率計(jì)數(shù)器的基本原理 3 2.2 方案的確定 4 第三章.各部分方案選定、功能及計(jì)算 5 3.1 主要控制模塊 5 3.2時(shí)鐘模塊 9 3.3 復(fù)位模塊 9 3.4顯示模塊 10 第四章.程序設(shè)計(jì)及調(diào)試 11 設(shè)計(jì)總結(jié) 14 參考文獻(xiàn) 15 附錄一:電路仿真圖 16 附錄二:仿真結(jié)果圖 17 附錄三:源程序 18 第一章.設(shè)計(jì)的內(nèi)容、要求及目的 1.1 設(shè)計(jì)任務(wù) 利用AT89S51單片機(jī)的T0、T1的定時(shí)計(jì)數(shù)器功能,來完成對(duì)輸入的信號(hào)進(jìn)行頻率計(jì)數(shù),計(jì)數(shù)的頻率
7、結(jié)果通過8位動(dòng)態(tài)數(shù)碼管顯示出來。要求能夠?qū)?-250KHZ的信號(hào)頻率進(jìn)行準(zhǔn)確計(jì)數(shù),計(jì)數(shù)誤差不超過1HZ。 1.2 電路原理圖 1.3 系統(tǒng)板上硬件連線 1.3.1 把“單片機(jī)系統(tǒng)”區(qū)域中的P0.0-P0.7與“動(dòng)態(tài)數(shù)碼顯示”區(qū)域中的ABCDEFGH端口用8芯排線連接。 1.3.2 把“單片機(jī)系統(tǒng)”區(qū)域中的P2.0-P2.7與“動(dòng)態(tài)數(shù)碼顯示”區(qū)域中的S1S2S3S4S5S6S7S8端口用8芯排線連接。 1.3.3 把“單片機(jī)系統(tǒng)”區(qū)域中的P3.4(T0)端子用導(dǎo)線連接到“頻率產(chǎn)生器”區(qū)域中的WAVE端子上。 1.4 程序設(shè)計(jì)內(nèi)容 1.4.1 定時(shí)/計(jì)數(shù)器T
8、0和T1的工作方式設(shè)置,由圖可知,T0是工作在計(jì)數(shù)狀態(tài)下,對(duì)輸入的頻率信號(hào)進(jìn)行計(jì)數(shù),但對(duì)工作在計(jì)數(shù)狀態(tài)下的T0,最大計(jì)數(shù)值為fOSC/24,由于fOSC=12MHz,因此:T0的最大計(jì)數(shù)頻率為250KHz。對(duì)于頻率的概念就是在一秒只數(shù)脈沖的個(gè)數(shù),即為頻率值。所以T1工作在定時(shí)狀態(tài)下,每定時(shí)1秒中到,就停止T0的計(jì)數(shù),而從T0的計(jì)數(shù)單元中讀取計(jì)數(shù)的數(shù)值,然后進(jìn)行數(shù)據(jù)處理。送到數(shù)碼管顯示出來。 1.4.2 T1工作在定時(shí)狀態(tài)下,最大定時(shí)時(shí)間為65ms,達(dá)不到1秒的定時(shí),所以采用定時(shí)50ms,共定時(shí)20次,即可完成1秒的定時(shí)功能。 第二章.設(shè)計(jì)原理及總體方案 2.1頻率計(jì)數(shù)器的基本原理
9、頻率源 頻率計(jì)的基本原理是用一個(gè)頻率穩(wěn)定度高的頻率源作為基準(zhǔn)時(shí)鐘,對(duì)比測(cè)量其他信號(hào)的頻率。通常情況下計(jì)算每秒內(nèi)待測(cè)信號(hào)的脈沖個(gè)數(shù),此時(shí)我們稱閘門時(shí)間為1秒。閘門時(shí)間也可以大于或小于一秒。閘門時(shí)間越長(zhǎng),得到的頻率值就越準(zhǔn)確,但閘門時(shí)間越長(zhǎng)則每測(cè)一次頻率的間隔就越長(zhǎng)。閘門時(shí)間越短,測(cè)的頻率值刷新就越快,但測(cè)得的頻率精度就受影響。測(cè)量一個(gè)信號(hào)的頻率有兩種方法:第一種是計(jì)時(shí)法,用基準(zhǔn)信號(hào)去測(cè)量被測(cè)信號(hào)的高電平持續(xù)的時(shí)間,然后轉(zhuǎn)換成被測(cè)信號(hào)的頻率。第二種是計(jì)數(shù)法,計(jì)算在基準(zhǔn)信號(hào)高電平期間通過的被測(cè)信號(hào)個(gè)數(shù)。根據(jù)設(shè)計(jì)要求測(cè)量0HZ~250KHZ的正弦信號(hào),首先要將正弦信號(hào)通過過零比較轉(zhuǎn)換成方波信號(hào),然后
10、變成測(cè)量方波信號(hào)。如果用第一種方法,當(dāng)信號(hào)頻率超過1KHZ的時(shí)候測(cè)量精度將超出測(cè)量精度要求,所以當(dāng)被測(cè)信號(hào)的頻率高于1KHZ的時(shí)候需要將被測(cè)信號(hào)進(jìn)行分頻處理。如果被測(cè)信號(hào)頻率很高需要將被測(cè)信號(hào)進(jìn)行多次分頻直到達(dá)到設(shè)計(jì)的精度要求。本課程設(shè)計(jì)采用AT89C51單片機(jī)為控制器件來制作一個(gè)0HZ~250KHZ的頻率計(jì)數(shù)器,并將所得到的頻率通過數(shù)碼管顯示出來。根據(jù)設(shè)計(jì)要求用單片機(jī)的內(nèi)部T0產(chǎn)生基準(zhǔn)信號(hào),由INTO輸入被測(cè)信號(hào),通過定時(shí)方式計(jì)算被測(cè)信號(hào)的持續(xù)時(shí)間。通過單片機(jī)計(jì)算得出結(jié)果,最后通過數(shù)碼管顯示測(cè)量結(jié)果。系統(tǒng)的原理框圖如下圖所示: 數(shù)顯碼示管 AT89C51 單片機(jī)
11、 2.2 方案的確定 系統(tǒng)采用AT89C51單片機(jī)作為控制核心,門控信號(hào)由AT89S51內(nèi)部的計(jì)數(shù)定時(shí)器產(chǎn)生,單位為1s。由于單片機(jī)的計(jì)數(shù)頻率上限較低(12MHZ晶振時(shí)約500KHZ),所以需對(duì)高頻被測(cè)信號(hào)進(jìn)行硬件分頻處理,AT89S51則完成運(yùn)算、控制及顯示功能。由于使用了單片機(jī),使整個(gè)系統(tǒng)具有極為靈活的可編程性,能方便地對(duì)系統(tǒng)進(jìn)行功能擴(kuò)展與改進(jìn)。原理圖如下圖: 信號(hào)輸 入 數(shù)碼管顯示 單片機(jī)處理 在本設(shè)計(jì)方案中,我通過程序設(shè)定T0工作在計(jì)數(shù)狀態(tài)下,T1工作在計(jì)時(shí)狀態(tài)下。T0計(jì)數(shù)器對(duì)輸入的信號(hào)經(jīng)行計(jì)數(shù),其最大計(jì)數(shù)值為fOSC/24,當(dāng)fO
12、SC=12MHz時(shí),T0的最大計(jì)數(shù)頻率為500kHz。由于信號(hào)的頻率就是每秒鐘信號(hào)脈沖的個(gè)數(shù),于是我讓T1工作在定時(shí)狀態(tài)下,定時(shí)時(shí)間為1秒。每定時(shí)1秒鐘到,就停止T0的計(jì)數(shù),然后從T0的計(jì)數(shù)單元中讀取計(jì)數(shù)的數(shù)值,即完成了信號(hào)頻率的測(cè)量,最后通過六位數(shù)碼管顯示出頻率值。 第三章.各部分方案選定、功能及計(jì)算 3.1 主要控制模塊 主控模塊主要是AT89C51單片機(jī)系統(tǒng),采用12MHZ的晶振頻率。單片機(jī)的P3.2口接被處理后的被測(cè)信號(hào),P0口接LED顯示器的數(shù)據(jù)輸入端,ALE,RD,WR,P0.0,P0.1通過外接控制電路接數(shù)碼管顯示器的控制端。單片機(jī)系統(tǒng)的電路如下圖所示:
13、 AT89C51是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含4k Bytes ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89S51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。AT89S51具有如下特點(diǎn):40個(gè)引腳,4k Bytes Flash片內(nèi)程序存儲(chǔ)器,128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),32個(gè)外部雙向輸入/輸出
14、(I/O)口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器。此外,AT89S51設(shè)計(jì)和配置了振蕩頻率可為0Hz并可通過軟件設(shè)置省電模式??臻e模式下,CPU暫停工作,而RAM定時(shí)計(jì)數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時(shí)該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。 管腳說明: VCC:供電電壓。 GND:接地。 P0:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一
15、次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。 P1:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 P2:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電
16、阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 P3:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3.0 RXD(串
17、行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(記時(shí)器0外部輸入)P3.5 T1(記時(shí)器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。I/O口作為輸入口時(shí)有兩種工作方式即所謂的讀端口與讀引腳讀端口時(shí)實(shí)際上并不從外部讀入數(shù)據(jù)而是把端口鎖存器的內(nèi)容讀入到內(nèi)部總線經(jīng)過某種運(yùn)算或變換后再寫回到端口鎖存器只有讀端口時(shí)才真正地把外部的數(shù)據(jù)讀入到內(nèi)部總線上面圖中的兩個(gè)三角形表示的就是輸入緩沖器CPU將根據(jù)不同的指令分別發(fā)出讀端口或讀引腳信號(hào)
18、以完成不同的操作這是由硬件自動(dòng)完成的不需要我們操心1然后再實(shí)行讀引腳操作否則就可能讀入出錯(cuò)為什么看上面的圖如果不對(duì)端口置1端口鎖存器原來的狀態(tài)有可能為0Q端為0Q^為1加到場(chǎng)效應(yīng)管柵極的信號(hào)為1該場(chǎng)效應(yīng)管就導(dǎo)通對(duì)地呈現(xiàn)低阻抗,此時(shí)即使引腳上輸入的信號(hào)為1也會(huì)因端口的低阻抗而使信號(hào)變低使得外加的1信號(hào)讀入后不一定是1若先執(zhí)行置1操作則可以使場(chǎng)效應(yīng)管截止引腳信號(hào)直接加到三態(tài)緩沖器中實(shí)現(xiàn)正確的讀入由于在輸入操作時(shí)還必須附加一個(gè)準(zhǔn)備動(dòng)作所以這類I/O口被稱為準(zhǔn)雙向口89C51的P0/P1/P2/P3口作為輸入時(shí)都是準(zhǔn)雙向口接下來讓我們?cè)倏戳硪粋€(gè)問題從圖中可以看出這四個(gè)端口還有一個(gè)差別除了P1口外P0P
19、2P3口都還有其他的功能 RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。 ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止
20、,置位無效。 /PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。 /EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 XTAL2:來自反向振蕩器的 3.2時(shí)鐘模塊 如圖所示是采用內(nèi)部
21、振蕩方式使8051單片機(jī)產(chǎn)生時(shí)鐘信號(hào),在單片 機(jī)芯片的X1和X2引腳兩端跨接石英晶體振蕩器和兩個(gè)電容構(gòu)成穩(wěn)定的自激振蕩電路,其中電容對(duì)振蕩頻率起微調(diào)作用,晶振頻率為12MHZ。 3.3 復(fù)位模塊 復(fù)位是單片機(jī)的初始化操作,其功能是CPU從000H單元開始執(zhí)行程序,除了使系統(tǒng)正常初始化,當(dāng)程序運(yùn)行出錯(cuò)或操作錯(cuò)誤使系統(tǒng)處于鎖死狀態(tài)時(shí),為擺脫困境,也需要按復(fù)位鍵重新啟動(dòng)。如圖為按鍵手動(dòng)復(fù)位方式,通過復(fù)位端經(jīng)電阻和電源+5V接通實(shí)現(xiàn)復(fù)位功能。 3.4顯示模塊 本次設(shè)計(jì)中采用了LED顯示器,即數(shù)碼管。數(shù)碼管的每一個(gè)數(shù)碼段是一只發(fā)光二極管。當(dāng)發(fā)光二極管導(dǎo)通時(shí),相應(yīng)的一個(gè)點(diǎn)或者
22、一個(gè)筆畫發(fā)光,控制發(fā)光二極管發(fā)光組合,可以顯示出所需字符。本電路采用的是共陰的數(shù)碼管,其編碼如下: 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40 0 1 2 3 4 5 6 7 8 9 熄滅 C語言程序?yàn)椋簎nsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};第四章.程序設(shè)計(jì)及調(diào)試 根據(jù)課程
23、設(shè)計(jì)所要求的功能,在KEIL51開發(fā)環(huán)境下編譯程序,首先要定義相關(guān)參量,然后初始化中斷,打開外中斷,T0是工作在計(jì)數(shù)狀態(tài)下,對(duì)輸入的頻率信號(hào)進(jìn)行計(jì)數(shù),但對(duì)工作在計(jì)數(shù)狀態(tài)下的T0,最大的計(jì)數(shù)值為fOSC/24,由于fOSC=12MHz, 因此: T0的最大計(jì)數(shù)頻率為 250KHz。對(duì)于頻率的概念就是在一秒計(jì)數(shù)脈沖的個(gè)數(shù),即為頻率值。所以T1工作在定時(shí)狀態(tài)下,每定時(shí)1秒中到,就停止T0的計(jì)數(shù),而從T0的計(jì)數(shù)單元中讀取計(jì)數(shù)的數(shù)值,然后進(jìn)行數(shù)據(jù)處理。送到數(shù)碼管顯示出來。T1工作在定時(shí)狀態(tài)下,最大定時(shí)時(shí)間為65ms,達(dá)不到1秒的定時(shí),所以采用定時(shí)50ms,共定時(shí)20次,即可完成1秒的定時(shí)功能。參考相關(guān)
24、資料編譯實(shí)現(xiàn)相關(guān)功能程序,實(shí)現(xiàn)課程設(shè)計(jì)所要求的功能,程序流程圖如下: T1定時(shí)器 結(jié)束 計(jì)數(shù)顯示 是否達(dá)到1S 從P3*2接受外部中斷請(qǐng)求 初始化 T0/T1初始化(設(shè)置T0為外部脈沖計(jì)數(shù),T1為1S定時(shí)) 按照程序流程圖把編寫好的程序用KEIL-51單片機(jī)編譯系統(tǒng)編譯,編譯成功后,再把程序轉(zhuǎn)換為可執(zhí)行文件。在程序編寫過程中首先要考慮數(shù)碼管是共陰還是共陽的,不同的數(shù)碼管的結(jié)構(gòu)不一樣,所采用的編碼也不一樣,本電路采用的是共陰的數(shù)碼管,所以其編碼如下: 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40 0
25、 1 2 3 4 5 6 7 8 9 熄滅 所用C語言程序?yàn)椋簎nsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40}; 接下來要考慮哪個(gè)口做定時(shí)器哪個(gè)口做計(jì)數(shù)器接口,該電路的設(shè)計(jì)思路是用T1做定時(shí)器接口,而T0做計(jì)數(shù)器接口,并且還要考慮定時(shí)器/計(jì)數(shù)器的工作模式,根據(jù)設(shè)計(jì)思路來設(shè)計(jì)程序,故編寫出了如下的C語言程序:TMOD為8位寄存器,用于控制T0和T1的工作方
26、式和工作模式。低4位用于T0,高4位用于T1。我們要將T0口作為定時(shí)器那么低四位中的C/位的編碼應(yīng)該為1,而將T1口作為計(jì)數(shù)器接口那么高四位中的C/位的編碼應(yīng)該為0,并且要使T0和T1都工作在模式1方式,那么其編碼都應(yīng)該為01,所以就有編碼為00010101,轉(zhuǎn)化為十六進(jìn)制編碼就是0x15。 所以有TMOD=0x15 TH0=0; //初始化計(jì)時(shí)器1的高位 TL0=0; //初始化計(jì)時(shí)器1的低位 TH1=(65536-4000)/256;//初始化計(jì)時(shí)器1的高位 TL1=(65536-4000)%256;//初始化計(jì)時(shí)器1的
27、低位 TR1=1; //開計(jì)時(shí)器1 TR0=1; //開計(jì)時(shí)器0 ET0=1; //開外部計(jì)時(shí)中斷0 ET1=1; //開外部計(jì)時(shí)中斷1 EA=1; //開總中斷 定義完了定時(shí)器和計(jì)數(shù)器以及中斷的內(nèi)容之后進(jìn)入主程序的編寫(附錄三),編寫完所有程序之后進(jìn)行編譯并將生成的可執(zhí)行文件后寫入AT89C51單片機(jī)。此時(shí)單片機(jī)上顯示6位全零(見附錄一),加入信號(hào)源時(shí)數(shù)碼管能顯示輸入信號(hào)的頻率(見附錄二)說明程序基本上沒有問題了。 設(shè)計(jì)總結(jié) 經(jīng)過本次課程設(shè)計(jì)使我受益匪淺,舊知識(shí)得到加強(qiáng),程序的編寫調(diào)試,單片
28、機(jī)的應(yīng)用,LED顯示管等,增加了新知識(shí),開闊了視野。從中我學(xué)到了相當(dāng)多的知識(shí),從程序的編譯到電路圖的設(shè)計(jì)仿真,到調(diào)試出結(jié)果,整個(gè)過程雖然遇到了許多困難,但經(jīng)過本人的不懈努力和老師的辛勤指導(dǎo),以及在同學(xué)的熱心幫助下,不斷查找相關(guān)資料解決問題,以至最終實(shí)現(xiàn)了本次課程設(shè)計(jì)。并且通過這次課程設(shè)計(jì)的實(shí)踐,培養(yǎng)了自己對(duì)本專業(yè)學(xué)習(xí)的更為濃厚的興趣與愛好,提高了自己的動(dòng)手能力,以及與同學(xué)團(tuán)結(jié)協(xié)作的能力。更重要的是自身的自學(xué)能力和動(dòng)手能力得到了很大的提高,做課程設(shè)計(jì)的過程就是一個(gè)不斷的學(xué)習(xí)和探索的過程,當(dāng)出現(xiàn)困難的時(shí)候能夠沉著、冷靜、正確的面對(duì)和處理困難。我相信有了這次課程設(shè)計(jì)的整個(gè)經(jīng)歷,為將來進(jìn)行更高新知識(shí)的
29、學(xué)習(xí)帶來了很大的益處,也為走上社會(huì)奠定了堅(jiān)實(shí)的基礎(chǔ)。 最后,感謝我的指導(dǎo)老師尋大勇老師,在本次課程設(shè)計(jì)中老師的指導(dǎo)給予了我很大的幫助,不但教會(huì)了我理論知識(shí),還教會(huì)了我解決問題的能力,老師淵博的知識(shí)、精益求精的工作態(tài)度給我留下了深刻的印象,將使我終身受益。同時(shí)也感謝我的同學(xué)、室友對(duì)我的幫助與支持,沒有他們的幫助我是無法在短時(shí)間內(nèi)圓滿完成本次課程設(shè)計(jì)的,與他們一起學(xué)習(xí)生活,帶給我很多的歡笑與快樂。由于本人所掌握的知識(shí)和能力水平的限制,在本次設(shè)計(jì)中一定存在一些錯(cuò)誤,懇請(qǐng)老師予以批評(píng)指正。 再次對(duì)幫助我的老師和同學(xué)表示衷心的感謝。 參考文獻(xiàn) 1.《單片機(jī)原理與應(yīng)用》 王迎旭等編 機(jī)
30、械工業(yè)出版社
2.《51系列單片機(jī)設(shè)計(jì)實(shí)例》 樓然苗等編 北京航空航天大學(xué)出版社
3.《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)實(shí)驗(yàn)教程》 黃勤等編 重慶大學(xué)出版社
4.《微型計(jì)算機(jī)接口技術(shù)及應(yīng)用》 劉樂善主編 華中科技大學(xué)出版社
5.《單片微型計(jì)算機(jī)原理及接口技術(shù)》陳光東等 華中科技大學(xué)出版社附錄一:電路仿真圖 附錄二:仿真結(jié)果圖
附錄三:源程序
#include
31、dispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};//數(shù)碼管顯示的數(shù)字?jǐn)?shù)組 unsigned char dispbuf[8]={0,0,0,0,0,0,10,10};//數(shù)碼管顯示內(nèi)容數(shù)組 unsigned char temp[8];//數(shù)碼管顯示內(nèi)容緩沖數(shù)組 unsigned char dispcount;//顯示計(jì)數(shù) unsigned char T0count; //計(jì)時(shí)器0的計(jì)數(shù) unsigned char timecount; bi
32、t flag; //頻率計(jì)開始工作標(biāo)志位 unsigned long x; //八個(gè)數(shù)碼管顯示的數(shù) void main(void) { unsigned char i; TMOD=0x15;//設(shè)置兩個(gè)計(jì)時(shí)器模式 TH0=0; //初始化計(jì)時(shí)器1的高位 TL0=0; //初始化計(jì)時(shí)器1的低位 TH1=(65536-5000)/256;//初始化計(jì)時(shí)器1的高位 TL1=(65536-5000)%256;//初始化計(jì)時(shí)器1的低位 TR1=1; //開計(jì)時(shí)器1 TR0=1;
33、//開計(jì)時(shí)器0 ET0=1; //開外部計(jì)時(shí)中斷0 ET1=1; //開外部計(jì)時(shí)中斷1 EA=1; //開總中斷 while(1) { if(flag==1) { flag=0; x=T0count*65536+TH0*256+TL0; for(i=0;i<8;i++) // { temp[i]=0; //清緩沖數(shù)組內(nèi)容 }
34、 i=0; while(x/10) { temp[i]=x%10; //把個(gè)位數(shù)給緩沖區(qū) x=x/10; i++; } temp[i]=x; // 把十位數(shù)給緩沖 for(i=0;i<6;i++) { dispbuf[i]=temp[i];//把高六位的數(shù)給顯示緩沖區(qū) } ti
35、mecount=0;//清0 T0count=0; TH0=0; TL0=0; TR0=1; } } } void t0(void) interrupt 1 using 0 //中斷計(jì)時(shí)器0實(shí)行的函數(shù) { T0count++; } void t1(void) interrupt 3 using 0 //中斷計(jì)時(shí)器1的函數(shù) { TH1=(65536-5000)/256; TL1=(65536-5000)%256; timecount++;
36、 if(timecount==250) { TR0=0; timecount=0; flag=1; } P0=dispcode[dispbuf[dispcount]]; //數(shù)碼管顯示內(nèi)容 P2=dispbit[dispcount]; //數(shù)碼管選通 dispcount++; if(dispcount==8) { dispcount=0; } } 電氣信息學(xué)院課程設(shè)計(jì)評(píng)分表 項(xiàng) 目 評(píng) 價(jià) 優(yōu) 良 中 及格 差
37、 設(shè)計(jì)方案合理性與創(chuàng)造性(10%) 開發(fā)板焊接及其調(diào)試完成情況*(10%) 硬件設(shè)計(jì)或軟件編程完成情況(20%) 硬件測(cè)試或軟件調(diào)試結(jié)果*(10%) 設(shè)計(jì)說明書質(zhì)量(20%) 答辯情況(10%) 完成任務(wù)情況(10%) 獨(dú)立工作能力(10%) 出勤情況(10%) 綜 合 評(píng) 分 指導(dǎo)教師簽名:________________ 日 期:________________ 注:①表中標(biāo)*號(hào)項(xiàng)目是硬件制作或軟件編程類課題必填內(nèi)容; ②此表裝訂在課程設(shè)計(jì)說明書的最后一頁。課程設(shè)計(jì)說明書裝訂順序:封面、任務(wù)書、目錄、正文、評(píng)分表、附件(非16K大小的圖紙及程序清單)。 23
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案