基于DS18b20的溫度測量和秒表設(shè)計單片機最小系統(tǒng)實驗報告_第1頁
基于DS18b20的溫度測量和秒表設(shè)計單片機最小系統(tǒng)實驗報告_第2頁
基于DS18b20的溫度測量和秒表設(shè)計單片機最小系統(tǒng)實驗報告_第3頁
基于DS18b20的溫度測量和秒表設(shè)計單片機最小系統(tǒng)實驗報告_第4頁
基于DS18b20的溫度測量和秒表設(shè)計單片機最小系統(tǒng)實驗報告_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機最小系統(tǒng)實驗報告基于ds18b20的溫度測量和秒表設(shè)計目錄單片機最小系統(tǒng)實驗報告1一、單片機31.單片機簡介32.最小系統(tǒng)33. at89c51單片機引腳說明4二、18b20介紹5三、最小系統(tǒng)硬件設(shè)計81、設(shè)計結(jié)構(gòu)框圖82、系統(tǒng)時鐘電路83、復(fù)位電路8四、實驗具體內(nèi)容91、實現(xiàn)led顯示器的選通并顯示字符92、基于ds18b20的溫度測量和秒表設(shè)計16五、總結(jié)29一、單片機1.單片機簡介單片微型計算機簡稱單片機,是典型的嵌入式微控制器(microcontroller unit),常用英文字母的縮寫mcu表示單片機,單片機又稱單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計算機系

2、統(tǒng)集成到一個芯片上。單片機由運算器,控制器,存儲器,輸入輸出設(shè)備構(gòu)成,相當(dāng)于一個微型的計算機,和計算機相比,單片機只缺少了i/o設(shè)備。概括的講:一塊芯片就成了一臺計算機。它的體積小、質(zhì)量輕、價格便宜、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。同時,學(xué)習(xí)使用單片機是了解計算機原理與結(jié)構(gòu)的最佳選擇。它最早是被用在工業(yè)控制領(lǐng)域at89c51提供以下標(biāo)準(zhǔn)功能:8k字節(jié)falsh閃速存儲器,256字節(jié)內(nèi)部ram,32個i/o口線,3個16位定時/計數(shù)器,一個6向量兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)震蕩器及時鐘電路,同時at89c51可降至0hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止

3、cpu的工作,但允許ram,時/計數(shù)器,串行通信口及中斷系統(tǒng)持續(xù)工作。掉電方式保存ram中的內(nèi)容,但震蕩器停止工作并禁止其他所有部件工作直到下一個硬件復(fù)位。at89c51單片機主要功能特性: 兼容mcs51指令系統(tǒng) 4k可反復(fù)擦寫(1000次)flashrom 32個雙向i/o口 8個中斷源 三個16位可編程定時/計數(shù)器 2.7-6.v的寬工作電壓范圍 時鐘頻率0-24mhz128x8bit內(nèi)部ram 五個外部中斷源 兩個串行中斷 可直接驅(qū)動led 兩級加密位 低功耗睡眠功能 內(nèi)置一個模擬比較放大器 可編程uarl通道 軟件設(shè)置睡眠和喚醒功能2.最小系統(tǒng)單片機最小系統(tǒng),或者稱為最小應(yīng)用系統(tǒng),是

4、指用最少的元件組成的單片機可以工作的系統(tǒng). 對51系列單片機來說,單片機+晶振電路+復(fù)位電路,便組成了一個最小系統(tǒng).但是一般我們在設(shè)計中總是喜歡把按鍵輸入、顯示輸出等加到上述電路中,成為小系統(tǒng)。3. at89c51單片機引腳說明vcc:供電電壓。gnd:接地。p0口:p0口為一個8位漏級開路雙向i/o口,內(nèi)部無上拉電阻每腳可吸收8ttl門電流。當(dāng)p1口的管腳第一次寫1時,被定義為高阻輸入。p0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。p1口:p1口是一個內(nèi)部提供上拉電阻的8位雙向i/o口,p1口緩沖器能接收輸出4ttl門電流。p1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,

