單片機(jī)LED倒計(jì)時(shí)設(shè)計(jì)_第1頁
單片機(jī)LED倒計(jì)時(shí)設(shè)計(jì)_第2頁
單片機(jī)LED倒計(jì)時(shí)設(shè)計(jì)_第3頁
單片機(jī)LED倒計(jì)時(shí)設(shè)計(jì)_第4頁
單片機(jī)LED倒計(jì)時(shí)設(shè)計(jì)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1. 功能的需求分析.22. 總體方案說明.23. 系統(tǒng)硬件部分設(shè)計(jì).2 3.1 6位LED數(shù)碼管顯示.2 3.2 LED倒計(jì)時(shí)器元件清單.33.3 主要元器件分析.43.3.1 單片機(jī)AT89C51.43.3.2 集成塊74LS373.43.4 基本硬件電路分析.4復(fù)位電路.43.4.2 按鍵電路.53.4.3 晶振電路.5 3.4.4 6位數(shù)碼管顯示電路.6 3.4.5 蜂鳴器電路.7 3.5 LED倒計(jì)時(shí)原理圖.84. 系統(tǒng)軟件部分設(shè)計(jì).9 4.1 軟件總體設(shè)計(jì).9 4.2 主程序說明.10 4.3 子程序說明.11 4.3.1 延時(shí)子程序.11 4.3.2 數(shù)碼管顯示時(shí)分秒子程序.11

2、 4.3.3 數(shù)碼管顯示時(shí)子程序.12 4.3.4 數(shù)碼管顯示時(shí)分子程序.12 4.3.5 數(shù)碼管時(shí)間顯示子程序.13 4.3.6 秒信號子程序.13 4.3.7 鍵盤掃描子程序.145. 調(diào)試過程.15.15.15.15參考文獻(xiàn).16附錄 隨著社會的不斷進(jìn)步,單片機(jī)的應(yīng)用逐漸滲入我們的生活,特別是計(jì)數(shù)方面對單片機(jī)的依賴越來越高,在實(shí)時(shí)檢測和自動控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往作為一個(gè)核心部件來使用,僅單片機(jī)方面的知識是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu),針對具體應(yīng)用特點(diǎn)與軟件結(jié)合。本項(xiàng)目討論了LED數(shù)字倒計(jì)時(shí)器的設(shè)計(jì)與制作,任務(wù)與要求是,使基于AT89S51單片機(jī)的LED數(shù)字倒計(jì)時(shí)器主要具有如下

3、功能:1. 采用MCS51作為主控芯片;2. 采用LED數(shù)碼管顯示倒計(jì)時(shí),倒計(jì)時(shí)范圍24:00:00;3. 可調(diào)任意設(shè)定定時(shí)時(shí)間,要具有定時(shí)提醒功能,定時(shí)到2s報(bào)警功能。2. 總體方案說明電源電路LED數(shù)字倒計(jì)時(shí)器以AT89S51單片機(jī)為核心,系統(tǒng)包括六位數(shù)碼管顯示電路,按鍵電路,電源電路,復(fù)位電路,晶振電路以及蜂鳴器電路幾部分,LED數(shù)字倒計(jì)時(shí)器設(shè)計(jì)框圖如下:晶振電路6位LED顯示電路AT89C51 單片機(jī)復(fù)位電路蜂鳴器電路按鍵電路圖1 LED數(shù)字倒計(jì)時(shí)器設(shè)計(jì)框圖3.1 6位LED數(shù)碼管顯示本項(xiàng)目設(shè)計(jì)采用了6位數(shù)碼管顯示電路,在設(shè)計(jì)6位LED顯示時(shí),為了簡化電路,降低成本,采用動態(tài)顯示方式,

