單片機課程設(shè)計十秒秒表_第1頁
單片機課程設(shè)計十秒秒表_第2頁
單片機課程設(shè)計十秒秒表_第3頁
單片機課程設(shè)計十秒秒表_第4頁
單片機課程設(shè)計十秒秒表_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

目錄1設(shè)計目的 11.1設(shè)計目的 11.2設(shè)計內(nèi)容和要求 11.3設(shè)計思路 12設(shè)計原理分析 22.1十秒秒表系統(tǒng)設(shè)計 22.2十秒秒表系統(tǒng)的功能要求 22.2.1計時顯示 22.2.2中斷設(shè)置 22.3十秒秒表系統(tǒng)的基本構(gòu)成及原理 22.3.1LED數(shù)碼管顯示器的結(jié)構(gòu)與原理 32.3.2LED數(shù)碼管的顯示方式 43系統(tǒng)硬件電路的設(shè)計 53.1系統(tǒng)硬件總電路構(gòu)成及原理 53.2主控制部分――AT89C51單片機簡介 53.2.1AT89C51的內(nèi)部結(jié)構(gòu)功能 63.2.251單片機的串行接口工作方式 73.3其它器件 83.4十秒秒表系統(tǒng)原理圖 83.5設(shè)計的連線圖 93.6硬件資源及其分配 93.7運行步驟 103.8檢測與調(diào)試 103.8.1硬件調(diào)試 103.8.2軟件調(diào)試 114系統(tǒng)軟件程序的簡單設(shè)計 124.1程序框圖 124.2程序 134.3仿真結(jié)果圖 15結(jié)論 17參考文獻 181設(shè)計目的1.1設(shè)計目的1、通過單片機課程設(shè)計,熟練掌握單片機C語言的編程方法,將理論聯(lián)系到實踐中去,提高我們的動腦和動手的能力。2、通過定時/計數(shù)器控制兩個LED數(shù)碼管顯示器顯示10秒秒表系統(tǒng)的設(shè)計,掌握定時/計數(shù)器和LED數(shù)碼管顯示器的使用方法,同時掌握簡單程序的編寫,最終提高我們的邏輯抽象能力。1.2設(shè)計內(nèi)容和要求內(nèi)容:設(shè)計一個開關(guān)控制兩個LED數(shù)碼管顯示器顯示10秒秒表的模擬系統(tǒng)。要求:利用單片機的定時/計數(shù)器定時,使兩個LED數(shù)碼管顯示器分別顯示秒位和毫秒位。1.3設(shè)計思路1、先熟悉實驗原理,同時了解定時/計數(shù)器的運作,和LED數(shù)碼管顯示器顯示0到9數(shù)字的原理。2、繪制電路原理圖,編寫基本程序,并進行仿真,實現(xiàn)兩個LED數(shù)碼管顯示器顯示0到9數(shù)字的功能。3、進一步完善程序,并進行仿真,使第二個LED數(shù)碼管顯示器每100毫秒(即0.1秒)顯示一個數(shù)字,使第一個LED數(shù)碼管顯示器每1秒顯示一個數(shù)字。2設(shè)計原理分析2.1十秒秒表系統(tǒng)設(shè)計通過編寫程序,實現(xiàn)對LED數(shù)碼管顯示器的控制,進行十秒的計時。使第二個LED數(shù)碼管顯示器每100毫秒(即0.1秒)顯示一個數(shù)字,使第一個LED數(shù)碼管顯示器每1秒顯示一個數(shù)字。采用單片機內(nèi)部的I/O口上的P0口和P2口控制兩個LED數(shù)碼管顯示器,用P3.7引腳來接收按鈕的控制。2.2十秒秒表系統(tǒng)的功能要求本設(shè)計能模擬基本的十秒秒表顯示系統(tǒng),是用中斷的方式計數(shù)和控制LED數(shù)碼管顯示器顯示數(shù)字。2.2.1計時顯示定時/計數(shù)器工作方式寄存器存入定時/計數(shù)器工作方式,定時器采用T0定時器0工作于模式1:16位計數(shù)范圍。2.2.2中斷設(shè)置每累計2次定時器中斷就相當(dāng)于執(zhí)行了0.1秒,每累計20次定時器中斷就相當(dāng)于執(zhí)行了1秒。2.3十秒秒表系統(tǒng)的基本構(gòu)成及原理單片機單片機晶振復(fù)位電路LED數(shù)碼管顯示器1LED數(shù)碼管顯示器2開關(guān)

