基于單片機(jī)的智能涂料攪拌器設(shè)計_第1頁
基于單片機(jī)的智能涂料攪拌器設(shè)計_第2頁
基于單片機(jī)的智能涂料攪拌器設(shè)計_第3頁
基于單片機(jī)的智能涂料攪拌器設(shè)計_第4頁
基于單片機(jī)的智能涂料攪拌器設(shè)計_第5頁
已閱讀5頁,還剩57頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

本科論文目錄摘要 IAbstract II引言 31系統(tǒng)總體架構(gòu) 61.1需求分析與方案設(shè)計 61.2系統(tǒng)架構(gòu) 71.3系統(tǒng)器件選擇 72系統(tǒng)硬件設(shè)計 92.1單片機(jī)外圍電路設(shè)計 92.2LCD1602液晶顯示電路設(shè)計 142.3電機(jī)外圍電路設(shè)計 152.4供電電路設(shè)計 163系統(tǒng)軟件流程設(shè)計 173.1系統(tǒng)總體流程 173.2LCD顯示程序設(shè)計 183.3液位傳感器的程序設(shè)計 193.4電機(jī)定時與轉(zhuǎn)速控制程序設(shè)計 193.5按鍵控制程序設(shè)計 214系統(tǒng)調(diào)試 254.1焊接與調(diào)試 254.2程序燒錄與調(diào)試 254.3系統(tǒng)調(diào)試 264.4遇到的問題及解決方法 27結(jié)論 28參考文獻(xiàn) 29附錄1原理圖 31附錄2源程序清單 32致謝 52本科論文摘要目前,在社會主義現(xiàn)代化建設(shè)中,涂料市場也在不斷發(fā)展,因而對攪拌設(shè)備的需求也越來越高。為了通過新型的涂料攪拌器設(shè)計使得涂料生產(chǎn)的成本降低,減少大量的人力物力提高工作效率,本文進(jìn)行了基于單片機(jī)的智能涂料攪料器設(shè)計?;趩纹瑱C(jī)的智能涂料攪料器設(shè)計可以通過外部按鍵進(jìn)行控制,利用內(nèi)部單片機(jī)對外部按鍵以及傳感器進(jìn)行響應(yīng),進(jìn)而控制電機(jī)的轉(zhuǎn)速、轉(zhuǎn)向和轉(zhuǎn)動時間??梢赃m應(yīng)不同情況下的攪料需求,能夠進(jìn)行正反轉(zhuǎn),轉(zhuǎn)速調(diào)整,定時攪拌等功能。本文首先分析了基于單片機(jī)的智能涂料攪料器設(shè)計的設(shè)計需求,完成了系統(tǒng)架構(gòu)設(shè)計。在此基礎(chǔ)上進(jìn)行了單片機(jī)外圍電路設(shè)計,液晶顯示外部電路設(shè)計,電機(jī)外部電路設(shè)計,開關(guān)電路設(shè)計。在完成硬件電路設(shè)計的基礎(chǔ)上,進(jìn)行了軟件流程設(shè)計,包括對LCD液晶顯示控制程序,電機(jī)定時以及轉(zhuǎn)速控制程序,按鍵控制程序。經(jīng)過實(shí)驗驗證,結(jié)果表明基于單片機(jī)的智能涂料攪料器設(shè)計可以靈活調(diào)整工作模式,在啟動、停止,正反轉(zhuǎn),定時設(shè)置等模式之間靈活調(diào)整。真正實(shí)現(xiàn)“一套設(shè)備,一機(jī)多用,一步到位”。關(guān)鍵詞:單片機(jī);LCD;控制程序

