基于單片機的精確正反計數(shù)工程文檔_第1頁
基于單片機的精確正反計數(shù)工程文檔_第2頁
基于單片機的精確正反計數(shù)工程文檔_第3頁
基于單片機的精確正反計數(shù)工程文檔_第4頁
基于單片機的精確正反計數(shù)工程文檔_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、項 目 設 計 報 告課程名稱 單片機基礎 題 目 基于單片機的精確正反計數(shù) 計時系統(tǒng)的設計與實現(xiàn) 學 院 信息科學與技術學院 專 業(yè) 計算機科學與技術(物聯(lián)網方向)學生姓名 王朋 學 號 201110411122 班級 1 任課教師 游 磊 2013 年 12 月 19 日 【摘要】單片機自1976年由Intel公司推出MCS-48開始,迄今已有三十多年了。由于單片機集成度高、功能強、可靠性高、體積小、功耗地、使用方便、價格低廉等一系列優(yōu)點,目前已經滲入到人們工作和生活的方方面面,幾乎“無處不在,無所不為”。單片機的應用領域已從面向工業(yè)控制、通訊、交通、智能儀表等迅速發(fā)展到家用消費產品、辦公

2、自動化、汽車電子、PC機外圍以及網絡通訊等廣大領域。目前,各個行業(yè),各個領域,在新產品的設計中,都盡可能的應用單片機技術,來提高產品的智能化程度,增強產品的競爭力,適應技術的進步。電子鐘已成為人們日常生活中的必需品,廣泛應用于家庭、車站、碼頭、劇院、辦公室等場所。本系統(tǒng)采用本系統(tǒng)以AT89C52為主控芯片,設計并實現(xiàn)一個正計時和倒計時的秒表,并考慮節(jié)約系統(tǒng)的硬件,能用軟件實現(xiàn)的功能盡量都用軟件實現(xiàn)。這款秒表能按人們預定的時刻蜂鳴器發(fā)出音響信號來起到提醒的作用。這款秒表,不僅功能齊全,系統(tǒng)穩(wěn)定度高,顯示數(shù)據(jù)準確而且成本低,能夠廣泛應用于各種場合。 【關鍵詞】單片機、秒表、AT89C52。 目錄一

3、、設計目的4二、實現(xiàn)環(huán)境41.上位機環(huán)境42. 下位機環(huán)境4三、 設計思路61.中斷的概念 62.中斷源63.中斷寄存器74.寄存器功能與賦值說明75.中斷結構圖:96.C51單片機定時器簡介97.定時器/計數(shù)器詳細說明108. 實驗步驟119. 實驗流程圖1210. 實驗誤差處理12四、 設計代碼12五、 運行結果15六、 總結16七、參考文獻17附錄1.(元件清單)17附錄2.(51_4原理圖)19一、設計目的單片機的優(yōu)點:u 體積小巧,攜帶方便。USB接口通訊及供電,通訊速度快,無須外接電源,活動自鎖40Pin鎖緊座有電源和燒寫狀態(tài)指示燈,可直觀了解編程器當前狀態(tài),只需要USB供電,無需