4、6個(gè)LED顯示器共用一個(gè)8位的I/O,6位LED數(shù)碼管的位選線分別由相應(yīng)的P2.0p2.5控制,而將相應(yīng)的段選線并聯(lián)在一起,由一個(gè)8位的I/O口控制,即p0口。譯碼顯示電路將“時(shí)”、“分”、“秒”顯示數(shù)字進(jìn)行校對調(diào)整。3.2 LED倒計(jì)時(shí)器元件清單表1 LED數(shù)字倒計(jì)時(shí)器元件清單元件名稱型號數(shù)量/個(gè)用途單片機(jī)AT89C511控制核心晶振12MHz1晶振電路電容30pF2晶振電路電解電容10u1復(fù)位電路電阻5002復(fù)位電路按鍵4按鍵電路數(shù)碼管共陽6顯示器三極管PNP1蜂鳴器蜂鳴器1蜂鳴器電阻1.5k1蜂鳴器電阻3上拉電阻電阻3308上拉電阻電源1提供+5V集成塊74LS3731驅(qū)動3.3 主要元

5、器件分析3.3.1 單片機(jī)AT89C51 AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM-Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機(jī)。單片機(jī)的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它

6、的一種精簡版本。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。AT89C51 提供以下標(biāo)準(zhǔn)功能:4k 字節(jié)Flash 閃速存儲器,128字節(jié)內(nèi)部RAM,32 個(gè)I/O 口線,兩個(gè)16位定時(shí)/計(jì)數(shù)器,一個(gè)5向量兩級中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),AT89C51可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè)硬件復(fù)位。3.3.2 集成塊74LS37374ls373是常用的地

7、址鎖存器芯片,它實(shí)質(zhì)是一個(gè)是帶三態(tài)緩沖輸出的8D觸發(fā)器,在單片機(jī)系統(tǒng)中為了擴(kuò)展外部存儲器,通常需要一塊74ls373芯片。 74LS373的工作原理: (1) .1腳是輸出使能(OE),是低電平有效,當(dāng)1腳是高電平時(shí),不管輸入3、4、7、8、13、14、17、18如何,也不管11腳(鎖存控制端,G)如何,輸出2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)全部呈現(xiàn)高阻狀態(tài)(或者叫浮空狀態(tài));(2).當(dāng)1腳是低電平時(shí),只要11腳(鎖存控制端,G)上出現(xiàn)一個(gè)下降沿,輸出2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、

8、16(Q6)、19(Q7)立即呈現(xiàn)輸入腳3、4、7、8、13、14、17、18的狀態(tài).鎖存端LE 由高變低時(shí),輸出端8 位信息被鎖存,直到LE 端再次有效。 當(dāng)三態(tài)門使能信號OE為低電平時(shí),三態(tài)門導(dǎo)通,允許Q0Q7輸出,OE為高電平時(shí),輸出懸空。3.4 基本硬件電路分析復(fù)位是單片機(jī)的初始化操作,只需給AT89C51的復(fù)位引腳RST加上大于2個(gè)機(jī)器周期(即24個(gè)時(shí)鐘振蕩周期)的高電平就可得單片機(jī)復(fù)位,復(fù)位時(shí),PC初始化為0000H,使單片機(jī)從OUT單元開始執(zhí)行程序。除了進(jìn)入系統(tǒng)的正常初始化之外由于程序運(yùn)行出錯(cuò)或操作錯(cuò)誤而使系統(tǒng)處于死鎖狀態(tài),為擺脫死鎖狀態(tài),也需按復(fù)位鍵使得RST腳為高電平,使單片

9、機(jī)重新啟動。3.4.2 按鍵電路按鍵電路的按鍵功能說明:(1)設(shè)置切換開關(guān)用于改變調(diào)定時(shí)間的模式,按第一下是開始設(shè)定小時(shí),按第二下是開始設(shè)定分鐘,按第三下是開始設(shè)定秒,按第四下是開始倒計(jì)時(shí);(2)在設(shè)定時(shí)分秒時(shí),按此按鈕使設(shè)定的時(shí)間增加;(3)在設(shè)定時(shí)分秒時(shí),按此按鈕使設(shè)定的時(shí)間減?。辉诖税存I電路上還設(shè)有上拉電阻,用于保護(hù)電路。(按鍵電路圖見下)3.4.3 晶振電路單片機(jī)晶振的作用是為系統(tǒng)提供基本的時(shí)鐘信號。通常一個(gè)系統(tǒng)共用一個(gè)晶振,便于各部分保持同步。有些通訊系統(tǒng)的基頻和射頻使用不同的晶振,而通過電子調(diào)整頻率的方法保持同步。晶振通常與鎖相環(huán)電路配合使用,以提供系統(tǒng)所需的時(shí)鐘頻率。如不同子系統(tǒng)

