天大自動(dòng)化智能課程設(shè)計(jì)報(bào)告_第1頁(yè)
天大自動(dòng)化智能課程設(shè)計(jì)報(bào)告_第2頁(yè)
天大自動(dòng)化智能課程設(shè)計(jì)報(bào)告_第3頁(yè)
天大自動(dòng)化智能課程設(shè)計(jì)報(bào)告_第4頁(yè)
天大自動(dòng)化智能課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

智能裝置課程設(shè)計(jì)題 目:智能電機(jī)測(cè)速儀姓 名:晁平復(fù)班 級(jí):自動(dòng)化 4班學(xué) 號(hào):3008203263同組人:王平一、 課程設(shè)計(jì)目的:深入了解PIC16F877單片機(jī)的工作原理,熟練掌握匯編語(yǔ)言程序設(shè)計(jì)方法,熟練使用MPLAB-ICD仿真器及MPLAB-IDE仿真調(diào)試軟件。b) 通過(guò)該課程設(shè)計(jì)使學(xué)生初步掌握以單片機(jī)為核心的智能裝置設(shè)計(jì)的簡(jiǎn)單原則、和方法。

步驟c) 熟悉智能裝置設(shè)計(jì)中有關(guān)的硬件設(shè)計(jì)調(diào)試,如人機(jī)界面等。d) 熟悉智能裝置設(shè)計(jì)中相關(guān)軟件的設(shè)計(jì)、編程和調(diào)試。二、 課程設(shè)計(jì)內(nèi)容:以16F877單片機(jī)為核心,結(jié)合給出的其他原器件和智能裝置實(shí)驗(yàn)系統(tǒng)原有的內(nèi)容設(shè)計(jì)智能電機(jī)測(cè)速顯示儀硬件電路。利用試驗(yàn)板提供的光電耦合器采集電機(jī)速度。將采集的速度值通過(guò)液晶顯示器顯示出來(lái)。將轉(zhuǎn)速內(nèi)容上傳至計(jì)算機(jī)界面。利用SPI總線與D/A轉(zhuǎn)換器,操控電機(jī)進(jìn)行調(diào)速,使電機(jī)能夠達(dá)到范圍內(nèi)的任何要求轉(zhuǎn)速。三、 課程設(shè)計(jì)要求:根據(jù)實(shí)驗(yàn)指導(dǎo)書(shū)的設(shè)計(jì)內(nèi)容及所給出的元件,設(shè)計(jì)智能電機(jī)測(cè)速顯示儀硬件原理圖。按照設(shè)計(jì)好的硬件原理圖在實(shí)驗(yàn)板上用導(dǎo)線搭建硬件電路。c) 用萬(wàn)用表檢查硬件電路連接是否正確,檢查無(wú)誤后上電并編制簡(jiǎn)單的測(cè)試程步調(diào)試各部分功能。

序分d) 在各部分功能實(shí)現(xiàn)后, 編制完整的智能電機(jī)速度測(cè)試系統(tǒng)軟件與調(diào)速軟件,軟硬件聯(lián)調(diào),直到達(dá)到設(shè)計(jì)要求。

并進(jìn)行按照設(shè)計(jì)內(nèi)容要求測(cè)試儀表誤差并做分析,給出儀表精度,完成后由教師進(jìn)行驗(yàn)收檢查。四、 課程設(shè)計(jì)設(shè)備儀器MPLAB-ICD模塊與仿真頭智能裝置實(shí)驗(yàn)系統(tǒng)安裝了MPLAB-IDE開(kāi)發(fā)軟件的計(jì)算機(jī)數(shù)字萬(wàn)用表導(dǎo)線若干元器件PIC16F877芯片(6MHz晶振)LCD顯示屏(雙行液晶單色顯示,可顯示漢字與字符)測(cè)速電機(jī)(轉(zhuǎn)速范圍約在0~2500轉(zhuǎn),自帶紅外線光電開(kāi)關(guān)測(cè)速,測(cè)速結(jié)果以脈沖形式從電機(jī)的 1口輸出,電機(jī)轉(zhuǎn)速由 dianji1與dianji2兩個(gè)端口的電位差決定)RS-232串行總線接口(支持異步傳輸,波特率自定,11與12兩個(gè)端口分別為發(fā)送和接收數(shù)據(jù)口)v.MAX515芯片(12位D/A轉(zhuǎn)換器,輸出電壓對(duì)應(yīng)0~5V)vi.可調(diào)電位器(用于純測(cè)速程序的電機(jī)手動(dòng)調(diào)速,調(diào)速電壓0~5V)五、 課程設(shè)計(jì)硬件原理圖:六、課程設(shè)計(jì)硬件設(shè)計(jì)思路:電機(jī)測(cè)速與調(diào)速,首先測(cè)速部分需要對(duì)電機(jī)測(cè)速脈沖引入PIC芯片,并進(jìn)行定時(shí)計(jì)數(shù),測(cè)定在一段時(shí)間內(nèi)電機(jī)轉(zhuǎn)了多少圈,以此推算電機(jī)的轉(zhuǎn)速。固需要用到定時(shí)器與計(jì)數(shù)器,其中使用timer0做計(jì)數(shù)器,timer1做定時(shí)器,因此電機(jī)的1端引腳需要接RA4。此外轉(zhuǎn)速計(jì)算結(jié)束后需要顯示到LCD屏以及通過(guò)SCI通訊傳送至電腦,其中LCD屏控制需要三條線,由于不計(jì)劃使用SPI總線傳輸(后面調(diào)速會(huì)占用)而采用手動(dòng)時(shí)鐘完成,所以使用任意三條I/O端口線即可,但SCI需要固定的RC6與RC7,所以RC6需要接RS-232通訊模塊的11端口,RC7接12端口,LCD則選用RD0~RD2控制,其中RD0接CS端,RD1接CLK,RD2接SID。最后,根據(jù)原理圖要求,電機(jī)dianji1端口還需要接上電位器,以實(shí)現(xiàn)與

