2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  單片機設計實驗</b></p><p>  題目:兩相步進電機轉(zhuǎn)速控制</p><p><b>  摘 要 </b></p><p>  近年來隨著科技的飛速發(fā)展,單片機的應用正在不斷地走向深入,同時帶動傳統(tǒng)控制檢測日新月益更新。本次課程設計是用單片機來控制步進電機的定位和正反旋轉(zhuǎn)。步進電機

2、是將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件。整個系統(tǒng)有89C51單片機控制系統(tǒng),L298驅(qū)動電路,鍵盤控制電路,LCD顯示電路。用89C51單片機控制兩相四線步進電機,在非超載的情況下,電機的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負載變化的影響,即給電機加一個脈沖信號,電機則轉(zhuǎn)過一個步距角。通過控制脈沖個數(shù)即可以控制角位移量,從而達到準確定位的目的;同時通過控制脈沖的相序來改變步進電機的轉(zhuǎn)動方向,從而達到的控制正反

3、轉(zhuǎn)的目的。本系統(tǒng)采用單片機AT89C51為中心器件來控制步進電機,系統(tǒng)實用性強。</p><p>  關鍵字:單片機 ;步進電機;脈沖; 步距角</p><p><b>  目錄</b></p><p><b>  1設計內(nèi)容3</b></p><p>  1.1 設計目的3</p>

4、<p>  1.2 設計任務4</p><p>  2 步進電機工作原理4</p><p>  2.1兩相步進電機結(jié)構(gòu)4</p><p>  2.2兩相步進電機的原理5</p><p>  2.3 兩相步進電機的供電方式5</p><p>  3 硬件電路設計5</p>&l

5、t;p>  3.1 系統(tǒng)總體設計框圖5</p><p>  3.2 單片機系統(tǒng)6</p><p>  3.3 時鐘信號控制電路7</p><p>  3.4 電源電路7</p><p>  3.5 驅(qū)動電路8</p><p>  3.6 顯示電路9</p><p>  3.7鍵

6、盤電路10</p><p>  4 軟件系統(tǒng)設計10</p><p>  4.1 主程序流程圖10</p><p>  4.2 鍵盤處理11</p><p>  4.3 LCD顯示11</p><p>  5開發(fā)系統(tǒng)簡介12</p><p>  5.1 keilc_51編譯器的簡介

7、12</p><p>  5.2 Protues仿真平臺簡介12</p><p>  6 仿真結(jié)果及分析13</p><p>  7 課程設計總結(jié)14</p><p><b>  附錄 程序表16</b></p><p><b>  1設計內(nèi)容</b></p&

8、gt;<p>  1.1 設計目的 </p><p>  《單片機應用基礎》課程設計是學好本門課程設計的又一重要環(huán)節(jié),課程設計的目的就是配合笨課程設計的教學和平時的實驗,以達到鞏固消化課程的內(nèi)容,進一步加強綜合應用能力及單片機應用系統(tǒng)開發(fā)和設計能力的訓練,是以培養(yǎng)學生綜合運用所學知識的過程,培養(yǎng)學生查閱相關資料撰寫文檔的能力和自學,科研的能力,是知識轉(zhuǎn)化為能力和能力轉(zhuǎn)化為工程素質(zhì)的重要階段。<

9、;/p><p><b>  1.2 設計任務</b></p><p>  根據(jù)給定的任務要求選擇合適的單片機和其他電子元件,進行系統(tǒng)硬件電路設計和軟件編程,根據(jù)系統(tǒng)制作并調(diào)試電路板,使之實現(xiàn)任務要求。兩相步進電機,步距角為3度,編程實現(xiàn)下列功能:</p><p>  按鍵,步進電機按一定速度正轉(zhuǎn)。</p><p>  按鍵,

10、步進電機按一定速度反轉(zhuǎn)。</p><p>  任何時候按一下“STOP”鍵,步進電機停止轉(zhuǎn)動。</p><p>  點動:按鍵,步進電機轉(zhuǎn)過3度步距角;再按,再轉(zhuǎn)過3度步距角……</p><p>  用1602顯示屏顯示轉(zhuǎn)過的角度。</p><p>  用L298芯片驅(qū)動。</p><p>  2 步進電機工作原理&