5、p1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在flash編程和校驗時,p1口作為第八位地址接收。p2口:p2口為一個內(nèi)部上拉電阻的8位雙向i/o口,p2口緩沖器可接收,輸出4個ttl門電流,當(dāng)p2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,p2口的管腳被外部拉低,將輸出電流。p3口:p3口管腳是8個帶內(nèi)部上拉電阻的雙向i/o口,可接收輸出4個ttl門電流。當(dāng)p3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3口將輸出電流,這是由于上拉的緣故。p3口也可作為at89c51的一些特殊功能口,如下表所示:p3.0

6、 rxd(串行輸入口)p3.1 txd(串行輸出口)p3.2 /int0(外部中斷0)p3.3 /int1(外部中斷1)p3.4 t0(記時器0外部輸入)p3.5 t1(記時器1外部輸入)p3.6 /wr(外部數(shù)據(jù)存儲器寫選通)p3.7 /rd(外部數(shù)據(jù)存儲器讀選通)p3口同時為閃爍編程和編程校驗接收一些控制信號。rst:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持rst腳兩個機器周期的高電平時間。ale/prog:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。在平時,ale端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。

7、因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ale脈沖。如想禁止ale的輸出可在sfr8eh地址上置0。此時, ale只有在執(zhí)行movx,movc指令是ale才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ale禁止,置位無效。/psen:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/psen有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/psen信號將不出現(xiàn)。/ea/vpp:當(dāng)/ea保持低電平時,則在此期間外部程序存儲器(0000h-ffffh),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/ea將內(nèi)部鎖

8、定為reset;當(dāng)/ea端保持高電平時,此間內(nèi)部程序存儲器。在flash編程期間,此引腳也用于施加12v編程電源(vpp)。xtal1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。xtal2:來自反向振蕩器的輸出。二、18b20介紹ds18b20數(shù)字溫度傳感器接線方便,封裝成后可應(yīng)用于多種場合,如管道式,螺紋式,磁鐵吸附式,不銹鋼封裝式,型號多種多樣,有l(wèi)tm8877,ltm8874等等。主要根據(jù)應(yīng)用場合的不同而改變其外觀。封裝后的ds18b20可用于電纜溝測溫,高爐水循環(huán)測溫,鍋爐測溫,機房測溫,農(nóng)業(yè)大棚測溫,潔凈室測溫,彈藥庫測溫等各種非極限溫度場合。耐磨耐碰,體積小,使用方便,封裝形式

9、多樣,適用于各種狹小空間設(shè)備數(shù)字測溫和控制領(lǐng)域。(1)ds18b20(a)通過單線總線端口訪問 ds1820 的協(xié)議如下: 初始化void init_ds18b20() uchar x=0; dq = 1; /dq復(fù)位 delay_18b20(8); /稍做延時 dq = 0; /單片機將dq拉低 delay_18b20(80); /精確延時 大于 480us dq = 1; /拉高總線 delay_18b20(14); x=dq; /稍做延時后 如果x=0則初始化成功 x=1則初始化失敗 delay_18b20(20); rom 操作命令int readonechar(void)uchar

10、i=0;uchar dat = 0;for (i=8;i0;i-) dq = 0; / 給脈沖信號 dat=1; dq = 1; / 給脈沖信號 if(dq) dat|=0x80; delay_18b20(4); return(dat); 存儲器操作命令writeonechar(uchar dat) uchar i=0; for (i=8; i0; i-) dq = 0; dq = dat&0x01; delay_18b20(5); dq = 1; dat=1; 執(zhí)行/數(shù)據(jù)readtemperature(void)uchar a=0;uchar b=0;uint t=0;init_ds18b2

11、0();writeonechar(0xcc); / 跳過讀序號列號的操作writeonechar(0x44); / 啟動溫度轉(zhuǎn)換delay_18b20(100);init_ds18b20();writeonechar(0xcc); /跳過讀序號列號的操作writeonechar(0xbe); /讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度a=readonechar();b=readonechar();/傳感器返回值除16得實際溫度值/為了得到2位小數(shù)位,先乘100,再除16,考慮整型數(shù)據(jù)長度,/技巧處理后先乘25,再除4,除4用右移實現(xiàn)b=8;t=a+b;return(t);ds182