7端口接dianji1端口,dianji2端口接地,此外dianji2端口存在電位差且可調(diào),再將所有元件的電源和地接上,至此電機(jī)測(cè)速部分的接線完成。電機(jī)調(diào)速部分的電路與測(cè)速部分的差別在于電機(jī)的接線,由于之前使用電位器手動(dòng)調(diào)速,現(xiàn)在需要改用 MAX515 輸出的電壓來(lái)調(diào)速,所以拔掉電位器,電機(jī)的

dianji1

端口接MAX515方式來(lái)對(duì)

的vout(即7端口)。MAX515的數(shù)據(jù)來(lái)源是PIC芯片,此處我使用SPI總線傳輸MAX515進(jìn)行數(shù)據(jù)傳送,因此MAX515的兩個(gè)時(shí)鐘、數(shù)據(jù)輸入端(SCLK、DIN)需要接SPI總線傳輸?shù)奶厥舛丝赗C3與RC5,其中RC3接SCLK(即2端口),RC5接DIN(即1端口),CS片選端則接任意I/O端口即可,我選擇了RC0接CS(即3端口),再將的芯片電源和地接好,至此調(diào)速系統(tǒng)的接線完成。七、 調(diào)試步驟以及各步驟調(diào)試過(guò)程中出現(xiàn)的問(wèn)題與解決方法:a) 計(jì)數(shù)與定時(shí)調(diào)試:最初計(jì)數(shù)器計(jì)數(shù)結(jié)果一直為 0,我將電機(jī)的脈沖輸出端 1端口接在LED燈上,先確定脈沖輸出正常,然后檢測(cè)控制字是否有錯(cuò)誤。最后確定是控制字寫(xiě)錯(cuò)了。LCD屏顯調(diào)試:最初接線完成之后沒(méi)有顯示,先確定了一遍接線沒(méi)有問(wèn)題,由于是手寫(xiě)時(shí)鐘輸入,所以不涉及端口使用錯(cuò)誤的狀況,因此檢查了一遍程序編寫(xiě)時(shí)是否有端口寫(xiě)錯(cuò)的情況。核對(duì)之后還不行,于是我嘗試著查看是否有一些指令正確的寫(xiě)入了LCD屏,嘗試方法就是將顯示狀態(tài)開(kāi)/關(guān)的控制字設(shè)置成顯示光標(biāo),并且光標(biāo)閃爍,如果這句控制字能夠成功寫(xiě)入, 屏幕上將有一個(gè)光標(biāo)閃爍, 則至少時(shí)鐘書(shū)寫(xiě)程序是正確的,不能正常顯示應(yīng)該是數(shù)據(jù)書(shū)寫(xiě)或者是指令書(shū)寫(xiě)順序有誤。 但實(shí)驗(yàn)證明單純?cè)O(shè)置光標(biāo)也不能正常顯示, 則手寫(xiě)時(shí)鐘部分存在問(wèn)題, 經(jīng)過(guò)詢問(wèn)老師最后找到問(wèn)題癥結(jié): 1、片選信號(hào)應(yīng)當(dāng)先置零,然后置一,寫(xiě)完指令后重新置零才算成功寫(xiě)入,之前一直保持高電平?jīng)]有電平變化所以寫(xiě)入失敗。 2、每寫(xiě)完一條指令后需要加一段短延時(shí),大致在 20ms左右,這樣才能保證屏幕完成指令接收,并保證下一條指令可以正確寫(xiě)入。更改程序之后問(wèn)題解決。RS-232串口通信調(diào)試:最初遇到的問(wèn)題是電腦接收的信息與發(fā)送端信息完全不一致,但如果發(fā)送端保持發(fā)送的數(shù)據(jù)是穩(wěn)定的,接收端接收的數(shù)據(jù)就也是穩(wěn)定的,但接收地?cái)?shù)據(jù)與發(fā)送數(shù)據(jù)差距很大,且沒(méi)有直接的數(shù)學(xué)對(duì)應(yīng)關(guān)系。于是考慮應(yīng)該是發(fā)送方式導(dǎo)致的問(wèn)題,檢查發(fā)現(xiàn)錯(cuò)誤使用了同步傳輸方式(實(shí)驗(yàn)板的RS-232接口只允許異步方式)于是更改為異步,將波特率設(shè)置在9600,接收恢復(fù)正常。但為什么同步方式可以成功接收數(shù)據(jù),而且接收的數(shù)據(jù)還是穩(wěn)定的,到最后也沒(méi)有搞明白,留著問(wèn)題以后等知識(shí)豐富了再解決吧!測(cè)速精度測(cè)試與調(diào)試:首先要說(shuō)明一點(diǎn),由于課程設(shè)計(jì)要求有測(cè)速與調(diào)速兩部分,但由于兩部分需要的測(cè)速精度不盡相同,調(diào)速部分為了追求調(diào)速的效率,需要在較短的時(shí)間內(nèi)完成調(diào)速,所以調(diào)速過(guò)程中每一步測(cè)速都需要時(shí)間盡可能短,但時(shí)間短的代價(jià)就是測(cè)速精度大大下降(此部分原理會(huì)在誤差分析部分進(jìn)行解釋),但如果拋開(kāi)調(diào)速,而單純測(cè)速的話,便可以通過(guò)延長(zhǎng)測(cè)速時(shí)間來(lái)達(dá)到更高的測(cè)速精度。鑒于如下原因,本人將測(cè)速與調(diào)速分成兩個(gè)程序書(shū)寫(xiě),調(diào)速程序中包含課程設(shè)計(jì)的全部環(huán)節(jié)(包括測(cè)速),可以作為最終的課設(shè)成果上交,但測(cè)速時(shí)間為1.2s,測(cè)速精度較低。另一個(gè)為單獨(dú)的測(cè)速程序,包含除調(diào)速環(huán)節(jié)外其他的程序部分,測(cè)速時(shí)間為6s,測(cè)速精度大幅提升,作為補(bǔ)充。此處只介紹測(cè)速程序的精度測(cè)試與調(diào)節(jié),調(diào)速程序的測(cè)速部分相近,不予介紹。測(cè)速精度測(cè)試運(yùn)用到了萬(wàn)用表的頻率功能,將萬(wàn)用表的兩個(gè)表筆分別放置在電機(jī)的1端口與地,測(cè)試電機(jī)測(cè)速的脈沖頻率,考慮到電機(jī)有兩個(gè)扇葉,并且轉(zhuǎn)速單位為轉(zhuǎn)/分鐘,因此萬(wàn)用表的顯示頻率需要除以2再乘以 60,得到的即為轉(zhuǎn)速結(jié)果,與屏顯的轉(zhuǎn)速結(jié)果進(jìn)行比對(duì)。測(cè)速程序使用的是6s測(cè)速,雖然為兩個(gè)扇葉的累計(jì)結(jié)果,但在設(shè)置