11、lt;/p><p>  2.1兩相步進電機結(jié)構(gòu)</p><p>  圖2.1 兩相步進電機結(jié)構(gòu)圖</p><p>  電動機軸向結(jié)構(gòu)如圖2.1所示。轉(zhuǎn)子被分為完全對稱的兩段,一段轉(zhuǎn)子的磁力線沿轉(zhuǎn)子表面呈放射形進入定子鐵心,稱為N極轉(zhuǎn)子;另一段轉(zhuǎn)子的磁力線經(jīng)過定子鐵心沿定子表面穿過氣隙回歸到轉(zhuǎn)子中去,稱為S極轉(zhuǎn)子。圖中虛線閉和回路為磁力線的行走路線。相應地定子也被分為兩段

12、,其上裝有A、B兩相對稱繞組.同時,沿轉(zhuǎn)子軸在兩段轉(zhuǎn)子中間安裝一塊永磁鐵,形成轉(zhuǎn)子的N、S極性。從軸向看過去,兩段轉(zhuǎn)子齒中心線彼此錯開半個轉(zhuǎn)子齒距。</p><p>  2.2兩相步進電機的原理</p><p>  通常電機的轉(zhuǎn)子為永磁體,當電流流過定子繞組時,定子繞組產(chǎn)生一矢量磁場。該磁場會帶動轉(zhuǎn)子旋轉(zhuǎn)一角度,使得轉(zhuǎn)子的一對磁場方向與定子的磁場方向一致。每輸入一個電脈沖,電動機轉(zhuǎn)動一個角

13、度前進一步。它輸出的角位移與輸入的脈沖數(shù)成正比、轉(zhuǎn)速與脈沖頻率成正比。改變繞組通電的順序,電機就會反轉(zhuǎn)。所以可用控制脈沖數(shù)量、電動機各相繞組的通電順序來控制步進電機的轉(zhuǎn)動。</p><p>  2.3 兩相步進電機的供電方式</p><p>  兩相四線的步進電機,有兩個繞組:A,B。在半步供電方式時,電機的通電方式采用順序八拍一個循環(huán)給兩相繞組供電為: 八拍,半步:(+A)(+B)--(

14、+B)--(-A)(+B)--(-A)--(-A)(-B)--(-B)--(+A)(-B)--(+A)-。</p><p>  兩相混合式步進電動機還有一種供電方式為雙4拍整步方式,即采用通電次序兩相,四拍:(+A)(+B)--(-A)(+B)--(-A)(-B)--(+A)(-B)—。</p><p><b>  3 硬件電路設計</b></p>&

15、lt;p>  3.1 系統(tǒng)總體設計框圖</p><p>  根據(jù)設計要求設計了如圖3.1圖所示系統(tǒng)總體設計框圖,步進電機是較早實用的典型的機電一體化組件。步進電機本體、步進電機驅(qū)動器和控制器構(gòu)成步進電機系統(tǒng)不可分割的三大部分其設計框圖。</p><p>  圖3.1總體設計框圖</p><p><b>  3.2 單片機系統(tǒng)</b><

16、;/p><p>  如圖3.2電路中采用的是Atmel公司的AT89C51型號的單片機,其內(nèi)部結(jié)構(gòu)結(jié)構(gòu)</p><p><b>  如圖3.2所示。</b></p><p>  圖 3.2 89C51內(nèi)部結(jié)構(gòu)圖</p><p>  按照圖3.2它具有如下一些特點:</p><p>  (1)集成度高。

17、AT89C51為40腳封裝,內(nèi)部有4K字節(jié)的ROM,128字節(jié)的RAM,四個8位并行口,一個全雙工的串行口,二個16位定時器計數(shù)器,一個功能很強的中央處理器以及內(nèi)部晶體振蕩電路。</p><p> ?。?)系統(tǒng)結(jié)構(gòu)簡單。一片Ar89C51即可構(gòu)成一個小型的控制系統(tǒng)。該芯片擴充能力強,具有對64K外部程序存儲器和64K外部數(shù)據(jù)存儲器的尋址能力。兩個單片機間還可進行通訊,可以構(gòu)成雙CPU系統(tǒng)。可靠性高。AT89C51