4、使用外部電源。周密的自保護方式,有效保證不損毀用戶器件或編程器本身。u USB供電系統(tǒng),直接插接到電腦。USB口即可提供電源,不需另接直流電源。u 8位數(shù)碼管(可做數(shù)碼管的靜態(tài)掃描以及動態(tài)掃描顯示實驗如:0-999 計數(shù)器實驗,溫度檢測實驗,遙控解碼實驗等都可以用數(shù)碼管顯示)。u 8位LED發(fā)光二極管(做跑馬燈實驗,交通燈實驗)。u 一路繼電器控制(通過繼電器可以控制其他電器設備的工作低壓控制高壓等實驗,不過為了安全, 建議不要控制電壓超過30V的設備)u 蜂鳴器(做單片機發(fā)聲實驗,播放音樂實驗,報警實驗等聲響實驗)u DS18B20 溫度傳感器,(初步掌握單片機操作后即可親自編寫程序獲知當時

5、的溫度)u MAX232芯片RS232通訊接口(可以做為與計算機通迅的接口同時也可做為STC單片機下載程序的接口及仿真調試的接口)u 設計布局優(yōu)勢,4個按鍵位于左邊,操作更方便。1所以選擇單片機作為項目開發(fā)工具。 通過項目實踐,進一步學習和掌握單片機應用系統(tǒng)的有關知識,加深了解單片機的工作原理。初步掌握單片機應用系統(tǒng)設計,制作和調試的方法。提高動手實踐能力,提高科學的思維能力。二、實現(xiàn)環(huán)境 1.上位機環(huán)境 硬件環(huán)境: 電腦型號 華碩 K43SJ 筆記本電腦 操作系統(tǒng) Windows 8 64位 ( DirectX 11 ) 處理器 英特爾 第二代酷睿 i5-2410M 2.30GHz 雙核 主

6、板 華碩 K43SJ (英特爾 HM65 芯片組) 內存 6 GB ( 金士頓 DDR3 1333MHz / 昱聯(lián) DDR3 1333MHz ) 主硬盤 日立 HTS723232A7A364 ( 320 GB / 7200 轉/分 ) 顯卡 Nvidia GeForce GT 520M ( 1 GB / 華碩 ) 顯示器 LG LGD02F8 ( 14 英寸 ) 光驅 松下 DVD-RAM UJ8A0ASW DVD刻錄機 聲卡 瑞昱 ALC269 英特爾 6 Series Chipset 高保真音頻 網卡 瑞昱 RTL8168E PCI-E Gigabit Ethernet NIC / 華碩

7、軟件環(huán)境: 本設計采用VC6.0+來實現(xiàn)編程,VC6.0+是一種功能強大的面向對象的Windows編程開發(fā)平臺。VC6.0的優(yōu)點是界面簡潔,占用資源少,操作方便。所以本設計采用VC作為串口編程工具。2. 下位機環(huán)境 硬件環(huán)境:cdu51-4單片機開發(fā)板,采用STC89C52單片機,(它具有 8K 在系統(tǒng)可編程Flash存儲器。STC89C52使用經典的MCS-51內核,在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash。 具有以下標準功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門狗定時器,內置4KB EEPROM,MAX810復位電路,3個16 位定時器/

8、計數(shù)器,4個外部中斷,一個7向量4級中斷結構,全雙工串行口。)8位數(shù)碼管6個,8位LED發(fā)光二極管,它采用一種以MAX232為核心的通信接口電路。該接口電路適用于由一臺PC機與多個8051單片機串行通信的設計,其原理和方法同樣適用于PC機與其它單片機之間的串行數(shù)據(jù)通信。2-3 軟件環(huán)境: 本實驗采用Keil uVision3編程軟件,Keil軟件是目前最流行開發(fā)MCS-51系列單片機的軟件,這從近年來各仿真機廠商紛紛宣布全面支持Keil即可看出。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調試器等在內的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部份組合

9、在一起Keil軟件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空閑的硬盤空間、WIN98、NT、WIN2000、WINXP,WIN7/WIN8等操作系統(tǒng)。掌握這一軟件的使用對于使用51系列單片機的愛好者來說是十分必要的,如果你使用C語言編程,那么Keil幾乎就是你的不二之選。4-5 Keil編程軟件圖2-1 圖2-1 Keil編程軟件頁面STC_ISP_V480燒錄軟件圖2-2 圖2-2 STC_ISP_V480燒錄軟件頁面3、 設計思路1.中斷的概念 CPU在處理某一事件A時,發(fā)生了另一事件B請求CPU迅速去處理(中斷發(fā)生); CPU暫時中斷當前的工作,轉去處理事件B(

10、中斷響應和中斷服務); 待CPU將事件B處理完畢后,再回到原來事件A被中斷的地方繼續(xù)處理事件A(中斷返回),這一過程稱為中斷 2.中斷源 在51單片機中有5個中斷源 中斷號 優(yōu)先級 中斷源 中斷入口地址 0 1(最高) 外部中斷0 0003H 1 2 定時器0 000BH 2 3 外部中斷1 0013H 3 4 定時器1 0018H 4 5 串口總段 0023H 3.中斷寄存器 單片機有10個寄存器主要與中斷程序的書寫控制有關 1).中斷允許控制寄存器IE 2).定時器控制寄存器TCON 3).串口控制寄存器SCON 4).中斷優(yōu)先控制寄存器IP 5).定時器工作方式控制寄存器TMOD 6).