timer0

計(jì)數(shù)器時(shí)使用了內(nèi)置的1:2分頻器,因此得到的轉(zhuǎn)速數(shù)值便為 6s的真實(shí)轉(zhuǎn)速,將這個(gè)轉(zhuǎn)速乘以 10便為一分鐘的轉(zhuǎn)速,顯示在屏幕上。因此測(cè)速程序的轉(zhuǎn)速誤差應(yīng)該在± 10轉(zhuǎn)/分鐘。經(jīng)過(guò)測(cè)試,滿足誤差范圍要求,測(cè)試過(guò)程一次成功,沒(méi)遇到什么困難,測(cè)試通過(guò)。調(diào)速部分調(diào)試:截止到上一階段,必選內(nèi)容(測(cè)速部分)已全部調(diào)試完成,在此基礎(chǔ)上完成調(diào)速的調(diào)試可以避免前一段出現(xiàn)問(wèn)題干擾調(diào)速調(diào)試過(guò)程。由于在前面的測(cè)速階段已經(jīng)完成了用電位器調(diào)節(jié)電機(jī)的轉(zhuǎn)速,所以在使用MAX515調(diào)速時(shí)主要調(diào)試重點(diǎn)就在于D/A轉(zhuǎn)換器的使用和SPI通信上,只要D/A能夠正常工作,提供給電機(jī)電壓,電機(jī)一定可以正常運(yùn)轉(zhuǎn)。而D/A轉(zhuǎn)換器自身不存在什么問(wèn)題,其信號(hào)輸入依靠的是PIC芯片的SPI通信,因此是否能夠正常運(yùn)行主要看SPI通信是否能夠成功完成對(duì)D/A轉(zhuǎn)換器的信息錄入。調(diào)試過(guò)程中最初發(fā)生的問(wèn)題是無(wú)論SPI通信寫(xiě)入的數(shù)值是多少,電機(jī)都會(huì)維持在800轉(zhuǎn)/分。由于不是0轉(zhuǎn)/分,所以起初以為D/A已經(jīng)成功的輸出了一個(gè)電壓,說(shuō)明程序里第一次給定的數(shù)值已經(jīng)成功的通過(guò)SPI通信傳送給D/A,并且成功地進(jìn)行了轉(zhuǎn)換并輸出,問(wèn)題出在第二次第三次的SPI通信,也就是說(shuō)一旦程序進(jìn)行了一次循環(huán),就再也無(wú)法正常使用SPI通信功能了。然而在這樣的思路下經(jīng)過(guò)了一段時(shí)間的更改和調(diào)試,問(wèn)題仍然沒(méi)有解決,調(diào)試工作也一度陷入困境,這里要感謝葉浩然、張瑞小組,葉浩然在調(diào)試時(shí)也遇到了類(lèi)似的問(wèn)題,無(wú)論他往D/A轉(zhuǎn)換器里寫(xiě)入什么數(shù)值,轉(zhuǎn)速都是800轉(zhuǎn)/分,這個(gè)提醒把我從之前的思維定勢(shì)里拉了出來(lái),我嘗試著往D/A里寫(xiě)入00H,發(fā)現(xiàn)轉(zhuǎn)速還是800轉(zhuǎn)/分,說(shuō)明D/A驅(qū)動(dòng)電機(jī)時(shí),電機(jī)的最低轉(zhuǎn)速就是800轉(zhuǎn)/分,到不了0,因此我的程序SPI通信部分其實(shí)是存在問(wèn)題的。由于MAX515是一個(gè)12位D/A轉(zhuǎn)換器,而SPI每次只能發(fā)送8位數(shù)據(jù),因此我此前的操作方式是連續(xù)往SPI通信寄存器里寫(xiě)入兩組8位數(shù)據(jù)并順序發(fā)送,以滿足12位的需求,但這樣的發(fā)送方式經(jīng)過(guò)實(shí)驗(yàn)證明不成功,因此我改為使用SPI通信功能發(fā)送高8位數(shù)據(jù),然后關(guān)閉SPI通信,使用手寫(xiě)時(shí)鐘繼續(xù)完成低四位的書(shū)寫(xiě),從而完成12位的傳送要求。程序更改之后D/A正常運(yùn)轉(zhuǎn),整個(gè)系統(tǒng)順利運(yùn)行,調(diào)試完成。八、 軟件設(shè)計(jì)流程圖:a) 軟件設(shè)計(jì)流程框圖(帶調(diào)速部分的總程序框圖) :程序開(kāi)始I/O端口、timer0計(jì)數(shù)器、timer1定時(shí)器、SCI通信、SPI通信模塊初始化將初始給定電壓通過(guò)SPI通信發(fā)送程序結(jié)束初始化電壓變動(dòng)變量,并將最終要求轉(zhuǎn)速數(shù)值存入寄存器是否判定電壓變動(dòng)TMR0清零,開(kāi)始計(jì)數(shù)變量是否為0開(kāi)啟Timer1定時(shí),定時(shí)1.2s將電壓變動(dòng)變量保存TMR0計(jì)數(shù)結(jié)果 減為原來(lái)的一半將計(jì)數(shù)結(jié)果進(jìn)行二進(jìn)制轉(zhuǎn)十進(jìn)制,并將結(jié)果的十位與個(gè)位分別保存 將新的給定電壓通過(guò)SPI通信發(fā)送將十位與個(gè)位作為轉(zhuǎn)速的千位與百位,十位與個(gè)位置零即為轉(zhuǎn)速結(jié)果,添加其他漢字說(shuō)明并將全部?jī)?nèi)容輸出屏幕顯示給定電壓減去 給定電壓加上電壓變動(dòng)變量 電壓變動(dòng)變量將轉(zhuǎn)速通過(guò) SCI傳輸至計(jì)算機(jī)大于 小于 等于將測(cè)得轉(zhuǎn)速與要求轉(zhuǎn)速比較程序設(shè)計(jì)思路概述:測(cè)速程序:測(cè)速程序?yàn)榱俗非鬁y(cè)速精度,因此需要延長(zhǎng)測(cè)速時(shí)間,由于前期通過(guò)測(cè)試了解到電機(jī)轉(zhuǎn)速范圍在0~2500轉(zhuǎn)之間,因此選擇了6秒作為一個(gè)定時(shí)周期,這樣6秒的轉(zhuǎn)數(shù)乘以10便是轉(zhuǎn)速,具體操作起來(lái)就是用測(cè)速得到的結(jié)果轉(zhuǎn)換成10進(jìn)制數(shù)之后,輸出時(shí)在結(jié)尾加一個(gè)0即可。選擇6秒的優(yōu)點(diǎn)是只需要進(jìn)行8位二進(jìn)制轉(zhuǎn)十進(jìn)制,不用16位的轉(zhuǎn)換,程序簡(jiǎn)單不少。而6秒的轉(zhuǎn)數(shù)在0~250之間,沒(méi)有超出timer0計(jì)數(shù)器計(jì)數(shù)范圍。因此只需要將timer0置零,timer1定時(shí)6秒(24*250ms),計(jì)數(shù)結(jié)果進(jìn)行數(shù)制轉(zhuǎn)換后按位輸出(最后一位加0)至LCD屏以及通信接口即可。調(diào)速程序:調(diào)速程序需要在精度可以接受的條件下,盡可能的縮短調(diào)速時(shí)間,而且調(diào)速方法的不同直接決定調(diào)速時(shí)間長(zhǎng)短。我所采用的是閉環(huán)調(diào)速,根據(jù)每次反饋的速度與要求速度的偏差情況改變給定的電壓數(shù)字量,最終使其滿足轉(zhuǎn)速要求。即可以在不了解電機(jī)機(jī)械特性曲線以及D/A誤差的情況下,實(shí)現(xiàn)最終速度的吻合。D/A轉(zhuǎn)換器的數(shù)字量輸入范圍為000H~FFFH,對(duì)應(yīng)0~5V,由于12位數(shù)據(jù)的高八位我使用的是SPI通信傳輸,低四位為手寫(xiě)時(shí)鐘,不易更改,因此為了程序簡(jiǎn)便,默認(rèn)設(shè)置低四位數(shù)據(jù)為0,只通過(guò)調(diào)節(jié)高8位數(shù)據(jù)來(lái)更改轉(zhuǎn)速,這樣產(chǎn)生的誤差可以接受,但程序能簡(jiǎn)便許多,這樣一來(lái),調(diào)速范圍就為00H~FFH了。在這樣的條件下,我設(shè)計(jì)了一種可以在7步之內(nèi)完成調(diào)速的調(diào)速方法,具體思路為向D/A傳送一個(gè)初始的電壓給定:80H(00H~FFH的最中間的值),然后設(shè)置一個(gè)電壓變動(dòng)變量,初始值為40H,第一次測(cè)速結(jié)果與要求速度進(jìn)行比較,若高于要求速度,則用電壓給定減去電壓變動(dòng)變量(若低于則相加),得到的結(jié)果成為新的電壓給定輸出給D/A轉(zhuǎn)換器,隨后將電壓變動(dòng)變量除以二(循環(huán)右移一位),再進(jìn)行新一輪測(cè)速,比較,運(yùn)算,輸出,除二,這樣操作7個(gè)循環(huán)之后(電壓變動(dòng)變量從40H——20H——10H——08H——04H——02H——01H最后變?yōu)?0H)轉(zhuǎn)速將一定可以調(diào)節(jié)到要求的轉(zhuǎn)數(shù)(忽略測(cè)速誤差)。具體原理可以用一個(gè)例子說(shuō)明:假設(shè)系統(tǒng)要求轉(zhuǎn)速為1600轉(zhuǎn),而要想達(dá)到1600轉(zhuǎn)需要PIC芯片給D/A轉(zhuǎn)換器的電壓給定為73H,那么此種方法的調(diào)速過(guò)程則為80H-40H+20H+10H+08H-04H-02H+01H=73H,即7步之后電壓給定可以調(diào)節(jié)到73H,最終達(dá)到1600轉(zhuǎn)。使用這種方法是可以遍歷00H~FFH中間所有的數(shù)值的,并且最多只需要7步就可達(dá)到,在這樣的條件下,我選擇了1.2s定時(shí)測(cè)速,加上程序運(yùn)行以及其他延時(shí)之下,大致調(diào)速時(shí)間能在20s之內(nèi)完成。另一方面,使用1.2s定時(shí)的誤差是±50轉(zhuǎn)/分,大大超過(guò)了測(cè)速程序的誤差,這也是為什么我要將兩個(gè)程序分開(kāi)來(lái)寫(xiě)的原因。程序特點(diǎn)說(shuō)明:本程序主要特點(diǎn)是沒(méi)有使用中斷功能,所有需要判斷的地方都選擇使用不同長(zhǎng)短的延時(shí)程序來(lái)完成(定時(shí)結(jié)束延時(shí),數(shù)據(jù)發(fā)送延時(shí)) ,這樣的優(yōu)點(diǎn)是可以節(jié)省大量系統(tǒng)資源, 減少程序邏輯錯(cuò)誤的幾率, 簡(jiǎn)化程序。但同樣也存在著風(fēng)險(xiǎn),一旦某一個(gè)延時(shí)環(huán)節(jié)設(shè)置的延時(shí)不好或是出現(xiàn)無(wú)法用延時(shí)規(guī)避的情況,整個(gè)程序的調(diào)試將進(jìn)入死區(qū), 不易找到錯(cuò)誤,也不易修改。但由于此程序比較簡(jiǎn)單,硬件穩(wěn)定性較高,實(shí)驗(yàn)證明延時(shí)完全滿足要求。九、 軟件程序清單:LISTP=16F877#INCLUDE<P16F877.INC>SPTEMEQU20HBINTEMEQU21HLED_TEMEQU22HGENE1EQU23HGENE2EQU24HLEHEQU25HLEMEQU26HLELEQU27HCOUNT1EQU28HCOUNT2EQU29HCOUNT3EQU30HSPEEDEQU31HVOLTEQU32HGENE3EQU33HGENE4EQU34HGENE5EQU35HSPEEDTEMEQU36HORDSPEEQUD'12'