18、能在常溫下工作,大部分總線在芯片內(nèi)部不易受干擾,系統(tǒng)簡單,體積小,容易采取屏蔽措施,因此有較高的可靠性。</p><p> ?。?)處理功能強,速度快。AT89C51具有豐富的指令系統(tǒng),除加減指令外,還有字節(jié)的乘除運算指令,具有對128個控制位的位操作指令,因此特別適用于控制要求。CPU時鐘高達12MHz,機器周期只有1微秒,多數(shù)指令為一個機器周期或兩個機器周期,所以運算速度快,可使系統(tǒng)有較強的功能和較高的響應。

19、</p><p>  3.3 時鐘信號控制電路</p><p>  如圖3.3所示,89C51芯片內(nèi)部有一個高增益反相放大器,用于構(gòu)成振蕩器。反相放大器的輸入端為XTAL1,輸出端為XTAL2,兩端跨接石英晶體及兩個電容就可以構(gòu)成穩(wěn)定的自激振蕩器。電容C1和C2可以穩(wěn)定頻率并對振蕩頻率有微調(diào)作用。振蕩脈沖頻率為0到24MHz。振蕩信號從XTAL2端輸入到片內(nèi)的時鐘發(fā)生器上。</p&g

20、t;<p>  圖 3.3 時鐘信號控制電路</p><p><b>  3.4 電源電路</b></p><p>  如圖3.4所示為電源電路,在電子電路中,通常都需要電壓穩(wěn)定的直流穩(wěn)壓電源供電,小功率的穩(wěn)壓電源是由電源變壓器、整流電路、濾波電路和穩(wěn)壓電路等四部分組成。它的指標是輸入電壓為220V/50HZ交流電;輸出電壓分別為+12V/1A,-12V

21、/1A,+5V/1A,-5V/1A,+5V/3A及一組可調(diào)正電壓,本次電路系統(tǒng)多用到+5V/1A的電源,通過具體的調(diào)節(jié)可以得到穩(wěn)定的需求電壓。</p><p><b>  3.5 驅(qū)動電路</b></p><p>  如圖3.5所示,驅(qū)動電路用L298來驅(qū)動步進電機,L298 所出產(chǎn)的雙全橋步進電機專用驅(qū)動芯片,內(nèi)部包含4信道邏輯驅(qū)動電路,是一種二相 和四相步進電機的

22、專用驅(qū)動器,可同時驅(qū)動2個二相或1個四相步進電機,內(nèi)含二個H-Bridge 的高電壓、大電流雙全橋式驅(qū)動器,接收標準TTL邏輯準位信號,可驅(qū)動46V、2A以下的步進電機,且可以直接透過電源來調(diào)節(jié)輸出電壓;此芯片可直接由單片機的IO端口來提供模擬時序信號。</p><p>  圖 3.5 驅(qū)動電路</p><p><b>  引腳功能說明:</b></p>

23、<p><b>  3.6 顯示電路</b></p><p>  如圖3.6所示,步進電機的轉(zhuǎn)速顯示是通過1602來實現(xiàn)的。1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所

24、以它不能很好地顯示圖形(用自定義CGRAM,顯示效果也不好)。 </p><p>  1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數(shù)字)。</p><p> ?。?LCD1602引腳圖)</p><p>  1602采用標準的16腳接口,其中: </p><p>  第1腳:VSS為電源地 <

25、;/p><p>  第2腳:VCC接5V電源正極 </p><p>  第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會 產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度)。 </p><p>  第4腳:RS為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器。 </p><p&g

26、t;  第5腳:RW為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。 </p><p>  第6腳:E(或EN)端為使能(enable)端。 </p><p>  第7~14腳:D0~D7為8位雙向數(shù)據(jù)端。 </p><p>  第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負極。</p><p>  圖3.6

27、LCD顯示電路</p><p><b>  3.7鍵盤電路</b></p><p>  本次設計要對步進電機實現(xiàn)正轉(zhuǎn)、反轉(zhuǎn)和點動等功能,所以設計了鍵盤按鍵分別進行步進電機的“正轉(zhuǎn)”、“反轉(zhuǎn)”、“點動”和“停止”。</p><p><b>  圖3.7鍵盤電路</b></p><p><b>

