單片機(jī)課程設(shè)計(jì)報(bào)告——單片機(jī)控制步進(jìn)電機(jī)_第1頁
單片機(jī)課程設(shè)計(jì)報(bào)告——單片機(jī)控制步進(jìn)電機(jī)_第2頁
單片機(jī)課程設(shè)計(jì)報(bào)告——單片機(jī)控制步進(jìn)電機(jī)_第3頁
單片機(jī)課程設(shè)計(jì)報(bào)告——單片機(jī)控制步進(jìn)電機(jī)_第4頁
單片機(jī)課程設(shè)計(jì)報(bào)告——單片機(jī)控制步進(jìn)電機(jī)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精品 welcome 江西農(nóng)大 單片機(jī)原理及應(yīng)用 課程設(shè)計(jì)報(bào)告 設(shè)計(jì)課題: 單片機(jī)控制步進(jìn)電機(jī) _ 專業(yè)班級(jí): 信工 091 班 _ 學(xué)生姓名: _ 崔* _ 指導(dǎo)教師: 何老師 _ 2012 年 5 月 精品 welcome 目錄 目錄 . 1 設(shè)計(jì)任務(wù)書 . 2 1.1 基本設(shè)計(jì)要求 . 1.2 選作項(xiàng)目 . 3 2 設(shè)計(jì)闡明 . 3 2.1 設(shè)計(jì)內(nèi)容 . 2.2 設(shè)計(jì)要求 . 4 2.3 設(shè)備及工作環(huán)境 . 4 3 系統(tǒng)方案整體設(shè)計(jì) . 5 3.1 設(shè)計(jì)思路 . 5 4 硬件設(shè)計(jì) .! 4.1 系統(tǒng)硬件設(shè)計(jì) . 7 4.1.1 最小單片機(jī)系統(tǒng) . 7 4.1.2 鍵盤設(shè)計(jì) 8 4.2 系

2、統(tǒng)工作原理論述 9 5 軟件設(shè)計(jì) 12 5.1 分析論證 12 5.1.1 步進(jìn)電機(jī)運(yùn)行驅(qū)動(dòng)模塊 12 5.1.2 溫度采集模塊 12 5.1.3 主函數(shù)模塊 12 5.1.4 整體功效 . 13 精品 welcome 5.2 程序流程圖 . 13 5.3 程序清單 . 14 6 調(diào)試過程及分析 . 28 7 設(shè)計(jì)總結(jié) . 29 參考文獻(xiàn) . 30 1 設(shè)計(jì)任務(wù)書 1.1 基本設(shè)計(jì)要求 (1 )用萬能板、主芯片 AT89S52 、35BYJ412 步進(jìn)電機(jī)、 BLN2003 以及 其他周圍原件芯片完成實(shí)驗(yàn)設(shè)計(jì)。 (2 )程序的首地址應(yīng)使目標(biāo)機(jī)可以直接運(yùn)行,即從 0000H 開端。在主程 序的開

3、端部分必須設(shè)置一個(gè)合適的棧底。 程序放置的地址須持續(xù)且靠前, 不要在 中間留下大批的空間地址,以使目標(biāo)機(jī)可以應(yīng)用較少的硬件資源。 (3 )采用單片機(jī)控制一個(gè)三相單三拍的步進(jìn)電機(jī)工作。步進(jìn)電機(jī)的旋轉(zhuǎn)方 向由正反轉(zhuǎn)控制信號(hào)控制。 步進(jìn)電機(jī)的步數(shù)由鍵盤輸入, 可輸入的步數(shù)分別為 3 、 6、9 、12 、15、18 、21 、24 和 27 步,且鍵盤具有鍵盤鎖功能,當(dāng)鍵盤上鎖時(shí), 步進(jìn)電機(jī)不接受輸入步數(shù),也不會(huì)運(yùn)轉(zhuǎn)。只有當(dāng)鍵盤鎖打開并輸入步數(shù)時(shí),步進(jìn) 電機(jī)才開始工作。 精品 welcome (4)電機(jī)運(yùn)轉(zhuǎn)的時(shí)候有正轉(zhuǎn)和反轉(zhuǎn)指示燈指示。 (5 )電機(jī)在運(yùn)轉(zhuǎn)過程中, 如果過熱,則電機(jī)停止運(yùn)轉(zhuǎn),同時(shí)紅色