;調(diào)速要求最終轉(zhuǎn)速(以百轉(zhuǎn)

/秒為單位)ORG0040HSTART

;主程序BSFSTATUS,RP0BCFSTATUS,RP1MOVLW10H

;RA4

輸入,其他不用。MOVWFTRISAMOVLW80H

;RC0、RC3、RC5輸出。MOVWFTRISCMOVLW00HMOVWFTRISD

;RD0、RD1、RD2

輸出。MOVLW40HMOVWFSSPSTATMOVLW20HMOVWFOPTION_REGMOVLW00HMOVWFINTCON

;Timer0

作計(jì)數(shù)器,初始化MOVLW04HMOVWFTXSTAMOVLW26HMOVWFSPBRG

;RS-232串口通信,異步模式,波特率

9600BCFSTATUS,RP0BSFRCSTA,SPENBSFPORTC,0MOVLW31HMOVWFT1CON

;Timer1

作定時(shí)器,定時(shí)

1.2s,初始化MOVLW30HMOVWFSSPCON;SPI總線通信初始化MOVLW80HMOVWFVOLT;初始電機(jī)轉(zhuǎn)速給定值(16進(jìn)制數(shù)字量)BCFPORTC,0MOVLW80HMOVWFSSPBUF;將給定值傳送給D/A轉(zhuǎn)換器CALLDELAY1CALLLOWFOUR;傳送低四位,默認(rèn)均為0CALLDELAY1MOVLW40HMOVWFCOUNT3;電壓變動(dòng)值變量MOVLWORDSPEMOVWFSPEEDBCFSTATUS,CRLFSPEED,1BCFSTATUS,C;將調(diào)速要求轉(zhuǎn)速放入speed寄存器CALLDELAY3LOOPMOVLW00HMOVWFTMR0;開(kāi)始計(jì)數(shù)CALLDELAY2;1.2s定時(shí)MOVFTMR0,0MOVWFSPTEMMOVWFSPEEDTEM;計(jì)數(shù)結(jié)果放入sptem和speedtem中分別做2-10進(jìn)制轉(zhuǎn)換和速度比較BCFSTATUS,CRRFSPTEM,1CALLBINTOBCD;2-10進(jìn)制轉(zhuǎn)換子程序MOVLW30HADDWFLEH,1;十進(jìn)制結(jié)果百位加三十變?yōu)锳SCII碼(在調(diào)速中百位必為0,用不上)MOVLW0FHANDWFBINTEM,0ADDLW30HMOVWFLEL;十進(jìn)制結(jié)果個(gè)位加三十變?yōu)锳SCII碼MOVLW0F0HANDWFBINTEM,0ADDLW03HMOVWFLEMSWAPFLEM,1;十進(jìn)制結(jié)果十位加三十變?yōu)锳SCII碼SCITX;RS-232串口通信部分MOVFLEH,0MOVWFTXREG;將發(fā)送內(nèi)容放入txreg寄存器等待發(fā)送BSFSTATUS,RP0BSFTXSTA,TXEN