28、;  4 軟件系統(tǒng)設計</b></p><p>  4.1 主程序流程圖</p><p>  如圖4.1是主程序流程圖,初始化程序后,有鍵按下該按鍵對應值為0,其他按鍵則為1來進行按鍵的處理,并且進行控制步進電機的正反轉(zhuǎn)及點動以及停轉(zhuǎn)。在處理案件的過程中,如有其他鍵按下,則退出該鍵的循環(huán)改為進入更改過后的按鍵的處理程序然后調(diào)用顯示程序顯示轉(zhuǎn)過的角度數(shù)。如此進行旋轉(zhuǎn)和顯示。<

29、;/p><p>  圖4.1主程序流程圖</p><p><b>  4.2 鍵盤處理</b></p><p>  共設置4個鍵盤,分別為K1、K2、K3、K4,分別代表:</p><p>  sbit K1 = P2^4 ;//順轉(zhuǎn)</p><p>  sbit K2 = P2^5 ;//反轉(zhuǎn)<

30、;/p><p>  sbit K3 = P2^6 ;//點動</p><p>  sbit K4 = P2^7 ;//停止</p><p><b>  4.3 LCD顯示</b></p><p>  如圖4.3所示為LCD顯示程序流程圖,開始判斷LCD是否忙碌。Result=1則為忙碌狀態(tài),需要等待。Result=0則為不忙

31、,可以對液晶模塊進行讀和寫。RS為低電平,RW為高電平時,可以讀狀態(tài)。E=1,才允許讀寫。RS和R/W同時為低電平時,可以寫入指令,將數(shù)據(jù)送入P0口,即寫入指令或地址。RS為高電平,RW為低電平時,可以寫入數(shù)據(jù),將數(shù)據(jù)送入P0口,即將數(shù)據(jù)寫入液晶模塊。當E由高電平跳變成低電平時,液晶模塊開始執(zhí)行命令。</p><p>  4.3液晶顯示流程圖</p><p><b>  5開發(fā)系

32、統(tǒng)簡介</b></p><p>  5.1 keilc_51編譯器的簡介</p><p>  Keilc_51是一款功能強大的優(yōu)秀的單片機程序編輯、調(diào)試軟件。程序采匯編、C語言語言,利用該軟件進行程序的編輯與調(diào)試。實驗程序采用多種語言適應不同的語言適應不同層次的學生需要。高級語言編寫應用程序,是一種時代的需要,通過應用高級語言的匯編和實驗們可以更好的掌握。它可以對C語言和匯編語

33、言進行編譯檢查,利用它可以很好的進行編程設計,通過運行生成的文件,被89c51用于仿真。</p><p>  5.2 Protues仿真平臺簡介</p><p>  Protues軟件是英國Labcenter electronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但

34、已受到單片機愛好者、從事單片機教學的教師、致力于單片機開發(fā)應用的科技工作者的青睞,Protues是一個能仿真模擬和數(shù)字電路,特別是能夠仿真單片機、ARM、DSP、FPGA等的軟件,它還能和KEIL軟件在同一臺機子實現(xiàn)聯(lián)調(diào)Protues可提供的仿真儀表資源 :示波器、邏輯分析儀、虛擬終端、SPI調(diào)試器、I2C調(diào)試器、信號發(fā)生器、模式發(fā)生器、交直流電壓表、交直流電流表。理論上同一種儀器可以在一個電路中隨意的調(diào)用PROTUES不僅可將許多單片

35、機實例功能形象化,也可將許多單片機實例運行過程形象化。前者可在相當程度上得到實物演示實驗的效果,后者則是實物演示實驗難以達到的效果。 </p><p>  它的元器件、連接線路等卻和傳統(tǒng)的單片機實驗硬件高度對應。這在相當程度上替代了傳統(tǒng)的單片機實驗教學的功能,例:元器件選擇、電路連接、電路檢測、電路修改、軟件調(diào)試、運行結(jié)果等。 </p><p>  課程設計、畢業(yè)設計是學生走向就業(yè)的重要實