4、指示燈亮, 同時(shí)警報(bào)響。本題目的關(guān)鍵之處是:如何生成控制步進(jìn)電機(jī)的脈沖序列。 1.2 選作項(xiàng)目 1 、用單片機(jī)( AT89S52 )為主芯片設(shè)計(jì)電路來控制步進(jìn)電機(jī)。 2、設(shè)三個(gè)自鎖按鍵,分別作開關(guān)鍵盤、左轉(zhuǎn)、右轉(zhuǎn)控制。 3、設(shè) 9 個(gè)觸電按鍵分別控制輸入的步數(shù)為 3、6、9、12 、15 、18 、21、 24 和 27 步。 4 、設(shè)置一片 LCD12864 顯示器實(shí)時(shí)顯示步進(jìn)電機(jī)工作狀態(tài), 并提示用戶步 操作。 2 設(shè)計(jì)闡明 2.1 設(shè)計(jì)內(nèi)容 用 ZY15MCU12BD 型綜合單片機(jī)實(shí)驗(yàn)箱仿真實(shí)現(xiàn)控制步進(jìn)電機(jī)集采問過 2.2 設(shè)計(jì)要求 精品 welcome (1 )采用單片機(jī)控制一個(gè)三相單

5、三拍的步進(jìn)電機(jī)工作。步進(jìn)電機(jī)的旋轉(zhuǎn)方 向由正反轉(zhuǎn)控制信號(hào)控制。 步進(jìn)電機(jī)的步數(shù)由鍵盤輸入, 可輸入的步數(shù)分別為 3 、 6、9 、12 、15、18 、21 、24 和 27 步,且鍵盤具有鍵盤鎖功能,當(dāng)鍵盤上鎖時(shí), 步進(jìn)電機(jī)不接受輸入步數(shù),也不會(huì)運(yùn)轉(zhuǎn)。只有當(dāng)鍵盤鎖打開并輸入步數(shù)時(shí),步進(jìn) 電機(jī)才開始工作。 (2)電機(jī)運(yùn)轉(zhuǎn)的時(shí)候有正轉(zhuǎn)和反轉(zhuǎn)指示燈指示。 (3 ) 電機(jī)在運(yùn)轉(zhuǎn)過程中, 如果過熱,則電機(jī)停止運(yùn)轉(zhuǎn), 同時(shí)紅色指示燈亮, 同時(shí)警報(bào)響。 (4 ) 上機(jī)調(diào)試程序。 (5 ) 寫出設(shè)計(jì)報(bào)告。 2.3 設(shè)備及工作環(huán)境 (1) 硬件: AT89S52 單片機(jī)一片、 35BYJ412 步進(jìn)電機(jī)一臺(tái)、

6、 ISP 下載器 一個(gè)、 LCD12864 顯示器、溫度傳感器 18B20 芯片。 (2) 軟件: Windows 操縱系統(tǒng)、 Keil C51 軟件。精品 welcome 3 系統(tǒng)方案整體設(shè)計(jì) 3.1設(shè)計(jì)思路 步進(jìn)電機(jī)的不同驅(qū)動(dòng)方式,都是在工作時(shí),脈沖信號(hào)按一定順序輪流加到三 相繞組上,從而實(shí)現(xiàn)不同的工作狀態(tài)。由于通電順序不同,其運(yùn)行方式有三相單 三相拍、三相雙三拍和三相單、雙六拍三種(注意:上面“三相單三拍”中的“三 相”指定子有三相繞組;“拍”是指定子繞組改變一次通電方式; “三拍”表示 通電三次完成一個(gè)循環(huán)。“三相雙三拍”中的“雙”是指同時(shí)有兩相繞組通電)。 (1)三相單三拍運(yùn)行方式:

7、下頁圖所示為反應(yīng)式步進(jìn)電動(dòng)機(jī)工作原理圖, 若通過脈沖分配器輸出的第一個(gè)脈沖使 A相繞組通電,B,C相繞組不通電,在A 相繞組通電后產(chǎn)生的磁場(chǎng)將使轉(zhuǎn)子 上產(chǎn)生反應(yīng)轉(zhuǎn)矩,轉(zhuǎn)子的1、3齒將與定子 磁極對(duì)齊,如果圖(a)所示。第二個(gè)脈沖到來,使 B相繞組通電,而A、C相 繞組不通電;B相繞組產(chǎn)生的磁場(chǎng)將 使轉(zhuǎn)子的2、4齒與B相磁極對(duì)齊,如圖 (b)所示,與圖(a)相比,轉(zhuǎn)子逆時(shí)針方向轉(zhuǎn)動(dòng)了一個(gè)角度。第三個(gè)脈沖到 來后,是C相繞組通電,而A、B相不通電,這時(shí)轉(zhuǎn)子的1、3齒會(huì)與C組對(duì)齊, 轉(zhuǎn)子的位置如圖(c)所示,與圖(b)比較,又逆時(shí)針轉(zhuǎn)過了一個(gè)角度。 (b) (0 圖 反應(yīng)式步進(jìn)電機(jī)工作原理圖 精品

8、welcome 當(dāng)脈沖不斷到來時(shí),通過分配器使定子的繞組按著 A 相 -B 相-C 相 -A 相的規(guī)律不斷地接通與斷開,這時(shí)步進(jìn)電動(dòng)機(jī)的轉(zhuǎn)子就連續(xù)不停地一步步的 逆時(shí) 針方向轉(zhuǎn)動(dòng)。如果改變步進(jìn)電動(dòng)機(jī)的轉(zhuǎn)動(dòng)方向,只要將定子各繞組通電的 順序改為 A 相-C 相-B 相-A 相,轉(zhuǎn)子轉(zhuǎn)動(dòng)方向即改為順時(shí)針方向。 單三拍分配方式時(shí),步進(jìn)電動(dòng)機(jī)由 A 相通電轉(zhuǎn)換到 B 相同點(diǎn),步進(jìn)電動(dòng)機(jī) 的轉(zhuǎn)子轉(zhuǎn)過一個(gè)角度,稱為一步。這時(shí)轉(zhuǎn)子轉(zhuǎn)過的角度是 30 度。步進(jìn)電動(dòng)機(jī)每 一步轉(zhuǎn)過的角度稱為步距角。 (2) 三相雙三拍運(yùn)行方式三相雙三拍運(yùn)行方式:每次都有兩個(gè)繞組通電, 通電方式是 AB-BC-CA-AB ,如果通

9、電順序改為 AB-CA-BC-AB 則 步進(jìn)電機(jī)反轉(zhuǎn)。雙三拍分配方式時(shí),步進(jìn)電動(dòng)機(jī)的步距角也是 30 度 (3) 三相單, 雙六拍運(yùn)行方式: 三相六拍分配方式就是每個(gè)周期內(nèi)有六個(gè)通 電狀態(tài)。這六中通電狀態(tài)的順序可以使 A-AB-B-BC-C-CA-A 或者 A- CA-C-BC-B-AB-A 六拍通電方式中, 有一個(gè)時(shí)刻兩個(gè)繞組同時(shí)通電, 這 是轉(zhuǎn)子齒的位置將位于通電的兩相的中間位置。在三相六拍分配 方式下,轉(zhuǎn)子 每一步轉(zhuǎn)過的角度只是三相三拍方式下的一半,步距角是 15 度。 單三拍運(yùn)行的突出問題是每次只有一相繞組通電,在轉(zhuǎn)換過程中,一相繞組 斷電,另一相繞組通電,容易發(fā)生失步;另外單靠一相繞

10、組通電吸引轉(zhuǎn)子,穩(wěn)定 性不好,容易在平衡位置附近震蕩,故用的較少。 雙三拍運(yùn)行的特點(diǎn)是每次都有兩相繞組通電, 且在轉(zhuǎn)換過程中始終有一相繞 組保持通電狀態(tài),因此工作穩(wěn)定,且步距角與單三拍相同。 六拍運(yùn)行方式轉(zhuǎn)換時(shí)始終有一相繞組通電, 且步距角較小,故工作穩(wěn)定性好, 但電源較復(fù)雜,實(shí)際應(yīng)用較多精品 welcome 4 硬件設(shè)計(jì) 4.1系統(tǒng)硬件設(shè)計(jì) 4.1.1最小單片機(jī)系統(tǒng) 精品 welcome 5V電源:給系統(tǒng)供電。 復(fù)位電路:程序跑飛時(shí)復(fù)位電路可以使程序從新執(zhí)行,相當(dāng)于電腦的重啟 晶振:給單片機(jī)運(yùn)行提供時(shí)鐘。比如電腦的 2.2GHz頻率。 EA接高電平:表示運(yùn)行內(nèi)部程序存儲(chǔ)器下載的程序。 P0

11、口接排阻:P0 口開漏結(jié)構(gòu),使用時(shí)一般接排阻拉高電平。 4.1.2鍵盤設(shè)計(jì) 12、15、18、21、24布局選擇功能、鍵盤鎖功能以及步進(jìn)電機(jī)轉(zhuǎn)動(dòng)方向選擇功 能。其中有程序決定起作用 4.2系統(tǒng)工作原理論述 該電路中米用獨(dú)立鍵盤工作方式,共設(shè)有 12個(gè)按鍵,分別提供3、6、9、 精品 welcome 該系統(tǒng)的工作核心CPU為ATMEL公司生產(chǎn)的AT89S52芯片將多種功能的 8位CPU與FPEROM (快閃可編程/擦除只讀存儲(chǔ)器)結(jié)合在一個(gè)芯片上,是 一種低功耗、高性能的CMOS控制器,為很多嵌入式控制應(yīng)用提供了非常靈活 而又價(jià)格適宜的方案,其性能價(jià)格比遠(yuǎn)高于同類芯片。它與 MCS-51指令系統(tǒng)

12、 兼容,片內(nèi)FPEROM允許對(duì)程序存儲(chǔ)器在線重復(fù)編程,也可用常規(guī)的 EPROM 編程器編程, 可循環(huán)寫入/擦除1000次。89S52內(nèi)含4KB的FPEROM, 一般 的EEPROM的字節(jié)擦除時(shí)間和寫入時(shí)間基本上均為 10ms,對(duì)于任一個(gè)實(shí)時(shí)控 制系統(tǒng)來說,這樣長的時(shí)間是不可能在線修改程序的。 CPU為Atmel公司生產(chǎn)的89C51/89C52/89C55 等。出廠所配晶振頻率為 11.0592MH,每個(gè)機(jī)器周期為1.085us,用戶更換晶振以提高速度; 存貯器為64K,前4K/8K20K 在CPU內(nèi)部,其它程序在EPR0M27512 中; 數(shù)據(jù)存貯器為32K(62256),地址為8000 FF

13、FFH; I /O 擴(kuò)展 8155,片內(nèi) RAM 地址:2000-20FFH ; 精品 welcome 8155命令口地址為:2100H ; A 口地址:2101H B 口地址:2102H C 口地址:2103H ; T 低八位: 2104H T 高八位: 2105H ; 多路模擬開關(guān)的使用: IN0: P1=0F8H IN4: P1=0FCH IN1 : P1=0F9H IN5: P1=0FDH IN2: P1=0FAH IN5 : P1=0FEH IN3: P1=0FBH IN7 : P1=0FFH 不掉電數(shù)據(jù)存貯器為: 500EH-507FH ; 控制板: 160 x109(mm) 供電

14、: +5V300mA +12V100mA -12V100mA ; AT89C51 是一種低功耗、高性能的片內(nèi)含有 4KB 快閃可編程 /擦除只讀存儲(chǔ) 器( FPE R 0 M - Flash Programmable and Eraseable Read 0nly Memory ) 的 8 位 CM0S 微控制器,使用高密度、非易失存儲(chǔ)技術(shù)制造, 并且與 80C51 引腳和指令系統(tǒng)完全兼容; 主要性能: 與 MCS-51 微控制器產(chǎn)品系列兼容; 片內(nèi)有 4KB 可在線重復(fù)編程的快閃擦寫存儲(chǔ)器 。 引腳簡介:精品 welcome 整體介紹: 該系統(tǒng)采用的芯片還有:DS18B20溫度傳感器、ULN

15、2003A以及MP28GA 四相五線步進(jìn)電機(jī),并且步進(jìn)電機(jī)在雙八拍的方式下工作,步矩為 5.625 ,步 進(jìn)電機(jī)的旋轉(zhuǎn)方向由正反轉(zhuǎn)控制信號(hào)控制。 步進(jìn)電機(jī)的步數(shù)由鍵盤輸入,可通過 獨(dú)立鍵盤S1S9輸入的步數(shù)分別為 3、6、9、12、15、18、21、24和27步 對(duì)應(yīng)的角度為16.875 、33.725 、151.875 ,且鍵盤S10具有鍵盤鎖功 能,當(dāng)鍵盤上鎖時(shí),步進(jìn)電機(jī)不接受輸入步數(shù),也不會(huì)運(yùn)轉(zhuǎn)。只有當(dāng)鍵盤鎖打開, 選擇運(yùn)轉(zhuǎn)方向并且輸入步數(shù)時(shí),步進(jìn)電機(jī)才開始工作。 電機(jī)運(yùn)轉(zhuǎn)的時(shí)候有正轉(zhuǎn)指示燈 D2和反轉(zhuǎn)指示燈D3指示。 電機(jī)在運(yùn)轉(zhuǎn)過程中用溫度傳感器采集步進(jìn)電機(jī)外表溫度 (可設(shè)置),如果過

16、熱, 則電機(jī)停止運(yùn)轉(zhuǎn),同時(shí)紅色指示燈亮,同時(shí)蜂鳴器警報(bào)響。 5 軟件設(shè)計(jì) 5.1 分析論證 P1.O L_ P1.1 L_ Pl .2 C. Pl U匚 PI.4 匚 Pl .fi 匚 PI 6 r Pl ,7 匚 RST匚 R3 n 匚 (TXD P3,1 r TNTO F3 2 r (INT1 P3 EZ (T0 P3 4 匚 (T1 P3 5 匚 4WFb P3燈匚 (RD P3.7 匚 XTAL2 匸 XTAL1 匚 QND匸 1 40 2 39 3 3B -1 37 5 36 6 35 7 34 3 33 9 32 1O 31 11 30 12 29 23 14 27 16 as 1

17、6 25 117 24 18 23 19 22 20 21 二I VCC PO O (ADO) Zl PC. 1 (ADI ) 二I HU (AO) PO 3 (AD3) J PO.4 (AO4) PO 5 (AOS) Zl PO 6 (AO6) I PO 7 (ADZ) Z1 EA.VPP ALE 4s ROG Z1 PSEN 二I Pl? 7 (A1 5 P2.6 (A14) Zl P2.5 A13 F* 4 (A12 二I P2.3 (A1 1 Zl P2 2 (AID Z3 P2 1 A9) 二P2.0 (AB) 精品 welcome 此步進(jìn)電機(jī)控制電路設(shè)計(jì)與實(shí)現(xiàn),主要采用了 ULN2

18、003A 驅(qū)動(dòng)芯片,溫度 傳感器芯片 DS18B20 芯片,獨(dú)立鍵盤等,包含步進(jìn)電機(jī)運(yùn)行驅(qū)動(dòng),溫度采集, 主函數(shù)三大功效模塊。 5.1.1 步進(jìn)電機(jī)運(yùn)行驅(qū)動(dòng)模塊 由于該系統(tǒng)中沒有完全使用 I/O 端口,所以采用了獨(dú)立鍵盤的工作方式,系 統(tǒng)工作時(shí), 鍵盤控制的 I/O 口處于高電平狀態(tài), 當(dāng)按鍵按下時(shí)觸發(fā)低電平, 驅(qū)動(dòng) 程序?qū)崟r(shí)監(jiān)測(cè)并立即響應(yīng)執(zhí)行相應(yīng)工作。 5.1.2 溫度采集模塊 該模塊的重要功效是對(duì)步進(jìn)電機(jī)的外表采集溫度, 并且對(duì)已設(shè)定好的數(shù)值進(jìn) 行比較,從而確定機(jī)身溫度是否過高,正常時(shí)電機(jī)正常轉(zhuǎn)動(dòng),當(dāng)溫度過高時(shí)電機(jī) 不再轉(zhuǎn)動(dòng),并且蜂鳴器報(bào)警,紅燈點(diǎn)亮。 5.1.3 主函數(shù)模塊 該模塊重要功

19、效是調(diào)動(dòng)溫度采集函數(shù)、 步進(jìn)電機(jī)函數(shù)中函數(shù), 實(shí)現(xiàn)模塊化編 程。精品 welcome 5.1.4整體功效 AT89S52 芯片控制 ULN2003A 以及運(yùn)轉(zhuǎn)步數(shù),當(dāng)電機(jī)外表溫度超過 5.2程序流程圖 主程序流程圖如圖所示: 芯片驅(qū)動(dòng)步進(jìn)電機(jī),掃描鍵盤輸入運(yùn)行狀態(tài) 32 C是電機(jī)停止轉(zhuǎn)動(dòng),并且報(bào)警! 精品 welcome 圖2程序流程圖 5.3程序清單 步進(jìn)電機(jī)驅(qū)動(dòng)函數(shù): /BJDJ.h #ifndef _BJDJ_H_ #defi ne _BJDJ_H #in elude #include vintrins.h #defi ne uchar un sig ned char 精品 welcom

20、e #define uint unsigned int sbit k1=P1A0; sbit k2=PMl; sbit k3=P1A2; sbit k4=P1A3; sbit k5=P1A4; sbit k6=P1A5; sbit k7=P1A6; sbit k8=P1A7; sbit k9=P0A0; sbit k10=P0A1; sbit k11=P0A2; sbit k12=P0A3; void key_scan(); void motor_turn(); void motor_stop(); #endif /BJDJ.c #includeBJDJ.h uchar code FFW8=0

21、 xfe,0 xfc,0 xfd,0 xf9,0 xfb,0 xf3,0 xf7,0 xf6; 精品 welcome uchar code REV8=0 xf6,0 xf7,0 xf3,0 xfb,0 xf9,0 xfd,0 xfc,0 xfe;精品 welcome uchar rate ; extern uchar i=0; /* 延時(shí) void delay(uchar x) uchar i,j; for(i=0;ix;i+); for(j = 0 ; j110 ; j+) ; /* /* 步進(jìn)電機(jī)正轉(zhuǎn) void motor_ffw(uchar x) uchar i,j; for (j=0;

22、 jx; j+) for (i=0; i8; i+) / 轉(zhuǎn) 1*n 圈 / 一個(gè)周期轉(zhuǎn) 45 度 P2 = FFWi; / 取數(shù)據(jù) 精品 I* welcome delay(150); /* /* /* 步進(jìn)電機(jī)反轉(zhuǎn) void motor_rev(uchar x) uchar i,j; for (j=0; jx; j+) / 轉(zhuǎn) 1*n 圈 / 退出此循環(huán)程序 for (i=0; i8; i+) / 一個(gè)周期轉(zhuǎn) 45 度 P2 = REVi; / 取數(shù)據(jù) delay(150); / 調(diào)節(jié)轉(zhuǎn)速 / 調(diào)節(jié)轉(zhuǎn)速 精品 if(k4=0) welcome *鍵盤掃描 * void key_scan()

23、i=0; if(k1=0) delay(5); if(k1=0)i=24; if(k2=0) delay(5); if(k2=0)i=46; if(k3=0) delay(5); if(k3=0)i=72; delay(5); if(k4=0)i=96; 精品 if(k8=0)i=192; welcome if(k5=0) delay(5); if(k5=0)i=120; if(k6=0) delay(5); if(k6=0)i=144; if(k7=0) delay(5); if(k7=0)i=168; if(k8=0) delay(5);精品 if(k11=0&k12=1&

24、k10=1) welcome if(k9=0) delay(5); if(k9=0)i=216; /* *電機(jī)轉(zhuǎn)動(dòng) */ void motor_turn() if(k10=0) delay(5); if(k10=0)P2=P2&0 xf0; if(k11=0&k12=1&k10=1) delay(5); motor_ffw(i);精品 welcome if(k12=0&k11=1&k10=1) delay(5); if(k12=0&k11=1&k10=1) motor_rev(i); void motor_stop() motor_rev

25、(0); 溫度傳感器 18B20 驅(qū)動(dòng)函數(shù): /DS18B20.h #ifndef _DS18B20_H_ #define _DS18B20_H_ #include #include #define uint unsigned int #define uchar unsigned char extern uchar T;精品 welcome sbit DQ=P2A7; sbit bell=P0A4; sbit led1=P0A7; void delay2(uint t); void ow_reset(void); void write_byte(uchar val); void read_te

26、mp(); void work_temp(); #endif /DS18B20.c #includeDS18B20.h extern uchar data temp_data2=0 x00,0 x00; uchar flag; char presence=1; uchar T; / 溫度輸入口 11 微秒延時(shí)函數(shù) */ void delay2(uint t) for(;t0;t-); 精品 welcome void write_byte(uchar val)18B20 復(fù)位函數(shù) void ow_reset(void) presence=1; while(presence) while(pres

27、ence) DQ=1;_nop_();_nop_(); DQ=0; / delay2(50); / 550us DQ=1; / delay2(6); / 66us presence=DQ; / presence=0 delay2(45); / 延時(shí) 500us presence = DQ; 繼續(xù)下一步 DQ=1; 18B20 寫命令函數(shù) 精品 welcome uchar i; for (i=8; i0; i-) DQ=1; _nop_();_nop_(); DQ = 0; _nop_();_nop_();_nop_();_nop_();_nop_();/5us DQ = val&0 x

28、01; delay2(6); val=val/2; DQ = 1; delay2(1); *18B20 讀 1 個(gè)字節(jié)函數(shù) */ uchar read_byte(void) uchar i; uchar value = 0; for (i=8;i0;i-)/ 最低位移出 /66us / 右移一位 精品 welcome DQ=1; _nop_();_nop_(); value=1; DQ = 0; / _nop_();_nop_();_nop_();_nop_(); /4us DQ = 1; _nop_();_nop_();_nop_();_nop_(); /4us if(DQ)value|=0

29、 x80; delay2(6); /66us DQ=1; return(value); void read_temp() ow_reset(); / 總線復(fù)位 write_byte(0 xCC); / 發(fā) Skip ROM 命令 write_byte(0 xBE); / 發(fā)讀命令 temp_data0=read_byte(); / 溫度低 8 位 temp_data1=read_byte(); / 溫度高 8 位 ow_reset();讀出溫度函數(shù) */ 精品 welcome write_byte(0 xCC); / Skip ROM write_byte(0 x44); / 發(fā)轉(zhuǎn)換命令 vo

30、id work_temp() T=(temp_data0&0 xf0)4)|(temp_data1&0 x07)31) motor_stop(); led1=0; bell=1; delay2(1000); else led1=1; bell=0; motor_turn(); 發(fā)轉(zhuǎn)換命令 / 讀出 18B20 溫度數(shù)據(jù) / 處理溫度數(shù)據(jù)精品 welcome 6 調(diào)試過程及分析 編寫好的源程序在 Keil 編譯后呈現(xiàn)很多錯(cuò)誤,這些錯(cuò)誤有很多時(shí)平時(shí)的實(shí) 驗(yàn)碰到過的, 例如: 字母開頭忘加 0, 零和字母 O 弄混雜了, 有些標(biāo)號(hào)用了幾次, CJNE 寫成了 CJNZ 等等,幸好這些

31、錯(cuò)誤在平時(shí)的實(shí)驗(yàn)中碰到了,所以改錯(cuò)誤很 輕易,。除了常見的錯(cuò)誤外,還有幾條錯(cuò)誤時(shí)在前幾次實(shí)驗(yàn)都沒有出現(xiàn)過,如: AJMP 跳轉(zhuǎn)指令跳不回指定的地位,是由于跳轉(zhuǎn)的長度大于 AJMP 跳轉(zhuǎn)的長度, 最后只好用 LJMP 跳轉(zhuǎn)后才跳到指定的地位。 在前期的程序編寫和幾天的上機(jī)調(diào) 試,使我又獲得了很多新的知識(shí), 由于前期編寫程序時(shí)查了很多材料學(xué)到了很多 知識(shí),這幾天的調(diào)試更時(shí)獲得很新的知識(shí),由于程序中又很多的錯(cuò)誤,為了修正 錯(cuò)誤必須看書或向別人請(qǐng)教, 在這個(gè)過程中無意識(shí)的獲得了很多知識(shí)。 同時(shí)也使 我對(duì)單片機(jī)更感興趣了,這點(diǎn)我感到很重要,相信這會(huì)對(duì)以后的學(xué)習(xí)有所幫助。精品 welcome 7 設(shè)計(jì)總結(jié)

32、 本次課程設(shè)計(jì)是用ZY15MCU12BD綜合單片機(jī)實(shí)驗(yàn)箱及串口電路設(shè)計(jì)單片 機(jī)驅(qū)動(dòng)步進(jìn)電機(jī)電路,經(jīng)過兩個(gè)星期的調(diào)試,成果滿足基本設(shè)計(jì)請(qǐng)求,驗(yàn)證無誤。 設(shè)計(jì)重要用到了多種芯片,程序也比較長 ,比較麻煩,同時(shí)也碰到了不少艱苦, 尤其是關(guān)于校時(shí)模塊和時(shí)鐘與秒表之間切換的設(shè)計(jì)實(shí)現(xiàn)。 關(guān)于顯示模塊,在以前 的實(shí)驗(yàn)中做過,所以題目很輕易解決。 精品 welcome 通過本次設(shè)計(jì),我懂得了時(shí)鐘的設(shè)計(jì)流程,尤其是硬、軟件的設(shè)計(jì)方法以及精品 welcome 鍵盤顯示電路的基礎(chǔ)功效及編程方法和鍵盤電路和顯示電路的一般原理, 步了解了 8031 定時(shí)器的應(yīng)用和中斷 CPU 程序的編程方法,開辟了思路, 了分工協(xié)作才能和分析

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論