;使能發(fā)送功能BCFSTATUS,RP0CALLDELAY1

;調(diào)用小延時(shí)使其能在下一步操作前完成上一步發(fā)送(所有步驟下同)MOVFLEM,0MOVWFTXREGBSFSTATUS,RP0BSFTXSTA,TXENBCFSTATUS,RP0CALLDELAY1MOVFLEL,0MOVWFTXREGBSFSTATUS,RP0BSFTXSTA,TXENBCFSTATUS,RP0CALLDELAY1MOVLW30HMOVWFTXREGBSFSTATUS,RP0BSFTXSTA,TXENBCFSTATUS,RP0CALLDELAY1LEDOUT

;LCD

屏顯示部分MOVLW00HMOVWFPORTD

;準(zhǔn)備傳輸MOVLW01HMOVWFLED_TEM

;清除顯示CALLLEDORDMOVLW20H

;功能設(shè)定MOVWFLED_TEMCALLLEDORDMOVLW02H

;地址歸位MOVWFLED_TEMCALLLEDORDMOVLW06H

;進(jìn)入點(diǎn)設(shè)定MOVWFLED_TEMCALLLEDORDMOVLW0CH

;顯示狀態(tài)開(kāi)

,無(wú)光標(biāo)MOVWFLED_TEMCALLLEDORDMOVLW01H