12、0 需要嚴(yán)格的協(xié)議以確保數(shù)據(jù)的完整性。協(xié)議包括幾種單線信號類型:復(fù)位脈沖、存在脈沖、寫0、寫1、讀0 和讀1。所有這些信號,除存在脈沖外,都是由總線控制器發(fā)出的。和 ds1820 間的任何通訊都需要以初始化序列開始,初始化序列見下圖。一個復(fù)位脈沖跟著一個存在脈沖表明ds1820 已經(jīng)準(zhǔn)備好發(fā)送和接收數(shù)據(jù)(適當(dāng)?shù)膔om 命令和存儲器操作命令)(b)當(dāng)總線上只有一個器件時,ds18b20讀溫度的流程為:復(fù)位發(fā)0cch skip rom命令發(fā)44h開始轉(zhuǎn)換命令延時復(fù)位發(fā)0cchskip rom命令發(fā)0beh讀存儲器命令連續(xù)讀出兩個字節(jié)數(shù)據(jù)(即溫度)結(jié)束。 convert t 44h這條命令啟動一次溫

13、度轉(zhuǎn)換而無需其他數(shù)據(jù)。溫度轉(zhuǎn)換命令被執(zhí)行,而后ds1820 保持等待狀態(tài)。如果總線控制器在這條命令之后跟著發(fā)出讀時間隙,而ds1820 又忙于做時間轉(zhuǎn)換的話,ds1820 將在總線上輸出“0”,若溫度轉(zhuǎn)換完成,則輸出“1”。如果使用寄生電源,總線控制器必須在發(fā)出這條命令后立即起動強上拉,并保持500ms。 read scratchpad beh這個命令讀取暫存器的內(nèi)容。讀取將從字節(jié)0 開始,一直進(jìn)行下去,直到第9(字節(jié)8,crc)字節(jié)讀完。如果不想讀完所有字節(jié),控制器可以在任何時間發(fā)出復(fù)位命令來中止讀取。(c)ds18b20 用12 位存貯溫值度最高位為符號位,下圖為18b20 的溫度存儲方式

14、,負(fù)溫度s=1 正溫度s=0lsb:d7 d6 d5 d4 d3 d2 d1 d0232221202-12-22-32-4msb:d7 d6 d5 d4 d3 d2 d1 d0sssss272625三、最小系統(tǒng)硬件設(shè)計1、設(shè)計結(jié)構(gòu)框圖2、系統(tǒng)時鐘電路 單片機內(nèi)部具有一個高增益反相放大器,用于構(gòu)成振蕩器。通常在引腳xtall和xtal2跨接石英晶體和兩個補償電容構(gòu)成自激振蕩器,系統(tǒng)時鐘電路結(jié)構(gòu)如圖:3、復(fù)位電路 單片機小系統(tǒng)采用上電自動復(fù)位和手動按鍵復(fù)位兩種方式實現(xiàn)系統(tǒng)的復(fù)位操作。上電復(fù)位要求接通電源后,自動實現(xiàn)復(fù)位操作。手動復(fù)位要求在電源接通的條件下,在單片機運行期間,用按鈕開關(guān)操作使單片機復(fù)

15、位。顯示電路、鍵盤以及外部ram的擴展根據(jù)具體電路的不同而不同四、實驗具體內(nèi)容1、實現(xiàn)led顯示器的選通并顯示字符電路圖的繪制(1)打開proteus將所需元器件加入到對象選擇器窗口。picking components into the schematic單擊對象選擇器按鈕,如圖所示彈出“pick devices”頁面,在“keywords”輸入at89c51,系統(tǒng)在對象庫中進(jìn)行搜索查找,并將搜索結(jié)果顯示在“results”中,如圖所示。在“results”欄中的列表項中,雙擊“at89c51”,則可將“at89c51”添加至對象選擇器窗口。 (2)接著在“keywords”欄中重新輸入7s