10、需要不同頻率的時(shí)鐘信號,可以用與同一個(gè)晶振相連的不同鎖相環(huán)來提供。在通常工作條件下,普通的晶振頻率絕對精度可達(dá)百萬分之五十。高級的精度更高。有些晶振還可以由外加電壓在一定范圍內(nèi)調(diào)整頻率,稱為壓控振蕩器(VCO)。晶振用一種能把電能和機(jī)械能相互轉(zhuǎn)化的晶體在共振的狀態(tài)下工作,以提供穩(wěn)定,精確的單頻振蕩。個(gè)機(jī)器周期包括12個(gè)時(shí)鐘周期。如果一個(gè)單片機(jī)選擇了12MHZ晶振,它的時(shí)鐘周期是112us,它的一個(gè)機(jī)器周期是12×(112)us,也就是1us。 按鍵電路圖 晶振電路圖3.4.4 6位數(shù)碼管顯示電路 采用動態(tài)顯示,所謂動態(tài)顯示就是一位一位的輪流點(diǎn)亮各點(diǎn),對于顯示器的每一位來說,每隔一段時(shí)

11、間點(diǎn)亮一次。利用人的視覺暫留功能可以看到整個(gè)顯示,但必須保證掃描速度足夠快,字符才不閃爍。顯示器的亮度既與導(dǎo)通電流有關(guān),也與點(diǎn)亮?xí)r間與間隔時(shí)間的比例有關(guān)。調(diào)整參數(shù)可以實(shí)現(xiàn)較高穩(wěn)定度的顯示。動態(tài)顯示節(jié)省了I/O口,降低了能耗。 利用AT89C51單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器進(jìn)行中斷時(shí),配合軟件延時(shí)實(shí)現(xiàn)時(shí)、分、秒的計(jì)時(shí)。該方案節(jié)省硬件成本,且能在定時(shí)/計(jì)數(shù)器的使用、中斷及程序設(shè)計(jì)方面得到鍛煉與提高,對單片機(jī)的指令系統(tǒng)能有更深的了解。用P0口來控制LED數(shù)碼管的段控線,而用P2口來控制其位控線。(其電路圖見下)6位數(shù)碼管顯示電路3.4.5 蜂鳴器電路 直流蜂鳴器的驅(qū)動是非常簡單的,只要在兩端施加額定工作

12、電壓,蜂鳴器就發(fā)聲。以NPN三極管驅(qū)動電路,在三極管基極接入高電平,蜂鳴器就能發(fā)聲。3.5 LED倒計(jì)時(shí)原理圖4. 系統(tǒng)軟件部分設(shè)計(jì)4.1 軟件總體設(shè)計(jì)顯示的效果為動態(tài)顯示,利用CPU控制數(shù)碼管顯示的選通和停止,通過定時(shí)器中斷不斷掃描,從而實(shí)現(xiàn)數(shù)據(jù)的動態(tài)顯示。 在編程上,首先進(jìn)行了初始化,定義程序的入口地址以及中斷的入口地址,在主程序開始定義了一組固定單元用來儲存計(jì)數(shù)的時(shí)分秒,在顯示初值之后,進(jìn)入主循環(huán)。在主程序中,對不同的按鍵進(jìn)行掃描,實(shí)現(xiàn)秒表,時(shí)間調(diào)整,復(fù)位清零等功能,系統(tǒng)總流程圖如下: 初始化時(shí)分變化? 顯示初值NY 刷新顯示設(shè)置時(shí)間? 1秒到有關(guān)變量初始化啟動走時(shí)切換倒計(jì)時(shí)顯示設(shè)置鬧鈴