;清除顯示MOVWFLED_TEMCALLLEDORDMOVLW80H

;DDRAM

地址復(fù)位至

80HMOVWFLED_TEMCALLLEDORDMOVLW0CBHMOVWFLED_TEMCALLLEDDATMOVLW0D9H

;速M(fèi)OVWFLED_TEMCALLLEDDATMOVLW0B6HMOVWFLED_TEMCALLLEDDATMOVLW0C8H

;度MOVWFLED_TEMCALLLEDDATMOVLW3AH

;:MOVWFLED_TEMCALLLEDDATMOVLW90H

;DDRAM

地址置

90HMOVWFLED_TEMCALLLEDORDMOVFLEM,0MOVWFLED_TEMCALLLEDDATMOVFLEL,0

;轉(zhuǎn)速千位與百位MOVWFLED_TEMCALLLEDDATMOVLW30H

;0MOVWFLED_TEMCALLLEDDATMOVLW30H

;0MOVWFLED_TEMCALLLEDDATMOVLW0D7HMOVWFLED_TEMCALLLEDDATMOVLW0AAH

;轉(zhuǎn)MOVWFLED_TEMCALLLEDDATMOVLW2FH

;/MOVWFLED_TEMCALLLEDDATMOVLW20H

;空格MOVWFLED_TEMCALLLEDDATMOVLW0B7HMOVWFLED_TEMCALLLEDDATMOVLW0D6H;分MOVWFLED_TEMCALLLEDDATMOVLW0D6HMOVWFLED_TEMCALLLEDDATMOVLW0D3H;鐘MOVWFLED_TEMCALLLEDDATADJEND;電壓比較與運(yùn)算部分BSFSTATUS,CMOVFSPEED,0SUBWFSPEEDTEM,0;用測(cè)得轉(zhuǎn)速與給定轉(zhuǎn)速比較BTFSCSTATUS,CGOTOMIMOVFCOUNT3,0;小于給定轉(zhuǎn)速,輸送到D/A轉(zhuǎn)換器的給定volt就加上電壓變動(dòng)量count3ADDWFVOLT,1GOTOSPIENDMI;大于給定轉(zhuǎn)速,輸送到D/A轉(zhuǎn)換器的給定volt就減去電壓變動(dòng)量count3MOVFCOUNT3,0SUBWFVOLT,1SPIEND;程序結(jié)束段循環(huán)判定部分BSFPORTC,0BCFPORTC,0MOVFVOLT,0MOVWFSSPBUF;將新的電壓給定值發(fā)送給D/A轉(zhuǎn)換器CALLDELAY1CALLLOWFOUR;低四位發(fā)送CALLDELAY1CALLDELAY3BCFSTATUS,CRRFCOUNT3,1BSFSTATUS,C;電壓變動(dòng)量原值除二MOVLW01HSUBWFCOUNT3,0BTFSCSTATUS,C;判定電壓變動(dòng)量是否已為0,為0則程序結(jié)束,否則繼續(xù)循環(huán)程序GOTOLOOPGOTOPROEND;******************************************************************************;子程序名稱: LEDORD;入口參數(shù):LED_TEM;出口參數(shù):無(wú);子程序任務(wù):通過(guò)手寫(xiě)時(shí)鐘,按照LCD屏?xí)r序圖邏輯,將LED_TEM中的內(nèi)容以寫(xiě)指令方式寫(xiě)入LCD中。;******************************************************************************LEDORDBSFPORTD,0BSFPORTD,2BSFPORTD,1BCFPORTD,1BSFPORTD,1BCFPORTD,1BSFPORTD,1BCFPORTD,1BSFPORTD,1BCFPORTD,1BSFPORTD,1BCFPORTD,1BCFPORTD,2BSFPORTD,1BCFPORTD,1BSFPORTD,1BCFPORTD,1BSFPORTD,1BCFPORTD,1;寫(xiě)指令BTFSCLED_TEM,7;判斷LED_TEM的第8位是否為0,為0則發(fā)送0,否則發(fā)送1,下同BSFPORTD,2BSFPORTD,1BCFPORTD,1BCFPORTD,2BTFSCLED_TEM,6BSFPORTD,2BSFPORTD,1BCFPORTD,1BCFPORTD,2BTFSCLED_TEM,5BSFPORTD,2BSFPORTD,1BCFPORTD,1BCFPORTD,2BTFSCLED_TEM,4BSFPORTD,2BSFPORTD,1BCFPORTD,1