11、定時器初值賦予寄存器(TH0/TH1,TL0/TL1) 4.寄存器功能與賦值說明6-7 注:在用到中斷時,必須要開總中斷EA,即EA=1。 /開總中斷 1).中斷允許控制寄存器IE EX0(EX1):外部中斷允許控制位 EX0=1 外部中斷0開關閉合 /開外部0中斷 EX0=0 外部中斷0開關斷開 ET0(ET1):定時中斷允許控制位 ET0=1 定時器中斷0開關閉合 /開內部中斷0 ET0=0 定時器中斷0開關斷開 ES: 串口中斷允許控制位 ES=1 串口中斷開關閉合 /開串口中斷 ES=0 串口中斷開關斷開 2).定時器控制寄存器 TCON /控制外部中斷和定時器中斷 外部中斷: IE0

12、(IE1):外部中斷請求標志位 當INT0(INT1)引腳出現(xiàn)有效的請求信號,此位由單片機自動置1,cpu開始響應,處理終端,而當入 中斷程序后由單片機自動置0. /外部中斷,即外部中斷相應的引腳接入低電平或下降沿信號時,中斷開始響應。 IT0(IT1):外部中斷觸發(fā)方式控制位 /選擇有效信號 IT0(IT1)=1:脈沖觸發(fā)方式,下降沿有效。 IT0(IT1)=0:電平觸發(fā)方式,低電平有效。 內部中斷: TF0(TF1):內部定時器/計數(shù)器溢出中斷標志位 當定時器、計數(shù)器計數(shù)溢出的時候,此位由單片機自動置1,cup開始響應,處理中斷,而當進入中 斷程序后由單片機自動置0. /內部中斷實際上就是

13、利用內部的計數(shù)器,只不過提供計數(shù)的脈沖來自單片機自身。 TRO(TR1):定時器/計數(shù)器啟動位 /啟動定時器 TRO(TR1)=1; 啟動定時器/計數(shù)器0 TR0(TR1)=0; 關閉定時器/計數(shù)器0 3).串口控制寄存器SCON TI:串行口發(fā)送中斷標志位 當單片機串口發(fā)送完一幀數(shù)據(jù)后,此位由單片機自動置1,而當進入中斷服務程序后是不會自動清0的, 必須由用戶在中斷服務中用軟件清0. RI:串行口接收中斷標志位 當單片機串口接收完一幀數(shù)據(jù)后,此位由單片機自動置1,而當進入中斷服務程序后是不會自動清0的, 必須由用戶在中斷服務軟件中用軟件清0. (IP以后補上,TMOD,TL0/TH0 在定時

14、器/計數(shù)器中講) 5.中斷結構圖: 6. C51單片機定時器簡介本課程設計是利用MCS-51單片機內部的定時計數(shù)器、中斷系統(tǒng)、以及行列鍵盤和LED顯示器等部件,設計一個單片機秒表計時器。設計的計時器通過數(shù)碼管顯示,并能通過按鍵實現(xiàn)設置暫停、復位等。4-6正計時和倒計時分別使用兩個定時器T0/T1,采用方式1,對12MHZ的系統(tǒng)時鐘進行定時計數(shù),初值設為XXYY(自己計算)。形成定時時間為50ms。用片內RAM的7BH單元對50ms計數(shù),計920次產生秒計數(shù)器78H單元加1,正秒計數(shù)器加到999則復位,倒秒表計時減到000則復位。然后通過數(shù)碼管顯示出來。在處理過程中加上了按鍵判斷程序,能對按鍵處