13、時(shí)間Y 結(jié)束 蜂鳴器鬧鈴時(shí)間? 秒指示 N NYNY4.2 主程序說明int main(void)mode=0; /開機(jī)模式0倒計(jì)時(shí)模式Timer2_S();/秒END=0;while(1) KEY_SCAN(); /鍵盤掃描if(mode=0) KEY_SCAN();/鍵盤掃描TIM_DIS();/時(shí)間數(shù)據(jù)處理DIS_SEG();/顯示 if(END=1)END=0;TR2=0;BUZZ=0; DelayMS(2000);BUZZ=1;shi=24;miao=0;fen=0;TR2=1;/時(shí)間結(jié)束 停止if(mode=1)KEY_SCAN();/鍵盤掃描TR2=0; /關(guān)定時(shí)器2TIM_DI

14、S();/時(shí)間數(shù)據(jù)處理DIS_SEG_SHI();/只顯示 -時(shí) if(mode=2)KEY_SCAN();/鍵盤掃描TIM_DIS();/時(shí)間數(shù)據(jù)處理DIS_SEG_FEN();/只顯示-時(shí)-分 if(mode=3)KEY_SCAN();/鍵盤掃描TIM_DIS();/時(shí)間數(shù)據(jù)處理DIS_SEG();/顯示時(shí)-分-秒 /定時(shí)器2void Timer2() interrupt 5 /調(diào)用定時(shí)器2,自動重裝載模式static uchar i=0; /定義靜態(tài)變量iTF2=0; /定時(shí)器2的中斷標(biāo)志要軟件清0i+; /計(jì)數(shù)標(biāo)志自加1if(i=16) /判斷是否到1si=0; /將靜態(tài)變量清0if

15、(miao>0)miao-; /秒倒計(jì)時(shí)else if(fen>0) fen-;miao=59;/分倒計(jì)時(shí) else if(shi>0)shi-;fen=59;miao=59;/時(shí)倒計(jì)時(shí)elseEND=1;/ 倒計(jì)時(shí)結(jié)束 4.3 子程序說明void DelayMS(unsigned int t)/延時(shí)N msunsigned int i,j;for(i=0;i<t;i+)for(j=0;j<120;j+);4.3.2 數(shù)碼管顯示時(shí)分秒子程序/-顯示數(shù)碼管-void DIS_SEG(void) /顯示時(shí) 分 秒P0=tabDisplay_Digit5; / 數(shù)碼管顯

16、示SEG1=0; DelayMS(1); /延時(shí) SEG1=1; P0=tabDisplay_Digit4; / 數(shù)碼管顯示 SEG2=0;DelayMS(1); /延時(shí) SEG2=1; P0=tabDisplay_Digit3; / 數(shù)碼管顯示SEG3=0;DelayMS(1);/延時(shí) SEG3=1; P0=tabDisplay_Digit2; / 數(shù)碼管顯示SEG4=0;DelayMS(1);/延時(shí) SEG4=1; P0=tabDisplay_Digit1; / 數(shù)碼管顯示SEG5=0; DelayMS(1); /延時(shí) SEG5=1; P0=tabDisplay_Digit0; / 數(shù)碼管

17、顯示 SEG6=0;DelayMS(1); /延時(shí) SEG6=1; 4.3.3 數(shù)碼管顯示時(shí)子程序/-顯示數(shù)碼管-void DIS_SEG_SHI(void) /顯示時(shí)P0=tabDisplay_Digit1; / 數(shù)碼管顯示SEG5=0; DelayMS(1); /延時(shí) SEG5=1; P0=tabDisplay_Digit0; / 數(shù)碼管顯示 SEG6=0;DelayMS(1); /延時(shí) SEG6=1; 4.3.4 數(shù)碼管顯示時(shí)分子程序/-顯示數(shù)碼管-void DIS_SEG_FEN(void)/顯示時(shí) 分P0=tabDisplay_Digit3; / 數(shù)碼管顯示SEG3=0;DelayM

