第一篇:調(diào)研報(bào)告-步進(jìn)電動(dòng)機(jī)單片機(jī)調(diào)速控制電路設(shè)計(jì)
大連交通大學(xué)信息工程學(xué)院2011屆本科生畢業(yè)設(shè)計(jì)(論文)實(shí)習(xí)(調(diào)研)報(bào)告
調(diào)研報(bào)告課題來源及意義
在電氣時(shí)代的今天,電動(dòng)機(jī)作為最主要的動(dòng)力源,一直在現(xiàn)代化的生產(chǎn)和生活中起著十分重要的作用。無論是在工農(nóng)業(yè)生產(chǎn)、交通運(yùn)輸、國防、航空航天、醫(yī)療衛(wèi)生、商務(wù)與辦公設(shè)備,還是在日常生活中的家用電器,都大量地使用著各種各樣的電動(dòng)機(jī)。據(jù)有關(guān)部門統(tǒng)計(jì)的資料顯示,現(xiàn)在有90%以上的動(dòng)力源來自于電動(dòng)機(jī),我國生產(chǎn)的電能60%用于電動(dòng)機(jī)。電動(dòng)機(jī)與人們的生活息息相關(guān),密不可分。步進(jìn)電機(jī)是一種將電脈沖信號(hào)轉(zhuǎn)換成相應(yīng)的角位移或線位移的機(jī)電執(zhí)行元件,具有快速啟停、精確以及直接接受數(shù)字量的特點(diǎn),因而得到了廣泛的應(yīng)用。如在繪圖機(jī)、打印機(jī)及光學(xué)儀器中,都采用步進(jìn)電機(jī)來定位繪圖筆印字頭或光學(xué)鏡頭,特別是工業(yè)過程式控制的位置控制系統(tǒng)中,由于它的精確以及不用位移傳感器即可達(dá)到精確定位,隨著計(jì)算機(jī)控制技術(shù)的不斷發(fā)展,應(yīng)用會(huì)越來越廣泛。
對(duì)電動(dòng)機(jī)控制可分為簡單控制和復(fù)雜控制兩種。簡單控制是指對(duì)電動(dòng)機(jī)進(jìn)行啟動(dòng)、制動(dòng)、正反轉(zhuǎn)和順序控制。復(fù)雜控制是指對(duì)電動(dòng)機(jī)的轉(zhuǎn)速、轉(zhuǎn)角、轉(zhuǎn)矩、電壓、電流等物理量進(jìn)行控制。電動(dòng)機(jī)的控制技術(shù)的發(fā)展得力于微電子技術(shù)、電力電子技術(shù)、傳感器技術(shù)、自動(dòng)控制技術(shù)、微機(jī)應(yīng)用技術(shù)等的最新發(fā)展成就。正是這些技術(shù)的進(jìn)步使電動(dòng)機(jī)控制技術(shù)在近二十年內(nèi)發(fā)生了天翻地覆的變化。其中電動(dòng)機(jī)的控制部分已由模擬控制逐漸讓位于以單片機(jī)為主的微處理器控制,形成數(shù)字與模擬的混合控制系統(tǒng)和純數(shù)字控制系統(tǒng)的應(yīng)用,并正向全數(shù)字控制方向快速發(fā)展。電動(dòng)機(jī)的驅(qū)動(dòng)部分所用的功率器件經(jīng)歷了幾次更新?lián)Q代,目前開關(guān)速度更快、控制更容易的全控型功率器件MOSFET和IGBT成為主流。
單片機(jī)介于工業(yè)控制計(jì)算機(jī)和可編程控制器之間,它有較強(qiáng)的控制功能、低廉的成本。人們?cè)谶x擇電動(dòng)機(jī)的控制器時(shí),常常是在先滿足功能的需要的同時(shí),優(yōu)先選擇成本低的控制器。因此,單片機(jī)往往成為優(yōu)先選擇的目標(biāo)。從最近的統(tǒng)計(jì)數(shù)字可以看出,世界上每年要有25億片各種單片機(jī)投入使用。單片機(jī)是目前世界上使用量最大的微處理器。
單片機(jī)取代模擬電路作為電動(dòng)機(jī)的控制器有如下特點(diǎn):電路簡單;可以實(shí)現(xiàn)復(fù)雜控制;靈活性和適應(yīng)性好;無零點(diǎn)漂移,控制精度高;可提供人機(jī)界面,多機(jī)聯(lián)網(wǎng)工作。2 步進(jìn)電動(dòng)機(jī)的發(fā)展歷程
步進(jìn)電機(jī)最早在1920年由英國人開發(fā),1950年代后期晶體管的發(fā)明也逐漸應(yīng)用在步進(jìn)電機(jī)上。步進(jìn)電動(dòng)機(jī)的發(fā)展與計(jì)算機(jī)工業(yè)和數(shù)字控制技術(shù)密切相關(guān),產(chǎn)品按結(jié)構(gòu)劃分有磁阻式、永磁式和混合型等多種形式。近年來,伴隨著微電子技術(shù)大功率電力電子器件及驅(qū)動(dòng)技術(shù)的進(jìn)步,發(fā)達(dá)國家已普遍使用性能優(yōu)越的混合式步進(jìn)電機(jī),最典型的產(chǎn)品是二相8極50齒的電動(dòng)機(jī),步距角1.8°/0.9°(全步/半步);還有五相10極50齒和一些轉(zhuǎn)子100齒的二相和五相步進(jìn)電動(dòng)機(jī),五相電動(dòng)機(jī)主要用于運(yùn)行性能較高的場合。驅(qū)動(dòng)技術(shù)采用恒相電流與細(xì)分驅(qū)動(dòng)相結(jié)合,使步進(jìn)電機(jī)在中、小功率控制系統(tǒng)內(nèi)的精度提高,并逐步向高速大功率應(yīng)用領(lǐng)域滲透。步進(jìn)電動(dòng)機(jī)最大的生產(chǎn)國是日本,如日本伺服公司、東方公司、SANYO DENKI和MINEBEA及NPM公司等,特別是日本東方公司,無論是電動(dòng)機(jī)性能和外觀質(zhì)量還是生產(chǎn)手段,都是世界上最好的。
我國對(duì)步進(jìn)電動(dòng)機(jī)的研究從1958年開始,1970年代以前受蘇聯(lián)的影響,以三相磁阻式步進(jìn)電動(dòng)機(jī)為主,如1960年代末為快走絲數(shù)控線切割機(jī)床研制的BF1840-75,一直延續(xù)生產(chǎn)到現(xiàn)在。1970年代受到國內(nèi)研制生產(chǎn)數(shù)控機(jī)床和其他數(shù)控設(shè)備的推動(dòng),并受到當(dāng)時(shí)日本數(shù)控機(jī)床系統(tǒng)的影響開始發(fā)展磁阻式步進(jìn)電動(dòng)機(jī)的系列產(chǎn)品,以定子6個(gè)極、轉(zhuǎn)子40齒的三相磁阻式電動(dòng)機(jī)為主,還有定子10個(gè)極、轉(zhuǎn)子100齒的五相磁阻式電動(dòng)機(jī)和四相電動(dòng)機(jī)等。
1980年代開始發(fā)展混合式步進(jìn)電動(dòng)機(jī),以定子8極、轉(zhuǎn)子50齒的二相(四相)混合式步進(jìn)電動(dòng)機(jī)為主。1987年開始自行設(shè)計(jì)定子10極、轉(zhuǎn)子50齒的五相混合式步進(jìn)電動(dòng)機(jī),同時(shí)還發(fā)展了一些不同于國外的非典型產(chǎn)品,如定子8極、轉(zhuǎn)子60齒的二相(四相)混合式步進(jìn)電動(dòng)機(jī)。這是為了與磁阻式步進(jìn)電動(dòng)機(jī)的步距角相一致,轉(zhuǎn)子200齒的五相混合式步進(jìn)電動(dòng)機(jī),轉(zhuǎn)子100齒的九相(三相)混合式步進(jìn)電動(dòng)機(jī),主要特點(diǎn)是具有高分辨率和可變步矩角。
經(jīng)過多年的發(fā)展,我國步進(jìn)電機(jī)形成一種品種規(guī)格繁多的局面,其中最主要的產(chǎn)品系列,一是1970年代形成的磁阻式步進(jìn)電動(dòng)機(jī)系列產(chǎn)品在低端應(yīng)用仍有較多的市場,繼續(xù)生產(chǎn);二是混合式步進(jìn)電機(jī)的系列產(chǎn)品,包括引進(jìn)技術(shù)和生產(chǎn)設(shè)備,按照國外的設(shè)計(jì)生產(chǎn)的二相和五相混合式步進(jìn)電機(jī),以及國內(nèi)自行開發(fā)生產(chǎn)的混合式步進(jìn)電動(dòng)機(jī),仍然擁有各自不同的應(yīng)用領(lǐng)域,短期內(nèi)很難統(tǒng)一到幾個(gè)限定的規(guī)格品種上。
步進(jìn)電機(jī)幾十年的發(fā)展經(jīng)驗(yàn)總結(jié)是:磁阻式適用于平穩(wěn)運(yùn)行以及轉(zhuǎn)速大于1 000 r/min的用途;永磁式成本低,主要用在價(jià)格低廉的消費(fèi)性產(chǎn)品中;永磁感應(yīng)子式更適合于低速大轉(zhuǎn)矩用途。步進(jìn)電動(dòng)機(jī)的前景展望
步進(jìn)電動(dòng)機(jī)經(jīng)過幾十年的發(fā)展,已成為除直流電動(dòng)機(jī)和交流電動(dòng)機(jī)以外的應(yīng)用最廣泛的第三類電動(dòng)機(jī).在開環(huán)高分辨率的定位系統(tǒng)中,至今還沒有發(fā)現(xiàn)更合適取代它的產(chǎn)品,特別是在一些功率相當(dāng)小的系統(tǒng)中,步進(jìn)電機(jī)更具有無可替代的主流地位。
預(yù)計(jì)未來步進(jìn)電機(jī)的研究還會(huì)持續(xù)深入下去,研究方向之一是電機(jī)與驅(qū)動(dòng)的一體化,使步進(jìn)電機(jī)體積更小巧、性能更優(yōu)越,性價(jià)比更高,在大量的民用設(shè)備中批量化使用,如家庭機(jī)器人、民用智能化設(shè)備等;研究方向之二是在功率或機(jī)座號(hào)相對(duì)較大的步進(jìn)電動(dòng)機(jī)中,與屬于BIDCM(稀土永磁無刷直流電機(jī))的交流伺服電動(dòng)機(jī)系統(tǒng)會(huì)合,具體來說可能會(huì)借鑒交流伺服系統(tǒng)的控制技術(shù),但保留了部分步進(jìn)電動(dòng)機(jī)的特點(diǎn),形成一種新的“步進(jìn)伺服電動(dòng)機(jī)”或“伺服步進(jìn)電動(dòng)機(jī)”,在克服低頻振蕩、高頻過載能力小、快速性不足和效率低等方面取得突破性進(jìn)展,從而在現(xiàn)代軍事、精密機(jī)械加工、航空航天等領(lǐng)域的應(yīng)用越來越深入。研究內(nèi)容和目標(biāo)
采用系列單片機(jī)實(shí)現(xiàn)對(duì)步進(jìn)電動(dòng)機(jī)調(diào)速系統(tǒng)的自動(dòng)控制,利用計(jì)算機(jī)軟件與單片機(jī)的串行口通信,達(dá)到上位機(jī)控制下位機(jī)實(shí)現(xiàn)步進(jìn)電動(dòng)機(jī)的啟動(dòng)、停止、正轉(zhuǎn)、反轉(zhuǎn)、加速、減速和狀態(tài)顯示的目的,使步進(jìn)電動(dòng)機(jī)控制更加靈活。
通過查閱資料,研究出以單片機(jī)為核心的實(shí)用控制電路,并進(jìn)行調(diào)試??梢杂蔑@示電路進(jìn)行對(duì)步進(jìn)電動(dòng)機(jī)工作狀態(tài)的顯示,而且要有完善的保護(hù)、互鎖功能。設(shè)計(jì)方案的可行性分析
本次課題在以前《單片機(jī)的C語言》等書中有所涉及,而且網(wǎng)絡(luò)和圖書館資源豐富,可以方便查到相關(guān)方面的文獻(xiàn)、期刊、書籍和論文等,同時(shí)學(xué)院為我們提供的電腦機(jī)房,給予了我們很好的實(shí)驗(yàn)環(huán)境。因此,從主客觀方面我認(rèn)為這一方案是可行的。進(jìn)度計(jì)劃
為了更好的完成課題,通過查閱資料,特做如下安排:
第1周:根據(jù)題目,查找課題相關(guān)資料文獻(xiàn),初步從整體上了解課題,并撰寫進(jìn)度計(jì)劃與考核表。
第2周:學(xué)習(xí)相關(guān)資料,初步撰寫一篇與課題相關(guān)的調(diào)研報(bào)告。
第3周:繼續(xù)學(xué)習(xí)相關(guān)資料,開始翻譯相關(guān)的外文文獻(xiàn)。
第4周:繼續(xù)學(xué)習(xí)相關(guān)資料,了解課題內(nèi)容及思路。
第5周:閱讀國內(nèi)外有步進(jìn)電動(dòng)機(jī)調(diào)速單片機(jī)控制的資料,掌握步進(jìn)電動(dòng)機(jī)控制系統(tǒng)的組成、原理等,并在此基礎(chǔ)上掌握工程設(shè)計(jì)方法。
第6周:對(duì)自己要展開的設(shè)計(jì)方案進(jìn)行初步設(shè)計(jì)和論證。
第7周:對(duì)步進(jìn)電動(dòng)機(jī)調(diào)速單片機(jī)控制進(jìn)行電路設(shè)計(jì),包括系統(tǒng)電路圖,還有器件資料。
第8周:進(jìn)行系統(tǒng)的軟件設(shè)計(jì),程序流程圖,程序設(shè)計(jì)。
第9周:進(jìn)行調(diào)試,看操作控制,并且總結(jié)設(shè)計(jì)中遇到的問題及解決方法。
第10周:繼續(xù)上述總結(jié)工作,并逐步完善。
第11周:繼續(xù)進(jìn)行軟件的分析,撰寫畢業(yè)論文提綱,規(guī)劃論文內(nèi)容,并開始著手寫畢業(yè)論文初稿。
第12周:整理材料,文件圖標(biāo)等,完成畢業(yè)論文的撰寫并交給指導(dǎo)教師審查。第13周:論文修改,打印,裝訂成冊(cè),并提交。復(fù)習(xí)各種資料,準(zhǔn)備答辯。
第14周:答辯,畢業(yè)論文成績?cè)u(píng)定。參考文獻(xiàn)
[1] 王宗培.任雷.混合式步進(jìn)電動(dòng)機(jī)的研究[J].電工技術(shù)雜志.1998.11(3):12-22
[2] 陳敏祥.五相混合式步進(jìn)電動(dòng)機(jī)驅(qū)動(dòng)新技術(shù)[J].電機(jī)與控制學(xué)報(bào).1998.22(6):1-9
[3] 華蕊.步進(jìn)電機(jī)細(xì)分驅(qū)動(dòng)技術(shù)綜述[J].佛山科學(xué)技術(shù)學(xué)院學(xué)報(bào)(自然科學(xué)
版).1999.14(2):13-25
[4] 周明安.朱光忠.宋曉華.肖俊建.步進(jìn)電機(jī)驅(qū)動(dòng)技術(shù)發(fā)展及現(xiàn)狀[J].機(jī)電工程技
術(shù).2005.24(2):135-244
[5] 易長松.新型三相混合式步進(jìn)電機(jī)驅(qū)動(dòng)器[J].機(jī)電一體化.2001.22(9):21-66
[6] 趙永瑞.李剛.三相混合式步進(jìn)電機(jī)系統(tǒng)[J].機(jī)電一體化.2000.21(6):33-87
[7] 林蔚天.焦斌.應(yīng)用集成芯片UC3845構(gòu)成高頻開關(guān)電源[J].上海工程技術(shù)大學(xué)學(xué)
報(bào).2001.12(2):1-14
[8] 葉斌.電力電子應(yīng)用技術(shù)及裝置[M].機(jī)械工業(yè)出版社.1999.[9] 孫育才.MCS-51系列單片機(jī)型計(jì)算機(jī)及其應(yīng)用[M].東南大學(xué)出版社.1998
[10] 劉鳳君.正弦波逆變器[M].科學(xué)出版社.2002
[11] 胡漢才.單片機(jī)原理及其接口技術(shù)[M].清華大學(xué)出版社.1996
[12] 林成武.步進(jìn)電機(jī)微步驅(qū)動(dòng)分析[J].沈陽工業(yè)大學(xué)學(xué)報(bào).1996.23(6)33-36
[13] 宋受俊.劉衛(wèi)國.李珉宇.通用混合式步進(jìn)電動(dòng)機(jī)驅(qū)動(dòng)控制系統(tǒng)硬件設(shè)計(jì)[J].電氣
傳動(dòng).2007.22(9):45-77
[14] Robert Bosch GmbH.Autoelektrik Systeme and Komponenten Braunschweig[J]
Vieweg & Sohn Verlag.2002.21(3):22-39
第二篇:單片機(jī)課程設(shè)計(jì)任務(wù)書(步進(jìn)電機(jī)控制)
湖北工程學(xué)院新技術(shù)學(xué)院課程設(shè)計(jì)任務(wù)書
課程單片機(jī)原理及仿真課程設(shè)計(jì)
題目單片機(jī)控制步進(jìn)電機(jī)
專業(yè)姓名學(xué)號(hào)
主要內(nèi)容、基本要求、主要參考資料等
1、主要內(nèi)容:
根據(jù)單片機(jī)課程所學(xué)內(nèi)容,結(jié)合其他相關(guān)課程知識(shí),設(shè)計(jì)步進(jìn)電機(jī)控制,以加深對(duì)單片機(jī)知識(shí)的理解,鍛煉實(shí)踐動(dòng)手能力,為以后的畢業(yè)設(shè)計(jì)和工作打下堅(jiān)實(shí)基礎(chǔ)。
2、基本要求:
本設(shè)計(jì)以MCS-51系列單片機(jī)為核心,采用常用電子器件設(shè)計(jì)。根據(jù)要求設(shè)計(jì)一個(gè)單片機(jī)仿真控制,要求:設(shè)計(jì)一個(gè)數(shù)碼管;一個(gè)外中斷通過門電路連接五個(gè)按鍵,這五個(gè)按鍵分別控制步進(jìn)電機(jī)的正轉(zhuǎn)反轉(zhuǎn)暫停、加速與減速;正轉(zhuǎn)時(shí),數(shù)碼管上顯示‘Z’,反轉(zhuǎn)時(shí)顯示“F”,暫停時(shí)顯示“S”,按加速鍵時(shí),電機(jī)加速,按減速鍵時(shí),電機(jī)減速。
(1)用PROTOUS設(shè)計(jì)出步進(jìn)電機(jī)控制工作原理實(shí)驗(yàn)電路圖
(2)通過對(duì)AT89S51單片機(jī)編程,編寫定步進(jìn)電機(jī)控制程序,實(shí)現(xiàn)用步進(jìn)電機(jī)控制。
(3)上交相應(yīng)仿真的電路圖與編程文檔。
(4)寫出詳細(xì)的設(shè)計(jì)原理說明小論文。
3、主要參考資料:
[1] 李泉溪,倪水平.單片機(jī)原理與應(yīng)用實(shí)例仿真.北京:北京航空航天大學(xué)出版社,2012.[2] 張友德,趙志英,徐時(shí)亮.單片微機(jī)原理應(yīng)用與實(shí)驗(yàn).上海:復(fù)旦大學(xué)出版社,2010.[3] 單片機(jī)仿真實(shí)驗(yàn)系統(tǒng)說明書.完成期限
指導(dǎo)教師
2012年12月2 日
第三篇:基于51單片機(jī)的交通燈控制電路設(shè)計(jì)
交通燈
一、功能要求
要求甲車道和乙車道兩條交叉道路上的車輛交替運(yùn)行,每次通行時(shí)間都設(shè)為25秒,黃燈先亮5秒鐘,才能變換運(yùn)行車道;黃燈亮?xí)r,要求每秒鐘閃亮一次。
二、電路圖
說明:1)每一位數(shù)碼管位選要分開,對(duì)應(yīng)IO口參照程序中紅色部分 2)圖示數(shù)碼管為共陽,沒加驅(qū)動(dòng)數(shù)碼管顯示較暗,建議加驅(qū)動(dòng)
三、程序
//TrafficLight.c #include“reg52.h”
//IO口定義 sbit red_1 =P2^0;//南北方向 sbit red_2 =P2^3;//東西方向 sbit yellow_1 =P2^1;sbit yellow_2 =P2^4;sbit green_1 =P2^2;sbit green_2 =P2^5;sbit com1_1 =P3^6;//十位 南北方向 數(shù)碼管位選 sbit com1_2 =P3^7;//個(gè)位 南北方向 sbit com2_1 =P3^4;//十位 東西方向 sbit com2_2 =P3^5;//個(gè)位 東西方向
//全局變量 char time=30;//倒計(jì)時(shí)
unsigned char num1=0,num2=0;//輔助計(jì)時(shí) unsigned char flag1=0,flag2=0;//黃燈閃標(biāo)志位 unsigned char shi1,shi2,ge1,ge2;//數(shù)碼管十位個(gè)位
const unsigned char ledNum[] =
{// 0 1
A
b
c
d
E
F
不顯示-o(18)H(19)h(20)C(21)0(22)n(23)0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8e,0xFF,0xbf,0xa3,0x89,0x8b,0xc6,0xc0,0xab };//共陽數(shù)碼管
//中斷優(yōu)先級(jí)別T0>T1,數(shù)碼管顯示中斷間隔2ms,計(jì)時(shí)時(shí)間間隔50ms //計(jì)時(shí)要求比較精確,間隔長,不應(yīng)該被打斷,故中斷優(yōu)先級(jí)要高,使用T0 //數(shù)碼管中斷可以被打斷,打斷時(shí)間較短,不會(huì)影響顯示,使用T1 //在交通燈中,計(jì)時(shí)和數(shù)碼管顯示一直進(jìn)行,故定時(shí)器開啟后不用停止 void InitInter(void){ TMOD=0x11;//設(shè)置定時(shí)器工作方式為16位計(jì)時(shí)器
TH0=(65535-45872)/256;//11.0592M晶振,50ms TL0=(65535-45872)%256;TH1=(65535-1835)/256;//11.0592M晶振,2ms TL1=(65535-1835)%256;EA=1;ET0=1;ET1=1;TR0=1;TR1=1;}
void Display(void){ static unsigned char i=1;
switch(i){ case 1:
com2_2=0;
P0=ledNum[shi1];
com1_1=1;
break;case 2:
com1_1=0;
P0=ledNum[ge1];
com1_2=1;
break;case 3:
com1_2=0;
P0=ledNum[shi2];
com2_1=1;
break;case 4:
com2_1=0;
P0=ledNum[ge2];
com2_2=1;
break;
default:;}
i++;if(i>4)i=1;}
//紅燈可以直接變成綠燈,但綠燈必須先變成黃燈再變紅燈 void main(void){ bit i=0;InitInter();
while(1){
red_1=0;//0為亮
red_2=1;
green_2=0;
time=30;
while(time>5)
{
shi1=time/10;
ge1=time%10;
shi2=(time-5)/10;
ge2=(time-5)%10;
}
green_2=1;
yellow_2=0;
flag2=1;
num2=0;
while(time>0)
{
shi1=time/10;
ge1=time%10;
shi2=time/10;
ge2=time%10;
}
flag2=0;
yellow_2=1;
red_2=0;
red_1=1;
green_1=0;
time=30;
while(time>5)
{
shi2=time/10;
ge2=time%10;
shi1=(time-5)/10;
ge1=(time-5)%10;
}
green_1=1;
yellow_1=0;
flag1=1;
num2=0;
while(time>0)
{
shi2=time/10;
ge2=time%10;
shi1=time/10;
ge1=time%10;
}
flag1=0;
yellow_1=1;
//red_1=0;
//green_2=0;} } void Timer_0(void)interrupt 1//計(jì)時(shí) { TH0=(65535-45872)/256;TL0=(65535-45872)%256;num1++;if(num1>=20){
num1=0;
time--;
//if(time<0)time=30;
//處理time,顯示方式
} if(flag1||flag2){
num2++;
if(num2>=10)
{
num2=0;
if(flag1)yellow_1=~yellow_1;
if(flag2)yellow_2=~yellow_2;
} } }
void Timer_1(void)interrupt 3 { TH1=(65535-1835)/256;//11.0592M晶振,2ms TL1=(65535-1835)%256;
Display();}
第四篇:基于單片機(jī)的視力保護(hù)器電路設(shè)計(jì)(開題報(bào)告)
安 徽 科 技 學(xué) 院
畢業(yè)論文(設(shè)計(jì))開題報(bào)告
教學(xué)院(部):理學(xué)院
專業(yè)名稱:電子科學(xué)與技術(shù)
姓名:畢成治
學(xué)號(hào):1886080201
屆別:2012屆指導(dǎo)教師:呂越鳳
2012年 3月
第五篇:ARM的步進(jìn)電機(jī)細(xì)分控制報(bào)告
基于ARM的步進(jìn)電機(jī)細(xì)分驅(qū)動(dòng)控制設(shè)計(jì)
一、ARM簡介
ARM 公司是一家IP供應(yīng)商,其核心業(yè)務(wù)是IP核以及相關(guān)工具的開發(fā)和設(shè)計(jì)。半導(dǎo)體廠商通過購買ARM公司的IP授權(quán)來生產(chǎn)自己的微處理器芯片。由此以來,處理器內(nèi)核來自ARM公司、各芯片廠商結(jié)合自身已有的技術(shù)優(yōu)勢以及芯片的市場定位等因數(shù)使芯片設(shè)計(jì)最優(yōu)化,從而產(chǎn)生了一大批高度集成、各據(jù)特色的SOC芯片。
ARM微處理器具有以下特點(diǎn):采用RISC指令集、使用大量寄存器、ARM/THUMB指令支持、三/五級(jí)流水線具有低功耗、低成本、高性能等。
到目前為止,ARM公司的IP核已經(jīng)由ARM7,ARM9發(fā)展到今天的ARM11版本,ARM微處理器及技術(shù)的應(yīng)用已經(jīng)廣泛深入到國民經(jīng)濟(jì)的各個(gè)領(lǐng)域, 如工業(yè)控制領(lǐng)域、網(wǎng)絡(luò)應(yīng)用、消費(fèi)類電子產(chǎn)品及成像和安全產(chǎn)品等領(lǐng)域。
鑒于ARM7所具備的強(qiáng)大功能完全可以滿足本次設(shè)計(jì)要求,本次設(shè)計(jì)仍使用ARM7系列芯片。
二.步進(jìn)電機(jī)細(xì)分控制方案
1、步進(jìn)電機(jī)細(xì)分技術(shù)簡介
細(xì)分驅(qū)動(dòng)技術(shù)在七十年代中期由美國學(xué)者首次提出,基本原理是將繞組中的電流細(xì)分。由常規(guī)的矩形波供電改為階梯波供電,此時(shí)繞組中的電流將按一定的階梯順序上升和下降,從而將每一自然步進(jìn)行細(xì)分。步進(jìn)電機(jī)細(xì)分控制的本質(zhì)是通過對(duì)勵(lì)磁繞組中的電流控制,使步進(jìn)電機(jī)合成磁場為均勻離散化的圓形旋轉(zhuǎn)磁場。采用細(xì)分驅(qū)動(dòng)技術(shù)可以改善步進(jìn)電機(jī)的運(yùn)行品質(zhì),減少轉(zhuǎn)矩波動(dòng)、抑制振蕩、降低噪音、提高步距分辨率。
2、硬件框圖設(shè)計(jì)
系統(tǒng)總體硬件框圖設(shè)計(jì)如圖2-1所示:
0
圖2-1總體設(shè)計(jì)框圖
3、軟件總體設(shè)計(jì)流程圖
圖2-2 軟件設(shè)計(jì)流程圖
4、步進(jìn)電機(jī)
圖2-3 28BYJ-48-5VDC步進(jìn)電機(jī)
中間部分是轉(zhuǎn)子,由一個(gè)永磁體組成,邊上的是定子繞組。當(dāng)定子的一個(gè)繞組通電時(shí),將產(chǎn)生一個(gè)方向的電磁場,如果這個(gè)磁場的方向和轉(zhuǎn)子磁場方向不在同一條直線上,那么定子和轉(zhuǎn)子的磁場將產(chǎn)生一個(gè)扭力將定子扭轉(zhuǎn)。依次改變繞組的磁場,就可以使步進(jìn)電機(jī)正轉(zhuǎn)或反轉(zhuǎn)(比如通電次序?yàn)锳->B->C->D正轉(zhuǎn),反之則反轉(zhuǎn))。而且按照通電順序的不同,可分為單四拍(A-B-C-D)、雙四拍(AB-BC-CD-DA)、單雙八拍(A-AB-B-BC-C-CD-D-DA)三種工作方式。單四拍與雙四拍的步距角相等,但單四拍的轉(zhuǎn)動(dòng)力矩小。八拍工作方式的步距角是單四拍與雙四拍的一半,因此,八拍工作方式既可以保持較高的轉(zhuǎn)動(dòng)力矩又可以提高控制精度。
由于步進(jìn)電機(jī)的驅(qū)動(dòng)電流較大,單片機(jī)不能直接驅(qū)動(dòng),一般都是使用ULN2003達(dá)林頓陣列驅(qū)動(dòng),當(dāng)然,使用下拉電阻或三極管也是可以驅(qū)動(dòng)的,只不過效果不是那么好,產(chǎn)生的扭力比較小。
5、電機(jī)驅(qū)動(dòng)ULN2003簡介
ULN2003 是高耐壓、大電流復(fù)合晶體管陣列,由七個(gè)硅NPN 復(fù)合晶體管組成。ULN2003是大電流驅(qū)動(dòng)陣列,多用于單片機(jī)、智能儀表、PLC、數(shù)字量輸出卡等控制電路中??芍苯域?qū)動(dòng)繼電器等負(fù)載。輸入5VTTL電平,輸出可達(dá)500mA/50V。ULN2003是高耐壓、大電流達(dá)林頓陳列,由七個(gè)硅NPN達(dá)林頓管組成。
圖2-4 ULN2003芯片引腳圖
該電路的特點(diǎn)如下: ULN2003的每一對(duì)達(dá)林頓都串聯(lián)一個(gè)2.7K的基極電阻,在5V的工作電壓下它能與TTL和CMOS電路 直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器來處理的數(shù)據(jù)。ULN2003 是高壓大電流達(dá)林頓晶體管陣列系列產(chǎn)品,具有電流增益高、工作電壓高、溫度范圍寬、帶負(fù)載能力強(qiáng)等特點(diǎn),適應(yīng)于各類要求高速大功率驅(qū)動(dòng)的系統(tǒng)。ULN2003 工作電壓高,工作電流大,灌電流可達(dá)500mA,并且能夠在關(guān)態(tài)時(shí)承受50V 的電壓,輸出還可以在高負(fù)載電流并行運(yùn)行。其接線圖如下所示:
圖2-5 步進(jìn)電機(jī)驅(qū)動(dòng)電路 6、12864液晶顯示簡介
12864是128*64點(diǎn)陣液晶模塊的點(diǎn)陣數(shù)簡稱。液晶屏類型:STN FSTN;模塊顯示效果:黃綠底黑字、藍(lán)底白字、白底黑字;驅(qū)動(dòng)方式:1/64 DUTY 1/9 BIAS;背光:LED白色、LED黃綠色;控制器:KS0108或兼容 ST7920 T6963C;數(shù)據(jù)總線:8 位并口/6800 方式 串口;工作溫度:-20℃~+70℃;儲(chǔ)藏溫度:-30℃~+80℃;點(diǎn)陣格式:128 x 64;現(xiàn)實(shí)角度:6:00直視;基本用途:該點(diǎn)陣的屏顯成本相對(duì)較低,適用于各類儀器,小型設(shè)備的顯示領(lǐng)域。其接線圖如下所示:
圖2-6 12864液晶顯示與LPC2131接口接線圖
三、硬件電路圖
圖2-7 系統(tǒng)硬件電路圖
四、總結(jié)
此次基于ARM的步進(jìn)電機(jī)細(xì)分驅(qū)動(dòng)控制設(shè)計(jì),由于掌握知識(shí)及時(shí)間有限,我們目前只實(shí)現(xiàn)了對(duì)步進(jìn)電機(jī)正反轉(zhuǎn)控制以及三種運(yùn)行方式(單四拍、雙四拍、單雙八拍)的選擇控制,并且實(shí)現(xiàn)了在12864液晶顯示屏上顯示相關(guān)的信息。連接好硬件電路,上電復(fù)位,程序開始運(yùn)行。此時(shí)步進(jìn)電機(jī)不轉(zhuǎn)動(dòng),按下啟停鍵,步進(jìn)電機(jī)開始轉(zhuǎn)動(dòng),初始值設(shè)為正傳,按反轉(zhuǎn)鍵開始反轉(zhuǎn),再按正傳鍵則開始正傳。當(dāng)按下加速鍵時(shí)電機(jī)開始加速,當(dāng)按下減速鍵時(shí)電機(jī)開始減速。
當(dāng)然,此次課程設(shè)計(jì)還存在很多問題,實(shí)現(xiàn)的功能較簡單,這都需要以后不斷加強(qiáng)相關(guān)知識(shí)的學(xué)習(xí)從而不斷提高自己。
最后,感謝李紅巖老師和黃夢濤老師的辛勤教誨。
五、心得體會(huì)
這次課程設(shè)計(jì)的硬件部分由我來完成,雖然不用焊接電路,但是在畫硬件圖的過程中仍遇到很多問題。例如對(duì)Protel軟件的不熟悉,許多操作需要多次嘗試,才能正確完成;還有就是在電路的連接過程中,由于自己的馬虎,線路有錯(cuò)連和少連的現(xiàn)象。但是經(jīng)過自己的不斷努力,最終還是完成了任務(wù)。
通過這次課程設(shè)計(jì),我從一開始對(duì)系統(tǒng)的不太熟悉,到能開發(fā)一個(gè)簡單的系
統(tǒng),在這整個(gè)過程中我學(xué)到了很多東西,掌握了一些常用的開發(fā)技能,也發(fā)現(xiàn)了大量的問題,有些在設(shè)計(jì)過程中已經(jīng)解決,有些還有待今后慢慢學(xué)習(xí)。只要學(xué)習(xí)就會(huì)有更多的問題,有更多的難點(diǎn),但也會(huì)有更多的收獲。
在本次ARM課程設(shè)計(jì)訓(xùn)練中,不僅鍛煉了自己的動(dòng)手能力,也在向同學(xué)老師請(qǐng)教的過程中學(xué)到了不少東西,十分感謝老師和同學(xué)的幫助。通過本次課程設(shè)計(jì),我最深的感觸便是,許多東西都需要自己親自去做去實(shí)踐去學(xué)習(xí),才能真正的弄懂,才能真正的學(xué)到東西。
在整個(gè)的設(shè)計(jì)和實(shí)踐過程中,通過老師的指導(dǎo)和同學(xué)的幫助,我們組最終在最后時(shí)間完成了任務(wù)。通過這次課程設(shè)計(jì),才知道自己需要學(xué)習(xí)的東西還有很多,下來之后一定得加緊學(xué)習(xí)。平常我們都只是在課堂上學(xué)習(xí),通過這次課程設(shè)計(jì),實(shí)現(xiàn)了從理論到實(shí)踐的飛躍。增強(qiáng)了認(rèn)識(shí)問題,分析問,解決問題的能力。
最后感謝老師對(duì)我們此次課設(shè)的耐心指導(dǎo)和幫助!
經(jīng)過這次ARM課程設(shè)計(jì),使我對(duì)這學(xué)期ARM課程做了全面的復(fù)習(xí),并學(xué)會(huì)將其應(yīng)用于實(shí)踐,在這次基于ARM的步進(jìn)電機(jī)細(xì)分控制中,我對(duì)于ARM、步進(jìn)電機(jī)、液晶顯示及相關(guān)軟件都有了進(jìn)一步的認(rèn)識(shí),也是我發(fā)現(xiàn)團(tuán)隊(duì)合作的重要性,更激起了我對(duì)于電子設(shè)計(jì)方面的熱情。
不過,通過這次課程設(shè)計(jì),我同樣感受到了自身知識(shí)的缺乏,如不太熟悉使用上位機(jī)進(jìn)行監(jiān)控、ARM的掌握不夠透徹、還不能脫離參考資料獨(dú)立進(jìn)行軟硬件設(shè)計(jì)等,這些都需要我以后不斷加強(qiáng)學(xué)習(xí)鍛煉加以增強(qiáng),這將對(duì)于我今后進(jìn)一步的學(xué)習(xí)打下基礎(chǔ),我以后會(huì)不斷根據(jù)自身缺點(diǎn)進(jìn)行學(xué)習(xí)鍛煉,使自己不斷提高。最后,感謝老師的辛勤教誨!
六、參考文獻(xiàn)
1.ARM嵌入式系統(tǒng)基礎(chǔ)教程[第2版] 主編 周立功 北京航空航天大學(xué)出版社.2008 2.步進(jìn)電動(dòng)機(jī)及其驅(qū)動(dòng)控制系統(tǒng) 主編 劉寶廷 哈爾濱工業(yè)大學(xué)出版社.1997
附錄
#include“config.h” #define
MOTOA
1<<10
// P0.10
#define
MOTOB
1<<11
// P0.11
#define
MOTOC
1<<12
// P0.12 #define
MOTOD
1<<13
// P0.13 #define
key1
1<<17
// 加速 #define
key2
1<<18
// 減速 #define
key3
1<<19
//正反轉(zhuǎn) #define
key4
1<<20
//啟停
#define
KEYCON 0x001e0000 // LED控制字 #define
MOTOCON 0x00003c00 // MOTO控制字
#define
GPIOSET(PIN)IO0SET = PIN
// 方便修改置位端口 #define
GPIOCLR(PIN)IO0CLR = PIN
// 方便修改清位端口 #define
RS
1<<9
//P0.9 #define
SID
1<<6
//P0.6 #define
E
1<<4
//P0.4 #define
PSB
1<<2
//P0.2并行或串行,選擇低電平串行模式 #define
RST
1<<25
//P1.25,復(fù)位腳
unsigned char DAT1[64]=“低速—單四拍A-B-C-D運(yùn)行方式”;unsigned char DAT2[64]=“中速—雙四拍AB-BC-CD-DA運(yùn)行方式”;unsigned char DAT3[64]=“高速—單雙八拍A-AB-B-BC-C-CD-D-DA運(yùn)行方式”;unsigned char DAT4[64]=“低速反轉(zhuǎn)—單四拍D-C-B-A運(yùn)行方式”;unsigned char DAT5[64]=“中速反轉(zhuǎn)—雙四拍AD-DC-CB-BA運(yùn)行方式”;unsigned char DAT6[64]=“高速反轉(zhuǎn)—單雙八拍D-CD-C-BC-B-AB-A-DA運(yùn)行方式”;unsigned char DAT7[64]=“
停
止
”;unsigned char DAT8[64]=“步進(jìn)電機(jī)細(xì)分控制測控1002班:劉怡楠&石娟利”;
void TransferCom(unsigned char data0);void TransferData(unsigned char data1);void delay(unsigned int m);void lcd_mesg(unsigned char *adder1);void SendByte(unsigned char Dbyte);void init(void);void LCD12864_init(void);void DelayNS(uint32 dly);void MOTO_Mode1(uint8 i);
// A-B-C-D void MOTO_Mode10(uint8 i);void MOTO_Mode2(uint8 i);
// AB-BC-CD-DA-AB void MOTO_Mode20(uint8 i);void MOTO_Mode3(uint8 i);
// A-AB-B-BC-C-CD-D-DA-A void MOTO_Mode30(uint8 i);
int main(void){
unsigned int t=0;//啟停標(biāo)志
unsigned int f=0;//正反轉(zhuǎn)標(biāo)志
unsigned int i=0;//電機(jī)運(yùn)行模式標(biāo)志
PINSEL0=0x00000000;
PINSEL1=0X00000000;
PINSEL2&=~(0x00000006);//設(shè)置所有I/O口為普通GPIO口
IO0DIR =MOTOCON;// 配置I/O輸入輸出方向
LCD12864_init();//液晶端口初始化
while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)
{ init();
lcd_mesg(DAT8);
//顯示界面
}
while(1)
{
if(t==0)//電機(jī)停止
{ init();
lcd_mesg(DAT7);
IO0CLR=MOTOCON;
if((IO0PIN&key4)==0)t=!t;//key4控制啟停轉(zhuǎn)換
} else if(t==1)//電機(jī)啟動(dòng)
{ if((IO0PIN&key1)==0)//key1控制加速
{ if(i>=2)i=2;
else i++;
DelayNS(10);
}
if((IO0PIN&key2)==0)//key2控制減速
{ if(i<=0)i=0;
else i--;
DelayNS(10);
}
if((IO0PIN&key3)==0)f=!f;//key3控制正反轉(zhuǎn)
if((IO0PIN&key4)==0)t=!t;
if(f==0)
//正轉(zhuǎn)
{ if(i==0)MOTO_Mode1(10);//低速
else if(i==1)MOTO_Mode2(10);//中速
else if(i==2)MOTO_Mode3(10);//高速
}
else if(f==1)//反轉(zhuǎn)
{ if(i==0)MOTO_Mode10(10);//低速
else if(i==1)MOTO_Mode20(10);//中速
else if(i==2)MOTO_Mode30(10);//高速
} }
}
return(0);}
void DelayNS(uint32 dly){ uint32 i;
for(;dly>0;dly--)
for(i=0;i<5000;i++);} void MOTO_Mode1(uint8 i)
//單四拍A-B-C-D運(yùn)行方式 {
while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)
{
init();
lcd_mesg(DAT1);//顯示字符串DAT1
/* A */
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOA);
/* B */
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOB);
/* C */
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOC);
/* D */
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOD);
} } void MOTO_Mode10(uint8 i)
//單四拍D-C-B-A運(yùn)行方式 {
while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)
{
init();
lcd_mesg(DAT4);
//顯示字符串DAT4
/* D */
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOD);
/* C */
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOC);
/* B */
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOB);
/* A */
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOA);
} } void MOTO_Mode2(uint8 i)
//雙四拍AB-BC-CD-DA運(yùn)行方式 {
while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)
{
init();
lcd_mesg(DAT2);
//顯示字符串DAT2
GPIOSET(MOTOA);
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOA);
GPIOCLR(MOTOB);
/* BC */
GPIOSET(MOTOB);
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOB);
GPIOCLR(MOTOC);
/* CD */
GPIOSET(MOTOC);
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOC);
GPIOCLR(MOTOD);
/* DA */
GPIOSET(MOTOD);
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOD);
GPIOCLR(MOTOA);
} } void MOTO_Mode20(uint8 i)
//雙四拍AD-DC-CB-BA運(yùn)行方式 {
while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)
{
init();
lcd_mesg(DAT5);
//顯示字符串DAT5
GPIOSET(MOTOA);
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOA);
GPIOCLR(MOTOD);
/* DC */
GPIOSET(MOTOD);
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOD);
GPIOCLR(MOTOC);
/* CB */
GPIOSET(MOTOC);
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOC);
GPIOCLR(MOTOB);
/* BA */
GPIOSET(MOTOB);
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOB);
GPIOCLR(MOTOA);
} } void MOTO_Mode3(uint8 i)
//單雙八拍A-AB-B-BC-C-CD-D-DA運(yùn)行方式 {
while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)
{
init();
lcd_mesg(DAT3);
//顯示字符串DAT3
/* A */
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOA);
/* AB */
GPIOSET(MOTOA);
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOA);
GPIOCLR(MOTOB);
/* B */
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOB);
/* BC */
GPIOSET(MOTOB);
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOB);
GPIOCLR(MOTOC);
/* C */
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOC);
/* CD */
GPIOSET(MOTOC);
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOC);
GPIOCLR(MOTOD);
/* D */
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOD);
/* DA */
GPIOSET(MOTOD);
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOD);
GPIOCLR(MOTOA);
} } void MOTO_Mode30(uint8 i)
//單雙八拍D-CD-C-BC-B-AB-A-DA運(yùn)行方式 {
while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)
{
init();
lcd_mesg(DAT6);
//顯示字符串DAT6
/* D */
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOD);
/* CD */
GPIOSET(MOTOC);
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOC);
GPIOCLR(MOTOD);
/* C */
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOC);
/* BC */
GPIOSET(MOTOB);
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOB);
GPIOCLR(MOTOC);
/* B */
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOB);
/* AB */
GPIOSET(MOTOA);
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOA);
GPIOCLR(MOTOB);
/* A */
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOA);
/* DA */
GPIOSET(MOTOD);
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOD);
GPIOCLR(MOTOA);
} } void delay(unsigned int m){
unsigned int i,j;
for(i=0;i for(j=0;j<50;j++);} void init(void){ delay(40); //大于40ms的延時(shí)程序 IO0SET=PSB;//設(shè)置為串行工作方式 delay(1); IO1CLR=RST;//復(fù)位 delay(1); IO1SET=RST;//復(fù)位置高 delay(10); TransferCom(0x30);//RE=0,G=0,圖片顯示關(guān) delay(100); TransferCom(0x0C);//D=1,顯示開 delay(100); TransferCom(0x01);//清屏 delay(10); TransferCom(0x06);//模式設(shè)置,光標(biāo)從右向左加1位移動(dòng) delay(100);} void lcd_mesg(unsigned char *adder1){ unsigned char i; TransferCom(0x80); delay(100); for(i=0;i<32;i++) { TransferData(*adder1); adder1++; } TransferCom(0x90); delay(100); for(i=32;i<64;i++) { TransferData(*adder1); adder1++; } } void SendByte(unsigned char Dbyte){ unsigned char i; for(i=0;i<8;i++) { IO0CLR=E; if((Dbyte&0x80)==0x80)IO0SET=SID; else IO0CLR=SID; Dbyte=Dbyte<<1; IO0SET=E; IO0CLR=E; } } void TransferCom(unsigned char data0){ IO0SET=RS; SendByte(0xf8); // 11111,RW=0,RS=1,0 SendByte(0xf0&data0);//高4位 SendByte(0xf0&data0<<4);//低4位 IO0CLR=RS; } void TransferData(unsigned char data1){ IO0SET=RS; SendByte(0xfa); // 11111,RW=0,RS=1,0 SendByte(0xf0&data1);//高4位 SendByte(0xf0&data1<<4);//低4位 IO0CLR=RS;} void LCD12864_init(void){ IO0DIR|=(E|SID|RS);//設(shè)置為輸出 IO0CLR=(E|SID|RS); IO1DIR|=RST; IO1CLR=RST; //復(fù)位 delay(1); IO1SET=RST; //復(fù)位置高 }