15、理。7-87.定時器/計數(shù)器詳細說明 1).計數(shù)的定義: 計數(shù)是指對外部事件進行計數(shù),外部事件的發(fā)生以輸入脈沖的形式表示,因此計數(shù)功能的實質就是對外來 的脈沖進行計數(shù),在單片機中對應引腳T0和T1,兩個脈沖輸入端。 外部輸入的脈沖在負跳變時有效(即外部脈沖由1變化到0),計數(shù)器加1. 2).定時器: 定時器是通過計數(shù)器的計數(shù)來實現(xiàn)的,不過此時的計數(shù)脈沖來自單片機的內部,因此定時器的實質是對內 部脈沖的計數(shù),在單片機中,每個機器周期產生一次計數(shù)脈沖,計數(shù)器加1. 3).工作方式控制寄存器TMOD:9 TMOD的低半字節(jié)(D0,D1,D2,D3)用來控制定時器/計數(shù)器0 TMOD的高半字節(jié)(D4,

16、D5,D6,D7)用來控制定時器/計數(shù)器1 對TMOD中的內容說明: GATE門控制。 GATE=1時,由外部中斷引腳INT0、INT1來啟動定時器T0、T1。 當INT0引腳為高電平時TR0置位,啟動定時器T0; 當INT1引腳為高電平時TR1置位,啟動定時器T1。 GATE=0時,僅由TR0,TR1置位分別啟動定時器T0、T1。 C/T功能選擇位 C/T=0時為定時功能,C/T=1時為計數(shù)功能。 M0、M1方式選擇功能 由于有2位,因此有4種工作方式 4).根據(jù)單片機晶振,所選TMOD的的工作方式,所要定的時間,來確定THO和TLO所要賦予的初值10-11 (以12M晶振,工作方式1,16

17、位計數(shù)器為例,設所定時間為Xus(16為計數(shù)器最大數(shù)65536,即65536us,若所 定時間大于65535,則要用if語句控制,現(xiàn)假設X<65535) 1.時鐘周期的時間t=1/12M=1/12 us 2.機器周期的時間T=12*1/12=1 us 3.因為每經過一個機器周期計數(shù)器+1,所以,計數(shù)器+1,經過的時間為 1 us。 若所定時間為X,則要求經過Xus,中斷響應,又因為16為計數(shù)器要全部置1(即達到65535)+1后,中斷才會 響應,所以,初值=(65536-X) 4.將初值轉化為16進制碼,分別付給THO和TLO eg:所定時間50ms 初值=(65536-50000)=1

18、5536=3CB0H TH0=0X3C; TL0=0XB0; (當工作方式不同時,TH0/TL0的賦值也不同,個人覺得有了16位計數(shù)器了,其余的沒什么用,不介紹了)8. 實驗步驟 1)啟動Keil uVision3 2)新建項目“秒表”,并新建文件“正計時與倒計時7.c” 3)在“正計時與倒計時7.c”中寫入代碼,選擇創(chuàng)建hex文件,編輯運行產生hex文件 4)使用STC_ISP_V480軟件將產生的hex燒錄到開發(fā)板中(注意com號的選擇,在設備管理器中查看com號)。 9. 實驗流程圖 10. 實驗誤差處理 由于中斷溢出,晶振和其他硬件原因造成單片機秒表時間可能不準確,那么我們可以使用軟件

19、來修正,使其計時更加精準。正常情況下:TC = M - T/T計數(shù) = 65536 - 50ms/1us = 15536 = 3CB0H但是我們在16位計數(shù)機使用3CB0時存在誤差,和標準時間比較5min慢1s,那么就應該修改TC:N = 20 * 50ms * 5 *60,T計數(shù) = N/299;TC = M - T/T計數(shù) = 3D574、 設計核心代碼19#include<reg52.h>typedef unsigned char uint8;typedef unsigned int uint16;code uint8 number= 0xc0,0xf9,0xa4,0xb0,