圖2.1系統(tǒng)的總體框圖2.3.1LED數(shù)碼管顯示器的結(jié)構(gòu)與原理LED數(shù)碼管顯示器是由發(fā)光二極管按一定的結(jié)構(gòu)組合起來的顯示器件。在單片機應(yīng)用系統(tǒng)中通常使用的是8段式LED數(shù)碼管顯示器,它有共陰極和共陽極兩種結(jié)構(gòu),如下圖2.2所示。圖2.28段式LED數(shù)碼管結(jié)構(gòu)其中圖(a)為共陰極結(jié)構(gòu),8段發(fā)光二極管的陰極端連接在一起,陽極端分開控制,使用時公共段接地,要使哪根發(fā)光二極管亮,則對應(yīng)的陽極端接高電平;圖(b)為共陽極結(jié)構(gòu),8段發(fā)光二極管的陽極端連接在一起,陰極端分開控制,使用時公共端接電源,要使哪根發(fā)光二極管亮,則對應(yīng)的陰極端接地。圖(c)為引腳圖,從a~dp引腳輸入不同的8位二進制編碼,可顯示不同的數(shù)字或字符。通常把控制發(fā)光二極管的8位二進制編碼稱為字段碼。此系統(tǒng)使用的共陰極結(jié)構(gòu),“0”~“9”數(shù)字的共陰極對應(yīng)的字段碼如表2.1所示。表2.1“0”~“9”數(shù)字對應(yīng)顯示字符共陰極字段碼顯示字符共陰極字段碼03FH56DH106H67DH25BH707H34FH87FH466H96FH2.3.2LED數(shù)碼管的顯示方式LED數(shù)碼管在顯示時,通常有靜態(tài)顯示方式和動態(tài)顯示方式兩種,本系統(tǒng)采用的是靜態(tài)顯示方式。LED靜態(tài)顯示時,其公共端直接接地,各段選線分別與I/O接口線相連。要顯示字符,直接在I/O線發(fā)送相應(yīng)的字段碼,如圖2.3所示。兩個數(shù)碼管的共陰極端直接接地,如果要在第一個數(shù)碼管上顯示數(shù)字1,只要在I/O(1)發(fā)送1的共陰極字段碼;如果要在第二個數(shù)碼管上顯示2,只要在I/O(2)發(fā)送2的共陰極字段碼。圖2.3兩位數(shù)碼管靜態(tài)顯示