AbstractAtpresent,withthecontinuousdevelopmentofthepaintmarket,thedemandformixingequipmentishigherandhigher.Inordertoreducethecostofcoatingproduction,reducealargenumberofhumanandmaterialresourcesandimprovetheworkefficiencythroughthedesignofanewtypeofcoatingagitator,anautomaticmixingsystembasedonsinglechipmicrocomputerisdesignedinthispaper.Thedesignofintelligentpaintagitatorbasedonsinglechipmicrocomputercanbecontrolledbyexternalkeys.Theinternalsinglechipmicrocomputercanrespondtoexternalkeysandsensors,andthencontroltherotationspeed,steeringandrotationtimeofthemotor.Itcanadapttotheneedsofmixingmaterialsindifferentsituations,andcancarryoutpositiveandnegativerotation,speedadjustment,timingmixingandotherfunctions.Firstly,thispaperanalyzesthedesignrequirementsofintelligentpaintagitatorbasedonMCU,andcompletesthesystemarchitecturedesign.Onthisbasis,theperipheralcircuitdesignofMCU,theexternalcircuitdesignofLCD,theexternalcircuitdesignofmotorandtheswitchcircuitdesignarecarriedout.Onthebasisofhardwarecircuitdesign,thesoftwareflowisdesigned,includingLCDdisplaycontrolprogram,motortimingandspeedcontrolprogram,keycontrolprogram.Theexperimentalresultsshowthatthedesignofintelligentpaintagitatorbasedonsinglechipmicrocomputercanadjusttheworkingmodeflexibly,andadjustbetweenthestart,stop,forwardandreverse,timingsettingandothermodes.Trulyrealize"onesetofequipment,onemachinewithmultiplefunctions,onestepinplace".Keywords:MCU;LCD;Controlprogram引言目前,隨著涂料市場的不斷發(fā)展,對攪拌設(shè)備的需求也越來越高。為了使新型的涂料攪拌器設(shè)計能夠降低涂料生產(chǎn)的成本,減少大量的人力物力提高工作效率,因此對涂料攪拌設(shè)備進(jìn)行了大量的研究。建筑涂料是涂料工業(yè)重要的組成部分之一,建筑涂料種類繁多,主要包括室內(nèi)涂料、外墻涂料、地坪涂料、防火涂料等多種功能性涂料。建筑涂料的種類的多少、質(zhì)量的好壞對美化城鄉(xiāng)居住建筑、改善城鄉(xiāng)環(huán)境具有重要意義。智能涂料攪拌設(shè)備有著廣闊的發(fā)展空間,不僅僅是市場推動其發(fā)展,而且新材料、新工藝的產(chǎn)生,必將對化工設(shè)備要求更高,研究基于單片機(jī)的智能涂料攪拌有著重要的意義。眾所周知,在建筑材料生產(chǎn)過程中需要對一些配制好的涂料進(jìn)行攪拌,這些配制好的涂料一般呈粘稠狀液體,經(jīng)過攪拌以后使各種成分混合均勻,涂料的性質(zhì)才會達(dá)到最佳,才能用于下一道工序的使用,因此,攪拌的工序就顯得尤為重要。國外攪拌器械的發(fā)展歷史悠久,18世紀(jì)40年代,在德國、美國、俄羅斯等國家,出現(xiàn)了以蒸汽機(jī)為動力源的自落混合攪拌器,其混合室由多面體木質(zhì)圓筒組成,直到1880年鋼鐵才開始代替木板,但形狀仍然是多面體的[1]。1888年,法國申請了一項用于修建戰(zhàn)前道路的混凝土攪拌機(jī)的專利。20世紀(jì)初,圓柱形混合攪拌器開始流行起來。形狀的改善避免了涂料在攪拌筒內(nèi)壁的凝固和沉積,提高了攪拌質(zhì)量和效率。1908年,美國出現(xiàn)了第一臺由內(nèi)燃機(jī)驅(qū)動的攪拌器,隨后電動機(jī)成為主要動力源[2]。從1913年到1950年,亞洲大陸的日本開始用攪拌機(jī)生產(chǎn)預(yù)混料。在此期間,各種有無葉片的自落式攪拌機(jī)的發(fā)明和應(yīng)用仍然是主流。自落式攪拌機(jī)依靠攪拌筒將物料提升到一定高度的自落來完成攪拌。在操作過程中,隨著攪拌筒的轉(zhuǎn)動,物料被固定在攪拌筒內(nèi)壁上的葉片提升到一定高度,然后靠自身重量下落。由于顆粒下落高度、時間、速度、下落點(diǎn)和滾動距離的不同,材料中的顆粒相互滲透、滲透和擴(kuò)散,最終達(dá)到均勻混合。該攪拌方式結(jié)構(gòu)簡單,可靠性高,維護(hù)簡單,功耗小,攪拌筒和攪拌葉片磨損輕,但攪拌強(qiáng)度低,生產(chǎn)效率低,攪拌質(zhì)量差。根據(jù)攪拌筒的形狀和出料方式,有筒式攪拌機(jī)、雙錐反轉(zhuǎn)出料攪拌機(jī)、雙錐斜卸式攪拌機(jī)[3]和對開式攪拌機(jī)等,其中筒式簡易攪拌機(jī)技術(shù)性能落后,1987年被建設(shè)部列為淘汰產(chǎn)品。隨著各類涂料的廣泛使用和施工規(guī)模的大型化、復(fù)雜化,對質(zhì)量和產(chǎn)量的要求不斷提高,有效地促進(jìn)了攪拌設(shè)備性能和技術(shù)水平的提高和發(fā)展。來自世界各地的研究人員開始對涂料攪拌機(jī)的結(jié)構(gòu)、傳動方式、攪拌室內(nèi)襯材料和調(diào)漆生產(chǎn)工藝進(jìn)行改進(jìn)和探索。20世紀(jì)40年代末,德國Elba公司發(fā)明了強(qiáng)制攪拌器[4],與自落式攪拌器不同,強(qiáng)制式攪拌器是利用旋轉(zhuǎn)的葉片迫使物料按照預(yù)定的軌跡進(jìn)行剪切、擠壓、滾壓和拋擲,使物料在劇烈的相對運(yùn)動中均勻攪拌。與自落式攪拌機(jī)相比,強(qiáng)制式攪拌機(jī)混合效果強(qiáng),混合質(zhì)量好,混合效率高,但攪拌筒和攪拌葉片磨損大,功耗大。根據(jù)不同的結(jié)構(gòu)特點(diǎn),主要有立軸渦流式漿機(jī)、立軸行星式漿機(jī)、立軸對流式漿機(jī)、單橫軸式漿機(jī)和雙橫軸式漿機(jī)[5]。目前國內(nèi)常用的有兩種攪拌工序,第一個是人工攪拌,這種方式會耗費(fèi)大量的勞動力,而且人工攪拌力量有限,只能用于攪拌份量很小的涂料,在涂料用量很大的情況下,效率很低,無法實(shí)用。此外,在遇到一些黏度較大或顆粒較大的混合粉時,由于人工攪拌力量速度有限,涂料可能發(fā)生凝集,導(dǎo)致出現(xiàn)混煉不足、攪拌處理時間長,無法充分混合,工作效率非常低下。第二種是利用機(jī)器來進(jìn)行,在過去相當(dāng)長的一段時間里,涂料生產(chǎn)中的分散研磨設(shè)備主要由分散機(jī)、砂磨機(jī)和三輥磨床組成。這些傳統(tǒng)設(shè)備具有各自不同的功能,實(shí)現(xiàn)了涂料生產(chǎn)的不同需求。然而,也有不同的局限性。如分散機(jī):用于中高檔涂料的生產(chǎn),只能用于預(yù)分散,不能達(dá)到中高檔涂料所要求的碎漿效果;砂磨機(jī):可連續(xù)生產(chǎn),但不適用于炭黑等難分散顏料的加工;漿體粘度高,加工難度大;清洗困難,殘留物多,這是砂磨機(jī)的主要限制;三輥磨床[6]:適用于加工高粘度漿體和難分散顏料。但露天作業(yè)使作業(yè)環(huán)境惡劣,作業(yè)安全性差,散料損失大。結(jié)構(gòu)復(fù)雜,調(diào)試?yán)щy,生產(chǎn)效率低。傳統(tǒng)的涂料生產(chǎn)設(shè)備已經(jīng)使用多年,但其局限性也很明顯。然而,現(xiàn)有的混合攪拌器也存在許多缺點(diǎn),其結(jié)構(gòu)過于簡單。只有一個旋轉(zhuǎn)軸被添加到桶。桶里的油漆是通過軸的連續(xù)轉(zhuǎn)動而攪拌的。運(yùn)行過程中噪聲較大,建成后均勻性不理想,容易出現(xiàn)分層和殘渣問題。同時,會消耗大量的電能,造成浪費(fèi)。本文設(shè)計了基于單片機(jī)的智能涂料攪料器設(shè)計,基于單片機(jī)的智能涂料攪料器設(shè)計可以通過外部按鍵進(jìn)行控制,內(nèi)部單片機(jī)對外部按鍵以及傳感器進(jìn)行響應(yīng),進(jìn)而控制電機(jī)??梢赃m應(yīng)不同情況下的攪料需求。所設(shè)計的基于單片機(jī)的智能涂料攪料器設(shè)計,主要需要實(shí)現(xiàn)以下一些功能,首先系統(tǒng)能夠接收外部人為控制,實(shí)現(xiàn)電機(jī)的正轉(zhuǎn)反轉(zhuǎn),使得涂料能夠充分?jǐn)嚢瑁坏诙c(diǎn)是電機(jī)能夠以不同的速度進(jìn)行攪拌,使用過程中可以實(shí)現(xiàn)靈活的加速與減速操作;第三點(diǎn)是如果攪拌時間較長,可以設(shè)置定時,同時通過液位傳感器也可進(jìn)行定時,實(shí)現(xiàn)無人值守,減輕工人壓力,提高效率;第四點(diǎn)是以上這些操作、流程、轉(zhuǎn)速等都可以實(shí)時顯示,讓使用者能夠清楚目前的狀態(tài)。1系統(tǒng)總體架構(gòu)1.1需求分析與方案設(shè)計本次所設(shè)計的基于單片機(jī)的智能涂料攪料設(shè)計,主要需要實(shí)現(xiàn)以下一些功能,首先系統(tǒng)能夠接收外部人為控制,實(shí)現(xiàn)電機(jī)的正轉(zhuǎn)反轉(zhuǎn),使得涂料能夠充分?jǐn)嚢瑁坏诙c(diǎn)是電機(jī)能夠以不同的速度進(jìn)行攪拌,使用過程中可以實(shí)現(xiàn)靈活的加速與減速操作;第三點(diǎn)是如果攪拌時間較長,可以設(shè)置定時,同時通過液位傳感器也可進(jìn)行定時,實(shí)現(xiàn)無人值守,減輕工人壓力,提高效率;第四點(diǎn)是以上這些操作、流程、轉(zhuǎn)速等都可以實(shí)時顯示,讓使用者能夠清楚目前的狀態(tài)。為了實(shí)現(xiàn)上述功能,初步設(shè)定了兩種方案,第一種是利用涂料氣動攪拌裝置,結(jié)合計時與供電設(shè)計實(shí)現(xiàn)攪拌系統(tǒng)的定時。優(yōu)點(diǎn)是氣動混合攪拌器可以無級調(diào)速。只要控制進(jìn)排氣門的開度,即控制壓縮空氣的流量,就可以調(diào)節(jié)電動機(jī)的輸出功率和轉(zhuǎn)速。氣動混合器可以正向或反向旋轉(zhuǎn)。只要用控制閥簡單地改變氣動馬達(dá)的進(jìn)排氣方向,就可以實(shí)現(xiàn)氣動馬達(dá)輸出軸的正反轉(zhuǎn),實(shí)現(xiàn)瞬時換向。氣動混合攪拌器的工作環(huán)境不受振動、高溫、電磁、輻射等的影響,適用于惡劣的工作環(huán)境,能在易燃、爆炸、高溫、振動、潮濕、粉塵等不利條件下正常工作。氣動混合攪拌器的配套氣動馬達(dá)具有過載保護(hù)功能,不會因過載而失靈。如果過載,氣動馬達(dá)的速度只會降低或停止。當(dāng)過載消除后,電機(jī)可以立即恢復(fù)正常運(yùn)行,而不會對零件造成任何損壞??砷L時間滿負(fù)荷連續(xù)運(yùn)行,氣動電機(jī)溫升小,氣動混合器起動轉(zhuǎn)矩大,可直接帶負(fù)荷起動。啟動和停止都很快,不像電動攪拌機(jī)有時會燒壞影響使用。但氣動攪拌裝置容易產(chǎn)生涂料攪拌不徹底,容易產(chǎn)生死角,在完成工作后清洗困難等問題。同時在氣動裝置升降以及操作過程中需要兩人配合完成,操作非常繁瑣。第二種方案是利用單片機(jī)作為處理器,接收外部的按鍵控制來對電機(jī)工作模式進(jìn)行調(diào)整,電動機(jī)可實(shí)現(xiàn)正轉(zhuǎn)以及反轉(zhuǎn)操作,同時也可以進(jìn)行變速操作便于針對不同材質(zhì)的涂料進(jìn)行換擋工作[7]。在不同環(huán)境中電動機(jī)攪拌器也可正常穩(wěn)定運(yùn)行,適應(yīng)能力強(qiáng),對于粉塵,潮濕等不利條件下都可正常工作。利用LCD1602液晶對系統(tǒng)的操作、流程、轉(zhuǎn)速等都可以實(shí)時顯示。對于操作人員來說無疑是提供了極大的便利,不需要像以往那樣憑借經(jīng)驗來判斷系統(tǒng)的工作狀態(tài),大大增加了工作的安全性。通過液位傳感器來設(shè)定攪拌時間,即使初次操控也可實(shí)現(xiàn)操作。該方案具有成本低,易于操控,在不同環(huán)境下系統(tǒng)工作情況均表現(xiàn)良好對于設(shè)計提出的要求也能很好的實(shí)現(xiàn)。對上述兩種方案進(jìn)行對比,首先是從系統(tǒng)復(fù)雜度上進(jìn)行考慮,方案一中需要添加一些傳感器,這必然會增加系統(tǒng)硬件的設(shè)計復(fù)雜度,對這些數(shù)據(jù)進(jìn)行處理又會增加軟件復(fù)雜度;其次我們從實(shí)現(xiàn)及使用上來講,通過單片機(jī)控制電機(jī)來形成一套攪拌系統(tǒng),要比通過氣動馬達(dá)更為可靠有更高的性價比,同時在后期保養(yǎng)時相對比較容易。因此選用單片機(jī)作為處理器來控制電機(jī)進(jìn)行涂料攪拌器的設(shè)計。1.2系統(tǒng)架構(gòu)如圖1.1所示為基于單片機(jī)的智能涂料攪料器設(shè)計系統(tǒng)架構(gòu)框圖,系統(tǒng)以STC89C51單片機(jī)作為中央處理器。單片機(jī)接收外部晶振以及復(fù)位控制,為了實(shí)現(xiàn)不同情況下的電機(jī)工作,通過不同的按鍵開關(guān)來分別對應(yīng)控制,單片機(jī)對按鍵進(jìn)行檢測,檢測到對應(yīng)的按鍵按下后,輸出信號控制電機(jī)執(zhí)行正轉(zhuǎn)、反轉(zhuǎn)、轉(zhuǎn)速調(diào)整、定時等。同時液位傳感器檢測攪拌深度從而控制攪拌時間,上述過程統(tǒng)一通過LCD1602來進(jìn)行實(shí)時顯示。液位傳感器LCD液位傳感器LCD液晶顯示開關(guān)按鍵電機(jī)單片機(jī)開關(guān)按鍵電機(jī)單片機(jī)晶振復(fù)位晶振復(fù)位圖1.1基于單片機(jī)的智能涂料攪拌設(shè)計系統(tǒng)架構(gòu)1.3系統(tǒng)器件選擇結(jié)合上文的系統(tǒng)需求分析,為了接收外部對系統(tǒng)工作模式的控制與改變,在基于單片機(jī)的智能涂料攪料器設(shè)計中使用按鍵電路來實(shí)現(xiàn),單片機(jī)實(shí)時進(jìn)行檢測外部輸入命令,調(diào)整電機(jī)狀態(tài)。整個系統(tǒng)的運(yùn)行都依靠單片機(jī)來進(jìn)行操控,不同的單片機(jī)類型功能也不一樣,經(jīng)過仔細(xì)考慮和結(jié)合實(shí)際情況,采用的是STC89C51單片機(jī)。因為此程序的代碼不是十分的繁多,所以為了節(jié)約成本沒有采用比較復(fù)雜成本比較昂貴的STM32或者是MSP430等單片機(jī)。而去采用STC89C51單片機(jī)。顯示部分用LCD1602液晶來顯示當(dāng)前的信息,相比于數(shù)碼管顯示,LCD1602顯示的字符量更多,彌補(bǔ)信息量比較少,顯示內(nèi)容有限的缺陷,它可以顯示字母,數(shù)字還可以顯示特殊的符號。選用諧振式液位傳感器來探測攪拌涂料的深度,從而控制攪拌時間,該傳感器同其他傳感器相比性價比高,不需要傳感器深入到涂料當(dāng)中探測,更加安全。2系統(tǒng)硬件設(shè)計結(jié)合第一章的系統(tǒng)需求分析以及器件選型,我們首先需要結(jié)合對基于單片機(jī)的智能涂料攪料器設(shè)計中的各個模塊的硬件電路完成設(shè)計。2.1單片機(jī)外圍電路設(shè)計單片機(jī)對傳感器和外設(shè)進(jìn)行控制,對外部輸入的數(shù)據(jù)和信號進(jìn)行收集計算,并進(jìn)行相應(yīng)的操作。STC89C51單片機(jī)是基于單片機(jī)的智能涂料攪料器設(shè)計中的核心,圍繞其需要展開很多電路實(shí)現(xiàn)系統(tǒng)中的相關(guān)功能,我們首先需要完成對單片機(jī)外圍電路的設(shè)計。2.1.1STC89C51單片機(jī)介紹STC89C51有32個I/O口可以連接更多的外設(shè)和傳感器,8k字節(jié)的FLASH存儲器可以進(jìn)行更多的計算緩存,512字節(jié)的RAM大大提高了反應(yīng)速度。STC89C51單片機(jī)的燒錄也非常簡單,通過TX和RX口,采用對應(yīng)的編譯器就可以將程序燒錄進(jìn)去。圖2.1STC89C51單片機(jī)封裝引腳如圖2.1所示為STC89C51單片機(jī)封裝引腳,完成自動攪料系統(tǒng)電路設(shè)計之前首先需要對管腳進(jìn)行了解。VCC:供電電壓。GND:接地。P0、P1、P2、P3:I/O引腳,可以在本次設(shè)計中作為輸入輸出端口,用以向LCD液晶輸入信息等。P3口特殊功能口,具體如下表所示:表2.1P3口的第二功能端口名稱功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2/INT0(外部中斷0)P3.3/INT1(外部中斷1)P3.4T0(記時器0外部輸入)P3.5T1(記時器1外部輸入)P3.6/WR(外部數(shù)據(jù)存儲器寫選通)P3.7/RD(外部數(shù)據(jù)存儲器讀選通)P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復(fù)位輸入。PSEN:外部程序存儲器的選通信號。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。2.1.2STC89C51單片機(jī)外圍電路設(shè)計根據(jù)第一章對基于單片機(jī)的智能涂料攪料器設(shè)計需求分析,結(jié)合單片機(jī)所完成的具體工作以及單片機(jī)的管腳介紹,最終總結(jié)單片機(jī)外圍電路需要進(jìn)行幾個方面的設(shè)計。(1)單片機(jī)供電部分:在設(shè)計過程中,為保證單片機(jī)正常運(yùn)作,首先根據(jù)芯片數(shù)據(jù)手冊中的管腳定義,完成對單片機(jī)的供電設(shè)計即對應(yīng)管腳接電源和接地。單片機(jī)外部晶振:本次設(shè)計中,單片機(jī)使用外部的12MHZ晶振[9],本次設(shè)計18管腳是外部晶振的輸入端,讓19管腳接地。(2)控制LCD1602進(jìn)行信息顯示:芯片的32到39管腳即P0口是單片機(jī)的8個I/O口,本次自動攪料系統(tǒng)設(shè)計中,液晶需要顯示的攪料系統(tǒng)轉(zhuǎn)速、轉(zhuǎn)向、定時時間等相關(guān)數(shù)據(jù)由這個8個端口送交給LCD液晶顯示,由于單片機(jī)的P0口沒有上拉電阻,是高阻狀態(tài),因此外接一個10k的排阻;同時依據(jù)液晶顯示的數(shù)據(jù)手冊,對液晶顯示進(jìn)行操作還需要涉及三個控制管腳,因此在單片機(jī)P2.5,P2.6和P2.7三個端口[10]給出三個控制信號。(3)對按鈕開關(guān)進(jìn)行響應(yīng),控制系統(tǒng)的工作:首先需要設(shè)計一個開關(guān)K1,用來控制整個攪料系統(tǒng),對整個系統(tǒng)進(jìn)行復(fù)位。由于單片機(jī)的復(fù)位端口RST高電平有效,我們將開關(guān)K1一端接高電平一端連接到單片機(jī)的復(fù)位端口RST,這樣在開關(guān)按下的時候復(fù)位端口將會感知電平發(fā)生變化。復(fù)位電路如圖2.2所示圖2.2開關(guān)電路為了實(shí)現(xiàn)攪料系統(tǒng)“一套設(shè)備,一機(jī)多用,一步到位”的特點(diǎn),需要實(shí)現(xiàn)電機(jī)開始與停止,正轉(zhuǎn)與反轉(zhuǎn),加速與減速,計時等功能。圖2.3按鍵控制電路為了實(shí)現(xiàn)外部對系統(tǒng)運(yùn)作的控制,我們選擇按鈕開關(guān)來進(jìn)行控制,為了簡化后續(xù)程序設(shè)計復(fù)雜度,每個開關(guān)負(fù)責(zé)一個功能。按鍵控制電路如圖2.3所示,我們設(shè)計了8個開關(guān)K2-K9,考慮到單片機(jī)的I/O口既可以做輸出也可以作輸入,為了對開關(guān)按鍵進(jìn)行響應(yīng),將K2-K9分別通過一個排阻連接到單片機(jī)的P1.0至P1.7口,另一端供地,此時I/O口作為輸入[11],這樣在開關(guān)按下的時候,對應(yīng)的單片機(jī)端口就為低電平,程序再對端口的電平進(jìn)行判斷及后續(xù)執(zhí)行相應(yīng)的處理操作,即可完成對開關(guān)的判別與響應(yīng)。攪料系統(tǒng)中各個開關(guān)按鍵的功能分配如下K2:啟動鍵,按下以后電機(jī)開始轉(zhuǎn)動;K3:停止鍵,按下以后電機(jī)停止;K4:電機(jī)正轉(zhuǎn);K5:電機(jī)反轉(zhuǎn);K6:加速,按下以后電機(jī)加速;K7:減速,按下以后電機(jī)加速;K8:設(shè)置計時時間的分增加;K9:設(shè)置計時時間的秒增加??刂齐姍C(jī)電路:在攪料系統(tǒng)中使用電機(jī)的端口中,EN端口是電機(jī)使能端口;CW/CCW端口接收外部輸入的逆時針或順時針方向轉(zhuǎn)動的控制信號;PWM端口是接收外部輸入的不同占空比的PWM波。在本次對攪料系統(tǒng)的設(shè)計中,為了操控所使用的直流電機(jī)正常工作,單片機(jī)的P3.4口與電機(jī)的EN口相連,用以控制電機(jī)是否運(yùn)作;P3.5口與CW/CCW端口相連,用以控制電機(jī)的轉(zhuǎn)向;P3.7口用以輸出PWM波[12],用以調(diào)節(jié)電機(jī)的轉(zhuǎn)速。(5)調(diào)試與顯示電路:在完成攪料系統(tǒng)的電路設(shè)計以及完成后續(xù)程序設(shè)計之后,需要將程序完成燒錄,進(jìn)行功能的調(diào)試,因此需要設(shè)計一個調(diào)試口,調(diào)試口的收發(fā)分別接到單片機(jī)的P3.0(RXD)和P3.1(TXD),還有一端接地。調(diào)試口電路如圖2.4所示圖2.4調(diào)試電路為了直觀體現(xiàn)攪料系統(tǒng)的工作狀態(tài),除了LCD液晶顯示之外,設(shè)計了一個發(fā)光二極管LED顯示,LED一端接電源VCC,一端接單片機(jī)的P3.2口,但二極管工作的時候電流不能太大,一般是5mA左右,在LED正常導(dǎo)通的時候[13],其兩端的電壓一般是1.7V,為了保護(hù)二極管,外接了一個2K電阻。指示燈電路如圖2.5所示圖2.5LED顯示電路程序設(shè)計中,通過設(shè)置P3.0口的高低電平即可完成LED的導(dǎo)通,對系統(tǒng)的狀態(tài)進(jìn)行顯示。(6)液位傳感器電路:在涂料攪拌系統(tǒng)中,諧振式液位傳感器通過四個接口實(shí)現(xiàn)與單片機(jī)之間的通信。VCC端口連接5V電壓,為液位傳感器提供電源,RXD端口與單片機(jī)P3.0端口連接用于信息的接受[14],TXD端口與單片機(jī)P3.1端口連接用于信息的發(fā)送。GND端口接地。如圖2.6即為基于單片機(jī)的智能涂料攪料器設(shè)計中液位傳感器的電路。圖2.6液位傳感器電路(7)讀取內(nèi)部存儲器:依據(jù)芯片的數(shù)據(jù)手冊,單片機(jī)的31管腳在接高電平時,單片機(jī)使用內(nèi)部存儲器。結(jié)合上一節(jié)介紹,系統(tǒng)中所使用的STC89C51單片機(jī)有內(nèi)部ROM,因此在本次設(shè)計中,將該管腳一只接高電平。最終,如圖2.7即為基于單片機(jī)的智能涂料攪料器設(shè)計中STC89C51單片機(jī)外部電路。圖2.7STC89C51單片機(jī)外部電路設(shè)計2.2LCD1602液晶顯示電路設(shè)計2.2.1LCD1602液晶顯示器介紹本次設(shè)計采用LCD1602液晶顯示器作為輸出顯示器,LCD1602液晶屏顯示利用液晶的特性,通過改變電壓達(dá)到控制區(qū)域顯示,最終顯示出想要的圖形或者數(shù)字。如表2.2所示為LCD1602數(shù)據(jù)手冊[15]給出的芯片接口定義,是我們在進(jìn)行電路設(shè)計以及后續(xù)編程實(shí)現(xiàn)數(shù)據(jù)顯示過程中的重要依據(jù)。表2.2LCD1602芯片接口定義編號符號引腳說明編號符號引腳說明1VSS電源地9D2Datai/o2VDD電源正極10D3Datai/o3VL液晶顯示偏壓信號11D4Datai/o4RS數(shù)據(jù)/命令選擇端12D5Datai/o5R/W讀/寫選擇端13D6Datai/o6E使能信號14D7Datai/o7D0Datai/o15BLA背光源正極8D1Datai/o16BLK背光源負(fù)極2.2.2LCD1602液晶外圍電路設(shè)計本次設(shè)計LCD1602液晶顯示屏上展示攪料系統(tǒng)的工作狀態(tài)、轉(zhuǎn)速、轉(zhuǎn)向和定時時間,上面一行顯示工作狀態(tài)和轉(zhuǎn)向,下面一行顯示轉(zhuǎn)速和定時時間。結(jié)合對整個攪料系統(tǒng)的工作設(shè)計,LCD1602液晶顯示外圍電路設(shè)計分為以下幾個部分。(1)液晶供電部分:結(jié)合LCD1602液晶顯示的數(shù)據(jù)手冊,為了在基于單片機(jī)的智能涂料攪料器設(shè)計中使的液晶正常工作,需要完成供電設(shè)計。(2)與單片機(jī)之間的通信:依據(jù)數(shù)據(jù)手冊,7到14號管腳是其數(shù)據(jù)口,在基于單片機(jī)的智能涂料攪料器設(shè)計中,液晶需要通過這個8個數(shù)據(jù)口從單片機(jī)接收信息再進(jìn)行顯示。(3)液晶顯示的控制為了保證與單片機(jī)的通訊,還有三個控制管腳。依據(jù)數(shù)據(jù)手冊,LCD1602液晶的6管腳為使能端口,在數(shù)據(jù)傳輸?shù)臅r候,高電平有效,連接單片機(jī)的P2.5口;5管腳為讀寫選擇端,將其連接到單片機(jī)的P2.6口,接受單片機(jī)給出的控制信號;4管腳為數(shù)據(jù)/命令選擇端[16],連接單片機(jī)的P2.7口。(4)液晶顯示的對比度調(diào)節(jié)依據(jù)數(shù)據(jù)手冊,LCD1602液晶的3管腳是調(diào)節(jié)顯示對比度的端口,考慮到工人群體對顯示屏亮度比較敏感或者有不同喜好,在電路設(shè)計中,系統(tǒng)的使用者可對顯示對比度的調(diào)節(jié)。最終,如圖2.8即為基于單片機(jī)的智能涂料攪料器設(shè)計中LCD液晶外部電路。圖2.8LCD1602液晶顯示電路圖2.3電機(jī)外圍電路設(shè)計本次使用的電機(jī)有四個接口:VDD是電源正極,設(shè)計中接12V電源,GND是使能端口,接單片機(jī)的P3.4口,用以接收控制信號,控制電機(jī)工作與否;CW/CCW端口是控制電機(jī)正轉(zhuǎn)或者是翻轉(zhuǎn)的端口,當(dāng)攪料系統(tǒng)的轉(zhuǎn)向需要發(fā)生改變的時候,由單片機(jī)的P3.5口輸出控制信號即可;3端口是PWM端口[17]接收外部輸入的方波信號,轉(zhuǎn)速就是由方波信號的占空比來決定,當(dāng)攪料系統(tǒng)的電機(jī)轉(zhuǎn)速需要調(diào)節(jié)時,由系統(tǒng)中的單片機(jī)輸出不同占空比的PWM即可。圖2.9電機(jī)外圍電路設(shè)計2.4供電電路設(shè)計在基于單片機(jī)的智能涂料攪料器設(shè)計中,單片機(jī)和LCD正常工作的電壓是5V,而電機(jī)正常工作需要12V電壓,結(jié)合此需求,我們采用系統(tǒng)用12V供電,后續(xù)通過LM7805電源芯片使12V電壓轉(zhuǎn)化成5V的電壓供給單片機(jī)及LCD。圖2.10供電電路3系統(tǒng)軟件流程設(shè)計結(jié)合第二章的系統(tǒng)需求分析,在完成了系統(tǒng)電路的設(shè)計以后,系統(tǒng)的主要功能還需要通過軟件實(shí)現(xiàn),需要進(jìn)行相關(guān)軟件流程設(shè)計,實(shí)現(xiàn)基于單片機(jī)的智能涂料攪料器設(shè)計預(yù)定的相關(guān)功能。軟件流程設(shè)計采用模塊化設(shè)計的方法,即在程序編寫之前,首先結(jié)合基于單片機(jī)的智能涂料攪料器設(shè)計硬件電路以及系統(tǒng)需求對程序進(jìn)行功能模塊化,再編寫各個模塊的程序,使程序易于編寫、調(diào)試和修改。程序設(shè)計過程中的軟件開發(fā)環(huán)境選用Keil軟件。3.1系統(tǒng)總體流程基于單片機(jī)的智能涂料攪料器設(shè)計系統(tǒng)程序架構(gòu)如圖3.1所示,當(dāng)整個系統(tǒng)運(yùn)行時,首先是各個部分的初始化,由于系統(tǒng)要實(shí)現(xiàn)對電機(jī)的控制,還需要完成包括單片機(jī)的中斷設(shè)置等。初始化液晶顯示初始狀態(tài)初始化液晶顯示初始狀態(tài)傳入液位信號按鍵檢測開關(guān)按下N根據(jù)按鍵執(zhí)行不同的操作液晶更新系統(tǒng)工作模式結(jié)束開始Y圖3.1程序架構(gòu)初始化完成以后,LCD1602液晶需要顯示系統(tǒng)初始狀態(tài):停止運(yùn)行,正向,轉(zhuǎn)速5000。同時按鍵檢測程序不斷對開關(guān)的狀態(tài)進(jìn)行判斷,液位傳感器對液位進(jìn)行檢測設(shè)置定時時間[18],當(dāng)開關(guān)按下后,根據(jù)之前的設(shè)定,不同開關(guān)執(zhí)行相對應(yīng)的程序,來對攪料系統(tǒng)的工作模式進(jìn)行改變。在執(zhí)行模式更改的同時,通過LCD1602液晶來實(shí)時顯示目前所處的狀態(tài),便于使用者使用。3.2LCD顯示程序設(shè)計在基于單片機(jī)的智能涂料攪料器設(shè)計中,為了便于使用者直觀了解系統(tǒng)目前的工作狀態(tài),LCD1602液晶需要顯示系統(tǒng)工作狀態(tài)(開始、停止)、電機(jī)的轉(zhuǎn)向(CW、CCW)、電機(jī)轉(zhuǎn)速、電機(jī)定時時間等,并根據(jù)開關(guān)對系統(tǒng)的控制,實(shí)時對自動攪料系統(tǒng)這些信息進(jìn)行更新[19]。按照設(shè)置,第一行顯示系統(tǒng)工作狀態(tài)(開始、停止)、電機(jī)的轉(zhuǎn)向(CW、CCW),第二行顯示電機(jī)轉(zhuǎn)速、電機(jī)定時時間。如圖3.2為LCD1602子程序流程圖。LCD初始化子程序入口LCD清屏單片機(jī)向LCD寫命令單片機(jī)向LCD寫數(shù)據(jù)顯示數(shù)據(jù)返回NY圖3.2LCD1602子程序流程圖根據(jù)LCD1602的數(shù)據(jù)手冊,在使用LCD1602之前需要進(jìn)行初始化,初始化需要完成2個工作,通過程序為LCD1602寫入相關(guān)設(shè)置指令。如圖3.3所示為LCD1602內(nèi)部的RAM地址映射圖:圖3.3地址映射圖如圖3.4所示為LCD1602寫操作時序:圖3.4LCD1602寫操作時序?qū)懭霐?shù)據(jù)需要以下幾個步驟:首先需要通過RS信號確定是寫數(shù)據(jù)還是寫命令[20],因為寫數(shù)據(jù)是指顯示什么內(nèi)容,寫命令是寫入什么指令。第二步:R/W端口輸入一個低電平;第三步:將數(shù)據(jù)從單片機(jī)的I/O口輸送給液晶的數(shù)據(jù)端口;第四步:在E端口給一個持續(xù)高電平,即可完成寫操作。3.3液位傳感器的程序設(shè)計在基于單片機(jī)的智能涂料攪料器設(shè)計中,為了便于操作使系統(tǒng)更加智能化,諧振式液位傳感器需要通過RXD與TXD端口與單片機(jī)進(jìn)行信息的交換,單片機(jī)根據(jù)得到的液位信號設(shè)定攪拌時間。從而實(shí)現(xiàn)根據(jù)不同深度自動設(shè)置定時時間的功能。單片機(jī)串口初始化,然后接受傳感器數(shù)據(jù),按照顯示要求取出8,9,10三位,分別送給顯示屏,然后將這三位通過公式轉(zhuǎn)換成常量,從而判斷水深做出倒計時時間。水位的計算公式為:(RX_Buffer[8]-0x30)*100+(RX_Buffer[9]-0x30)*10+(RX_Buffer[10]-0x30)3.4電機(jī)定時與轉(zhuǎn)速控制程序設(shè)計在基于單片機(jī)的智能涂料攪料器設(shè)計中,單片機(jī)需要控制電機(jī)持續(xù)轉(zhuǎn)動的時間。持續(xù)轉(zhuǎn)動的時間就由單片機(jī)內(nèi)部的定時器設(shè)定,當(dāng)計數(shù)記滿以后產(chǎn)生一個中斷,并產(chǎn)生相應(yīng)的信號以控制電機(jī)的EN端口[21],控制電機(jī)停止或轉(zhuǎn)動。本次基于單片機(jī)的智能涂料攪料器設(shè)計中,根據(jù)單片機(jī)外界11.0592MHz的晶振,通過計算可得單片機(jī)的一個機(jī)器周期為:同時單片機(jī)最多可計數(shù)65535個,因此中斷溢出一次的時間約為65ms。而在實(shí)際使用系統(tǒng)的過程中,對電機(jī)的定時通常應(yīng)是設(shè)定時間在分秒量級,比如1分10秒,為了程序設(shè)計中取整數(shù)倍比較方便,我們設(shè)定定時器計時時間為10ms。如此,中斷一百次以后,就是時間過去了1秒。同時在程序設(shè)計中,判斷中斷為100次以后,則計數(shù)參數(shù)減1,即為電機(jī)還需要運(yùn)行的時間少1秒。當(dāng)計數(shù)參數(shù)為0,也就是計數(shù)時間減少為0的時候,通知單片機(jī)的P3.4口輸出恒為低電平的信號,控制電機(jī)的EN端口,使電機(jī)停止轉(zhuǎn)動。轉(zhuǎn)速控制程序設(shè)計,在基于單片機(jī)的智能涂料攪料器設(shè)計中,為了對電機(jī)的轉(zhuǎn)速進(jìn)行調(diào)節(jié),我們需要通過與電機(jī)PWM相連的P3.7端口輸出不同占空比的PWM波形。占空比是高電平持續(xù)時間占一個周期的百分比,占空比越大,也就是P3.7口輸出的高電平時間越長,電機(jī)轉(zhuǎn)速越快。單片機(jī)輸出PWM波的時候,通常有下列辦法:第一個是利用軟件延時,當(dāng)設(shè)定的時間到,對輸出的高低電平取反,。第二個是利用定時器對高低電平時間進(jìn)行控制。第三個是PWM控制器。為了便于程序設(shè)計,基于單片機(jī)的智能涂料攪料器設(shè)計系統(tǒng)程序設(shè)計中,我們選用上述第二種方案,即單片機(jī)內(nèi)部的定時器實(shí)現(xiàn)對高低電平的持續(xù)時間控制[22]。結(jié)合方案的介紹,我們可以首先需要確定一個恒定的周期(50ms),實(shí)現(xiàn)方法即可通過上文的計數(shù)器,我們?yōu)榱吮WC步長足夠小,設(shè)定中斷時間為10微秒,本次設(shè)計中,中斷次數(shù)用參數(shù)usCnt來表示,最大計數(shù)次數(shù)為5000次,即usCnt最大值為5000,達(dá)到5000以后置0。而后我們更改對計數(shù)的判決門限(用參數(shù)rCnt來表示)來設(shè)置不同長度的高電平。然后計算定時器的初值N:N=10/1.09≈10根據(jù)計算得到的初值,計算裝入TH1和TH2的數(shù)TH1=(65536-10)/256=255.9TH2=(65536-10)%256=246最終裝入的初值為255(0xFF)和246(0xF6)。單片機(jī)每產(chǎn)生中斷一次,就對此時的中斷計數(shù)值usCnt進(jìn)行判斷,若是大于5000則置0,同時對rCnt和usCnt來作比較,若rCnt的值大于usCnt的值,則控制P3.7口輸出高電平[23],控制電機(jī)的PWM端口,否則P3.7口輸出低電平,如此形成了一個PWM信號,送交給電機(jī)的PWM口,控制轉(zhuǎn)速。當(dāng)外部按鍵K6按下的時候,rCnt值加大,則高電平占整個周期(5000)的比例加大,電機(jī)轉(zhuǎn)速會加快。3.5按鍵控制程序設(shè)計根據(jù)基于單片機(jī)的智能涂料攪料器設(shè)計,系統(tǒng)在開關(guān)按下的時候需要對其工作狀態(tài)(啟動、停止),工作模式(轉(zhuǎn)速、計時時間)等進(jìn)行靈活響應(yīng)并調(diào)整[24],實(shí)現(xiàn)適應(yīng)在不同情況下進(jìn)行攪料。為了實(shí)現(xiàn)上述功能,進(jìn)行按鍵控制程序設(shè)計,如圖3.5為按鍵檢測程序流程圖。圖3.5按鍵檢測流程圖(1)Key1:復(fù)位鍵由于開關(guān)按鍵連接到單片機(jī)的復(fù)位端口RST口,為了方便操作,我們首先對RST口進(jìn)行聲明,即將RST端口定義為Key,后續(xù)程序中不斷的對Key值進(jìn)行檢測判斷即可再執(zhí)行相關(guān)的指令。根據(jù)電路設(shè)計,理論上在Key值為0時,表明開關(guān)被按下,但由于手動按下開關(guān)再釋放的這個過程有一定的抖動現(xiàn)象,因此我們判斷Key值為0以后加上一個去抖操作,通常加上一個10ms的延時即可,延時過后再次對Key值進(jìn)行判斷,如果Key值仍為0,即表明開關(guān)按下,單片機(jī)進(jìn)行復(fù)位,整個程序重新執(zhí)行。然后判斷Key值是否恢復(fù)到1,如果為1表明按鍵被釋放,再次回到程序入口,不斷檢測Key值是否為0,判斷開關(guān)是否按下,如果Key為0則繼續(xù)等待。(2)Key2:啟動鍵由于開關(guān)按鍵連接到單片機(jī)的P1.0口,為了方便操作,我們首先對P1.0口進(jìn)行聲明,即將P1.0端口定義為Key2,后續(xù)程序中不斷的對Key2值進(jìn)行檢測判斷即可再執(zhí)行相關(guān)的指令。Key2值為0以后加上一個去抖操作,通常加上一個10ms的延時即可,延時過后再次對Key2值進(jìn)行判斷,如果Key2值仍為0,即表明開關(guān)按下,通知單片機(jī)的P3.4口輸出恒為高電平的信號,控制電機(jī)的EN端口,使電機(jī)開始以設(shè)置的轉(zhuǎn)速轉(zhuǎn)動。然后判斷Key2值是否恢復(fù)到1,如果為1表明按鍵被釋放,再次回到程序入口,不斷檢測Key值是否為0,判斷開關(guān)是否按下,如果Key2為0則繼續(xù)等待。(3)Key3:停止鍵由于開關(guān)按鍵連接到單片機(jī)的P1.1口,為了方便操作,我們首先對P1.1口進(jìn)行聲明,即將P1.1端口定義為Key3,后續(xù)程序中不斷的對Key3值進(jìn)行檢測判斷即可再執(zhí)行相關(guān)的指令。Key3值為0以后加上一個去抖操作,通常加上一個10ms的延時即可,延時過后再次對Key3值進(jìn)行判斷,如果Key3值仍為0,即表明開關(guān)按下,通知單片機(jī)的P3.4口輸出恒為低電平的信號,控制電機(jī)的EN端口,使電機(jī)停止轉(zhuǎn)動。然后判斷Key3值是否恢復(fù)到1,如果為1表明按鍵被釋放,再次回到程序入口,不斷檢測Key3值是否為0,判斷開關(guān)是否按下,如果Key3為0則繼續(xù)等待。(4)Key4:正轉(zhuǎn)鍵由于開關(guān)按鍵K4連接到單片機(jī)的P1.2口,為了方便操作,我們首先對P1.2口進(jìn)行聲明,即將P1.2端口定義為Key4,后續(xù)程序中不斷的對Key3值進(jìn)行檢測判斷即可再執(zhí)行相關(guān)的指令。Key4值為0以后加上一個去抖操作,通常加上一個10ms的延時即可,延時過后再次對Key4值進(jìn)行判斷,如果Key4值仍為0,即表明開關(guān)按下,通知單片機(jī)的P3.5口輸出恒為高電平的信號,控制電機(jī)的CW/CCW選擇端口,使電機(jī)按照順時針方向轉(zhuǎn)動。然后判斷Key4值是否恢復(fù)到1,如果為1表明按鍵被釋放,再次回到程序入口,不斷檢測Key4值是否為0,判斷開關(guān)是否按下,如果Key4為0則繼續(xù)等待。(5)Key5:反轉(zhuǎn)鍵由于開關(guān)按鍵K5連接到單片機(jī)的P1.3口,為了方便操作,我們首先對P1.3口進(jìn)行聲明,即將P1.3端口定義為Key5,后續(xù)程序中不斷的對Key5值進(jìn)行檢測判斷即可再執(zhí)行相關(guān)的指令。Key5值為0以后加上一個去抖操作,通常加上一個10ms的延時即可,延時過后再次對Key5值進(jìn)行判斷,如果Key5值仍為0,即表明開關(guān)按下,通知單片機(jī)的P3.5口輸出恒為低電平的信號,控制電機(jī)的CW/CCW選擇端口,使電機(jī)按照逆時針方向轉(zhuǎn)動。然后判斷Key5值是否恢復(fù)到1,如果為1表明按鍵被釋放,再次回到程序入口,不斷檢測Key5值是否為0,判斷開關(guān)是否按下,如果Key5為0則繼續(xù)等待。(6)Key6:加速鍵由于開關(guān)按鍵K6連接到單片機(jī)的P1.4口,為了方便操作,我們首先對P1.4口進(jìn)行聲明,即將P1.4端口定義為Key6,后續(xù)程序中不斷的對Key6值進(jìn)行檢測判斷即可再執(zhí)行相關(guān)的指令。Key6值為0以后加上一個去抖操作,通常加上一個10ms的延時即可,延時過后再次對Key6值進(jìn)行判斷,如果Key6值仍為0,即表明開關(guān)按下,通知單片機(jī)的P3.7口給電機(jī)的PWM端口輸出占空比更大的PWM信號,使電機(jī)轉(zhuǎn)速加快。然后判斷Key6值是否恢復(fù)到1,如果為1表明按鍵被釋放,再次回到程序入口,不斷檢測Key6值是否為0,判斷開關(guān)是否按下,如果Key6為0則繼續(xù)等待。(7)Key7:減速鍵由于開關(guān)按鍵K7連接到單片機(jī)的P1.5口,為了方便操作,我們首先對P1.5口進(jìn)行聲明,即將P1.5端口定義為Key7,后續(xù)程序中不斷的對Key7值進(jìn)行檢測判斷即可再執(zhí)行相關(guān)的指令。Key7值為0以后加上一個去抖操作,通常加上一個10ms的延時即可,延時過后再次對Key7值進(jìn)行判斷,如果Key7值仍為0,即表明開關(guān)按下,通知單片機(jī)的P3.7口給電機(jī)的PWM端口輸出占空比更小的PWM信號,使電機(jī)轉(zhuǎn)速降低。然后判斷Key7值是否恢復(fù)到1,如果為1表明按鍵被釋放,再次回到程序入口,不斷檢測Key7值是否為0,判斷開關(guān)是否按下,如果Key7為0則繼續(xù)等待。(8)Key8:計時分鐘增加由于開關(guān)按鍵K8連接到單片機(jī)的P1.6口,為了方便操作,我們首先對P1.6口進(jìn)行聲明,即將P1.6端口定義為Key8,后續(xù)程序中不斷的對Key8值進(jìn)行檢測判斷即可再執(zhí)行相關(guān)的指令。Key8值為0以后加上一個去抖操作,通常加上一個10ms的延時即可,延時過后再次對Key8值進(jìn)行判斷,如果Key8值仍為0,即表明開關(guān)按下,單片機(jī)內(nèi)部的計數(shù)變量加60,即等于電機(jī)的計時加上一分鐘。然后判斷Key8值是否恢復(fù)到1,如果為1表明按鍵被釋放,再次回到程序入口,不斷檢測Key8值是否為0,判斷開關(guān)是否按下,如果Key8為0則繼續(xù)等待。(9)Key9:計時秒鐘增加由于開關(guān)按鍵K9連接到單片機(jī)的P1.7口,為了方便操作,我們首先對P1.7口進(jìn)行聲明,即將P1.7端口定義為Key9,后續(xù)程序中不斷的對Key9值進(jìn)行檢測判斷即可再執(zhí)行相關(guān)的指令。Key9值為0以后加上一個去抖操作,通常加上一個10ms的延時即可,延時過后再次對Key9值進(jìn)行判斷,如果Key9值仍為0,即表明開關(guān)按下,單片機(jī)內(nèi)部的計數(shù)變量加10,即等于電機(jī)的計時加上10秒鐘。然后判斷Key9值是否恢復(fù)到1,如果為1表明按鍵被釋放,再次回到程序入口,不斷檢測Key9值是否為0,判斷開關(guān)是否按下,如果Key9為0則繼續(xù)等待。4系統(tǒng)調(diào)試4.1焊接與調(diào)試本次對基于單片機(jī)的智能涂料攪料器設(shè)計中使用的是AltiumDesigner軟件完成電路板的繪制,在完成基于單片機(jī)的智能涂料攪料器設(shè)計的電路設(shè)計以后,生成PCB。當(dāng)電路板原理圖繪制完成后,確認(rèn)各個模塊功能沒有錯誤[25],在確定原理圖沒有出現(xiàn)錯誤的情況下我們開始進(jìn)行焊接,使用市場上比較常用的萬能板進(jìn)行焊接。最終得到的實(shí)物圖如圖4.1所示圖4.1實(shí)物圖4.2程序燒錄與調(diào)試在整體系統(tǒng)上電調(diào)試前,大概觀察下焊接的系統(tǒng)還存在問題,例如存在很顯眼的斷裂,正負(fù)極接反以及相連、虛焊、等問題,然后用萬用表檢測一下,電源正負(fù)極之間是否短路等嚴(yán)重的電源問題,最終保證系統(tǒng)焊接沒有問題。在搭建調(diào)試平臺后我們對軟件程序進(jìn)行調(diào)試,在程序調(diào)試通過后開始驗證系統(tǒng)功能是否滿足要求,如果功能沒有實(shí)現(xiàn)或?qū)崿F(xiàn)不完全,需要繼續(xù)調(diào)試程序,反復(fù)進(jìn)行,直到所有功能都實(shí)現(xiàn)為止。圖4.2系統(tǒng)運(yùn)行時實(shí)物圖4.3系統(tǒng)調(diào)試當(dāng)單片機(jī)焊接好之后,將STC89C51單片機(jī)和各個模塊都插上去,給系統(tǒng)12V供電,此時為系統(tǒng)初始狀態(tài)如圖4.3所示。按下啟動鍵以后,電源燈會常亮,屏幕的初始值:暫停狀態(tài),CW,5000轉(zhuǎn)速,定時時間為0。按下運(yùn)行按鍵系統(tǒng)開始以默認(rèn)速度(5000)運(yùn)行,按下暫停以后,電機(jī)停止轉(zhuǎn)動。第三個按鍵是調(diào)節(jié)正轉(zhuǎn),初始設(shè)置就是正轉(zhuǎn),所以沒有發(fā)生變化。第四個按鍵是翻轉(zhuǎn),按下以后屏幕顯示CCW,再按下啟動以后,可以看到電機(jī)逆時針方向轉(zhuǎn)動。第五個和第六個分別是速度加和速度減按鍵,可以調(diào)整速度。第七個按鍵是設(shè)置定時時間,按下以后增加一分鐘,第八個按鍵是每次增加10秒鐘。設(shè)置好定時時間以后,系統(tǒng)就以設(shè)置的速度運(yùn)行,如果按暫停,也可暫停。經(jīng)過調(diào)試與驗證,基于單片機(jī)的智能涂料攪料器設(shè)計已經(jīng)實(shí)現(xiàn)了初始的應(yīng)用需求,并有很強(qiáng)的可靠性與實(shí)用性。圖4.3程序初始狀態(tài)4.4遇到的問題及解決方法(1)由于按下按鍵就會產(chǎn)生機(jī)械抖動,當(dāng)按下一次按鍵時可能會讓系統(tǒng)讀取到多次的按鍵按下的次數(shù),從而導(dǎo)致無法設(shè)置。解決方法是進(jìn)行軟件消抖,延時時間要設(shè)置恰當(dāng)。(2)焊接完成后,發(fā)現(xiàn)顯示器的第一位無法顯示,初步懷疑電阻有損壞,但是用萬用表測量后發(fā)現(xiàn)器件正常,單片機(jī)輸出正常,進(jìn)一步對各個器件測量后發(fā)現(xiàn)是管腳虛焊,從而導(dǎo)致電路不通,重新焊接后顯示正常。(3)上電打開電源開關(guān),按動按鍵使系統(tǒng)運(yùn)行,發(fā)現(xiàn)電機(jī)軸的轉(zhuǎn)動不易察覺,因此在電機(jī)的軸上加上標(biāo)志物,以便利于觀察。(4)程序編寫完成后進(jìn)行編譯連接,顯示“0error0warning”后說明無語法錯誤[26],再次檢查看是否有邏輯錯誤,檢查無誤后燒錄進(jìn)單片機(jī)內(nèi)。結(jié)論本設(shè)計是對涂料攪拌系統(tǒng)進(jìn)行新的突破性設(shè)計,其中動力模塊的設(shè)計更加的便于控制。顯示模塊起到安全增加工作效率的作用,方便人們的使用。設(shè)計采用模塊化方法設(shè)計,主要分為硬件設(shè)計和軟件設(shè)計兩個部分,其中包括四個模塊,分別為:按鍵模塊、動力模塊、傳感器模塊、顯示模塊。軟件設(shè)計部分主要是編寫程序控制整個系統(tǒng),并且單片機(jī)能夠響應(yīng)按鍵模塊輸入的指令信號,并對程序中的參數(shù)做出實(shí)時修改,進(jìn)而控制電機(jī)的運(yùn)行狀態(tài)。在調(diào)查過程中,發(fā)現(xiàn)市場上的涂料攪拌器機(jī)幾乎沒有使用LCD顯示屏的,傳統(tǒng)的涂料攪拌器都是接通電源,傳輸機(jī)一直工作不能實(shí)現(xiàn)調(diào)速定時等控制,非常耗能并且還不安全,本設(shè)計中加入LCD1602來顯示系統(tǒng)的運(yùn)行狀態(tài),便于操作者來決定電動機(jī)的工作狀態(tài)以及涂料的攪拌完成度,對比傳統(tǒng)的攪拌器更加的省時省力。加入了諧振式液位傳感器來控制攪拌的時間,使系統(tǒng)更加的便于操作。本文從系統(tǒng)總體架構(gòu)、需求分析與方案設(shè)計、系統(tǒng)器件選擇、系統(tǒng)架構(gòu)、系統(tǒng)硬件設(shè)、單片機(jī)外圍電路設(shè)計、STC89C51單片機(jī)介紹、STC89C51單片機(jī)外圍電路設(shè)計、LCD1602液晶顯示電路設(shè)計、LCD1602液晶顯示器介紹、LCD1602液晶外圍電路設(shè)計、電機(jī)外圍電路設(shè)計、供電電路設(shè)計、系統(tǒng)軟件流程設(shè)計、程序架構(gòu)、LCD、示程序設(shè)計、電機(jī)定時與轉(zhuǎn)速控制程序設(shè)計、按鍵控制程序設(shè)計、系統(tǒng)調(diào)試、焊接與調(diào)試、系統(tǒng)調(diào)試、

