基于51單片機(jī)的步進(jìn)電機(jī)控制系統(tǒng)-單片機(jī)課程設(shè)計(jì)報(bào)告_第1頁
基于51單片機(jī)的步進(jìn)電機(jī)控制系統(tǒng)-單片機(jī)課程設(shè)計(jì)報(bào)告_第2頁
基于51單片機(jī)的步進(jìn)電機(jī)控制系統(tǒng)-單片機(jī)課程設(shè)計(jì)報(bào)告_第3頁
基于51單片機(jī)的步進(jìn)電機(jī)控制系統(tǒng)-單片機(jī)課程設(shè)計(jì)報(bào)告_第4頁
基于51單片機(jī)的步進(jìn)電機(jī)控制系統(tǒng)-單片機(jī)課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(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è)計(jì)以STC

2、89C52單片機(jī)作為微控制器,使用混合式步進(jìn)電機(jī)驅(qū)動(dòng)芯片ULN2003A趾行驅(qū)動(dòng),實(shí)現(xiàn)了對(duì)步進(jìn)電機(jī)運(yùn)行狀態(tài)的簡單控制,并將其運(yùn)行狀態(tài)用LCD160皴晶顯示。本次設(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)鍵詞:STC89C52I片機(jī),28BYJ-48步進(jìn)電機(jī),ULN2003AN區(qū)動(dòng)芯片,LCD1602顯示,電機(jī)控制,點(diǎn)動(dòng)第一章總體設(shè)計(jì)方案本次課程設(shè)計(jì)本課程設(shè)計(jì)以STC89C5印片機(jī)作為微控制器,使用混合式步進(jìn)電機(jī)驅(qū)動(dòng)芯片ULN2003A電行驅(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)行、停止,

3、設(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?programmabie)J可反復(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可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。??STC89C52具

4、有如下特點(diǎn):40個(gè)引腳,8k?Bytes?Flash片內(nèi)程序存儲(chǔ)器,256?bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),32個(gè)外部雙向輸入/輸出(I/O)D,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口看門狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器。?2.2、 STC89c52芯片引腳功能說明STC89C52RCI腳圖STC89C52RCI腳功能說明VCC(40弓唧):電源電壓VSS(20弓唧):接地P0端口(P0.0P0.7,3932引腳):P0口是一個(gè)漏極開路的8位雙向I/O口。作為輸出端口,每個(gè)引腳能驅(qū)動(dòng)8個(gè)TTL負(fù)載,對(duì)端口P0寫入“1”時(shí),可以作為高阻抗輸入。

5、在訪問外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0也可以提供低8位地址和8位數(shù)據(jù)的復(fù)用總線。止匕時(shí),P0內(nèi)部上拉電阻有效。在FlashROM編程時(shí),P0端口接收指令字節(jié);而在校驗(yàn)程序時(shí),則輸出指令字節(jié)。驗(yàn)證時(shí),要求外接上拉電阻。P1端口(P1.0P1.7,18弓I腳):P1口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口。P1的輸出緩沖器可驅(qū)動(dòng)(吸收或者輸出電流方式)4個(gè)TTL輸入。對(duì)端口寫入1時(shí),通過內(nèi)部的上拉電阻把端口拉到高電位,這是可用作輸入口。P1口作輸入口使用時(shí),因?yàn)橛袃?nèi)部上拉電阻,那些被外部拉低的引腳會(huì)輸出一個(gè)電流()0P2端口(P2.0P2.7,2128弓I腳):P2口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/

6、O端口。P2的輸出緩沖器可以驅(qū)動(dòng)(吸收或輸出電流方式)4個(gè)TTL輸入。對(duì)端口寫入1時(shí),通過內(nèi)部的上拉電阻把端口拉到高電平,這時(shí)可用作輸入口。P2作為輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì)輸出一個(gè)電流()0在訪問外部程序存儲(chǔ)器和16位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行"MOVXDPTR”指令)時(shí),P2送出高8位地址。在訪問8位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行“MOVXR1”指令)時(shí),P2口引腳上的內(nèi)容(就是專用寄存器(SFR)區(qū)中的P2寄存器的內(nèi)容),在整個(gè)訪問期間不會(huì)改變。在又tFlashROM編程和程序校驗(yàn)期間,P2也接收高位地址和一些控制信號(hào)。P3端口(P3.0P3