16、eg,如圖所示。雙擊“7seg-mpx6-ca-blue”,則可將“7seg-mpx6-ca-blue”(6位共陽7段led顯示器)添加至對象選擇器窗口。(3)最后,在“keywords”欄中重新輸入res,選中“match whole words”,如圖所示。在“results”欄中獲得與res完全匹配的搜索結(jié)果。雙擊“res”,則可將“res”(電阻)添加至對象選擇器窗口。單擊“ok”按鈕,結(jié)束對象選擇。經(jīng)過以上操作,在對象選擇器窗口中,已有了7seg-mpx6-ca-blue、at89c51、res三個元器件對象,若單擊at89c51,在預(yù)覽窗口中,見到at89c51的實物圖,如圖所示;

17、若單擊res或7seg-mpx6-ca-blue,在預(yù)覽窗口中,見到res和7seg-mpx6-ca-blue的實物圖,如圖所示。此時,我們已注意到在繪圖工具欄中的元器件按鈕處于選中狀態(tài)。 (4)放置元器件至圖形編輯窗口placing components onto the schematic在對象選擇器窗口中,選中7seg-mpx6-ca-blue,將鼠標(biāo)置于圖形編輯窗口該對象的欲放位置、單擊鼠標(biāo)左鍵,該對象被完成放置。同理,將at89c51和res放置到圖形編輯窗口中。如圖所示。(5)放置總線至圖形編輯窗口單擊繪圖工具欄中的總線按鈕,使之處于選中狀態(tài)。將鼠標(biāo)置于圖形編輯窗口,單擊鼠標(biāo)左鍵,

18、確定總線的起始位置;移動鼠標(biāo),屏幕出現(xiàn)粉紅色細(xì)直線,找到總線的終了位置,單擊鼠標(biāo)左鍵,再單擊鼠標(biāo)右鍵,以表示確認(rèn)并結(jié)束畫總線操作。此后,粉紅色細(xì)直線被藍(lán)色的粗直線所替代,如圖所示。(6)元器件之間的連線proteus的智能化可以在你想要畫線的時候進(jìn)行自動檢測。下面,我們來操作將電阻r1的右端連接到led顯示器的a端。當(dāng)鼠標(biāo)的指針靠近r1右端的連接點時,跟著鼠標(biāo)的指針就會出現(xiàn)一個“”號,表明找到了r1的連接點,單擊鼠標(biāo)左鍵,移動鼠標(biāo)(不用拖動鼠標(biāo)),將鼠標(biāo)的指針靠近led顯示器的a端的連接點時,跟著鼠標(biāo)的指針就會出現(xiàn)一個“”號,表明找到了led顯示器的連接點,同時屏幕上出現(xiàn)了粉紅色的連接,單擊鼠

19、標(biāo)左鍵,粉紅色的連接線變成了深綠色,同時,線形由直線自動變成了90的折線,這是因為我們選中了線路自動路徑功能。proteus具有線路自動路徑功能(簡稱war),當(dāng)選中兩個連接點后,war將選擇一個合適的路徑連線。war可通過使用標(biāo)準(zhǔn)工具欄里的“war”命令按鈕來關(guān)閉或打開,也可以在菜單欄的“tools”下找到這個圖標(biāo)。同理,我們可以完成其它連線。在此過程的任何時刻,都可以按esc鍵或者單擊鼠標(biāo)的右鍵來放棄畫線。(7)元器件與總線的連線畫總線的時候為了和一般的導(dǎo)線區(qū)分,我們一般喜歡畫斜線來表示分支線。此時我們需要自己決定走線路徑,只需在想要拐點處單擊鼠標(biāo)左鍵即可,如圖所示。(8)給與總線連接的導(dǎo)