36、踐環(huán)節(jié)。由于PROTUES提供了實驗室無法相比的大量的元器件庫,提供了修改電路設計的靈活性、提供了實驗室在數(shù)量、質(zhì)量上難以相比的虛擬儀器、儀表,因而也提供了培養(yǎng)學生實踐精神、創(chuàng)造精神的平臺。因此在不具備實驗前可以利用protues進行仿真的檢查。其仿真的界面如圖5.2所示。</p><p>  圖5.2 protues仿真平臺</p><p><b>  6 仿真結(jié)果及分析<

37、;/b></p><p>  1、打開文件,進行編譯,無誤后,點擊工具欄中的運行工具,就得到了圖中的正確運行。</p><p><b>  2、準備調(diào)試</b></p><p>  3、調(diào)入文件后,開始調(diào)試硬件電路,點擊運行,電路接通,電路正常顯示。</p><p>  圖6 protues調(diào)試硬件電路</

38、p><p>  4、從鍵盤輸入,按正轉(zhuǎn),電機正轉(zhuǎn)運行。</p><p>  5、從鍵盤輸入,按反轉(zhuǎn),電機反轉(zhuǎn)運行。</p><p>  6、從鍵盤輸入,按點動,點一下電機轉(zhuǎn)過一個步距角。</p><p>  7、從鍵盤輸入暫停,電機停轉(zhuǎn)。 </p><p>  調(diào)試完畢,通過鍵盤輸入數(shù)電機按照給定的要

39、求進行正確運轉(zhuǎn),數(shù)碼管正確顯示角度。所得的結(jié)論與理論的相符合,調(diào)試成功。</p><p><b>  7 課程設計總結(jié)</b></p><p>  本次課程設計采用AT89C51單片機對兩相四線步進電機進行控制,通過改變相序可以改變電機的轉(zhuǎn)向,通過鍵盤的按鍵控制步進電機的正轉(zhuǎn)、反轉(zhuǎn)、點動和停止,所運行的角度由LCD進行顯示。通過調(diào)試和運行,得到了正確的結(jié)果。<

40、/p><p>  開始接到任務時候感覺不知道從哪兒開始,后面通過從網(wǎng)上找了相關的資料后開始對我們的課程設計有所了解,然后慢慢的進行,從發(fā)現(xiàn)問題到慢慢的去解決問題,慢慢的感覺自己好像懂得的多了一些,感覺問題一步步的得到了解決。但是我在學習的過程中也發(fā)現(xiàn)了不少的問題,也花了不少的時間。有時候遇到的困難一下子很難發(fā)現(xiàn)和解決,那時候真想放棄,但最后還是堅持了下來,不動就去問,到處問到處找,感覺這也很有趣,一種學習的樂趣。雖然

41、這次課程設計做的不是很好。但是還是通過了自己的努力。</p><p>  通過對本次的課程設計,不但了解了怎樣設計課程設計的方法更重要的是將書本上的知識用到了現(xiàn)實中,更加深刻的了解了89C51單片機的用法,以及端口的相應的功能和接線。</p><p><b>  附錄 程序表</b></p><p>  #include<reg51.h&

42、gt;</p><p>  #include<intrins.h></p><p>  sbit RS = P2^0 ;</p><p>  sbit RW = P2^1 ;</p><p>  sbit E = P2^2 ;</p><p>  sbit BF = P0^7 ;</p>&

43、lt;p>  sbit K1 = P2^4 ;//順轉(zhuǎn)</p><p>  sbit K2 = P2^5 ;//反轉(zhuǎn)</p><p>  sbit K3 = P2^6 ;//點動</p><p>  sbit K4 = P2^7 ;//停止</p><p>  //步進電機八拍編碼向量;</p><p>  un

44、signed char code bianma[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};</p><p>  //0~9字符編碼向量;</p><p>  unsigned char code word[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};</p><

45、;p><b>  //延時1毫秒</b></p><p>  void delay(unsigned int t)</p><p><b>  {</b></p><p>  unsigned int k;</p><p>  while(t--)</p><p>&l