7、.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è)電流()。在又tFlashROM編程或程序校驗(yàn)時(shí),P3還接收一些控制信號(hào),如下表所小:引腳號(hào)復(fù)用功能P3.0RXD(串行輸入口)P3.1TXD(用行輸出口)P3.2(外部中斷0)P3.3(外部中斷1)P3.4T0(定時(shí)器0的外部輸入)P3.5T1(定時(shí)器1的外部輸入)P3.6(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7(外部數(shù)據(jù)存儲(chǔ)器讀

8、選通)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以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時(shí)器或時(shí)鐘使用。然而,特別強(qiáng)調(diào),在每次訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),ALE脈沖將會(huì)跳過。如果需要,通過將地址位8

9、EH的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)。為使能從0000H到FFFFH的外部程序存儲(chǔ)器讀取指令,必須接GND。注意加密方式1時(shí),將內(nèi)部鎖定位RESET。為了執(zhí)行內(nèi)部程序指令,應(yīng)該接VCC

10、。在Flash編程期間,也接收12伏VPP電壓。XTAL1(19引腳):振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。XTAL2(18引腳):振蕩器反相放大器的輸入端。二、28BYJ-48步進(jìn)電機(jī)步進(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í)可以通過控制脈沖頻率來控制電機(jī)轉(zhuǎn)動(dòng)的速度和加速度,從而達(dá)到調(diào)速的目的。本次設(shè)計(jì)是采用步進(jìn)電機(jī)28BYJ48型四相八拍電機(jī),電壓為DC5V-DC12V當(dāng)對(duì)步進(jìn)電機(jī)施加一系列連續(xù)不

11、斷的控制脈沖時(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。)步進(jìn)電機(jī)24BYJ48的相關(guān)電氣參數(shù).額定電壓:12VDC舊有電壓:5V、6V、24V).相數(shù):4.減速比:1/64(另有減速比:1/16、1/32).步距角:5.6250/64.驅(qū)動(dòng)方式:4

12、相8拍.直流電阻:200Q±7%(25C)(按客戶要求而定:80、130歐姆).空載牽入頻率:600Hz.空載牽出頻率:1000Hz.自定位轉(zhuǎn)矩:34.3mN.m.絕緣電阻:10MQ(500V).絕緣介電強(qiáng)度:600VAC/1mA/1S.絕緣等級(jí):A.溫升:50K(120Hz).噪音:40dB(120Hz).重量:大約40g.未注公差按:GB1804-m.轉(zhuǎn)向:CCW2.2.3步進(jìn)電機(jī)的基本術(shù)語相數(shù)產(chǎn)生不同對(duì)極NS磁場的激磁線圈對(duì)數(shù),常用m表示。拍數(shù)完成一個(gè)磁場周期性變化所需脈沖數(shù)或?qū)щ姞顟B(tài)用n表示,或指電機(jī)轉(zhuǎn)過一個(gè)齒距角所需脈沖數(shù),比如說本次設(shè)計(jì)中使用的24BYJ48有單(單相繞組

13、通電)四拍(A-B-C-D-A。),雙(雙相繞組通電)四拍(AB-BC-CD-DA-AB-。),八拍(A-AB-B-BC-C-CD-D-DA-A。)步距角對(duì)應(yīng)一個(gè)脈沖信號(hào),電機(jī)轉(zhuǎn)子轉(zhuǎn)過的角位移用8表示。8=360度(轉(zhuǎn)子齒數(shù)J*運(yùn)行拍數(shù)),以常規(guī)二相,轉(zhuǎn)子齒為50齒電機(jī)為例。四拍運(yùn)行時(shí)步距角為9=360度/(50*4)=1.8度(俗稱整步),八拍運(yùn)行時(shí)步距角為8=360度/(50*8)=0.9度(俗稱半步)。信號(hào)分配四相步進(jìn)電機(jī)按照其通電方式的不同,可以分為單四拍,雙四拍和雙八拍三種工作方式。單四拍與雙四拍的步距角相等,均為11.25度,而八拍的步距角則是單四拍與雙四拍的一半,5.625度。單

14、(單相繞組通電)四拍(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)采用ULN2003K片。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的電壓,輸出還可以在高

15、負(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液晶也叫1602字符型液晶它是一種專門用來顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊它有若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符。目前市面上字符液晶絕大多數(shù)是基于HD44780夜晶芯片的,控制原理是完全相同的,因此基于HD44780W的控制程序可以很方便地應(yīng)用于市面上大部分的字符型液晶。其各引腳功能見下圖:其典型接口電路如下圖:其基本操作時(shí)序?yàn)椋鹤x狀態(tài)???輸入:RS=LRW=HE=H?輸