20、線貼標(biāo)簽part labels單擊繪圖工具欄中的導(dǎo)線標(biāo)簽按鈕,使之處于選中狀態(tài)。將鼠標(biāo)置于圖形編輯窗口的欲標(biāo)標(biāo)簽的導(dǎo)線上,跟著鼠標(biāo)的指針就會出現(xiàn)一個“”號,如圖所示。表明找到了可以標(biāo)注的導(dǎo)線,單擊鼠標(biāo)左鍵,彈出編輯導(dǎo)線標(biāo)簽窗口,如圖所示。 在“string”欄中,輸入標(biāo)簽名稱(如a),單擊“ok”按鈕,結(jié)束對該導(dǎo)線的標(biāo)簽標(biāo)定。同理,可以標(biāo)注其它導(dǎo)線的標(biāo)簽,如圖所示。注意,在標(biāo)定導(dǎo)線標(biāo)簽的過程中,相互接通的導(dǎo)線必須標(biāo)注相同的標(biāo)簽名。至此,我們便完成了整個電路圖的繪制。keilc與proteus連接調(diào)試進(jìn)入keilc vision2開發(fā)集成環(huán)境,創(chuàng)建一個新項目(project),并為該項目選定合適

21、的單片機cpu器件(如:atmel公司的at89c51)。并為該項目加入keilc源程序。實驗仿真圖:源程序如下:#include #define leds 6 /led燈選通信號unsigned char code select=0x01,0x02,0x04,0x08,0x10,0x20;unsigned char code led_codes= 0xc0,0xf9,0xa4,0xb0,0x99,/0-4 0x92,0x82,0xf8,0x80,0x90,/5-9 0x88,0x83,0xc6,0xa1,0x86;void main() char i=0,j=0; long int k; w

22、hile(1) p2=0; p1=led_codesi; p2=selectj; for(k=3000;k0;k-); /該led模型靠脈沖點亮,第i位靠脈沖點亮后,會自動熄來頭。/修改循環(huán)次數(shù),改變點亮下一位之前的延時,可得到不同的顯示效果。 i+; j+; if(j5) j=0; if(i14)i=0; 2、基于ds18b20的溫度測量和秒表設(shè)計設(shè)計方案:通過功能鍵(外部中斷)選擇進(jìn)入不同的模式工作。當(dāng)k=0時,工作在時間顯示模式,當(dāng)k=1時,工作在秒表模式,其中開關(guān)1、2、3時調(diào)節(jié)自己需要倒計時的時間,沒按下時,對應(yīng)的數(shù)值加一。開關(guān)4為開始/暫停按鍵。當(dāng)k=4時,顯示采集回來的溫度。le

23、d1、led 2、led3燈是用來更直觀的看本設(shè)計工作在什么下的,led4為是閃爍,閃爍頻率為1s.(1)、硬件部分(2)軟件部分源程序:#include#define dataport p0 /定義數(shù)據(jù)端口 程序中遇到dataport 則用p0 替換#define uchar unsigned char#define uint unsigned int/*位定義*/sbit menu = p32; /位聲明,外部中斷口,功能鍵sbit led1 = p15; /led燈sbit led2 = p16;sbit led3 = p17;sbit led4 = p14;sbit add_m= p1

24、0; /按鍵,調(diào)分sbit add_s= p11; /按鍵,調(diào)秒sbit add_us=p12; /按鍵,調(diào)微秒sbit reset =p13; /清零,秒表狀態(tài)下也是清零sbit latch1=p20; /定義鎖存使能端口 段鎖存sbit latch2=p21;/ 位鎖存sbit dq = p22; /定義18b20的通信端口 /*參數(shù)定義*/uint a,b,j;uchar tempdata8;uint m,s,w, /時鐘 m0,s0,w0,/秒表 k;/狀態(tài)轉(zhuǎn)換標(biāo)志uchar code weima=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;/位碼u

25、char code duanma=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/段碼/*函數(shù)聲明*/void delay_18b20(uint i);void init_ds18b20();int readonechar();writeonechar(uchar dat);readtemperature(void);void display1();void init();void keyscan();void display(uchar a,uchar b,uchar c);void delay(uchar z);void wendu()