46、t;b>  {</b></p><p>  for(k=0; k<125; k++)</p><p><b>  {}</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /

47、*****************************************************</p><p>  函數(shù)功能:判斷液晶模塊的忙碌狀態(tài)</p><p>  返回值:result。result=1,忙碌;result=0,不忙</p><p>  ************************************************

48、***/</p><p>  bit BusyTest(void)</p><p><b>  {</b></p><p>  bit result;</p><p>  RS=0; //根據(jù)規(guī)定,RS為低電平,RW為高電平時,可以讀狀態(tài)</p><p><b>  RW=1

49、;</b></p><p>  E=1; //E=1,才允許讀寫</p><p>  _nop_(); //空操作</p><p><b>  _nop_();</b></p><p><b>  _nop_(); </b></p><p>  

50、_nop_(); //空操作四個機器周期,給硬件反應時間</p><p>  result=BF; //將忙碌標志電平賦給result</p><p><b>  E=0;</b></p><p>  return result;</p><p><b>  }</b></p>

51、<p>  /*****************************************************</p><p>  函數(shù)功能:將模式設置指令或顯示地址寫入液晶模塊</p><p>  入口參數(shù):dictate</p><p>  **************************************************

52、*/</p><p>  void Write_com (unsigned char dictate)</p><p><b>  { </b></p><p>  while(BusyTest()==1); //如果忙就等待</p><p>  RS=0; //根據(jù)規(guī)定,RS和R/

53、W同時為低電平時,可以寫入指令</p><p><b>  RW=0; </b></p><p>  E=0; //E置低電平(寫指令時,</p><p>  // 就是讓E從0到1發(fā)生正跳變,所以應先置"0"</p><p><b>  _nop_(

54、);</b></p><p>  _nop_(); //空操作兩個機器周期,給硬件反應時間</p><p>  P0=dictate; //將數(shù)據(jù)送入P0口,即寫入指令或地址</p><p><b>  _nop_();</b></p><p><b>

55、  _nop_();</b></p><p><b>  _nop_();</b></p><p>  _nop_(); //空操作四個機器周期,給硬件反應時間</p><p>  E=1; //E置高電平</p><p><b>  

56、_nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p>  _nop_(); //空操作四個機器周期,給硬件反應時間</p><p>  E=0;

57、 //當E由高電平跳變成低電平時,液晶模塊開始執(zhí)行命令</p><p><b>  }</b></p><p>  /*****************************************************</p><p>  函數(shù)功能:指定字符顯示的實際地址</p><p><b&

58、gt;  入口參數(shù):x</b></p><p>  ***************************************************/</p><p>  void WriteAddress(unsigned char x)</p><p><b>  {</b></p><p>  W

59、rite_com(x|0x80); //顯示位置的確定方法規(guī)定為"80H+地址碼x"</p><p><b>  }</b></p><p>  /*****************************************************</p><p>  函數(shù)功能:將數(shù)據(jù)(字符的標準ASCII碼)寫入液

60、晶模塊</p><p>  入口參數(shù):y(為字符常量)</p><p>  ***************************************************/</p><p>  void WriteData(unsigned char y)</p><p><b>  {</b></p>

61、;<p>  while(BusyTest()==1); </p><p>  RS=1; //RS為高電平,RW為低電平時,可以寫入數(shù)據(jù)</p><p><b>  RW=0;</b></p><p>  E=0; //E置低電平(寫指令時,,</p><p>

62、  // 就是讓E從0到1發(fā)生正跳變,所以應先置"0"</p><p>  P0=y; //將數(shù)據(jù)送入P0口,即將數(shù)據(jù)寫入液晶模塊</p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p>&l

63、t;b>  _nop_();</b></p><p>  _nop_(); //空操作四個機器周期,給硬件反應時間</p><p>  E=1; //E置高電平</p><p><b>  _nop_();</b></p><p><b>  _nop_();&l

64、t;/b></p><p><b>  _nop_();</b></p><p>  _nop_(); //空操作四個機器周期,給硬件反應時間</p><p>  E=0; //當E由高電平跳變成低電平時,液晶模塊開始執(zhí)行命令</p><p><b>  }</b

65、></p><p><b>  //屏幕初始化</b></p><p>  void LcdInt(void)</p><p><b>  {</b></p><p>  delay(15); //延時15ms,首次寫指令時應給LCD一段較長的反應時間</p>

66、;<p>  Write_com(0x38); //顯示模式設置:16×2顯示,5×7點陣,8位數(shù)據(jù)接口</p><p>  delay(5); //延時5ms </p><p>  Write_com(0x38);</p><p><b>  delay(5);</b></p><p

67、>  Write_com(0x38); //3次寫 設置模式</p><p><b>  delay(5);</b></p><p>  Write_com(0x0F); //顯示模式設置:顯示開,有光標,光標閃爍</p><p><b>  delay(5);</b></p><p>  

68、Write_com(0x06); //顯示模式設置:光標右移,字符不移</p><p>  delay(5); </p><p>  Write_com(0x01); //清屏幕指令,將以前的顯示內(nèi)容清除</p><p><b>  delay(5);</b></p><p><b>

69、;  }</b></p><p>  //主程序 </p><p><b>  main()</b></p><p><b>  {</b></p><p>  unsigned int p=0;

70、</p><p>  long int r=0;</p><p>  int D1,D2,D3,flag;</p><p>  LcdInt(); //LCD1602初始化</p><p>  P1 = 0xf9;</p><p>  delay(15);</p&

71、gt;<p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  if(K1==0)</b></p><p><b>  {</b></p><p><b>  for(;1;)

72、</b></p><p><b>  {</b></p><p>  p=(p+1)%8; //電機正轉(zhuǎn)</p><p>  P1=bianma[p]; </p><p><b>  r=r+3;</b></p><p><b> 

73、 if(r>0)</b></p><p><b>  flag=0;</b></p><p><b>  else</b></p><p><b>  flag=1;</b></p><p>  D3=(r%360-flag*360)/100;</p&g

74、t;<p>  D2=((r%360-flag*360)/10)%10;</p><p>  D1=(r%360-flag*360)%10;</p><p>  WriteAddress(0x00);</p><p>  WriteData(0x2b+flag*2);</p><p>  WriteData(word[D3]);

75、</p><p>  WriteData(word[D2]);</p><p>  WriteData(word[D1]);</p><p>  if(K2==0||K3==0||K4==0)</p><p>  {break;} //退出此循環(huán)程序</p><p><b>  }</b>&

76、lt;/p><p><b>  }</b></p><p>  else if(K2==0)</p><p><b>  {</b></p><p><b>  for(;1;)</b></p><p><b>  {</b></

77、p><p>  p=(p+7)%8; //電機反轉(zhuǎn)</p><p>  P1=bianma[p];</p><p><b>  r=r-3;</b></p><p><b>  if(r>0)</b></p><p><b>  flag=0;

78、</b></p><p><b>  else</b></p><p><b>  flag=1;</b></p><p>  D3=(r%360-flag*360)/100;</p><p>  D2=((r%360-flag*360)/10)%10;</p><p

79、>  D1=(r%360-flag*360)%10;</p><p>  WriteAddress(0x00);</p><p>  WriteData(0x2b+flag*2);</p><p>  WriteData(word[D3]);</p><p>  WriteData(word[D2]);</p><p

80、>  WriteData(word[D1]);</p><p><b>  delay(1);</b></p><p>  if(K1==0||K3==0||K4==0)</p><p>  {break;} //退出此循環(huán)程序</p><p><b>  }</b></p>

81、<p><b>  }</b></p><p>  else if(K3==0)</p><p><b>  {</b></p><p>  delay(25);</p><p><b>  if(K3==0)</b></p><p>&l

82、t;b>  {</b></p><p>  while(!K3);</p><p>  p=(p+1)%8;</p><p>  P1=bianma[p];</p><p><b>  r=r+3;</b></p><p><b>  if(r>0)</b&

83、gt;</p><p><b>  flag=0;</b></p><p><b>  else</b></p><p><b>  flag=1;</b></p><p>  D3=(r%360-flag*360)/100;</p><p>  D2=

84、((r%360-flag*360)/10)%10;</p><p>  D1=(r%360-flag*360)%10;</p><p>  WriteAddress(0x00);</p><p>  WriteData(0x2b+flag*2);</p><p>  WriteData(word[D3]);</p><p&

85、gt;  WriteData(word[D2]);</p><p>  WriteData(word[D1]);</p><p>  delay(400);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論