16、出:DB0-DB7狀態(tài)字寫指令???輸入:RS=LRW=LE=T降沿月沖,DB3DB7胎令碼輸出:無讀數(shù)據(jù)???輸入:RS=HRW=HE=H?輸出:DB0-DB7教據(jù)寫數(shù)據(jù)???輸入:RS=HRW=LE=T降沿月沖,DB3DB7嗷據(jù)輸出:無第三章電路設(shè)計(jì)、單片機(jī)最小系統(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.

17、0P2.2分別接RSRWEN,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口控制,此處使用單片機(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ù)

18、修改,調(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ī)這種器件,但當(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ī)、ULN200W區(qū)動(dòng)芯片、1602液晶顯示。在這之后我開始考慮要實(shí)現(xiàn)的電機(jī)功能,

19、最后決定實(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)等狀態(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ì)今

20、后我在學(xué)習(xí)、工作的諸多應(yīng)用場合中很可能會(huì)有用武之地。另外,在這次課設(shè)過程中涉及的LCD1602空制等內(nèi)容也對(duì)我很有幫助。通過本次課設(shè)我對(duì)51單片機(jī)的編程控制、定時(shí)器中斷等知識(shí)也得到了充分的復(fù)習(xí)鞏固??傊?,這次課設(shè)讓我受益匪淺,感謝邱應(yīng)強(qiáng)老師一學(xué)期來單片機(jī)課程的悉心教導(dǎo),這些是我完成本次課設(shè)的基礎(chǔ)和關(guān)鍵。附件一、電路原理圖二、電路PCB圖三、電路實(shí)物圖四、源程序#include<reg52.h>#include<lntrlns.h>/內(nèi)部包含延時(shí)函數(shù)_nop_();#deflneucharunsignedchar#defineuintunsignedint#defined

21、elayNOP();_nop_();_nop_();_nop_();_nop_();ucharcodeFFW8=0xf1,0xf3;0xf2;0xf6,0xf4,0xfc,0xf8,0xf9;/正轉(zhuǎn)相序編碼ucharcodeREV8=0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1;sbitK1=P3A0/運(yùn)行與停止sbitK2:=P3A1/設(shè)圈數(shù)sbitK3:=P3A2/力問轉(zhuǎn)換sbitK4:=P3A3/轉(zhuǎn)速加sbitK5:=P3A4/點(diǎn)動(dòng)sbitK6:=P3A5sbitK7:=P3A6sbitK8:=P3A7sbitLCDRS=P2A0;sbitLCDRW=P

22、2A1;sbitLCDEN=P2A2;biton_off=0,on_off1=0;/運(yùn)行與停止標(biāo)志bitdirection=1;/方向標(biāo)志bitratedr=1;/速率標(biāo)志bitsnum_dr=1;/圈數(shù)標(biāo)志ucharcodecdis1ucharcodecdis2ucharcodecdis3ucharcodecdis4ucharcodecdis5ucharcodecdis6="STEPPINGMOTOR"="CONTROLPROCESS"="STOP"="NUM:RATE:"="RUNNING"

23、="DIANDONG"ucharm,v=0,q=0,q1;uintnumber=0,number1=0;ucharsnum=10,snum1=10,number2=0;/預(yù)設(shè)定圈數(shù)ucharrate=2,rate_ctr;/預(yù)設(shè)定短率uchardata_temp,data_temP1,data_temp2;/*/*/*延時(shí)t毫秒/*11.0592MHz時(shí)鐘,延時(shí)約1ms/*/*/tmsvoiddelay(uintt)(uchark;while(t-)(for(k=0;k<125;k+)(/*/voiddelayB(ucharx)/x*0.14MS(uchari;whi

24、le(x-)(for(i=0;i<13;i+)(/*/*/*/*檢查LCD忙狀態(tài)/*lcd_busy為1時(shí),忙,等待。為0時(shí),閑,可寫指令與數(shù)據(jù)。/*/*/bitlcd_busy()(bitresult;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=LE=®脈沖,D0-D7=旨令碼。/*/*/voidlcd_wcmd(ucharcmd)(while(lcd_busy();LCD_RS=0;LCD_RW

25、=0;LCD_EN=0;_nop_();_nop_();P0=cmd;delayNOP();LCD_EN=1;delayNOP();LCD_EN=0;/*/*/*寫顯示數(shù)據(jù)到LCD/*RS=H,RW=LE=®脈沖,D0-D7嗷據(jù)。/*/*/voidlcd_wdat(uchardat)while(lcd_busy();LCD_RS=1;LCD_RW=0;LCD_EN=0;P0=dat;delayNOP();LCD_EN=1;delayNOP();LCD_EN=0;)一/*/*/*LCD初始化設(shè)定/*/*/*8位數(shù)據(jù)voidlcd_init()delay(30);lcd_wcmd(0x3

26、8);16*2delay(5);lcd_wcmd(0x38);delay(5);lcd_wcmd(0x38);delay(5);lcd_wcmd(0x0c);/delay(5);lcd_wcmd(0x06);/delay(5);lcd_wcmd(0x01);/delay(5);)*/顯示,5*7點(diǎn)陣,顯示開,關(guān)光標(biāo)寫入新數(shù)據(jù)后光標(biāo)右移清除LCD的顯示內(nèi)容*/*/*設(shè)定顯示位置/*lcd_wcmd(pos|0x80);/)一數(shù)據(jù)指針=80+地址變量/*/voidlcd_pos(ucharpos)/*/*/*LCD1602初始顯示子程序/*/*/voidLCD_init_DIS()一一/*/*/*

27、數(shù)據(jù)轉(zhuǎn)換子程序/*/*voiddata_conv()data_temP1=data_temp/10;/if(data_temP1=0)data_temP1=0x20;/elsedata_temP1=data_temP1+0x30;data_temp2=data_temp%10;/data_temp2=data_temp2+0x30;一一/*/*delay(10);/lcd_init();/lcd_pos(0);/1個(gè)字符一m=0;while(cdis1m!='0')/lcd_wdat(cdis1m);m+;lcd_pos(0x40);/個(gè)字符一m=0;while(cdis2m!

28、='0')lcd_wdat(cdis2m);/m+;delay(3000);/lcd_pos(0);/1個(gè)字符一m=0;while(cdis3m!='0')/lcd_wdat(cdis3m);m+;lcd_pos(0x40);/個(gè)字符一m=0;while(cdis4m!='0')lcd_wdat(cdis4m);/m+;for(m=0;m<2;m+)lcd_pos(0x0c+m);/lcd_wdat(0x3e);一延時(shí)初始化LCD設(shè)置顯示位置為第一行的第顯示字符設(shè)置顯示位置為第二行第1顯示字符延時(shí)設(shè)置顯示位置為第一行的第顯示字符設(shè)置顯示位置

29、為第二行第1顯示字符顯示方向符號(hào)*/*/高位高位為0不顯示低位*/*數(shù)據(jù)顯示子程序/*/*/voiddata_dis()(data_temp=snum;/data_conv();lcd_pos(0x44);lcd_wdat(data_temP1);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);)一一顯示圈數(shù)顯示速率/*/*/*顯示運(yùn)行方向符號(hào)/*/*/voidmotor_DR(

30、)if(direction=1)for(m=0;m<2;m+)lcd_pos(0x0c+m);lcd_wdat(0x3e);/正轉(zhuǎn)方向標(biāo)志顯示方向符號(hào)elsefor(m=0;m<2;m+)(lcd_pos(0x0c+m);/lcd_wdat(0x3c);/反轉(zhuǎn)方向標(biāo)志顯示方向符號(hào))/*/*/*顯示運(yùn)行狀態(tài)/*/*/voidmotor_RUN()if(on_off=1)TR0=1;lcd_pos(0);/m=0;while(cdis5m!='0')lcd_wdat(cdis5m);m+;motor_DR();一elseTR0=0;P1=0x0f;設(shè)置顯示位置為第一行的

31、第1個(gè)字符/RUNNING/lcd_pos(0);/設(shè)置顯示位置為第一行的第1個(gè)字符m=0;while(cdis3m!='0')lcd_wdat(cdis3m);/STOPm+;motor_DR();/snum=snum1;/number1=0;/清圈數(shù)計(jì)數(shù)器voidmotor_RUN1()if(on_off1=1)TR1=1;rate_ctr=0;lcd_pos(0);/設(shè)置顯示位置為第一行的第1個(gè)字符m=0;while(cdis6m!='0')lcd_wdat(cdis6m);/DIANDONGm+;motor_DR();/一elseTR1=0;P1=0x0

32、f;lcd_pos(0);/設(shè)置顯示位置為第一行的第1個(gè)字符m=0;while(cdis3m!='0')lcd_wdat(cdis3m);/STOPm+;motor_DR();/snum=snum1;/number1=0;/清圈數(shù)計(jì)數(shù)器/*主程序*main()LCD_init_DIS();TMOD=0x11;/T0定時(shí)方式1TL0=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();一/K1end等待鍵釋放/*/if(K2=0)(delay(20);if(K2=0)(if(snum_dr=1)snum+;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論