18、S(1);/延時(shí) SEG3=1; P0=tabDisplay_Digit2; / 數(shù)碼管顯示SEG4=0;DelayMS(1);/延時(shí) SEG4=1; P0=tabDisplay_Digit1; / 數(shù)碼管顯示SEG5=0; DelayMS(1); /延時(shí) SEG5=1; P0=tabDisplay_Digit0; / 數(shù)碼管顯示 SEG6=0;DelayMS(1); /延時(shí) SEG6=1; 4.3.5 數(shù)碼管時(shí)間顯示子程序/-時(shí)間顯示-void TIM_DIS(void) / char shi=12,fen=50,miao=40; Display_Digit0=shi%100/10; /時(shí)

19、Display_Digit1=shi%10; /時(shí) Display_Digit2=fen%100/10;/分 Display_Digit3=fen%10;/分 Display_Digit4=miao%100/10;/秒 Display_Digit5=miao%10;/秒 4.3.6 秒信號子程序/-秒信號-void Timer2_S(void) /timer2初始化 /-定時(shí)器2設(shè)置-RCAP2H=(65536-62500)/256; /重裝載計(jì)數(shù)器賦初值RCAP2L=(65536-62500)%256;ET2=1; /開定時(shí)器2中斷EA=1; /開總中斷TR2=1; /開啟定時(shí)器,并設(shè)置為自

20、動重裝載模式 /-定時(shí)器2設(shè)置-/-秒信號-void S2_ADD(void) if(mode=1) /shi+; if(shi>23)shi=23; /最大值23if(mode=2) /fen+; if(fen>59)fen=59; /最大值59if(mode=3)/ miao+;if(miao>59)miao=59; /最大值59void S3_SUB(void) if(mode=1) if(shi<1)shi=1;shi-; /最小減到0if(mode=2) if(fen<1)fen=1;fen-; /最小減到0if(mode=3)if(miao<1)

21、miao=1;miao-; /最小減到0T2定時(shí)器預(yù)裝載值的計(jì)算:設(shè)晶振為12MHz,每秒鐘可以執(zhí)行1000000(12000000/12)個(gè)機(jī)器周期。而T2每次溢出時(shí)最多經(jīng)過了65536個(gè)機(jī)器周期。我們應(yīng)該盡量讓T2定時(shí)器的溢出中斷的次數(shù)最少。選擇每秒中斷14次,每次溢出1000000/14=71428.57個(gè)機(jī)器周期,不為整數(shù)且超出65536。選擇每秒中斷16次,每次溢出1000000/16=62500個(gè)機(jī)器周期,小于65536,有效。選擇每秒中斷20次,每次溢出1000000/20=50000個(gè)機(jī)器周期,小于65536,有效。其他的就不再算了,我們通過上面的計(jì)算,我們可以發(fā)現(xiàn),我們可以選

22、擇的方式有很多,但是最佳的是每秒中斷16次,每次溢出62500個(gè)機(jī)器周期。4.3.7 鍵盤掃描子程序void KEY_SCAN(void) /鍵盤掃描 if(S1=0)/切換 設(shè)置DelayMS(10); /延時(shí)去抖動mode+;if(mode>3)mode=0;TR2=1; /在0 1 2 3中切換while(!S1);/等待按鍵釋放 if(S2=0) /加DelayMS(10); /延時(shí)去抖動 S2_ADD();while(!S2);/等待按鍵釋放if(S3=0)/減DelayMS(10); /延時(shí)去抖動 S3_SUB();while(!S3);/等待按鍵釋放5.調(diào)試過程 系統(tǒng)仿真用

23、的是Protues軟件,可通過仿真顯示出所設(shè)計(jì)系統(tǒng)的功能,對于程序的調(diào)試等有很大幫助。 系統(tǒng)仿真時(shí)如果使用c語言編程或c語言與匯編語言聯(lián)合編程,一般使用Keil C譯碼器,把所寫的程序進(jìn)行編譯,同時(shí)在仿真器里設(shè)置生成HEX文件,編譯無錯(cuò)進(jìn)行Protues仿真。等所有的元件都連接完成后可以把Keil C生成的無錯(cuò)誤文件編譯加載到AT89C51中,然后點(diǎn)擊運(yùn)行。 啟動Protues軟件的運(yùn)行按鈕,用按鍵設(shè)定倒計(jì)時(shí)初值,數(shù)碼管上從左到右依次顯示6個(gè)數(shù)字從而設(shè)定初值,當(dāng)按下開始鍵時(shí),數(shù)碼管上的數(shù)字減1,也就是1s計(jì)時(shí)時(shí)間到了,如果中間按暫停則暫停倒計(jì)時(shí),當(dāng)之后第二遍再按暫停鍵則繼續(xù)開始倒計(jì)時(shí),若按停止