26、;/*主函數(shù)*/ void main()init(); /初始化while(1)if(k=0)/時間 led1=1; /點亮第一個燈,辨別是工作在時間模式下的 led2=0; led3=0; keyscan(); display(m0,s0,w0); /顯示時間 if(k=1)/倒計時 led1=0; led2=1; /點亮第二個燈,辨別是工作在秒表模式下的 led3=0; keyscan();display(m,s,w); if(k=2)/溫度 led1=0; led2=0; led3=1; /點亮第三個燈,辨別是工作在溫度模式下的 wendu(); void delay_18b20(uin

27、t i)/延時函數(shù)while(i-);/*18b20初始化*/void init_ds18b20() uchar x=0; dq = 1; /dq復(fù)位 delay_18b20(8); /稍做延時 dq = 0; /單片機將dq拉低 delay_18b20(80); /精確延時 大于 480us dq = 1; /拉高總線 delay_18b20(14); x=dq; /稍做延時后 如果x=0則初始化成功 x=1則初始化失敗 delay_18b20(20);/*讀一個字節(jié)*/ int readonechar(void)uchar i=0;uchar dat = 0;for (i=8;i0;i-)

28、 dq = 0; / 給脈沖信號 dat=1; dq = 1; / 給脈沖信號 if(dq) dat|=0x80; delay_18b20(4); return(dat);/*寫一個字節(jié)*/ writeonechar(uchar dat) uchar i=0; for (i=8; i0; i-) dq = 0; dq = dat&0x01; delay_18b20(5); dq = 1; dat=1; /*讀取溫度*/readtemperature(void)uchar a=0;uchar b=0;uint t=0;init_ds18b20();writeonechar(0xcc); / 跳過

29、讀序號列號的操作writeonechar(0x44); / 啟動溫度轉(zhuǎn)換delay_18b20(100);init_ds18b20();writeonechar(0xcc); /跳過讀序號列號的操作writeonechar(0xbe); /讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度a=readonechar();b=readonechar();/傳感器返回值除16得實際溫度值/為了得到2位小數(shù)位,先乘100,再除16,考慮整型數(shù)據(jù)長度,/技巧處理后先乘25,再除4,除4用右移實現(xiàn)b4; templ=temp&0x0f; templ=templ*6/10;/小數(shù)近似處理 if(temp

30、h/100=0) tempdata6=0;else tempdata6=duanmatemph/100; /十位溫度 if(temph/100=0)&(temph%100)/10=0)/消隱 tempdata2=0;else tempdata5=duanma(temph%100)/10; /十位溫度 tempdata4=duanma(temph%100)%10|0x80; /個位溫度,帶小數(shù)點 tempdata3=duanmatempl; tempdata1=0x39; /顯示c符號 tempdata0=0x00; display1();/*初始化函數(shù)*/void init()a=0;b=0;

31、k=0;led1=0;/關(guān)閉所有燈led2=0;led3=0;led4=0;m0=12;/時間初始化s0=0;w0=0;m=0; /秒表初始化s=0;w=0;tmod=0x11; /定時器0,1工作于方式1;賦初值th0=(65536-5000)/256; /晶振12m,秒表定時器給初值 tl0=(65536-5000)%256;th1=(65536-50000)/256; /時間定時器給初值tl1=(65536-50000)%256;ea=1; /開總中斷,中斷允許ex0=1; /秒表中斷et0=1;et1=1;it0=1; /邊沿觸發(fā)方式it1=1;px0=1;px1=1;tr0=0; /

32、初始,秒表不工作tr1=1; /時鐘一開始工作/*定時器0中斷*/void timer0_int() interrupt 1/秒表th0=(65536-5000)/256;tl0=(65536-5000)%256;a+;if(a=2)/5000*2msa=0;if(w!=0)|(s!=0)|m)/判斷倒計時時間到?jīng)]。 w-; if(w=0)w=99;if(s!=0)|m) s-;if(s=0) s=59; if(m0)m-;/*外部中斷0中斷函數(shù)*/void ex0_int() interrupt 0 k+;/按下一次功能鍵,使得k值加一,進(jìn)入不同的工作模式if(k=3)k=0;/*定時器1中斷*/void timer1_int() interrupt 3/控制時鐘工作th1=(65536-50000)/256;tl1=(65536-50000)%256;b+;if(b=20)/50000*20=1s,說明1秒的時間到了b=0;w0+;led4=led4;/讓第

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論