版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、微機(jī)原理與接口技術(shù)課程設(shè)計(jì)報(bào)告基于51單片機(jī)的步進(jìn)電機(jī)控制系統(tǒng)學(xué)號(hào) 姓名 班級(jí) 2011級(jí)電子2班 華僑大學(xué)電子工程系摘要步進(jìn)電機(jī)是將電脈沖信號(hào)變換成角位移或直線位移的執(zhí)行部件。步進(jìn)電機(jī)可以直接用數(shù)字信號(hào)驅(qū)動(dòng),使用非常方便。步進(jìn)電動(dòng)機(jī)的角位移量和輸入脈沖的個(gè)數(shù)嚴(yán)格成正比,在時(shí)間上與輸入脈沖同步,因此只要控制輸入脈沖的數(shù)量、頻率及電動(dòng)機(jī)繞組通電的相序,便可獲得所需的轉(zhuǎn)角、轉(zhuǎn)速及轉(zhuǎn)動(dòng)方向。在沒有脈沖輸入時(shí),在繞組電源的激勵(lì)下氣隙磁場能使轉(zhuǎn)子保持原有位置處于定位狀態(tài)。因此非常適合于單片機(jī)控制。它的運(yùn)行速度和步距不受電源電壓波動(dòng)及負(fù)載的影響, 因而被廣泛應(yīng)用于數(shù)模轉(zhuǎn)換、速度控制和位置控制系統(tǒng)。本課程設(shè)
2、計(jì)以STC89C52單片機(jī)作為微控制器,使用混合式步進(jìn)電機(jī)驅(qū)動(dòng)芯片ULN2003AN進(jìn)行驅(qū)動(dòng),實(shí)現(xiàn)了對(duì)步進(jìn)電機(jī)運(yùn)行狀態(tài)的簡單控制,并將其運(yùn)行狀態(tài)用LCD1602液晶顯示。本次設(shè)計(jì)能實(shí)現(xiàn)的功能有電機(jī)運(yùn)行、停止,設(shè)置運(yùn)行圈數(shù),調(diào)節(jié)轉(zhuǎn)速,電機(jī)正反轉(zhuǎn),點(diǎn)動(dòng)等。關(guān)鍵詞:STC89C52單片機(jī),28BYJ-48步進(jìn)電機(jī),ULN2003AN驅(qū)動(dòng)芯片,LCD1602顯示,電機(jī)控制,點(diǎn)動(dòng)第一章 總體設(shè)計(jì)方案本次課程設(shè)計(jì)本課程設(shè)計(jì)以STC89C52單片機(jī)作為微控制器,使用混合式步進(jìn)電機(jī)驅(qū)動(dòng)芯片ULN2003AN進(jìn)行驅(qū)動(dòng),實(shí)現(xiàn)了對(duì)步進(jìn)電機(jī)運(yùn)行狀態(tài)的簡單控制,并將其運(yùn)行狀態(tài)用LCD1602液晶顯示。本次設(shè)計(jì)能實(shí)現(xiàn)的功
3、能有電機(jī)運(yùn)行、停止,設(shè)置運(yùn)行圈數(shù),調(diào)節(jié)轉(zhuǎn)速,電機(jī)正反轉(zhuǎn),點(diǎn)動(dòng)等。系統(tǒng)流程圖如下:第二章 硬件原理一、 STC89c52單片機(jī)2.1、STC89c52芯片簡介STC89C52是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含8k Bytes ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及STC89C52引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的STC89C52
4、可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。 STC89C52具有如下特點(diǎn):40個(gè)引腳,8k Bytes Flash片內(nèi)程序存儲(chǔ)器,256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),32個(gè)外部雙向輸入/輸出(I/O)口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器。 2.2、STC89c52芯片引腳功能說明STC89C52RC引腳圖STC89C52RC引腳功能說明VCC(40引腳):電源電壓VSS(20引腳):接地P0端口(P0.0P0.7,
5、3932引腳):P0口是一個(gè)漏極開路的8位雙向I/O口。作為輸出端口,每個(gè)引腳能驅(qū)動(dòng)8個(gè)TTL負(fù)載,對(duì)端口P0寫入“1”時(shí),可以作為高阻抗輸入。在訪問外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也可以提供低8位地址和8位數(shù)據(jù)的復(fù)用總線。此時(shí),P0口內(nèi)部上拉電阻有效。在Flash ROM編程時(shí),P0端口接收指令字節(jié);而在校驗(yàn)程序時(shí),則輸出指令字節(jié)。驗(yàn)證時(shí),要求外接上拉電阻。P1端口(P1.0P1.7,18引腳):P1口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口。P1的輸出緩沖器可驅(qū)動(dòng)(吸收或者輸出電流方式)4個(gè)TTL輸入。對(duì)端口寫入1時(shí),通過內(nèi)部的上拉電阻把端口拉到高電位,這是可用作輸入口。P1口作輸入口使用時(shí),
6、因?yàn)橛袃?nèi)部上拉電阻,那些被外部拉低的引腳會(huì)輸出一個(gè)電流()。P2端口(P2.0P2.7,2128引腳):P2口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O端口。P2的輸出緩沖器可以驅(qū)動(dòng)(吸收或輸出電流方式)4個(gè)TTL輸入。對(duì)端口寫入1時(shí),通過內(nèi)部的上拉電阻把端口拉到高電平,這時(shí)可用作輸入口。P2作為輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì)輸出一個(gè)電流()。在訪問外部程序存儲(chǔ)器和16位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行“MOVX DPTR”指令)時(shí),P2送出高8位地址。在訪問8位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行“MOVX R1”指令)時(shí),P2口引腳上的內(nèi)容(就是專用寄存器(SFR)區(qū)中的P2
7、寄存器的內(nèi)容),在整個(gè)訪問期間不會(huì)改變。在對(duì)Flash ROM編程和程序校驗(yàn)期間,P2也接收高位地址和一些控制信號(hào)。P3端口(P3.0P3.7,1017引腳):P3是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O端口。P3的輸出緩沖器可驅(qū)動(dòng)(吸收或輸出電流方式)4個(gè)TTL輸入。對(duì)端口寫入1時(shí),通過內(nèi)部的上拉電阻把端口拉到高電位,這時(shí)可用作輸入口。P3做輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì)輸入一個(gè)電流()。在對(duì)Flash ROM編程或程序校驗(yàn)時(shí),P3還接收一些控制信號(hào)。,如下表所示:引腳號(hào)復(fù)用功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2(外部中斷0)P3.3
8、 (外部中斷1)P3.4T0(定時(shí)器0的外部輸入)P3.5T1(定時(shí)器1的外部輸入)P3.6(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7(外部數(shù)據(jù)存儲(chǔ)器讀選通)RST(9引腳):復(fù)位輸入。當(dāng)輸入連續(xù)兩個(gè)機(jī)器周期以上高電平時(shí)為有效,用來完成單片機(jī)單片機(jī)的復(fù)位初始化操作??撮T狗計(jì)時(shí)完成后,RST引腳輸出96個(gè)晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認(rèn)狀態(tài)下,復(fù)位高電平有效。ALE/(30引腳):地址鎖存控制信號(hào)(ALE)是訪問外部程序存儲(chǔ)器時(shí),鎖存低8位地址的輸出脈沖。在Flash編程時(shí),此引腳()也用作編程輸入脈沖。在一般情況下,ALE以晶振六分之
9、一的固定頻率輸出脈沖,可用來作為外部定時(shí)器或時(shí)鐘使用。然而,特別強(qiáng)調(diào),在每次訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),ALE脈沖將會(huì)跳過。如果需要,通過將地址位8EH的SFR的第0位置“1”,ALE操作將無效。這一位置“1”,ALE僅在執(zhí)行MOVX或MOV指令時(shí)有效。否則,ALE將被微弱拉高。這個(gè)ALE使能標(biāo)志位(地址位8EH的SFR的第0位)的設(shè)置對(duì)微控制器處于外部執(zhí)行模式下無效。(29引腳):外部程序存儲(chǔ)器選通信號(hào)()是外部程序存儲(chǔ)器選通信號(hào)。當(dāng)AT89C51RC從外部程序存儲(chǔ)器執(zhí)行外部代碼時(shí),在每個(gè)機(jī)器周期被激活兩次,而訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),將不被激活。/VPP(31引腳):訪問外部程序存儲(chǔ)器控制信號(hào)。為使
10、能從0000H到FFFFH的外部程序存儲(chǔ)器讀取指令,必須接GND。注意加密方式1時(shí),將內(nèi)部鎖定位RESET。為了執(zhí)行內(nèi)部程序指令,應(yīng)該接VCC。在Flash編程期間,也接收12伏VPP電壓。XTAL1(19引腳):振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。XTAL2(18引腳):振蕩器反相放大器的輸入端。二、 28BYJ-48步進(jìn)電機(jī)2.2.1步進(jìn)電機(jī)的工作原理步進(jìn)電機(jī)是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機(jī)構(gòu)。通俗一點(diǎn)講:當(dāng)步進(jìn)驅(qū)動(dòng)器接收到一個(gè)脈沖信號(hào),它就驅(qū)動(dòng)步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動(dòng)一個(gè)固定的角度(及步進(jìn)角)??梢酝ㄟ^控制脈沖個(gè)來控制角位移量,從而達(dá)到準(zhǔn)確定位的目的;同時(shí)可以通過控制脈沖頻率來
11、控制電機(jī)轉(zhuǎn)動(dòng)的速度和加速度,從而達(dá)到調(diào)速的目的。本次設(shè)計(jì)是采用步進(jìn)電機(jī)28BYJ48型四相八拍電機(jī),電壓為DC5VDC12V。當(dāng)對(duì)步進(jìn)電機(jī)施加一系列連續(xù)不斷的控制脈沖時(shí),它可以連續(xù)不斷地轉(zhuǎn)動(dòng)。每一個(gè)脈沖信號(hào)對(duì)應(yīng)步進(jìn)電機(jī)的某一相或兩相繞組的通電狀態(tài)改變一次,也就對(duì)應(yīng)轉(zhuǎn)子轉(zhuǎn)過一定的角度(一個(gè)步距角)。當(dāng)通電狀態(tài)的改變完成一個(gè)循環(huán)時(shí),轉(zhuǎn)子轉(zhuǎn)過一個(gè)齒距。四相步進(jìn)電機(jī)可以在不同的通電方式下運(yùn)行,常見的通電方式有單(單相繞組通電)四拍(A-B-C-D-A。),雙(雙相繞組通電)四拍(AB-BC-CD-DA-AB-。),八拍(A-AB-B-BC-C-CD-D-DA-A。)其相序分配表如下:2.2.2 步進(jìn)電
12、機(jī)24BYJ48的相關(guān)電氣參數(shù)1.額定電壓:12VDC(另有電壓:5V、6V、24V)2.相數(shù):43.減速比:1/64(另有減速比:1/16、1/32)4.步距角:5.625°/645.驅(qū)動(dòng)方式:4相8拍6.直流電阻:200±7%(25)(按客戶要求而定:80、130歐姆)7.空載牽入頻率:600Hz8.空載牽出頻率:1000Hz9.牽入轉(zhuǎn)矩:34.3mN.m(120Hz)10.自定位轉(zhuǎn)矩:34.3mN.m11.絕緣電阻:10M(500V)12.絕緣介電強(qiáng)度:600VAC/1mA/1S13.絕緣等級(jí):A14.溫升:50K(120Hz)15.噪音:40dB(120Hz)16.
13、重量:大約40g17.未注公差按:GB1804-m18.轉(zhuǎn)向:CCW2.2.3 步進(jìn)電機(jī)的基本術(shù)語2.2.3.1 相數(shù)產(chǎn)生不同對(duì)極N、S磁場的激磁線圈對(duì)數(shù),常用m表示。2.2.3.2 拍數(shù)完成一個(gè)磁場周期性變化所需脈沖數(shù)或?qū)щ姞顟B(tài)用n表示,或指電機(jī)轉(zhuǎn)過一個(gè)齒距角所需脈沖數(shù),比如說本次設(shè)計(jì)中使用的24BYJ48有單(單相繞組通電)四拍(A-B-C-D-A。),雙(雙相繞組通電)四拍(AB-BC-CD-DA-AB-。),八拍(A-AB-B-BC-C-CD-D-DA-A。)2.2.3.3 步距角對(duì)應(yīng)一個(gè)脈沖信號(hào),電機(jī)轉(zhuǎn)子轉(zhuǎn)過的角位移用表示。=360度(轉(zhuǎn)子齒數(shù)J*運(yùn)行拍數(shù)),以常規(guī)二相,轉(zhuǎn)子齒為50
14、齒電機(jī)為例。四拍運(yùn)行時(shí)步距角為=360度/(50*4)=1.8度(俗稱整步),八拍運(yùn)行時(shí)步距角為=360度/(50*8)=0.9度(俗稱半步)。2.2.3.4 信號(hào)分配四相步進(jìn)電機(jī)按照其通電方式的不同,可以分為單四拍,雙四拍和雙八拍三種工作方式。單四拍與雙四拍的步距角相等,均為11.25度,而八拍的步距角則是單四拍與雙四拍的一半,5.625度。單(單相繞組通電)四拍(A-B-C-D-A。),雙(雙相繞組通電)四拍(AB-BC-CD-DA-AB-。),八拍 (A-AB-B-BC-C-CD-D-DA-A。)。這里選取的是雙相八拍的工作方式。三、 ULN2003達(dá)林頓陳列芯片步進(jìn)電機(jī)的驅(qū)動(dòng)采用ULN
15、2003芯片。ULN2003 是高耐壓、大電流達(dá)林頓陳列, 由七個(gè)硅 NPN 達(dá)林頓管組成。 ULN2003 的每一對(duì)達(dá)林頓都串聯(lián)一個(gè) 2.7K 的基極電阻 , 在 5V 的工作電壓下它能與 TTL 和 CMOS 電路直接相連, 可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器來處理的數(shù)據(jù)。 ULN2003 工作電壓高, 工作電流大, 灌電流可達(dá) 500mA , 并且能夠在關(guān)態(tài)時(shí)承受 50V 的電壓, 輸出還可以在高負(fù)載電流并行運(yùn)行。 其引腳及內(nèi)部原理圖如下:本設(shè)計(jì)中實(shí)驗(yàn)1、2、3、4腳做輸入端,16、15、14、13做相對(duì)應(yīng)的輸出端,起到放大的作用,以驅(qū)動(dòng)電機(jī)。四、 LCD1602液晶1602液晶也叫16
16、02字符型液晶 它是一種專門用來顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊 它有若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符。目前市面上字符液晶絕大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780寫的控制程序可以很方便地應(yīng)用于市面上大部分的字符型液晶。其各引腳功能見下圖:其典型接口電路如下圖:其基本操作時(shí)序?yàn)椋鹤x狀態(tài) 輸入:RS=L,RW=H,E=H
17、; 輸出:DB0DB7=狀態(tài)字 寫指令 輸入:RS=L,RW=L,E=下降沿脈沖,DB0DB7=指令碼 輸出:無 讀數(shù)據(jù) 輸入:RS=H,RW=H,E=H &
18、#160; 輸出:DB0DB7=數(shù)據(jù) 寫數(shù)據(jù) 輸入:RS=H,RW=L,E=下降沿脈沖,DB0DB7=數(shù)據(jù) 輸出:無第三章 電路設(shè)計(jì)一、單片機(jī)最
19、小系統(tǒng)與LCD1602接口電路本電路模塊包括單片機(jī)最小系統(tǒng),即51單片機(jī)、時(shí)鐘電路、復(fù)位電路、上電開關(guān)等,和1602液晶接口電路。模塊電路原理圖如下:各子模塊電路如下:(1) 時(shí)鐘產(chǎn)生電路用于產(chǎn)生單片機(jī)的控制時(shí)鐘,實(shí)際使用時(shí)采用11.0592M晶振。(2) 復(fù)位電路用于單片機(jī)手動(dòng)復(fù)位。(3) 1602液晶接口電路用于連接1602液晶,P2.0P2.2分別接RS、RW、EN,P0口接數(shù)據(jù)指令輸入口。二、步進(jìn)電機(jī)驅(qū)動(dòng)及接口電路本電路模塊用于單片機(jī)對(duì)步進(jìn)電機(jī)的控制及使用ULN2003芯片對(duì)步進(jìn)電機(jī)進(jìn)行驅(qū)動(dòng)。原理圖如下:由于所選24BYJ48步進(jìn)電機(jī)為四相步進(jìn)電機(jī),故只需4個(gè)單片機(jī)IO口控制,此處使用
20、單片機(jī)的IO口P1.0-P1.3,使用ULN2003的引腳1-4做輸入,16-13引腳做輸出口。三、按鍵電路本次設(shè)計(jì)為了便于今后功能擴(kuò)展使用了8個(gè)按鍵。原理圖如下:第四章 程序設(shè)計(jì)進(jìn)入主程序后首先進(jìn)行LCD初始化和定時(shí)器中斷初始化,之后進(jìn)行依次對(duì)按鍵進(jìn)行掃描,當(dāng)檢測到相應(yīng)的按鍵按下時(shí),即執(zhí)行相應(yīng)的功能。系統(tǒng)流程圖如下:第五章 系統(tǒng)調(diào)試經(jīng)過對(duì)程序的反復(fù)修改,調(diào)試之后,系統(tǒng)可以實(shí)現(xiàn)電機(jī)運(yùn)行、停止,設(shè)置運(yùn)行圈數(shù),調(diào)節(jié)轉(zhuǎn)速,電機(jī)正反轉(zhuǎn),點(diǎn)動(dòng)等功能,同時(shí)液晶顯示相應(yīng)的狀態(tài)。第六章 心得體會(huì)為其近一個(gè)月的單片機(jī)課程設(shè)計(jì)結(jié)束了,在這一個(gè)月中我收獲了很多,感到很有意義。早在大二自學(xué)單片機(jī)時(shí)我就注意到步進(jìn)電機(jī)這
21、種器件,但當(dāng)時(shí)只是略作了解,沒有學(xué)習(xí)它的原理與編程控制,這次借課程設(shè)計(jì)的機(jī)會(huì),我得以對(duì)步進(jìn)電機(jī)進(jìn)行了較為深入的了解和學(xué)習(xí)。在課設(shè)的前期我通過查閱了許多資料,學(xué)習(xí)了步進(jìn)電機(jī)的工作原理。之后我開始考慮整體硬件電路的設(shè)計(jì),顯示、驅(qū)動(dòng)電路的設(shè)計(jì),最終選擇使用28BYJ48型步進(jìn)電機(jī)、ULN2003驅(qū)動(dòng)芯片、1602液晶顯示。在這之后我開始考慮要實(shí)現(xiàn)的電機(jī)功能,最后決定實(shí)現(xiàn)電機(jī)運(yùn)行、停止,設(shè)置運(yùn)行圈數(shù),調(diào)節(jié)轉(zhuǎn)速,電機(jī)正反轉(zhuǎn),點(diǎn)動(dòng)等功能。在完成了原理圖與PCB圖繪制、電路元件焊接后,我開始著手進(jìn)行程序設(shè)計(jì)。通過查閱資料我了解到控制步進(jìn)電機(jī)的關(guān)鍵是利用定時(shí)器中斷控制脈沖的快慢、順序來調(diào)節(jié)電機(jī)轉(zhuǎn)速、正反轉(zhuǎn)等狀
22、態(tài)。以此為基礎(chǔ)我開始了程序設(shè)計(jì)與調(diào)試,在這個(gè)過程中我遇到過一些困難,最后通過深入的學(xué)習(xí)、不斷修改程序和同學(xué)的幫助終于得到解決。最終,本次課程設(shè)計(jì)完成了預(yù)想的對(duì)步進(jìn)電機(jī)的幾項(xiàng)基本控制功能。步進(jìn)電機(jī)調(diào)速系統(tǒng)適用各種現(xiàn)場自動(dòng)化控制,特別應(yīng)用于小功率負(fù)載的控制;具有成本底,性能穩(wěn)定,可靠性高等優(yōu)點(diǎn)。我覺得通過這次課程設(shè)計(jì)我對(duì)步進(jìn)電機(jī)的基本控制得到了掌握,這對(duì)今后我在學(xué)習(xí)、工作的諸多應(yīng)用場合中很可能會(huì)有用武之地。另外,在這次課設(shè)過程中涉及的LCD1602控制等內(nèi)容也對(duì)我很有幫助。通過本次課設(shè)我對(duì)51單片機(jī)的編程控制、定時(shí)器中斷等知識(shí)也得到了充分的復(fù)習(xí)鞏固??傊@次課設(shè)讓我受益匪淺,感謝邱應(yīng)強(qiáng)老師一學(xué)期
23、來單片機(jī)課程的悉心教導(dǎo),這些是我完成本次課設(shè)的基礎(chǔ)和關(guān)鍵。附件一、 電路原理圖二、 電路PCB圖三、 電路實(shí)物圖四、 源程序#include <reg52.h>#include <intrins.h> /內(nèi)部包含延時(shí)函數(shù) _nop_();#define uchar unsigned char#define uint unsigned int#define delayNOP(); _nop_();_nop_();_nop_();_nop_();uchar code FFW8=0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9;/正轉(zhuǎn)相序編碼uc
24、har code REV8=0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1;sbit K1 = P30; /運(yùn)行與停止sbit K2 = P31; /設(shè)圈數(shù)sbit K3 = P32; /方向轉(zhuǎn)換sbit K4 = P33; /轉(zhuǎn)速加sbit K5 = P34; /點(diǎn)動(dòng)sbit K6 = P35;sbit K7 = P36;sbit K8 = P37;sbit LCD_RS = P20; sbit LCD_RW = P21;sbit LCD_EN = P22;bit on_off=0,on_off1=0; /運(yùn)行與停止標(biāo)志bit direction=1; /方向
25、標(biāo)志bit rate_dr=1; /速率標(biāo)志bit snum_dr=1; /圈數(shù)標(biāo)志uchar code cdis1 = " STEPPING MOTOR "uchar code cdis2 = "CONTROL PROCESS"uchar code cdis3 = " STOP "uchar code cdis4 = "NUM: RATE: "uchar code cdis5 = " RUNNING "uchar code cdis6 = " DIAN DONG "ucha
26、r m,v=0,q=0,q1;uint number=0,number1=0; uchar snum=10,snum1=10,number2=0; /預(yù)設(shè)定圈數(shù)uchar rate=2,rate_ctr; /預(yù)設(shè)定速率uchar data_temp,data_temP1,data_temp2; /*/* /* 延時(shí)t毫秒 /* 11.0592MHz時(shí)鐘,延時(shí)約1ms /* /*/void delay(uint t)/tms uchar k; while(t-) for(k=0; k<125; k+) /*/void delayB(uchar x) /x*0.14MS uchar i; w
27、hile(x-) for (i=0; i<13; i+) /*/*/* /*檢查LCD忙狀態(tài) /*lcd_busy為1時(shí),忙,等待。為0時(shí),閑,可寫指令與數(shù)據(jù)。 /* /*/ bit lcd_busy() bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result = (bit)(P0&0x80); LCD_EN = 0; return(result); /*/* /*寫指令數(shù)據(jù)到LCD /*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。 /* /*/void lcd_wcmd(uchar cmd)
28、while(lcd_busy(); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; /*/* /*寫顯示數(shù)據(jù)到LCD /*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。 /* /*/void lcd_wdat(uchar dat) while(lcd_busy(); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP(); LCD_EN = 1; delayN
29、OP(); LCD_EN = 0; /*/* /* LCD初始化設(shè)定 /* /*/void lcd_init() delay(30); lcd_wcmd(0x38); /16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù) delay(5); lcd_wcmd(0x38); delay(5); lcd_wcmd(0x38); delay(5); lcd_wcmd(0x0c); /顯示開,關(guān)光標(biāo) delay(5); lcd_wcmd(0x06); /寫入新數(shù)據(jù)后光標(biāo)右移 delay(5); lcd_wcmd(0x01); /清除LCD的顯示內(nèi)容 delay(5);/*/* /* 設(shè)定顯示位置 /* /*/void
30、 lcd_pos(uchar pos) lcd_wcmd(pos | 0x80); /數(shù)據(jù)指針=80+地址變量/*/* /* LCD1602初始顯示子程序 /* /*/void LCD_init_DIS() delay(10); /延時(shí) lcd_init(); /初始化LCD lcd_pos(0); /設(shè)置顯示位置為第一行的第1個(gè)字符 m = 0; while(cdis1m != '0') /顯示字符 lcd_wdat(cdis1m); m+; lcd_pos(0x40); /設(shè)置顯示位置為第二行第1個(gè)字符 m = 0; while(cdis2m != '0')
31、 lcd_wdat(cdis2m); /顯示字符 m+; delay(3000); /延時(shí) lcd_pos(0); /設(shè)置顯示位置為第一行的第1個(gè)字符 m = 0; while(cdis3m != '0') /顯示字符 lcd_wdat(cdis3m); m+; lcd_pos(0x40); /設(shè)置顯示位置為第二行第1個(gè)字符 m = 0; while(cdis4m != '0') lcd_wdat(cdis4m); /顯示字符 m+; for(m=0;m<2;m+) lcd_pos(0x0c+m); /顯示方向符號(hào) lcd_wdat(0x3e); /*/*
32、/*數(shù)據(jù)轉(zhuǎn)換子程序/*/*/void data_conv() data_temP1=data_temp/10; /高位 if(data_temP1=0) data_temP1=0x20; /高位為0不顯示 else data_temP1=data_temP1+0x30; data_temp2=data_temp%10; /低位 data_temp2=data_temp2+0x30; /*/*/*數(shù)據(jù)顯示子程序/*/*/void data_dis() data_temp = snum; /顯示圈數(shù) data_conv(); lcd_pos(0x44); lcd_wdat(data_temP1);
33、 lcd_pos(0x45); lcd_wdat(data_temp2); data_temp = rate; /顯示速率 data_conv(); lcd_pos(0x4d); lcd_wdat(data_temP1); lcd_pos(0x4e); lcd_wdat(data_temp2);/*/*/* 顯示運(yùn)行方向符號(hào)/*/*/void motor_DR() if(direction=1) /正轉(zhuǎn)方向標(biāo)志 for(m=0;m<2;m+) lcd_pos(0x0c+m); /顯示方向符號(hào) lcd_wdat(0x3e); else for(m=0;m<2;m+) /反轉(zhuǎn)方向標(biāo)志
34、lcd_pos(0x0c+m); /顯示方向符號(hào) lcd_wdat(0x3c); /*/*/* 顯示運(yùn)行狀態(tài)/*/*/void motor_RUN() if(on_off=1) TR0=1; lcd_pos(0); /設(shè)置顯示位置為第一行的第1個(gè)字符 m = 0; while(cdis5m != '0') lcd_wdat(cdis5m); /RUNNING m+; motor_DR(); / else TR0=0; P1 =0x0f; lcd_pos(0); /設(shè)置顯示位置為第一行的第1個(gè)字符 m = 0; while(cdis3m != '0') lcd_w
35、dat(cdis3m); /STOP m+; motor_DR(); / snum=snum1; / number1=0; /清圈數(shù)計(jì)數(shù)器 void motor_RUN1() if(on_off1=1) TR1=1; rate_ctr=0; lcd_pos(0); /設(shè)置顯示位置為第一行的第1個(gè)字符 m = 0; while(cdis6m != '0') lcd_wdat(cdis6m); /DIANDONG m+; motor_DR(); / else TR1=0; P1 =0x0f; lcd_pos(0); /設(shè)置顯示位置為第一行的第1個(gè)字符 m = 0; while(cd
36、is3m != '0') lcd_wdat(cdis3m); /STOP m+; motor_DR(); / snum=snum1; / number1=0; /清圈數(shù)計(jì)數(shù)器 /* * 主程序 * */main() LCD_init_DIS(); TMOD = 0x11; /T0定時(shí)方式1 TL0 = 0xff; TH0 = 0xf5; TL1 = 0xff; TH1 = 0xf5; EA = 1; ET0 = 1; ET1=1; P1 = 0x0f; while(1) if(K1=0) delay(20); if(K1=0) while(K1=0); /等待鍵釋放 on_off=on_off; motor_RUN(); /K1 end/*/ if(K2=0) delay(20); if(K2=0) if(snum_dr=1) snum+; snum1
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年滬教版八年級(jí)物理下冊(cè)月考試卷含答案
- 2025年粵教滬科版選擇性必修3歷史下冊(cè)階段測試試卷含答案
- 2025年粵教新版八年級(jí)地理下冊(cè)階段測試試卷
- 2025年蘇教版七年級(jí)生物下冊(cè)月考試卷
- 遵義職業(yè)技術(shù)學(xué)院《中國古代文學(xué)與中學(xué)語文教育》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五版木工雕刻藝術(shù)創(chuàng)作授權(quán)合同4篇
- 2025年度農(nóng)用拖拉機(jī)租賃與農(nóng)產(chǎn)品溯源合同4篇
- 二零二五年度金融行業(yè)派遣勞務(wù)安全保障合同4篇
- 2025年度屋頂綠化租賃與節(jié)能減排合同4篇
- 二零二五年倉儲(chǔ)設(shè)備采購與運(yùn)輸合同3篇
- 2024年英語高考全國各地完形填空試題及解析
- 智能養(yǎng)老院視頻監(jiān)控技術(shù)方案
- 你比我猜題庫課件
- 體育概論(第二版)課件第三章體育目的
- 無人駕駛航空器安全操作理論復(fù)習(xí)測試附答案
- 建筑工地春節(jié)留守人員安全技術(shù)交底
- 默納克-NICE1000技術(shù)交流-V1.0
- 蝴蝶蘭的簡介
- 老年人心理健康量表(含評(píng)分)
- 《小兒靜脈輸液速度》課件
- 營銷人員薪酬標(biāo)準(zhǔn)及績效考核辦法
評(píng)論
0/150
提交評(píng)論