24、鍵則停止倒計(jì)時(shí)。數(shù)碼管顯示功能正常,按運(yùn)行鍵時(shí),單片機(jī)和各處高低電平顯示正常。但按鍵功能功能有點(diǎn)異常,致使數(shù)據(jù)無法顯示。在復(fù)位電路時(shí),由于電阻選用過大,致使復(fù)位功能不能實(shí)現(xiàn)。5. 總結(jié)與體會這次單片機(jī)的課程設(shè)計(jì),我做的是LED倒計(jì)時(shí),在學(xué)習(xí)單片機(jī)的課程時(shí)我們曾經(jīng)做過一些其他的東西,這次做這個(gè)題目,我在此將課本與實(shí)踐聯(lián)系起來,從中學(xué)到不少的知識。(1) 在本次課程設(shè)計(jì)中,我對AT89C51、74LS373、7SEG系列顯示器等都加深了了解,鞏固了對它們的使用,對于硬件和軟件綜合運(yùn)用有了更深一步的理解,為以后的電路分析和設(shè)計(jì)奠定了一定的基礎(chǔ)。(2) 在本次課程設(shè)計(jì)中,我們將課本理論知識與實(shí)際應(yīng)用聯(lián)

25、系起來,加深了對課本知識的認(rèn)識理解,也加深了對電路設(shè)計(jì)方法和實(shí)際電路聯(lián)系的實(shí)踐知識。拿到課程設(shè)計(jì)的題目后,我們按照書本上的知識和老師講授的方法,首先和同學(xué)一起分析此次電路設(shè)計(jì)任務(wù)和要求,然后按照分析的結(jié)果進(jìn)行實(shí)際連接操作,檢測和校正,再進(jìn)一步完善電路。(3) 在本次課程設(shè)計(jì)中,我感到不僅電路設(shè)計(jì)能力有所提高,更重要的是通過對電路設(shè)計(jì)的學(xué)習(xí)和了解,進(jìn)一步激發(fā)了我們對專業(yè)知識的興趣,并能夠結(jié)合實(shí)際存在的問題在專業(yè)領(lǐng)域內(nèi)進(jìn)行更深入的學(xué)習(xí)。 這次課程設(shè)計(jì)持續(xù)的時(shí)間比較充裕,從接到任務(wù)書,然后去分析找資料,進(jìn)行初步設(shè)計(jì),編程,仿真調(diào)試,最終完成任務(wù),這一輪下來我們獲益良多,不僅僅在知識方面有所收獲,在實(shí)

26、際遇到問題,然后去解決問題的方面我們得到很大的提升,當(dāng)然也得到了老師和同學(xué)的一些幫助,這些經(jīng)歷都是我們在這里面的巨大收獲。7. 參考文獻(xiàn)1 李光弟 朱月秀 冷祖祁單片機(jī)基礎(chǔ)(第3版)北京北京航空航天大學(xué)出版社2007 2 李鳳霞 劉桂山 陳朔鷹 薛慶.C語言程序設(shè)計(jì)(第二版).北京. 北京理工大學(xué)出版社,2008. 3 樓然苗 李光飛.單片機(jī)課程設(shè)計(jì)指導(dǎo). 北京.北京航空航天大學(xué)出版,2007附錄(源程序)#include <reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsign

27、ed charsbit SEG1=P20; /段碼位1sbit SEG2=P21; /段碼位2 sbit SEG3=P22; /段碼位3sbit SEG4=P23; /段碼位4sbit SEG5=P24; /段碼位5sbit SEG6=P25; /段碼位6sbit S1=P10; /設(shè)置 上下限sbit S2=P11; /加sbit S3=P12; /減sbit BUZZ=P30; /蜂鳴器 /* 0 1 2 3 4 5 6 7 8 9 a b c d e f - 關(guān)*/uchar code tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x