;高四位寫(xiě)入BCFPORTD,2BSFPORTD,1BCFPORTD,1BSFPORTD,1BCFPORTD,1BSFPORTD,1BCFPORTD,1BSFPORTD,1BCFPORTD,1BTFSCLED_TEM,3BSFPORTD,2BSFPORTD,1BCFPORTD,1BCFPORTD,2BTFSCLED_TEM,2BSFPORTD,2BSFPORTD,1BCFPORTD,1BCFPORTD,2BTFSCLED_TEM,1BSFPORTD,2BSFPORTD,1BCFPORTD,1BCFPORTD,2BTFSCLED_TEM,0BSFPORTD,2BSFPORTD,1BCFPORTD,1

;低四位寫(xiě)入BCFPORTD,2BSFPORTD,1BCFPORTD,1BSFPORTD,1BCFPORTD,1BSFPORTD,1BCFPORTD,1BSFPORTD,1BCFPORTD,1BCFPORTD,0CALLDELAY1

;調(diào)用小延時(shí)RETURN;******************************************************************************;子程序名稱: LEDDAT;入口參數(shù):LED_TEM;出口參數(shù):無(wú);子程序任務(wù):通過(guò)手寫(xiě)時(shí)鐘,按照LCD屏?xí)r序圖邏輯,將LED_TEM中的內(nèi)容以寫(xiě)數(shù)據(jù)方式寫(xiě)入LCD中。;******************************************************************************LEDDATBSFPORTD,0BSFPORTD,2BSFPORTD,1BCFPORTD,1BSFPORTD,1BCFPORTD,1BSFPORTD,1BCFPORTD,1BSFPORTD,1BCFPORTD,1BSFPORTD,1BCFPORTD,1BCFPORTD,2BSFPORTD,1BCFPORTD,1BSFPORTD,2BSFPORTD,1BCFPORTD,1BCFPORTD,2BSFPORTD,1BCFPORTD,1 ;寫(xiě)數(shù)據(jù)BTFSCLED_TEM,7BSFPORTD,2BSFPORTD,1BCFPORTD,1BCFPORTD,2BTFSCLED_TEM,6BSFPORTD,2BSFPORTD,1BCFPORTD,1BCFPORTD,2BTFSCLED_TEM,5BSFPORTD,2BSFPORTD,1BCFPORTD,1BCFPORTD,2BTFSCLED_TEM,4BSFPORTD,2BSFPORTD,1BCFPORTD,1