3系統(tǒng)硬件電路的設(shè)計3.1系統(tǒng)硬件總電路構(gòu)成及原理實現(xiàn)本設(shè)計要求的具體功能,可以選用AT89C51單片機及外圍器件構(gòu)成最小控制系統(tǒng),2個LED數(shù)碼管顯示器和1個按鈕等。主要器件的選擇:表3-1元器件表器件個數(shù)LED數(shù)碼管顯示器2晶振(11.0592)1排阻1電容3按鈕13.2主控制部分――AT89C51單片機簡介89C51是一種帶4K字節(jié)閃存可編程可擦除只讀存儲器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低電壓、高性能CMOS8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。AT89C51單片機為40引腳雙列直插芯片,有4個I/O口:P0、P1、P2、P3,單片機的最小系統(tǒng)如圖所示,18引腳和19引腳接時鐘脈沖電路,XTAL1接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器反相放大器的輸入,XTAL2接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器反相放大器的輸出端,第9引腳為復(fù)位輸入端,接上電容,電阻及開關(guān)后構(gòu)成上電復(fù)位電路,20引腳為接地端,40引腳為電源端。如圖所示:圖3.1晶振與單片機的連接3.2.1AT89C51的內(nèi)部結(jié)構(gòu)功能·中央處理器:中央處理器(CPU)是整個單片機的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進制數(shù)據(jù)或代碼,CPU負責(zé)控制、指揮和調(diào)度整個單元系統(tǒng)協(xié)調(diào)的工作,完成運算和控制輸入輸出功能等操作?!?shù)據(jù)存儲器(內(nèi)部RAM):數(shù)據(jù)存儲器用于存放變化的數(shù)據(jù)。AT89C51中數(shù)據(jù)存儲器的地址空間為256個RAM單元,但其中能作為數(shù)據(jù)存儲器供用戶使用的僅有前面128個,后128個被專用寄存器占用?!こ绦虼鎯ζ鳎▋?nèi)部ROM):程序存儲器用于存放程序和固定不變的常數(shù)等。通常采用只讀存儲器,且其有種類型,在89系列單片機中全部采用閃存。AT89C51內(nèi)部配置了4KB閃存。·定時/計數(shù)器(T0):定時/計數(shù)器用于實現(xiàn)定時和計數(shù)功能。AT89C51共有2個16位定時/計數(shù)器?!げ⑿休斎胼敵觯↖/O)口:8051共有4組8位I/O口(P0、P1、P2、P3),用于對外部數(shù)據(jù)的傳輸。每個口都由1個鎖存器和一個驅(qū)動器組成。它們主要用于實現(xiàn)與外部設(shè)備中數(shù)據(jù)的并行輸入與輸出,有些I/O口還有其他功能?!とp工串行口:A89C51內(nèi)置一個全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信收發(fā)器,也可以當(dāng)同步移位器使用。·時鐘電路:時鐘電路的作用是產(chǎn)生單片機工作所需要的時鐘脈沖序列。·中斷系統(tǒng):中斷系統(tǒng)的作用主要是對外部或內(nèi)部的終端請求進行管AT89C51共有5個中斷源,其中有2個外部中斷源和3個內(nèi)部中斷源。3.2.251單片機的串行接口工作方式51單片機的串行接口有四種工作方式。方式0是將SBUF作為8位同步移位寄存器使用(固定波特率);方式1是10位異步通信方式(可變波特率);方式2是11位異步通信方式(固定波特率);方式3是11位異步通信方式(可變波特率)。圖3.2串行接口與單片機的連接3.3其它器件LED數(shù)碼管顯示器根據(jù)本設(shè)計的特點,采用LED數(shù)碼管顯示器,它是由發(fā)光二極管按一定的結(jié)構(gòu)組合起來的顯示器件,在單片機應(yīng)用系統(tǒng)中通常使用的是8段式LED數(shù)碼管顯示器,它有共陰極和共陽極兩種結(jié)構(gòu)。本系統(tǒng)設(shè)計采用的是共陰極結(jié)構(gòu),如下圖3.3所示。圖3.3LED數(shù)碼管顯示器3.4十秒秒表系統(tǒng)原理圖本系統(tǒng)以單片機為核心,系統(tǒng)硬件電路由單片機、排阻、LED數(shù)碼管顯示器、按鈕等組成。如下圖所示:圖3.4系統(tǒng)原理3.5設(shè)計的連線圖圖3.5實物圖3.6硬件資源及其分配主要用到的硬件:P0口、P2口、LED數(shù)碼管顯示器、按鈕、定時器T0。硬件分配:(1)P0口、P2口:各連接一個LED數(shù)碼管顯示器。(2)定時/計數(shù)器T0:用來產(chǎn)生50毫秒的定時。(3)按鈕:用來對秒表器開始、暫停、清零。3.7運行步驟1、按硬件圖接線,為了確保LED數(shù)碼管顯示器能夠正確顯示,P0口和P2口和兩個數(shù)碼管顯示器連接應(yīng)該注意。按鈕接P3.7引腳。2、開始運行,點擊按鈕觀察兩個LED數(shù)碼管顯示器顯示是否與程序設(shè)計思路對應(yīng),如果有偏差,則單步運行或斷點運行,進行調(diào)試,直至滿足設(shè)計要求。3、整體運行,點擊按鈕觀察兩個LED數(shù)碼管顯示器顯示是否都符合要求,如果不符合,則再調(diào)試,直至滿足要求。3.8檢測與調(diào)試3.8.1硬件調(diào)試硬件調(diào)試是利用開發(fā)系統(tǒng)、基本測試儀器(萬用表、示波器等),檢查用戶系統(tǒng)硬件中存在的故障。硬件調(diào)試可分為靜態(tài)調(diào)試與動態(tài)調(diào)試兩步進行。靜態(tài)調(diào)試靜態(tài)調(diào)試是在用戶系統(tǒng)未工作時的一種硬件檢測。第一步:目測。檢查外部的各種元件或者是電路是否有斷點。第二步:用萬用表測試。先用萬用表復(fù)核目測中有疑問的連接點,再檢測各種電源線與地線之間是否有短路現(xiàn)象。第三步:加電檢測。給電路板加電,檢測所有的插座或是器件的電源端是否符合要求的值第四步:是聯(lián)機檢查。因為只有用單片機開發(fā)系統(tǒng)才能完成對用戶系統(tǒng)的調(diào)試。動態(tài)調(diào)試動態(tài)調(diào)試是在用戶系統(tǒng)工作的情況下發(fā)現(xiàn)和排除用戶系統(tǒng)硬件中存在的器件內(nèi)部故障、器件連接邏輯錯誤等的一種硬件檢查。動態(tài)調(diào)試的一般方法是由近及遠、由分到合。由分到合是指首先按邏輯功能將用戶系統(tǒng)硬件電路分為若干塊,當(dāng)調(diào)試電路時,與該元件無關(guān)的器件全部從用戶系統(tǒng)中去掉,這樣可以將故障范圍限定在某個局部的電路上。當(dāng)各塊電路無故障后,將各電路逐塊加入系統(tǒng)中,在對各塊電路功能及各電路間可能存在的相互聯(lián)系進行調(diào)試,由分到合的調(diào)試就完成。由近及遠是將信號流經(jīng)的各器件按照距離單片機的邏輯距離進行由近及遠的分層,然后分層調(diào)試。調(diào)試時,仍采用去掉無關(guān)元件的方法,逐層調(diào)試下去,就會定位故障元件。3.8.2軟件調(diào)試軟件調(diào)試是通過對用戶程序的匯編、連接、執(zhí)行來發(fā)現(xiàn)程序中存在的語法錯誤與邏輯錯誤并加以排除糾正的過程。編輯程序后,查看程序是否有邏輯錯誤。4系統(tǒng)軟件程序的簡單設(shè)計4.1程序框圖開始開始初始化,LED數(shù)碼管顯示“0”調(diào)用鍵盤掃描子函數(shù)按鍵是否改變LED顯示NY按鍵是否按下發(fā)聲延時YN圖4.1程序框圖4.2程序#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitK1=P3^7;//設(shè)置一位K1來接收按鈕//設(shè)置一個變量i來計算中斷的次數(shù),設(shè)置一個Second_Counts來計數(shù),再設(shè)置一個Key_Flag_Idx來計算按下按鈕的次數(shù)uchari,Second_Counts,Key_Flag_Idx;bitKey_State;//設(shè)置一個變量判斷是否按下按鈕ucharDSY_CODE[]=//設(shè)置共陰極結(jié)構(gòu)數(shù)碼管顯示的數(shù)字“0”-“9”{ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};voidDelayMS(uintms)//定義一個延遲函數(shù){ uchart; while(ms--) { for(t=0;t<120;t++); }}voidKey_Event_Handle()//按下按鈕以后執(zhí)行的函數(shù){ if(Key_State==0) { Key_Flag_Idx=(Key_Flag_Idx+1)%3; switch(Key_Flag_Idx) { case1:EA=1;ET0=1;TR0=1;break;//按下按鈕第一次啟動中斷,啟動計數(shù)器中斷,定時器啟動 case2:EA=0;ET0=0;TR0=0;break;//按下按鈕第二次關(guān)閉中斷,關(guān)閉計數(shù)器中斷,定時器關(guān)閉 case0:P0=0x3f;P2=0x3f;i=0;Second_Counts=0;//清零 } }}voidmain(){ P0=0x3f;//P0口顯示數(shù)字“0” P2=0x3f;//P2口顯示數(shù)字“0” i=0; Second_Counts=0; Key_State=1; TMOD=0x01;//設(shè)置工作方式1 TH0=(65535-50000)/256;//設(shè)置計數(shù)器初始值 TL0=(65535-50000)%256; while(1) { if(Key_State!=K1) { DelayMS(10);//延時 Key_State=K1; Key_Event_Handle();//進入按下按鈕函數(shù) } }}voidDSY_Refresh()interrupt1//中斷函數(shù){ TH0=(65535-50000)/256;//再次設(shè)置計數(shù)器初始值 TL0=(65535-50000)%256; if(++i==2)

溫馨提示

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

最新文檔

評論

0/150

提交評論