版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
本科論文目錄摘要 IAbstract II引言 31系統(tǒng)總體架構(gòu) 61.1需求分析與方案設計 61.2系統(tǒng)架構(gòu) 71.3系統(tǒng)器件選擇 72系統(tǒng)硬件設計 92.1單片機外圍電路設計 92.2LCD1602液晶顯示電路設計 142.3電機外圍電路設計 152.4供電電路設計 163系統(tǒng)軟件流程設計 173.1系統(tǒng)總體流程 173.2LCD顯示程序設計 183.3液位傳感器的程序設計 193.4電機定時與轉(zhuǎn)速控制程序設計 193.5按鍵控制程序設計 214系統(tǒng)調(diào)試 254.1焊接與調(diào)試 254.2程序燒錄與調(diào)試 254.3系統(tǒng)調(diào)試 264.4遇到的問題及解決方法 27結(jié)論 28參考文獻 29附錄1原理圖 31附錄2源程序清單 32致謝 52本科論文摘要目前,在社會主義現(xiàn)代化建設中,涂料市場也在不斷發(fā)展,因而對攪拌設備的需求也越來越高。為了通過新型的涂料攪拌器設計使得涂料生產(chǎn)的成本降低,減少大量的人力物力提高工作效率,本文進行了基于單片機的智能涂料攪料器設計?;趩纹瑱C的智能涂料攪料器設計可以通過外部按鍵進行控制,利用內(nèi)部單片機對外部按鍵以及傳感器進行響應,進而控制電機的轉(zhuǎn)速、轉(zhuǎn)向和轉(zhuǎn)動時間??梢赃m應不同情況下的攪料需求,能夠進行正反轉(zhuǎn),轉(zhuǎn)速調(diào)整,定時攪拌等功能。本文首先分析了基于單片機的智能涂料攪料器設計的設計需求,完成了系統(tǒng)架構(gòu)設計。在此基礎上進行了單片機外圍電路設計,液晶顯示外部電路設計,電機外部電路設計,開關電路設計。在完成硬件電路設計的基礎上,進行了軟件流程設計,包括對LCD液晶顯示控制程序,電機定時以及轉(zhuǎn)速控制程序,按鍵控制程序。經(jīng)過實驗驗證,結(jié)果表明基于單片機的智能涂料攪料器設計可以靈活調(diào)整工作模式,在啟動、停止,正反轉(zhuǎn),定時設置等模式之間靈活調(diào)整。真正實現(xiàn)“一套設備,一機多用,一步到位”。關鍵詞:單片機;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ā)展,對攪拌設備的需求也越來越高。為了使新型的涂料攪拌器設計能夠降低涂料生產(chǎn)的成本,減少大量的人力物力提高工作效率,因此對涂料攪拌設備進行了大量的研究。建筑涂料是涂料工業(yè)重要的組成部分之一,建筑涂料種類繁多,主要包括室內(nèi)涂料、外墻涂料、地坪涂料、防火涂料等多種功能性涂料。建筑涂料的種類的多少、質(zhì)量的好壞對美化城鄉(xiāng)居住建筑、改善城鄉(xiāng)環(huán)境具有重要意義。智能涂料攪拌設備有著廣闊的發(fā)展空間,不僅僅是市場推動其發(fā)展,而且新材料、新工藝的產(chǎn)生,必將對化工設備要求更高,研究基于單片機的智能涂料攪拌有著重要的意義。眾所周知,在建筑材料生產(chǎn)過程中需要對一些配制好的涂料進行攪拌,這些配制好的涂料一般呈粘稠狀液體,經(jīng)過攪拌以后使各種成分混合均勻,涂料的性質(zhì)才會達到最佳,才能用于下一道工序的使用,因此,攪拌的工序就顯得尤為重要。國外攪拌器械的發(fā)展歷史悠久,18世紀40年代,在德國、美國、俄羅斯等國家,出現(xiàn)了以蒸汽機為動力源的自落混合攪拌器,其混合室由多面體木質(zhì)圓筒組成,直到1880年鋼鐵才開始代替木板,但形狀仍然是多面體的[1]。1888年,法國申請了一項用于修建戰(zhàn)前道路的混凝土攪拌機的專利。20世紀初,圓柱形混合攪拌器開始流行起來。形狀的改善避免了涂料在攪拌筒內(nèi)壁的凝固和沉積,提高了攪拌質(zhì)量和效率。1908年,美國出現(xiàn)了第一臺由內(nèi)燃機驅(qū)動的攪拌器,隨后電動機成為主要動力源[2]。從1913年到1950年,亞洲大陸的日本開始用攪拌機生產(chǎn)預混料。在此期間,各種有無葉片的自落式攪拌機的發(fā)明和應用仍然是主流。自落式攪拌機依靠攪拌筒將物料提升到一定高度的自落來完成攪拌。在操作過程中,隨著攪拌筒的轉(zhuǎn)動,物料被固定在攪拌筒內(nèi)壁上的葉片提升到一定高度,然后靠自身重量下落。由于顆粒下落高度、時間、速度、下落點和滾動距離的不同,材料中的顆粒相互滲透、滲透和擴散,最終達到均勻混合。該攪拌方式結(jié)構(gòu)簡單,可靠性高,維護簡單,功耗小,攪拌筒和攪拌葉片磨損輕,但攪拌強度低,生產(chǎn)效率低,攪拌質(zhì)量差。根據(jù)攪拌筒的形狀和出料方式,有筒式攪拌機、雙錐反轉(zhuǎn)出料攪拌機、雙錐斜卸式攪拌機[3]和對開式攪拌機等,其中筒式簡易攪拌機技術性能落后,1987年被建設部列為淘汰產(chǎn)品。隨著各類涂料的廣泛使用和施工規(guī)模的大型化、復雜化,對質(zhì)量和產(chǎn)量的要求不斷提高,有效地促進了攪拌設備性能和技術水平的提高和發(fā)展。來自世界各地的研究人員開始對涂料攪拌機的結(jié)構(gòu)、傳動方式、攪拌室內(nèi)襯材料和調(diào)漆生產(chǎn)工藝進行改進和探索。20世紀40年代末,德國Elba公司發(fā)明了強制攪拌器[4],與自落式攪拌器不同,強制式攪拌器是利用旋轉(zhuǎn)的葉片迫使物料按照預定的軌跡進行剪切、擠壓、滾壓和拋擲,使物料在劇烈的相對運動中均勻攪拌。與自落式攪拌機相比,強制式攪拌機混合效果強,混合質(zhì)量好,混合效率高,但攪拌筒和攪拌葉片磨損大,功耗大。根據(jù)不同的結(jié)構(gòu)特點,主要有立軸渦流式漿機、立軸行星式漿機、立軸對流式漿機、單橫軸式漿機和雙橫軸式漿機[5]。目前國內(nèi)常用的有兩種攪拌工序,第一個是人工攪拌,這種方式會耗費大量的勞動力,而且人工攪拌力量有限,只能用于攪拌份量很小的涂料,在涂料用量很大的情況下,效率很低,無法實用。此外,在遇到一些黏度較大或顆粒較大的混合粉時,由于人工攪拌力量速度有限,涂料可能發(fā)生凝集,導致出現(xiàn)混煉不足、攪拌處理時間長,無法充分混合,工作效率非常低下。第二種是利用機器來進行,在過去相當長的一段時間里,涂料生產(chǎn)中的分散研磨設備主要由分散機、砂磨機和三輥磨床組成。這些傳統(tǒng)設備具有各自不同的功能,實現(xiàn)了涂料生產(chǎn)的不同需求。然而,也有不同的局限性。如分散機:用于中高檔涂料的生產(chǎn),只能用于預分散,不能達到中高檔涂料所要求的碎漿效果;砂磨機:可連續(xù)生產(chǎn),但不適用于炭黑等難分散顏料的加工;漿體粘度高,加工難度大;清洗困難,殘留物多,這是砂磨機的主要限制;三輥磨床[6]:適用于加工高粘度漿體和難分散顏料。但露天作業(yè)使作業(yè)環(huán)境惡劣,作業(yè)安全性差,散料損失大。結(jié)構(gòu)復雜,調(diào)試困難,生產(chǎn)效率低。傳統(tǒng)的涂料生產(chǎn)設備已經(jīng)使用多年,但其局限性也很明顯。然而,現(xiàn)有的混合攪拌器也存在許多缺點,其結(jié)構(gòu)過于簡單。只有一個旋轉(zhuǎn)軸被添加到桶。桶里的油漆是通過軸的連續(xù)轉(zhuǎn)動而攪拌的。運行過程中噪聲較大,建成后均勻性不理想,容易出現(xiàn)分層和殘渣問題。同時,會消耗大量的電能,造成浪費。本文設計了基于單片機的智能涂料攪料器設計,基于單片機的智能涂料攪料器設計可以通過外部按鍵進行控制,內(nèi)部單片機對外部按鍵以及傳感器進行響應,進而控制電機。可以適應不同情況下的攪料需求。所設計的基于單片機的智能涂料攪料器設計,主要需要實現(xiàn)以下一些功能,首先系統(tǒng)能夠接收外部人為控制,實現(xiàn)電機的正轉(zhuǎn)反轉(zhuǎn),使得涂料能夠充分攪拌;第二點是電機能夠以不同的速度進行攪拌,使用過程中可以實現(xiàn)靈活的加速與減速操作;第三點是如果攪拌時間較長,可以設置定時,同時通過液位傳感器也可進行定時,實現(xiàn)無人值守,減輕工人壓力,提高效率;第四點是以上這些操作、流程、轉(zhuǎn)速等都可以實時顯示,讓使用者能夠清楚目前的狀態(tài)。1系統(tǒng)總體架構(gòu)1.1需求分析與方案設計本次所設計的基于單片機的智能涂料攪料設計,主要需要實現(xiàn)以下一些功能,首先系統(tǒng)能夠接收外部人為控制,實現(xiàn)電機的正轉(zhuǎn)反轉(zhuǎn),使得涂料能夠充分攪拌;第二點是電機能夠以不同的速度進行攪拌,使用過程中可以實現(xiàn)靈活的加速與減速操作;第三點是如果攪拌時間較長,可以設置定時,同時通過液位傳感器也可進行定時,實現(xiàn)無人值守,減輕工人壓力,提高效率;第四點是以上這些操作、流程、轉(zhuǎn)速等都可以實時顯示,讓使用者能夠清楚目前的狀態(tài)。為了實現(xiàn)上述功能,初步設定了兩種方案,第一種是利用涂料氣動攪拌裝置,結(jié)合計時與供電設計實現(xiàn)攪拌系統(tǒng)的定時。優(yōu)點是氣動混合攪拌器可以無級調(diào)速。只要控制進排氣門的開度,即控制壓縮空氣的流量,就可以調(diào)節(jié)電動機的輸出功率和轉(zhuǎn)速。氣動混合器可以正向或反向旋轉(zhuǎn)。只要用控制閥簡單地改變氣動馬達的進排氣方向,就可以實現(xiàn)氣動馬達輸出軸的正反轉(zhuǎn),實現(xiàn)瞬時換向。氣動混合攪拌器的工作環(huán)境不受振動、高溫、電磁、輻射等的影響,適用于惡劣的工作環(huán)境,能在易燃、爆炸、高溫、振動、潮濕、粉塵等不利條件下正常工作。氣動混合攪拌器的配套氣動馬達具有過載保護功能,不會因過載而失靈。如果過載,氣動馬達的速度只會降低或停止。當過載消除后,電機可以立即恢復正常運行,而不會對零件造成任何損壞。可長時間滿負荷連續(xù)運行,氣動電機溫升小,氣動混合器起動轉(zhuǎn)矩大,可直接帶負荷起動。啟動和停止都很快,不像電動攪拌機有時會燒壞影響使用。但氣動攪拌裝置容易產(chǎn)生涂料攪拌不徹底,容易產(chǎn)生死角,在完成工作后清洗困難等問題。同時在氣動裝置升降以及操作過程中需要兩人配合完成,操作非常繁瑣。第二種方案是利用單片機作為處理器,接收外部的按鍵控制來對電機工作模式進行調(diào)整,電動機可實現(xiàn)正轉(zhuǎn)以及反轉(zhuǎn)操作,同時也可以進行變速操作便于針對不同材質(zhì)的涂料進行換擋工作[7]。在不同環(huán)境中電動機攪拌器也可正常穩(wěn)定運行,適應能力強,對于粉塵,潮濕等不利條件下都可正常工作。利用LCD1602液晶對系統(tǒng)的操作、流程、轉(zhuǎn)速等都可以實時顯示。對于操作人員來說無疑是提供了極大的便利,不需要像以往那樣憑借經(jīng)驗來判斷系統(tǒng)的工作狀態(tài),大大增加了工作的安全性。通過液位傳感器來設定攪拌時間,即使初次操控也可實現(xiàn)操作。該方案具有成本低,易于操控,在不同環(huán)境下系統(tǒng)工作情況均表現(xiàn)良好對于設計提出的要求也能很好的實現(xiàn)。對上述兩種方案進行對比,首先是從系統(tǒng)復雜度上進行考慮,方案一中需要添加一些傳感器,這必然會增加系統(tǒng)硬件的設計復雜度,對這些數(shù)據(jù)進行處理又會增加軟件復雜度;其次我們從實現(xiàn)及使用上來講,通過單片機控制電機來形成一套攪拌系統(tǒng),要比通過氣動馬達更為可靠有更高的性價比,同時在后期保養(yǎng)時相對比較容易。因此選用單片機作為處理器來控制電機進行涂料攪拌器的設計。1.2系統(tǒng)架構(gòu)如圖1.1所示為基于單片機的智能涂料攪料器設計系統(tǒng)架構(gòu)框圖,系統(tǒng)以STC89C51單片機作為中央處理器。單片機接收外部晶振以及復位控制,為了實現(xiàn)不同情況下的電機工作,通過不同的按鍵開關來分別對應控制,單片機對按鍵進行檢測,檢測到對應的按鍵按下后,輸出信號控制電機執(zhí)行正轉(zhuǎn)、反轉(zhuǎn)、轉(zhuǎn)速調(diào)整、定時等。同時液位傳感器檢測攪拌深度從而控制攪拌時間,上述過程統(tǒng)一通過LCD1602來進行實時顯示。液位傳感器LCD液位傳感器LCD液晶顯示開關按鍵電機單片機開關按鍵電機單片機晶振復位晶振復位圖1.1基于單片機的智能涂料攪拌設計系統(tǒng)架構(gòu)1.3系統(tǒng)器件選擇結(jié)合上文的系統(tǒng)需求分析,為了接收外部對系統(tǒng)工作模式的控制與改變,在基于單片機的智能涂料攪料器設計中使用按鍵電路來實現(xiàn),單片機實時進行檢測外部輸入命令,調(diào)整電機狀態(tài)。整個系統(tǒng)的運行都依靠單片機來進行操控,不同的單片機類型功能也不一樣,經(jīng)過仔細考慮和結(jié)合實際情況,采用的是STC89C51單片機。因為此程序的代碼不是十分的繁多,所以為了節(jié)約成本沒有采用比較復雜成本比較昂貴的STM32或者是MSP430等單片機。而去采用STC89C51單片機。顯示部分用LCD1602液晶來顯示當前的信息,相比于數(shù)碼管顯示,LCD1602顯示的字符量更多,彌補信息量比較少,顯示內(nèi)容有限的缺陷,它可以顯示字母,數(shù)字還可以顯示特殊的符號。選用諧振式液位傳感器來探測攪拌涂料的深度,從而控制攪拌時間,該傳感器同其他傳感器相比性價比高,不需要傳感器深入到涂料當中探測,更加安全。2系統(tǒng)硬件設計結(jié)合第一章的系統(tǒng)需求分析以及器件選型,我們首先需要結(jié)合對基于單片機的智能涂料攪料器設計中的各個模塊的硬件電路完成設計。2.1單片機外圍電路設計單片機對傳感器和外設進行控制,對外部輸入的數(shù)據(jù)和信號進行收集計算,并進行相應的操作。STC89C51單片機是基于單片機的智能涂料攪料器設計中的核心,圍繞其需要展開很多電路實現(xiàn)系統(tǒng)中的相關功能,我們首先需要完成對單片機外圍電路的設計。2.1.1STC89C51單片機介紹STC89C51有32個I/O口可以連接更多的外設和傳感器,8k字節(jié)的FLASH存儲器可以進行更多的計算緩存,512字節(jié)的RAM大大提高了反應速度。STC89C51單片機的燒錄也非常簡單,通過TX和RX口,采用對應的編譯器就可以將程序燒錄進去。圖2.1STC89C51單片機封裝引腳如圖2.1所示為STC89C51單片機封裝引腳,完成自動攪料系統(tǒng)電路設計之前首先需要對管腳進行了解。VCC:供電電壓。GND:接地。P0、P1、P2、P3:I/O引腳,可以在本次設計中作為輸入輸出端口,用以向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:復位輸入。PSEN:外部程序存儲器的選通信號。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。2.1.2STC89C51單片機外圍電路設計根據(jù)第一章對基于單片機的智能涂料攪料器設計需求分析,結(jié)合單片機所完成的具體工作以及單片機的管腳介紹,最終總結(jié)單片機外圍電路需要進行幾個方面的設計。(1)單片機供電部分:在設計過程中,為保證單片機正常運作,首先根據(jù)芯片數(shù)據(jù)手冊中的管腳定義,完成對單片機的供電設計即對應管腳接電源和接地。單片機外部晶振:本次設計中,單片機使用外部的12MHZ晶振[9],本次設計18管腳是外部晶振的輸入端,讓19管腳接地。(2)控制LCD1602進行信息顯示:芯片的32到39管腳即P0口是單片機的8個I/O口,本次自動攪料系統(tǒng)設計中,液晶需要顯示的攪料系統(tǒng)轉(zhuǎn)速、轉(zhuǎn)向、定時時間等相關數(shù)據(jù)由這個8個端口送交給LCD液晶顯示,由于單片機的P0口沒有上拉電阻,是高阻狀態(tài),因此外接一個10k的排阻;同時依據(jù)液晶顯示的數(shù)據(jù)手冊,對液晶顯示進行操作還需要涉及三個控制管腳,因此在單片機P2.5,P2.6和P2.7三個端口[10]給出三個控制信號。(3)對按鈕開關進行響應,控制系統(tǒng)的工作:首先需要設計一個開關K1,用來控制整個攪料系統(tǒng),對整個系統(tǒng)進行復位。由于單片機的復位端口RST高電平有效,我們將開關K1一端接高電平一端連接到單片機的復位端口RST,這樣在開關按下的時候復位端口將會感知電平發(fā)生變化。復位電路如圖2.2所示圖2.2開關電路為了實現(xiàn)攪料系統(tǒng)“一套設備,一機多用,一步到位”的特點,需要實現(xiàn)電機開始與停止,正轉(zhuǎn)與反轉(zhuǎn),加速與減速,計時等功能。圖2.3按鍵控制電路為了實現(xiàn)外部對系統(tǒng)運作的控制,我們選擇按鈕開關來進行控制,為了簡化后續(xù)程序設計復雜度,每個開關負責一個功能。按鍵控制電路如圖2.3所示,我們設計了8個開關K2-K9,考慮到單片機的I/O口既可以做輸出也可以作輸入,為了對開關按鍵進行響應,將K2-K9分別通過一個排阻連接到單片機的P1.0至P1.7口,另一端供地,此時I/O口作為輸入[11],這樣在開關按下的時候,對應的單片機端口就為低電平,程序再對端口的電平進行判斷及后續(xù)執(zhí)行相應的處理操作,即可完成對開關的判別與響應。攪料系統(tǒng)中各個開關按鍵的功能分配如下K2:啟動鍵,按下以后電機開始轉(zhuǎn)動;K3:停止鍵,按下以后電機停止;K4:電機正轉(zhuǎn);K5:電機反轉(zhuǎn);K6:加速,按下以后電機加速;K7:減速,按下以后電機加速;K8:設置計時時間的分增加;K9:設置計時時間的秒增加??刂齐姍C電路:在攪料系統(tǒng)中使用電機的端口中,EN端口是電機使能端口;CW/CCW端口接收外部輸入的逆時針或順時針方向轉(zhuǎn)動的控制信號;PWM端口是接收外部輸入的不同占空比的PWM波。在本次對攪料系統(tǒng)的設計中,為了操控所使用的直流電機正常工作,單片機的P3.4口與電機的EN口相連,用以控制電機是否運作;P3.5口與CW/CCW端口相連,用以控制電機的轉(zhuǎn)向;P3.7口用以輸出PWM波[12],用以調(diào)節(jié)電機的轉(zhuǎn)速。(5)調(diào)試與顯示電路:在完成攪料系統(tǒng)的電路設計以及完成后續(xù)程序設計之后,需要將程序完成燒錄,進行功能的調(diào)試,因此需要設計一個調(diào)試口,調(diào)試口的收發(fā)分別接到單片機的P3.0(RXD)和P3.1(TXD),還有一端接地。調(diào)試口電路如圖2.4所示圖2.4調(diào)試電路為了直觀體現(xiàn)攪料系統(tǒng)的工作狀態(tài),除了LCD液晶顯示之外,設計了一個發(fā)光二極管LED顯示,LED一端接電源VCC,一端接單片機的P3.2口,但二極管工作的時候電流不能太大,一般是5mA左右,在LED正常導通的時候[13],其兩端的電壓一般是1.7V,為了保護二極管,外接了一個2K電阻。指示燈電路如圖2.5所示圖2.5LED顯示電路程序設計中,通過設置P3.0口的高低電平即可完成LED的導通,對系統(tǒng)的狀態(tài)進行顯示。(6)液位傳感器電路:在涂料攪拌系統(tǒng)中,諧振式液位傳感器通過四個接口實現(xiàn)與單片機之間的通信。VCC端口連接5V電壓,為液位傳感器提供電源,RXD端口與單片機P3.0端口連接用于信息的接受[14],TXD端口與單片機P3.1端口連接用于信息的發(fā)送。GND端口接地。如圖2.6即為基于單片機的智能涂料攪料器設計中液位傳感器的電路。圖2.6液位傳感器電路(7)讀取內(nèi)部存儲器:依據(jù)芯片的數(shù)據(jù)手冊,單片機的31管腳在接高電平時,單片機使用內(nèi)部存儲器。結(jié)合上一節(jié)介紹,系統(tǒng)中所使用的STC89C51單片機有內(nèi)部ROM,因此在本次設計中,將該管腳一只接高電平。最終,如圖2.7即為基于單片機的智能涂料攪料器設計中STC89C51單片機外部電路。圖2.7STC89C51單片機外部電路設計2.2LCD1602液晶顯示電路設計2.2.1LCD1602液晶顯示器介紹本次設計采用LCD1602液晶顯示器作為輸出顯示器,LCD1602液晶屏顯示利用液晶的特性,通過改變電壓達到控制區(qū)域顯示,最終顯示出想要的圖形或者數(shù)字。如表2.2所示為LCD1602數(shù)據(jù)手冊[15]給出的芯片接口定義,是我們在進行電路設計以及后續(xù)編程實現(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背光源負極2.2.2LCD1602液晶外圍電路設計本次設計LCD1602液晶顯示屏上展示攪料系統(tǒng)的工作狀態(tài)、轉(zhuǎn)速、轉(zhuǎn)向和定時時間,上面一行顯示工作狀態(tài)和轉(zhuǎn)向,下面一行顯示轉(zhuǎn)速和定時時間。結(jié)合對整個攪料系統(tǒng)的工作設計,LCD1602液晶顯示外圍電路設計分為以下幾個部分。(1)液晶供電部分:結(jié)合LCD1602液晶顯示的數(shù)據(jù)手冊,為了在基于單片機的智能涂料攪料器設計中使的液晶正常工作,需要完成供電設計。(2)與單片機之間的通信:依據(jù)數(shù)據(jù)手冊,7到14號管腳是其數(shù)據(jù)口,在基于單片機的智能涂料攪料器設計中,液晶需要通過這個8個數(shù)據(jù)口從單片機接收信息再進行顯示。(3)液晶顯示的控制為了保證與單片機的通訊,還有三個控制管腳。依據(jù)數(shù)據(jù)手冊,LCD1602液晶的6管腳為使能端口,在數(shù)據(jù)傳輸?shù)臅r候,高電平有效,連接單片機的P2.5口;5管腳為讀寫選擇端,將其連接到單片機的P2.6口,接受單片機給出的控制信號;4管腳為數(shù)據(jù)/命令選擇端[16],連接單片機的P2.7口。(4)液晶顯示的對比度調(diào)節(jié)依據(jù)數(shù)據(jù)手冊,LCD1602液晶的3管腳是調(diào)節(jié)顯示對比度的端口,考慮到工人群體對顯示屏亮度比較敏感或者有不同喜好,在電路設計中,系統(tǒng)的使用者可對顯示對比度的調(diào)節(jié)。最終,如圖2.8即為基于單片機的智能涂料攪料器設計中LCD液晶外部電路。圖2.8LCD1602液晶顯示電路圖2.3電機外圍電路設計本次使用的電機有四個接口:VDD是電源正極,設計中接12V電源,GND是使能端口,接單片機的P3.4口,用以接收控制信號,控制電機工作與否;CW/CCW端口是控制電機正轉(zhuǎn)或者是翻轉(zhuǎn)的端口,當攪料系統(tǒng)的轉(zhuǎn)向需要發(fā)生改變的時候,由單片機的P3.5口輸出控制信號即可;3端口是PWM端口[17]接收外部輸入的方波信號,轉(zhuǎn)速就是由方波信號的占空比來決定,當攪料系統(tǒng)的電機轉(zhuǎn)速需要調(diào)節(jié)時,由系統(tǒng)中的單片機輸出不同占空比的PWM即可。圖2.9電機外圍電路設計2.4供電電路設計在基于單片機的智能涂料攪料器設計中,單片機和LCD正常工作的電壓是5V,而電機正常工作需要12V電壓,結(jié)合此需求,我們采用系統(tǒng)用12V供電,后續(xù)通過LM7805電源芯片使12V電壓轉(zhuǎn)化成5V的電壓供給單片機及LCD。圖2.10供電電路3系統(tǒng)軟件流程設計結(jié)合第二章的系統(tǒng)需求分析,在完成了系統(tǒng)電路的設計以后,系統(tǒng)的主要功能還需要通過軟件實現(xiàn),需要進行相關軟件流程設計,實現(xiàn)基于單片機的智能涂料攪料器設計預定的相關功能。軟件流程設計采用模塊化設計的方法,即在程序編寫之前,首先結(jié)合基于單片機的智能涂料攪料器設計硬件電路以及系統(tǒng)需求對程序進行功能模塊化,再編寫各個模塊的程序,使程序易于編寫、調(diào)試和修改。程序設計過程中的軟件開發(fā)環(huán)境選用Keil軟件。3.1系統(tǒng)總體流程基于單片機的智能涂料攪料器設計系統(tǒng)程序架構(gòu)如圖3.1所示,當整個系統(tǒng)運行時,首先是各個部分的初始化,由于系統(tǒng)要實現(xiàn)對電機的控制,還需要完成包括單片機的中斷設置等。初始化液晶顯示初始狀態(tài)初始化液晶顯示初始狀態(tài)傳入液位信號按鍵檢測開關按下N根據(jù)按鍵執(zhí)行不同的操作液晶更新系統(tǒng)工作模式結(jié)束開始Y圖3.1程序架構(gòu)初始化完成以后,LCD1602液晶需要顯示系統(tǒng)初始狀態(tài):停止運行,正向,轉(zhuǎn)速5000。同時按鍵檢測程序不斷對開關的狀態(tài)進行判斷,液位傳感器對液位進行檢測設置定時時間[18],當開關按下后,根據(jù)之前的設定,不同開關執(zhí)行相對應的程序,來對攪料系統(tǒng)的工作模式進行改變。在執(zhí)行模式更改的同時,通過LCD1602液晶來實時顯示目前所處的狀態(tài),便于使用者使用。3.2LCD顯示程序設計在基于單片機的智能涂料攪料器設計中,為了便于使用者直觀了解系統(tǒng)目前的工作狀態(tài),LCD1602液晶需要顯示系統(tǒng)工作狀態(tài)(開始、停止)、電機的轉(zhuǎn)向(CW、CCW)、電機轉(zhuǎn)速、電機定時時間等,并根據(jù)開關對系統(tǒng)的控制,實時對自動攪料系統(tǒng)這些信息進行更新[19]。按照設置,第一行顯示系統(tǒng)工作狀態(tài)(開始、停止)、電機的轉(zhuǎn)向(CW、CCW),第二行顯示電機轉(zhuǎn)速、電機定時時間。如圖3.2為LCD1602子程序流程圖。LCD初始化子程序入口LCD清屏單片機向LCD寫命令單片機向LCD寫數(shù)據(jù)顯示數(shù)據(jù)返回NY圖3.2LCD1602子程序流程圖根據(jù)LCD1602的數(shù)據(jù)手冊,在使用LCD1602之前需要進行初始化,初始化需要完成2個工作,通過程序為LCD1602寫入相關設置指令。如圖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ù)從單片機的I/O口輸送給液晶的數(shù)據(jù)端口;第四步:在E端口給一個持續(xù)高電平,即可完成寫操作。3.3液位傳感器的程序設計在基于單片機的智能涂料攪料器設計中,為了便于操作使系統(tǒng)更加智能化,諧振式液位傳感器需要通過RXD與TXD端口與單片機進行信息的交換,單片機根據(jù)得到的液位信號設定攪拌時間。從而實現(xiàn)根據(jù)不同深度自動設置定時時間的功能。單片機串口初始化,然后接受傳感器數(shù)據(jù),按照顯示要求取出8,9,10三位,分別送給顯示屏,然后將這三位通過公式轉(zhuǎn)換成常量,從而判斷水深做出倒計時時間。水位的計算公式為:(RX_Buffer[8]-0x30)*100+(RX_Buffer[9]-0x30)*10+(RX_Buffer[10]-0x30)3.4電機定時與轉(zhuǎn)速控制程序設計在基于單片機的智能涂料攪料器設計中,單片機需要控制電機持續(xù)轉(zhuǎn)動的時間。持續(xù)轉(zhuǎn)動的時間就由單片機內(nèi)部的定時器設定,當計數(shù)記滿以后產(chǎn)生一個中斷,并產(chǎn)生相應的信號以控制電機的EN端口[21],控制電機停止或轉(zhuǎn)動。本次基于單片機的智能涂料攪料器設計中,根據(jù)單片機外界11.0592MHz的晶振,通過計算可得單片機的一個機器周期為:同時單片機最多可計數(shù)65535個,因此中斷溢出一次的時間約為65ms。而在實際使用系統(tǒng)的過程中,對電機的定時通常應是設定時間在分秒量級,比如1分10秒,為了程序設計中取整數(shù)倍比較方便,我們設定定時器計時時間為10ms。如此,中斷一百次以后,就是時間過去了1秒。同時在程序設計中,判斷中斷為100次以后,則計數(shù)參數(shù)減1,即為電機還需要運行的時間少1秒。當計數(shù)參數(shù)為0,也就是計數(shù)時間減少為0的時候,通知單片機的P3.4口輸出恒為低電平的信號,控制電機的EN端口,使電機停止轉(zhuǎn)動。轉(zhuǎn)速控制程序設計,在基于單片機的智能涂料攪料器設計中,為了對電機的轉(zhuǎn)速進行調(diào)節(jié),我們需要通過與電機PWM相連的P3.7端口輸出不同占空比的PWM波形。占空比是高電平持續(xù)時間占一個周期的百分比,占空比越大,也就是P3.7口輸出的高電平時間越長,電機轉(zhuǎn)速越快。單片機輸出PWM波的時候,通常有下列辦法:第一個是利用軟件延時,當設定的時間到,對輸出的高低電平取反,。第二個是利用定時器對高低電平時間進行控制。第三個是PWM控制器。為了便于程序設計,基于單片機的智能涂料攪料器設計系統(tǒng)程序設計中,我們選用上述第二種方案,即單片機內(nèi)部的定時器實現(xiàn)對高低電平的持續(xù)時間控制[22]。結(jié)合方案的介紹,我們可以首先需要確定一個恒定的周期(50ms),實現(xiàn)方法即可通過上文的計數(shù)器,我們?yōu)榱吮WC步長足夠小,設定中斷時間為10微秒,本次設計中,中斷次數(shù)用參數(shù)usCnt來表示,最大計數(shù)次數(shù)為5000次,即usCnt最大值為5000,達到5000以后置0。而后我們更改對計數(shù)的判決門限(用參數(shù)rCnt來表示)來設置不同長度的高電平。然后計算定時器的初值N:N=10/1.09≈10根據(jù)計算得到的初值,計算裝入TH1和TH2的數(shù)TH1=(65536-10)/256=255.9TH2=(65536-10)%256=246最終裝入的初值為255(0xFF)和246(0xF6)。單片機每產(chǎn)生中斷一次,就對此時的中斷計數(shù)值usCnt進行判斷,若是大于5000則置0,同時對rCnt和usCnt來作比較,若rCnt的值大于usCnt的值,則控制P3.7口輸出高電平[23],控制電機的PWM端口,否則P3.7口輸出低電平,如此形成了一個PWM信號,送交給電機的PWM口,控制轉(zhuǎn)速。當外部按鍵K6按下的時候,rCnt值加大,則高電平占整個周期(5000)的比例加大,電機轉(zhuǎn)速會加快。3.5按鍵控制程序設計根據(jù)基于單片機的智能涂料攪料器設計,系統(tǒng)在開關按下的時候需要對其工作狀態(tài)(啟動、停止),工作模式(轉(zhuǎn)速、計時時間)等進行靈活響應并調(diào)整[24],實現(xiàn)適應在不同情況下進行攪料。為了實現(xiàn)上述功能,進行按鍵控制程序設計,如圖3.5為按鍵檢測程序流程圖。圖3.5按鍵檢測流程圖(1)Key1:復位鍵由于開關按鍵連接到單片機的復位端口RST口,為了方便操作,我們首先對RST口進行聲明,即將RST端口定義為Key,后續(xù)程序中不斷的對Key值進行檢測判斷即可再執(zhí)行相關的指令。根據(jù)電路設計,理論上在Key值為0時,表明開關被按下,但由于手動按下開關再釋放的這個過程有一定的抖動現(xiàn)象,因此我們判斷Key值為0以后加上一個去抖操作,通常加上一個10ms的延時即可,延時過后再次對Key值進行判斷,如果Key值仍為0,即表明開關按下,單片機進行復位,整個程序重新執(zhí)行。然后判斷Key值是否恢復到1,如果為1表明按鍵被釋放,再次回到程序入口,不斷檢測Key值是否為0,判斷開關是否按下,如果Key為0則繼續(xù)等待。(2)Key2:啟動鍵由于開關按鍵連接到單片機的P1.0口,為了方便操作,我們首先對P1.0口進行聲明,即將P1.0端口定義為Key2,后續(xù)程序中不斷的對Key2值進行檢測判斷即可再執(zhí)行相關的指令。Key2值為0以后加上一個去抖操作,通常加上一個10ms的延時即可,延時過后再次對Key2值進行判斷,如果Key2值仍為0,即表明開關按下,通知單片機的P3.4口輸出恒為高電平的信號,控制電機的EN端口,使電機開始以設置的轉(zhuǎn)速轉(zhuǎn)動。然后判斷Key2值是否恢復到1,如果為1表明按鍵被釋放,再次回到程序入口,不斷檢測Key值是否為0,判斷開關是否按下,如果Key2為0則繼續(xù)等待。(3)Key3:停止鍵由于開關按鍵連接到單片機的P1.1口,為了方便操作,我們首先對P1.1口進行聲明,即將P1.1端口定義為Key3,后續(xù)程序中不斷的對Key3值進行檢測判斷即可再執(zhí)行相關的指令。Key3值為0以后加上一個去抖操作,通常加上一個10ms的延時即可,延時過后再次對Key3值進行判斷,如果Key3值仍為0,即表明開關按下,通知單片機的P3.4口輸出恒為低電平的信號,控制電機的EN端口,使電機停止轉(zhuǎn)動。然后判斷Key3值是否恢復到1,如果為1表明按鍵被釋放,再次回到程序入口,不斷檢測Key3值是否為0,判斷開關是否按下,如果Key3為0則繼續(xù)等待。(4)Key4:正轉(zhuǎn)鍵由于開關按鍵K4連接到單片機的P1.2口,為了方便操作,我們首先對P1.2口進行聲明,即將P1.2端口定義為Key4,后續(xù)程序中不斷的對Key3值進行檢測判斷即可再執(zhí)行相關的指令。Key4值為0以后加上一個去抖操作,通常加上一個10ms的延時即可,延時過后再次對Key4值進行判斷,如果Key4值仍為0,即表明開關按下,通知單片機的P3.5口輸出恒為高電平的信號,控制電機的CW/CCW選擇端口,使電機按照順時針方向轉(zhuǎn)動。然后判斷Key4值是否恢復到1,如果為1表明按鍵被釋放,再次回到程序入口,不斷檢測Key4值是否為0,判斷開關是否按下,如果Key4為0則繼續(xù)等待。(5)Key5:反轉(zhuǎn)鍵由于開關按鍵K5連接到單片機的P1.3口,為了方便操作,我們首先對P1.3口進行聲明,即將P1.3端口定義為Key5,后續(xù)程序中不斷的對Key5值進行檢測判斷即可再執(zhí)行相關的指令。Key5值為0以后加上一個去抖操作,通常加上一個10ms的延時即可,延時過后再次對Key5值進行判斷,如果Key5值仍為0,即表明開關按下,通知單片機的P3.5口輸出恒為低電平的信號,控制電機的CW/CCW選擇端口,使電機按照逆時針方向轉(zhuǎn)動。然后判斷Key5值是否恢復到1,如果為1表明按鍵被釋放,再次回到程序入口,不斷檢測Key5值是否為0,判斷開關是否按下,如果Key5為0則繼續(xù)等待。(6)Key6:加速鍵由于開關按鍵K6連接到單片機的P1.4口,為了方便操作,我們首先對P1.4口進行聲明,即將P1.4端口定義為Key6,后續(xù)程序中不斷的對Key6值進行檢測判斷即可再執(zhí)行相關的指令。Key6值為0以后加上一個去抖操作,通常加上一個10ms的延時即可,延時過后再次對Key6值進行判斷,如果Key6值仍為0,即表明開關按下,通知單片機的P3.7口給電機的PWM端口輸出占空比更大的PWM信號,使電機轉(zhuǎn)速加快。然后判斷Key6值是否恢復到1,如果為1表明按鍵被釋放,再次回到程序入口,不斷檢測Key6值是否為0,判斷開關是否按下,如果Key6為0則繼續(xù)等待。(7)Key7:減速鍵由于開關按鍵K7連接到單片機的P1.5口,為了方便操作,我們首先對P1.5口進行聲明,即將P1.5端口定義為Key7,后續(xù)程序中不斷的對Key7值進行檢測判斷即可再執(zhí)行相關的指令。Key7值為0以后加上一個去抖操作,通常加上一個10ms的延時即可,延時過后再次對Key7值進行判斷,如果Key7值仍為0,即表明開關按下,通知單片機的P3.7口給電機的PWM端口輸出占空比更小的PWM信號,使電機轉(zhuǎn)速降低。然后判斷Key7值是否恢復到1,如果為1表明按鍵被釋放,再次回到程序入口,不斷檢測Key7值是否為0,判斷開關是否按下,如果Key7為0則繼續(xù)等待。(8)Key8:計時分鐘增加由于開關按鍵K8連接到單片機的P1.6口,為了方便操作,我們首先對P1.6口進行聲明,即將P1.6端口定義為Key8,后續(xù)程序中不斷的對Key8值進行檢測判斷即可再執(zhí)行相關的指令。Key8值為0以后加上一個去抖操作,通常加上一個10ms的延時即可,延時過后再次對Key8值進行判斷,如果Key8值仍為0,即表明開關按下,單片機內(nèi)部的計數(shù)變量加60,即等于電機的計時加上一分鐘。然后判斷Key8值是否恢復到1,如果為1表明按鍵被釋放,再次回到程序入口,不斷檢測Key8值是否為0,判斷開關是否按下,如果Key8為0則繼續(xù)等待。(9)Key9:計時秒鐘增加由于開關按鍵K9連接到單片機的P1.7口,為了方便操作,我們首先對P1.7口進行聲明,即將P1.7端口定義為Key9,后續(xù)程序中不斷的對Key9值進行檢測判斷即可再執(zhí)行相關的指令。Key9值為0以后加上一個去抖操作,通常加上一個10ms的延時即可,延時過后再次對Key9值進行判斷,如果Key9值仍為0,即表明開關按下,單片機內(nèi)部的計數(shù)變量加10,即等于電機的計時加上10秒鐘。然后判斷Key9值是否恢復到1,如果為1表明按鍵被釋放,再次回到程序入口,不斷檢測Key9值是否為0,判斷開關是否按下,如果Key9為0則繼續(xù)等待。4系統(tǒng)調(diào)試4.1焊接與調(diào)試本次對基于單片機的智能涂料攪料器設計中使用的是AltiumDesigner軟件完成電路板的繪制,在完成基于單片機的智能涂料攪料器設計的電路設計以后,生成PCB。當電路板原理圖繪制完成后,確認各個模塊功能沒有錯誤[25],在確定原理圖沒有出現(xiàn)錯誤的情況下我們開始進行焊接,使用市場上比較常用的萬能板進行焊接。最終得到的實物圖如圖4.1所示圖4.1實物圖4.2程序燒錄與調(diào)試在整體系統(tǒng)上電調(diào)試前,大概觀察下焊接的系統(tǒng)還存在問題,例如存在很顯眼的斷裂,正負極接反以及相連、虛焊、等問題,然后用萬用表檢測一下,電源正負極之間是否短路等嚴重的電源問題,最終保證系統(tǒng)焊接沒有問題。在搭建調(diào)試平臺后我們對軟件程序進行調(diào)試,在程序調(diào)試通過后開始驗證系統(tǒng)功能是否滿足要求,如果功能沒有實現(xiàn)或?qū)崿F(xiàn)不完全,需要繼續(xù)調(diào)試程序,反復進行,直到所有功能都實現(xiàn)為止。圖4.2系統(tǒng)運行時實物圖4.3系統(tǒng)調(diào)試當單片機焊接好之后,將STC89C51單片機和各個模塊都插上去,給系統(tǒng)12V供電,此時為系統(tǒng)初始狀態(tài)如圖4.3所示。按下啟動鍵以后,電源燈會常亮,屏幕的初始值:暫停狀態(tài),CW,5000轉(zhuǎn)速,定時時間為0。按下運行按鍵系統(tǒng)開始以默認速度(5000)運行,按下暫停以后,電機停止轉(zhuǎn)動。第三個按鍵是調(diào)節(jié)正轉(zhuǎn),初始設置就是正轉(zhuǎn),所以沒有發(fā)生變化。第四個按鍵是翻轉(zhuǎn),按下以后屏幕顯示CCW,再按下啟動以后,可以看到電機逆時針方向轉(zhuǎn)動。第五個和第六個分別是速度加和速度減按鍵,可以調(diào)整速度。第七個按鍵是設置定時時間,按下以后增加一分鐘,第八個按鍵是每次增加10秒鐘。設置好定時時間以后,系統(tǒng)就以設置的速度運行,如果按暫停,也可暫停。經(jīng)過調(diào)試與驗證,基于單片機的智能涂料攪料器設計已經(jīng)實現(xiàn)了初始的應用需求,并有很強的可靠性與實用性。圖4.3程序初始狀態(tài)4.4遇到的問題及解決方法(1)由于按下按鍵就會產(chǎn)生機械抖動,當按下一次按鍵時可能會讓系統(tǒng)讀取到多次的按鍵按下的次數(shù),從而導致無法設置。解決方法是進行軟件消抖,延時時間要設置恰當。(2)焊接完成后,發(fā)現(xiàn)顯示器的第一位無法顯示,初步懷疑電阻有損壞,但是用萬用表測量后發(fā)現(xiàn)器件正常,單片機輸出正常,進一步對各個器件測量后發(fā)現(xiàn)是管腳虛焊,從而導致電路不通,重新焊接后顯示正常。(3)上電打開電源開關,按動按鍵使系統(tǒng)運行,發(fā)現(xiàn)電機軸的轉(zhuǎn)動不易察覺,因此在電機的軸上加上標志物,以便利于觀察。(4)程序編寫完成后進行編譯連接,顯示“0error0warning”后說明無語法錯誤[26],再次檢查看是否有邏輯錯誤,檢查無誤后燒錄進單片機內(nèi)。結(jié)論本設計是對涂料攪拌系統(tǒng)進行新的突破性設計,其中動力模塊的設計更加的便于控制。顯示模塊起到安全增加工作效率的作用,方便人們的使用。設計采用模塊化方法設計,主要分為硬件設計和軟件設計兩個部分,其中包括四個模塊,分別為:按鍵模塊、動力模塊、傳感器模塊、顯示模塊。軟件設計部分主要是編寫程序控制整個系統(tǒng),并且單片機能夠響應按鍵模塊輸入的指令信號,并對程序中的參數(shù)做出實時修改,進而控制電機的運行狀態(tài)。在調(diào)查過程中,發(fā)現(xiàn)市場上的涂料攪拌器機幾乎沒有使用LCD顯示屏的,傳統(tǒng)的涂料攪拌器都是接通電源,傳輸機一直工作不能實現(xiàn)調(diào)速定時等控制,非常耗能并且還不安全,本設計中加入LCD1602來顯示系統(tǒng)的運行狀態(tài),便于操作者來決定電動機的工作狀態(tài)以及涂料的攪拌完成度,對比傳統(tǒng)的攪拌器更加的省時省力。加入了諧振式液位傳感器來控制攪拌的時間,使系統(tǒng)更加的便于操作。本文從系統(tǒng)總體架構(gòu)、需求分析與方案設計、系統(tǒng)器件選擇、系統(tǒng)架構(gòu)、系統(tǒng)硬件設、單片機外圍電路設計、STC89C51單片機介紹、STC89C51單片機外圍電路設計、LCD1602液晶顯示電路設計、LCD1602液晶顯示器介紹、LCD1602液晶外圍電路設計、電機外圍電路設計、供電電路設計、系統(tǒng)軟件流程設計、程序架構(gòu)、LCD、示程序設計、電機定時與轉(zhuǎn)速控制程序設計、按鍵控制程序設計、系統(tǒng)調(diào)試、焊接與調(diào)試、系統(tǒng)調(diào)試、
程序燒錄與調(diào)試、遇到的問題及解決問題方法方面去闡述分析單片機智能涂料攪拌攪拌設計系統(tǒng)。本次所設計的基于單片機的智能涂料攪料器設計,主要需要實現(xiàn)以下一些功能,首先系統(tǒng)能夠接收外部人為控制,實現(xiàn)電機的正轉(zhuǎn)反轉(zhuǎn),使得涂料能夠充分攪拌;第二點是電機能夠以不同的速度進行攪拌,使用過程中可以實現(xiàn)靈活的加速與減速操作;第三點是如果攪拌時間較長,可以設置定時,同時通過液位傳感器也可進行定時,實現(xiàn)無人值守,減輕工人壓力,提高效率;第四點是以上這些操作、流程、轉(zhuǎn)速等都可以實時顯示,讓使用者能夠清楚目前的狀態(tài)。在完成了系統(tǒng)電路的設計以后,系統(tǒng)的主要功能還需要通過軟件實現(xiàn),需要進行相關軟件流程設計,實現(xiàn)基于單片機的智能涂料攪料器設計預定的相關功能,基于單片機的智能涂料攪拌器設計中使用的是AltiumDesigner軟件完成電路板的繪制。參考文獻[1]沈紅衛(wèi).基于單片機的智能系統(tǒng)設計與實現(xiàn)[M].北京:電子工業(yè)出版社,2005:30-35[2]羅睿智,盧恩耀,彭金堯,周雨軒,徐瑞.淺析單片機的原理及其在各領域的應用[J].計算機產(chǎn)品與流通,2019(08)[3]朱昆泉,許林發(fā).建材機械工業(yè)手冊[M].武漢:武漢工業(yè)大學出版社,2000.7[4]李全利.單片機原理及應用技術[J].北京:高等教育出版社,2009[5]胡學海.單片機原理及應用系統(tǒng)設計[M].北京:電子工業(yè)出版社,2007:66-156[6]黃克亞.高等院校嵌入式系統(tǒng)課程單片機選型比較[J].電子世界,2020(01)[7]張緒光,劉在娥.電路與模擬電子技術[M].北京:北京大學出版社,2010[8]李廣弟.單片機基礎[M].北京:北京航空航天大學出版社,2001:56-64[9]馮忠緒,王衛(wèi)中.攪拌機合理轉(zhuǎn)速的研究[J].中國公路學報(自然科學版),2006(4):9-18[10]謝維成.單片機原理與應用及C51程序設計[M].北京:清華大學出版社,2009[11]劉中琦,曾維鑫,張帆.型煤攪拌機攪拌機構(gòu)計算機輔助設計[J].煤礦機械,2000,21(6):7-8[12]劉建清.輕松玩轉(zhuǎn)51單片機C語言[M].北京:航空航天大學出版社,2011[13]谷秀容.單片機原理與應用[M].北京:北京交通大學出版社,2009:152-233[14]郭天祥.51單片機C語言教程[M].北京:電子工業(yè)出版社,2009[15]李朝青.單片機學習指導[M].北京航空航天大學出版社,2002.1[16]許林發(fā)主編.建筑材料機械設計[J].武漢:武漢工業(yè)大學出版社,1990[17]褚瑞卿主編.建材通用機械與設備[J].武漢:武漢理工大學出版社,1996[18]胡家秀主編.機械零件設計實用手冊[M].北京:機械工業(yè)出版社,1999.10[19]李益民主編.機械制造工藝設計手冊[M].北京:機械工業(yè)出版社,1995.10[20]甘永立.幾何量公差與檢測[M].上海:上海科學技術出版社,2001.4[21]黃智偉.印刷電路板設計技術與實踐[M].北京:電子工業(yè)出版社,2013[22]張俊謨.單片機中級教程[M].北京:北京航天航空大學出版社,2006[23]徐曉光.數(shù)字邏輯與數(shù)字電路[M].北京:機械工業(yè)出版社,2008[24]張德寧,程曼,張夢,索雪松.基于Proteus的《單片機原理與應用》實驗實踐[J].科學技術創(chuàng)新,2017(19):107-108[25]何立民.單片機應用系統(tǒng)設計[J].北京:航天航空大學出版社,2008[26]黃河,郭紀林.單片機原理及應用[M].大連:大連理工大學出版社,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ā)送完成標志位 }if(TI){TI=0;//Cleartransmitinterruptflagbusy=0;//Cleartransmitbusyflag}}//顯示電機狀態(tài)運行(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);}//顯示電機轉(zhuǎn)速staticvoid_show_motor_rate(){ LCDprintStr(0,1,g_ascBak,4); LCDprintNum(0,1,g_usRateCnt,4);}//顯示電機旋轉(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ā)電機啟動 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ā)電機停止 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);//默認關閉電機 triger_cw(DIR_CW); //默認電機正轉(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;/*等待液晶準備好*/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表示液晶正忙,重復測試直到其等于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;}/*設置顯示RAM起始地址,亦即光標位置,(col,row)-對應屏幕上的字符坐標*/voidLCDsetCursor(uint8_tcol,uint8_trow){uint8_taddr;if(row==0)//由輸入的屏幕坐標計算顯示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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版塔吊工勞務合同范本:高空作業(yè)塔吊操作員技能考核協(xié)議3篇
- 二零二五版充電樁安裝項目投資、施工與驗收合同3篇
- 2025年文化產(chǎn)業(yè)發(fā)展項目投資合作協(xié)議4篇
- 2025年整體衛(wèi)浴項目投資分析及可行性報告
- 2025年高爾夫球袋塑膠握把項目投資可行性研究分析報告
- 2025年蒙古烤鹿腿行業(yè)深度研究分析報告
- 2020-2025年中國汽車后行業(yè)發(fā)展趨勢預測及投資規(guī)劃研究報告
- 2025年電動自行車電機等行業(yè)深度研究分析報告
- 2025年DMD預浸布項目可行性研究報告
- 二零二五年度農(nóng)業(yè)綠色生產(chǎn)承包協(xié)議3篇
- 無人化農(nóng)場項目可行性研究報告
- 《如何存款最合算》課件
- 社區(qū)團支部工作計劃
- 拖欠工程款上訪信范文
- 《wifi協(xié)議文庫》課件
- 中華人民共和國職業(yè)分類大典是(專業(yè)職業(yè)分類明細)
- 2025年新高考語文復習 文言文速讀技巧 考情分析及備考策略
- 2024年海口市選調(diào)生考試(行政職業(yè)能力測驗)綜合能力測試題及答案1套
- 一年級下冊數(shù)學口算題卡打印
- 2024年中科院心理咨詢師新教材各單元考試題庫大全-下(多選題部分)
- 真人cs基于信號發(fā)射的激光武器設計
評論
0/150
提交評論