20、0x99,0x92,0x82,0xf8,0x80,0x90;/ 0 1 2 3 4 5 6 7 8 9sbit D0 = P00;sbit D1 = P01;sbit D2 = P02;sbit Key1 = P30; sbit Key2 = P31; uint8 a6;uint8 b6;uint16 time;uint8 counter0=0; /容器uint8 counter1=0;void delay(uint8 z);void timer0_init();void timer1_init();void interrupt1_init();void interrupt0_init();v

21、oid refresh0();void refresh1(uint8 data1,uint8 data2,uint8 data3);void delay(uint8 z)/延遲函數(shù) uint8 i;while(z-) for(i=0;i<120;i+); void timer0_init()TMOD|= 0x01;/M0位置1, /M1位置0TMOD&= 0xfd;TH0 = 0x3D; TL0 = 0x57; /修正成3D57/TL0 = 0xB0; /TR0 = 1;/TO開始計數(shù) void timer1_init()TMOD |=0x10;TMOD &=0xdf;

22、/TH1 = 0x3D; TL1 = 0x57; /修正成3D57/TL1 = 0xB0; /TR1 = 1; /T1開始計數(shù) void interrupt0_init()/中斷響應函數(shù) ET0=1;/響應tiemer0的中斷 就是打開TF0的中斷功能EA =1;/中斷請求被開放 void interrupt1_init() /中斷響應函數(shù) ET1=1;/響應tiemer1的中斷 就是打開TF1的中斷功能EA =1;/中斷請求被開放 void main() time=999;timer0_init(); timer1_init(); interrupt0_init(); interrupt1_

23、init(); while(1) uint16 ge,shi,bai;ge=time%10; /通過取余的方法把時間的個位取出來shi = (time/10)%10; /通過取整的方法把時間的十位取出來bai = (time/100)%10; /通過取整的方法把時間的百位取出來 refresh0(); /刷新低3位delay(2);/調用延遲函數(shù)refresh1(bai,shi,ge);/刷新高3位delay(2);/調用延遲函數(shù) if(Key1 = 0) delay(2);if(Key1 = 0)while(!Key1);D0 = 0;D1 = 0;D2 = 0; if(Key2 = 0)

24、delay(2);if(Key2 = 0)while(!Key1);D0 = 0;D1 = 0;D2 = 0; time =999;ge=time%10; /通過取余的方法把時間的個位取出來shi=(time/10)%10; /通過取整的方法把時間的十位取出來bai=(time/100)%10; /通過取整的方法把時間的百位取出來 refresh0(); /刷新低3位delay(2);/調用延遲函數(shù)refresh1(bai,shi,ge);/刷新高3位delay(2);/調用延遲函數(shù) void refresh0() static uint8 j = 0;switch(j) case0:P0=0

25、xff; P2&=0xDF;P2|=0x1F;j+;P0=numbera0; break; /?xcase1:P0=0xff; P2&=0xEF;P2|=0x2F; j+;P0=numbera1; break; /?x? case2:P0=0xff; P2&=0xF7;P2|=0x37; j=0;P0=numbera2; break; /x? default:break;void refresh1(uint8 data1,uint8 data2,uint8 data3) P0 = numberdata1;P2&=0xFE;P2|=0x3E; /最高位delay(

26、1);P0 = 0xff;P0 = numberdata2;P2&=0xFD;P2|=0x3D;delay(1);P0 = 0xff;P0 = numberdata3;P2&=0xFB;P2|=0x3B;delay(1);P0 = 0xff; void interrupt_timer0() interrupt 1 /定時器0溢出中斷 static uint16 sec=0; TH0 =0x3D; /重新對計數(shù)器進行賦值 TL0 = 0x57; /修正成3D57 / TL0 = 0xB0; / counter0+; if(20=counter0) /表示記滿20次 ,即為1S s