程序燒錄與調(diào)試、遇到的問題及解決問題方法方面去闡述分析單片機(jī)智能涂料攪拌攪拌設(shè)計系統(tǒng)。本次所設(shè)計的基于單片機(jī)的智能涂料攪料器設(shè)計,主要需要實(shí)現(xiàn)以下一些功能,首先系統(tǒng)能夠接收外部人為控制,實(shí)現(xiàn)電機(jī)的正轉(zhuǎn)反轉(zhuǎn),使得涂料能夠充分?jǐn)嚢?;第二點(diǎn)是電機(jī)能夠以不同的速度進(jìn)行攪拌,使用過程中可以實(shí)現(xiàn)靈活的加速與減速操作;第三點(diǎn)是如果攪拌時間較長,可以設(shè)置定時,同時通過液位傳感器也可進(jìn)行定時,實(shí)現(xiàn)無人值守,減輕工人壓力,提高效率;第四點(diǎn)是以上這些操作、流程、轉(zhuǎn)速等都可以實(shí)時顯示,讓使用者能夠清楚目前的狀態(tài)。在完成了系統(tǒng)電路的設(shè)計以后,系統(tǒng)的主要功能還需要通過軟件實(shí)現(xiàn),需要進(jìn)行相關(guān)軟件流程設(shè)計,實(shí)現(xiàn)基于單片機(jī)的智能涂料攪料器設(shè)計預(yù)定的相關(guān)功能,基于單片機(jī)的智能涂料攪拌器設(shè)計中使用的是AltiumDesigner軟件完成電路板的繪制。參考文獻(xiàn)[1]沈紅衛(wèi).基于單片機(jī)的智能系統(tǒng)設(shè)計與實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,2005:30-35[2]羅睿智,盧恩耀,彭金堯,周雨軒,徐瑞.淺析單片機(jī)的原理及其在各領(lǐng)域的應(yīng)用[J].計算機(jī)產(chǎn)品與流通,2019(08)[3]朱昆泉,許林發(fā).建材機(jī)械工業(yè)手冊[M].武漢:武漢工業(yè)大學(xué)出版社,2000.7[4]李全利.單片機(jī)原理及應(yīng)用技術(shù)[J].北京:高等教育出版社,2009[5]胡學(xué)海.單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計[M].北京:電子工業(yè)出版社,2007:66-156[6]黃克亞.高等院校嵌入式系統(tǒng)課程單片機(jī)選型比較[J].電子世界,2020(01)[7]張緒光,劉在娥.電路與模擬電子技術(shù)[M].北京:北京大學(xué)出版社,2010[8]李廣弟.單片機(jī)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2001:56-64[9]馮忠緒,王衛(wèi)中.攪拌機(jī)合理轉(zhuǎn)速的研究[J].中國公路學(xué)報(自然科學(xué)版),2006(4):9-18[10]謝維成.單片機(jī)原理與應(yīng)用及C51程序設(shè)計[M].北京:清華大學(xué)出版社,2009[11]劉中琦,曾維鑫,張帆.型煤攪拌機(jī)攪拌機(jī)構(gòu)計算機(jī)輔助設(shè)計[J].煤礦機(jī)械,2000,21(6):7-8[12]劉建清.輕松玩轉(zhuǎn)51單片機(jī)C語言[M].北京:航空航天大學(xué)出版社,2011[13]谷秀容.單片機(jī)原理與應(yīng)用[M].北京:北京交通大學(xué)出版社,2009:152-233[14]郭天祥.51單片機(jī)C語言教程[M].北京:電子工業(yè)出版社,2009[15]李朝青.單片機(jī)學(xué)習(xí)指導(dǎo)[M].北京航空航天大學(xué)出版社,2002.1[16]許林發(fā)主編.建筑材料機(jī)械設(shè)計[J].武漢:武漢工業(yè)大學(xué)出版社,1990[17]褚瑞卿主編.建材通用機(jī)械與設(shè)備[J].武漢:武漢理工大學(xué)出版社,1996[18]胡家秀主編.機(jī)械零件設(shè)計實(shí)用手冊[M].北京:機(jī)械工業(yè)出版社,1999.10[19]李益民主編.機(jī)械制造工藝設(shè)計手冊[M].北京:機(jī)械工業(yè)出版社,1995.10[20]甘永立.幾何量公差與檢測[M].上海:上??茖W(xué)技術(shù)出版社,2001.4[21]黃智偉.印刷電路板設(shè)計技術(shù)與實(shí)踐[M].北京:電子工業(yè)出版社,2013[22]張俊謨.單片機(jī)中級教程[M].北京:北京航天航空大學(xué)出版社,2006[23]徐曉光.數(shù)字邏輯與數(shù)字電路[M].北京:機(jī)械工業(yè)出版社,2008[24]張德寧,程曼,張夢,索雪松.基于Proteus的《單片機(jī)原理與應(yīng)用》實(shí)驗實(shí)踐[J].科學(xué)技術(shù)創(chuàng)新,2017(19):107-108[25]何立民.單片機(jī)應(yīng)用系統(tǒng)設(shè)計[J].北京:航天航空大學(xué)出版社,2008[26]黃河,郭紀(jì)林.單片機(jī)原理及應(yīng)用[M].大連:大連理工大學(xué)出版社,2009附錄1原理圖附錄2源程序清單主程序:#include"reg52.h"#include"lcd1602.h"sbitLED1=P3^2;sbitK2=P1^0;sbitK3=P1^1;sbitK4=P1^2;sbitK5=P1^3;sbitK6=P1^4;sbitK7=P1^5;sbitK8=P1^6;sbitK9=P1^7;sbitg_Den=P3^4; //用于啟動sbitg_Drf=P3^5; //用于正反轉(zhuǎn)sbitg_Pwm=P3^7; //pwm輸出#defineMOTOR_STOP 0#defineMOTOR_RUNNING 1#defineDIR_CW 1#defineDIR_CCW 2#defineRATE_MAX5000#defineRATE_RATE500u16g_usRateCnt=RATE_MAX;u8g_ucCw=DIR_CW;u8g_ucRunning=MOTOR_STOP;u16g_ulClock=0;unsignedchar uart_wr=0; //寫指針unsignedchar uart_rd; //讀指針charg_ascBak[16]={0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20};unsignedchar RX_Buffer[20]={'0'}; //接收緩沖unsignedchar aucTmpBuf[20]={'0'}; //接收緩沖bitdisplay_flag=0;bitt0_triger_motor_flag=0;bitt0_show_timer_ex_flag=0;bitt1_pwm=0;bitk2_flag=0;#defineKEY_DELAY200/*******************0616******************/typedefunsignedcharBYTE;typedefunsignedintWORD;#defineFOSC11059200L//Systemfrequency#defineBAUD9600//UARTbaudratebitbusy;staticintarrayto_num(void){ intarr_num=0; arr_num=(RX_Buffer[8]-0x30)*100+(RX_Buffer[9]-0x30)*10+(RX_Buffer[10]-0x30); returnarr_num;} /*UARTinterruptserviceroutine616*/voidUart_Isr()interrupt4{if(RI){ RI=0;//ClearreceiveinterruptflagRX_Buffer[uart_wr]=SBUF; SBUF=RX_Buffer[uart_wr]; if(++uart_wr>=13) { display_flag=1; uart_wr=0; } while(!TI); //等待發(fā)送數(shù)據(jù)完成 TI=0; //清除發(fā)送完成標(biāo)志位 }if(TI){TI=0;//Cleartransmitinterruptflagbusy=0;//Cleartransmitbusyflag}}//顯示電機(jī)狀態(tài)運(yùn)行(RUNNING)或停止(STOPED)staticvoid_show_motor_stat(){ LCDprintStr(0,0,g_ascBak,8); if(MOTOR_STOP==g_ucRunning) LCDprintStr(0,0,"stopped",7); if(MOTOR_RUNNING==g_ucRunning) LCDprintStr(0,0,"running",7);}//顯示倒計時staticvoid_show_timer_ex(){ u16usTime=0; u8y=0; u16usMin=0; u16usSec=0; usTime=g_ulClock; usMin=usTime/60; usSec=usTime%60; if(usMin<10) y=1; elseif(usMin<100) y=2; elseif(usMin<1000) y=3; else y=4; LCDprintStr(10,0,g_ascBak,6); LCDprintNum(10,0,usMin,y); LCDprintStr(10+y,0,":",1); LCDprintNum(11+y,0,usSec,2);}//顯示電機(jī)轉(zhuǎn)速staticvoid_show_motor_rate(){ LCDprintStr(0,1,g_ascBak,4); LCDprintNum(0,1,g_usRateCnt,4);}//顯示電機(jī)旋轉(zhuǎn)方向正轉(zhuǎn)(CW)或反轉(zhuǎn)(CCW)staticvoid_show_motor_direction(){ LCDprintStr(6,1,g_ascBak,3); if(DIR_CW==g_ucCw) LCDprintStr(6,1,"cw",2); if(DIR_CCW==g_ucCw) LCDprintStr(6,1,"ccw",3);}//顯示水位深度毫米staticvoidwater_deep(void){ if(1==display_flag) { LCDprintStr(10,1,&RX_Buffer[8],3); LCDprintStr(13,1,"mm",2); display_flag=0; }}voidwdeep_time(void){ inta_num=0; if(k2_flag==1)return; a_num=arrayto_num(); if(a_num<300) { g_ulClock=30; } if((a_num>=300)&&(a_num<600)) { g_ulClock=60; } if(a_num>600) { g_ulClock=90; } }voidtriger_motor(u8stat){ if(stat!=MOTOR_RUNNING&&stat!=MOTOR_STOP) { return; } g_ucRunning=stat; _show_motor_stat(); if(MOTOR_RUNNING==stat) g_Den=0;//開啟 else g_Den=1;//停止}voidtriger_cw(u8stat){ if(stat!=DIR_CW&&stat!=DIR_CCW) { return; } g_ucCw=stat; _show_motor_direction(); if(DIR_CW==stat) g_Drf=1;//正轉(zhuǎn) else g_Drf=0;//反轉(zhuǎn)}void_scan_k8(){ staticu8ucCnt=0; if(g_ucRunning) return; if(0==K8) { if(ucCnt<KEY_DELAY) ucCnt++; } elseif(1==K8&&KEY_DELAY==ucCnt) { if(g_ulClock<=65475) g_ulClock+=60; else g_ulClock=65535; _show_timer_ex(); ucCnt=0; }}void_scan_k9(){ staticu8ucCnt=0; if(g_ucRunning) return; if(0==K9) { if(ucCnt<KEY_DELAY) ucCnt++; } elseif(1==K9&&KEY_DELAY==ucCnt) { if(g_ulClock<=65525) g_ulClock+=10; else g_ulClock=65535; _show_timer_ex(); ucCnt=0; }}void_scan_k6(){ staticu8ucCnt=0; if(0==K6) { if(ucCnt<KEY_DELAY) ucCnt++; } elseif(1==K6&&KEY_DELAY==ucCnt) { if(g_usRateCnt+RATE_RATE<=RATE_MAX) g_usRateCnt+=RATE_RATE; else g_usRateCnt=RATE_MAX; _show_motor_rate(); ucCnt=0; }}void_scan_k7(){ staticu8ucCnt=0; if(0==K7) { if(ucCnt<KEY_DELAY) ucCnt++; } elseif(1==K7&&KEY_DELAY==ucCnt) { if(g_usRateCnt<=RATE_RATE) g_usRateCnt=0; else g_usRateCnt-=RATE_RATE; _show_motor_rate(); ucCnt=0; }}void_scan_k2(){ staticu8ucCnt=0; if(0==K2) { if(ucCnt<KEY_DELAY) ucCnt++; } elseif(1==K2&&KEY_DELAY==ucCnt) { k2_flag=1; triger_motor(MOTOR_RUNNING);//觸發(fā)電機(jī)啟動 ucCnt=0; }}void_scan_k3(){ staticu8ucCnt=0; if(0==K3) { if(ucCnt<KEY_DELAY) ucCnt++; } elseif(1==K3&&KEY_DELAY==ucCnt) { triger_motor(MOTOR_STOP);//觸發(fā)電機(jī)停止 ucCnt=0; }}void_scan_k4(){ staticu8ucCnt=0; if(0==K4) { if(ucCnt<KEY_DELAY) ucCnt++; } elseif(1==K4&&KEY_DELAY==ucCnt) { triger_cw(DIR_CW);//觸發(fā)正轉(zhuǎn) ucCnt=0; }}void_scan_k5(){ staticu8ucCnt=0; if(0==K5) { if(ucCnt<KEY_DELAY) ucCnt++; } elseif(1==K5&&KEY_DELAY==ucCnt) { triger_cw(DIR_CCW);//觸發(fā)反轉(zhuǎn) ucCnt=0; }}voidkeyscan()//鍵盤掃描函數(shù){ _scan_k2(); _scan_k3(); _scan_k4(); _scan_k5(); _scan_k6(); _scan_k7(); _scan_k8(); _scan_k9();}voidint1()interrupt1 //定時器0顯示倒計時{ staticu8ucCnt=0; staticu16led_flag=0; TH0=0xdc; TL0=0x00;//定時10ms ucCnt++; led_flag++; if(led_flag>=100) { LED1=~LED1; led_flag=0; } if(!(ucCnt%100)) { if(g_ulClock&&g_ucRunning) { g_ulClock--; if(!g_ulClock) { t0_triger_motor_flag=1; g_Den=1; } } t0_show_timer_ex_flag=1; }}staticvoidpwm_out()//TM1控制pwm輸出{ staticu16usCnt=0; usCnt++; if(usCnt>=RATE_MAX) usCnt=0; if(g_usRateCnt>usCnt) { g_Pwm=1; } else { g_Pwm=0; }}#defineV_RATE0xa4voidint3()interrupt3 //產(chǎn)生PWM{ TH1=0xff; //65526/256 TL1=V_RATE; //65526%256定時10us t1_pwm=1;}//初始化系統(tǒng)時鐘staticvoid_init_tm(){ //TMOD=0; TMOD=0x01; //定時器0工作在方式1 TH0=0xdc; //56320/256 TL0=0x00; //56320%256每10ms溢出一次,也就是產(chǎn)生一次中斷 TR0=1; TMOD|=0x10; //定時器1工作在方式1 TH1=0xff; //65526/256 TL1=V_RATE; //65526%256定時10us TR1=1; T2CON=0x34;//Timer2startrun0616 TL2=RCAP2L=(65536-(FOSC/32/BAUD));//Setauto-reloadvauleTH2=RCAP2H=(65536-(FOSC/32/BAUD))>>8; TR2=1; //定時器2開始計時 SCON=0x50; ES=1; ET0=1; //定時器0開中斷intr1 ET1=1; //定時器1開中斷intr3 EA=1; //開起系統(tǒng)中斷}/* 系統(tǒng)初始化*/voidinit(){ LCDinit(); //初始化LCD1602 triger_motor(MOTOR_STOP);//默認(rèn)關(guān)閉電機(jī) triger_cw(DIR_CW); //默認(rèn)電機(jī)正轉(zhuǎn) _show_motor_rate(); _show_timer_ex(); _init_tm(); //初始化定時 }voidmain(){ u16i=0;init(); while(1) { if(t0_triger_motor_flag==1) { triger_motor(MOTOR_STOP); t0_triger_motor_flag=0; } if(t0_show_timer_ex_flag==1) { _show_timer_ex(); t0_show_timer_ex_flag=0; } wdeep_time(); if(1==t1_pwm) { pwm_out(); t1_pwm=0; } keyscan(); //鍵盤掃描程序 water_deep(); }}屏幕初始化代碼:#include<reg52.h>#include"lcd1602.h"#defineLCD1602_DBP0sbitLCD1602_RS=P2^5;sbitLCD1602_RW=P2^6;sbitLCD1602_E=P2^7;/*等待液晶準(zhǔn)備好*/voidLCDwaitReady(){uint8_tstate;LCD1602_DB=0xFF;LCD1602_RS=0;LCD1602_RW=1;do{LCD1602_E=1;state=LCD1602_DB;//讀取狀態(tài)字LCD1602_E=0;}while(state&0x80);//bit7等于1表示液晶正忙,重復(fù)測試直到其等于0為止}/*向LCD1602液晶寫入一字節(jié)命令,cmd-待寫入命令值*/voidLCDwriteCmd(uint8_tcmd){LCDwaitReady();LCD1602_RS=0;LCD1602_RW=0;LCD1602_DB=cmd;LCD1602_E=1;LCD1602_E=0;}/*向LCD1602液晶寫入一個字節(jié)數(shù)據(jù),dat-待寫入數(shù)據(jù)值*/voidLCDwriteDat(uint8_tdat){LCDwaitReady();LCD1602_RS=1;LCD1602_RW=0;LCD1602_DB=dat;LCD1602_E=1;LCD1602_E=0;}/*設(shè)置顯示RAM起始地址,亦即光標(biāo)位置,(col,row)-對應(yīng)屏幕上的字符坐標(biāo)*/voidLCDsetCursor(uint8_tcol,uint8_trow){uint8_taddr;if(row==0)//由輸入的屏幕坐標(biāo)計算顯示RAM的地址addr=col; //第一行字符地址從0x00起始elseaddr=0x40+col; //第二行字符地址從0x40起始LCDwriteCmd(addr|

溫馨提示

  • 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

提交評論