;高四位寫(xiě)入BCFPORTD,2BSFPORTD,1BCFPORTD,1BSFPORTD,1BCFPORTD,1BSFPORTD,1BCFPORTD,1BSFPORTD,1BCFPORTD,1BTFSCLED_TEM,3BSFPORTD,2BSFPORTD,1BCFPORTD,1BCFPORTD,2BTFSCLED_TEM,2BSFPORTD,2BSFPORTD,1BCFPORTD,1BCFPORTD,2BTFSCLED_TEM,1BSFPORTD,2BSFPORTD,1BCFPORTD,1BCFPORTD,2BTFSCLED_TEM,0BSFPORTD,2BSFPORTD,1BCFPORTD,1

;低四位寫(xiě)入BCFPORTD,2BSFPORTD,1BCFPORTD,1BSFPORTD,1BCFPORTD,1BSFPORTD,1BCFPORTD,1BSFPORTD,1BCFPORTD,1BCFPORTD,0CALLDELAY1

;調(diào)用小延時(shí)RETURN;******************************************************************************;子程序名稱: BINTOBCD;入口參數(shù):SPTEM,BINTEM(作為臨時(shí)寄存器);出口參數(shù):LEH,LEM,LEL;子程序任務(wù):將SPTEM中的8位二進(jìn)制數(shù),通過(guò)移位加三判斷法,轉(zhuǎn)化成三位十進(jìn)制數(shù),分別放入LEH、LEM、LEL中;******************************************************************************BINTOBCDCLRFLEHCLRFBINTEMMOVLW07HMOVWFCOUNT2BLOOP1RLFSPTEM,1BTFSCSTATUS,CBSFBINTEM,0BTFSSSTATUS,CBCFBINTEM,0MOVLW03HADDWFBINTEM,1BTFSSBINTEM,3SUBWFBINTEM,1MOVLW30HADDWFBINTEM,1BTFSSBINTEM,7SUBWFBINTEM,1RLFLEH,1BCFSTATUS,CRLFBINTEM,1BTFSCSTATUS,CBSFLEH,0BTFSSSTATUS,CBCFLEH,0DECFSZCOUNT2,1GOTOBLOOP1RLFSPTEM,1BTFSCSTATUS,CBSFBINTEM,0BTFSSSTATUS,CBCFBINTEM,0RETURN;******************************************************************************;子程序名稱: LOWFOUR;入口參數(shù):無(wú);出口參數(shù):無(wú);子程序任務(wù):用RC0、RC3、RC5手寫(xiě)時(shí)鐘,按照SPI時(shí)鐘邏輯發(fā)送四位0,完成12位D/A轉(zhuǎn)換器的低四位發(fā)送;******************************************************************************LOWFOURBCFSSPCON,SSPENBSFPORTC,3BCFPORTC,5BCFPORTC,3BSFPORTC,3BCFPORTC,3BSFPORTC,3BCFPORTC,3BSFPORTC,3BCFPORTC,3BSFPORTC,3BCFPORTC,3BSFPORTC,3BSFPORTC,0BSFSSPCON,SSPENRETURNDELAY1

;25ms延時(shí)子程序(軟件延時(shí))MOVLW60HMOVWFGENE1DELOOP1MOVLW6EHMOVWFGENE2DELOOP2DECFSZGENE2GOTODELOOP2DECFSZGENE1GOTODELOOP1RETURNDELAY2

;1.2sTimer1

定時(shí)(8*150ms)BCFSTATUS,RP0BCFSTATUS,RP1BCFPIR1,TMR1IFMOVLW08HMOVWFCOUNT1MOVLW92HMOVWFTMR1HMOVLW23HMOVWFTMR1LTMLOOP1BTFSSPIR1,TMR1IFGOTOTMLOOP1DECFSZCOUNT1,1GOTOTMLOOP2RETURNTMLOOP2BCFPIR1,TMR1IFMOVLW92HMOVWFTMR1HMOVLW23HMOVWFTMR1LGOTOTMLOOP1DELAY3 ;1.5s延時(shí)子程序(軟件延時(shí))MOVLW04HMOVWFGENE3DELOOP3MOVLW0FFHMOVWFGENE4DELOOP4MOVLW0FFHMOVWFGENE5DELOOP5DECFSZGENE5GOTODELOOP5DECFSZGENE4GOTODELOOP4DECFSZGENE3GOTODELOOP3RETURNPROENDEND十、 測(cè)速顯示儀的功能操作說(shuō)明:智能電機(jī)測(cè)速顯示儀的功能為監(jiān)測(cè)電機(jī)轉(zhuǎn)速,并且將轉(zhuǎn)速顯示在液晶屏上以及上傳至電腦,并且如果給定一個(gè)轉(zhuǎn)速數(shù)值, 系統(tǒng)可以將電機(jī)轉(zhuǎn)速調(diào)節(jié)至要求轉(zhuǎn)速。 其中,測(cè)速顯示部分需要將電腦上的串行通信軟

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論