27、ec+; counter0=0; a0=sec%10; /個位 a1=sec/10%10; /十位 a2=sec/100%10; /百位 void interrupt_timer1() interrupt 3 /定時器1溢出中斷 高3位中斷 TH1 =0x3D;/重新對計數(shù)器進行賦值 TL1 = 0x57; /修正成3D57/TL1 = 0xB0; / counter1+; if(20=counter1)/表示記滿20次 ,即為1S time-; counter1=0; if(time=65536) time=999; 5、 運行結果計時器運行結果如圖:6、 總結 單片機是我所學專業(yè)的主要課程

28、之一,因此我認為單片機課程設計是十分必要而且十分重要的。盡管剛剛拿到課程設計題目時有點迷惘,不知道如何著手,但通過上網和圖書館查閱相關資料,自己認真鉆研以及虛心詢問同學,終于解決了一個又一個的困難和障礙,成功完成了任務。通過本次的單片機課程設計,不僅大大地豐富了我的理論知識,而且在實踐過程中更令我學會了堅持、耐心和努力。此次單片機課程設計需要運用到許多之前所學過的知識,令我認識到自己以前學習的一些不足之處,例如對以前所學知識的理解不夠深刻,掌握得不夠牢固,運用不夠靈活。這讓我懂得了認真學習的重要性,以及要孜孜不倦地鉆研所學過的知識,做得融會貫通,不能一覽而過,不求甚解。在邊學習邊動手的過程中,

29、我對電子時鐘的構造以及原理有了進一步的了解,同時也加深和鞏固了我對單片機C語言的認識。除此之外,由于是第一次做單片機,因此在此次課程設計的過程中,無論是電路繪制還是C語言編寫都難免遇到了不少困難和障礙,例如C語言編寫出錯、電路元件無從入手等。在面對困難和障礙時,我慶幸自己沒有退縮和逃避,而是通過各種方法,迎難而上,以堅持、耐心和努力勇敢無畏地面對困難,克服困難,解決困難。讓我發(fā)現(xiàn)問題、分析問題、解決問題以及動手實踐的能力都有了很大的提高,并了解到理論知識與實踐相結合的重要意義。從這次的課程設計中,我們真真正正的意識到,在以后的學習中,要理論聯(lián)系實際,把我們所學的理論知識用到實際當中,學習單機片

30、機更是如此,程序只有在經常的練習的過程中才能提高。本次課程設計盡管時間不長,但從中所獲,將令我受益終生。七、參考文獻1 劉守義,單片機應用技術M 成都:西安電子科技大學出版,20022 Victor P. Nelson ,Digital Logical Circuits Analysis & Design J, Prentice Hall.2003年6月出版, P40-94 3 萬勝前. 基于KeilC51軟件的電子鐘設計與制作J,鄂州大學學報,2

31、007年第2期,P16-204 趙秀珍,單片微型計算機原理及其應用M 中國水利水電出版社,20015 向繼文等.基于AT89C51的電子鐘系統(tǒng)設計J,應用科技,2007年第2期,P34-376 M.Morris Mano Digital DesignM(Third Edition)Higher Education Press ,20027 何希才,杜煜.實用電子電路設計M. 北京:電子工業(yè)出版社,1998.28 馬鴻文.基于AT89C51單片機的自動存取柜的設計與實現(xiàn)J.微計算機信息,2006,22(1-2):P101-1039 彭小軍. 用單片機實現(xiàn)電子時鐘J.新余高專學報,2004年4月第9卷第2期,P27-3410  蔣敏. 單片微機萬年歷設計J,職大學報,2000年第2期 ,P66-73 11 StevenF.Barrett,Daniel J.Pack.Embedded SystemM.BeiJing:Electronic Industry Pres

溫馨提示

  • 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

提交評論