28、6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40,0x00; uchar Display_Digit=0,0,0,0,0,0,0,0;/待顯示的各溫度數(shù)位uchar key; /鍵值/-時(shí)間-/uchar shi=1,fen=1,miao=5;/ 時(shí)分秒計(jì)時(shí) 測試1/uchar shi=0,fen=1,miao=5;/ 時(shí)分秒計(jì)時(shí) 測試2uchar shi=0,fen=0,miao=8;/ 時(shí)分秒計(jì)時(shí) 測試3 開機(jī)倒計(jì)時(shí)時(shí)間 可自由設(shè)置/-時(shí)間-uchar END;uchar mode; /模式 0 1 2 3void DelayMS(unsigned int t)/

29、延時(shí)N msunsigned int i,j;for(i=0;i<t;i+)for(j=0;j<120;j+);/-顯示數(shù)碼管-void DIS_SEG(void) /顯示時(shí) 分 秒P0=tabDisplay_Digit5; / 數(shù)碼管顯示SEG1=0; DelayMS(1); /延時(shí) SEG1=1; P0=tabDisplay_Digit4; / 數(shù)碼管顯示 SEG2=0;DelayMS(1); /延時(shí) SEG2=1; P0=tabDisplay_Digit3; / 數(shù)碼管顯示SEG3=0;DelayMS(1);/延時(shí) SEG3=1; P0=tabDisplay_Digit2;

30、/ 數(shù)碼管顯示SEG4=0;DelayMS(1);/延時(shí) SEG4=1; P0=tabDisplay_Digit1; / 數(shù)碼管顯示SEG5=0; DelayMS(1); /延時(shí) SEG5=1; P0=tabDisplay_Digit0; / 數(shù)碼管顯示 SEG6=0;DelayMS(1); /延時(shí) SEG6=1; /-顯示數(shù)碼管-void DIS_SEG_SHI(void) /顯示時(shí)P0=tabDisplay_Digit1; / 數(shù)碼管顯示SEG5=0; DelayMS(1); /延時(shí) SEG5=1; P0=tabDisplay_Digit0; / 數(shù)碼管顯示 SEG6=0;DelayMS(

31、1); /延時(shí) SEG6=1; /-顯示數(shù)碼管-void DIS_SEG_FEN(void)/顯示時(shí) 分P0=tabDisplay_Digit3; / 數(shù)碼管顯示SEG3=0;DelayMS(1);/延時(shí) SEG3=1; P0=tabDisplay_Digit2; / 數(shù)碼管顯示SEG4=0;DelayMS(1);/延時(shí) SEG4=1; P0=tabDisplay_Digit1; / 數(shù)碼管顯示SEG5=0; DelayMS(1); /延時(shí) SEG5=1; P0=tabDisplay_Digit0; / 數(shù)碼管顯示 SEG6=0;DelayMS(1); /延時(shí) SEG6=1; /-時(shí)間顯示-v

32、oid TIM_DIS(void) / char shi=12,fen=50,miao=40; Display_Digit0=shi%100/10; /時(shí) Display_Digit1=shi%10; /時(shí) Display_Digit2=fen%100/10;/分 Display_Digit3=fen%10;/分 Display_Digit4=miao%100/10;/秒 Display_Digit5=miao%10;/秒 /-秒信號-void Timer2_S(void) /timer2初始化 /-定時(shí)器2設(shè)置-RCAP2H=(65536-62500)/256; /重裝載計(jì)數(shù)器賦初值RCAP2L=(65536-62500)%256;ET2=1; /開定時(shí)器2中斷EA=1; /開總中斷TR2=1; /開啟定時(shí)器,并設(shè)置為自動重裝載模式 /-定時(shí)器2設(shè)置-/-秒信號-void S2_ADD(void) if(mode=1) /shi+; if(shi>23)shi=23; /最大值23if(mode=2) /fen+; if(fen>59)fen=59; /最大值59if(mode=3)/ miao+;if(mi

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論