教育資料(2021-2022年收藏的)直流伺服電機控制系統設計_第1頁
教育資料(2021-2022年收藏的)直流伺服電機控制系統設計_第2頁
教育資料(2021-2022年收藏的)直流伺服電機控制系統設計_第3頁
教育資料(2021-2022年收藏的)直流伺服電機控制系統設計_第4頁
教育資料(2021-2022年收藏的)直流伺服電機控制系統設計_第5頁
已閱讀5頁,還剩27頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE31電子信息與電氣工程系課程設計報告設計題目:直流伺服電機控制系統設計系別:電子信息與電氣工程系年級專業:學號:學生姓名:2006級自動化專業《計算機控制技術》課程設計任務書論文題目直流伺服電機控制系統設計設計類型導師姓名丁健干開峰主要內容及目標設計對象是直流伺服電機實驗臺,設計一個計算機控制的直流伺服電機控制系統。由測量元件(位移傳感器)對被控制對象(電機)的被控參數(位移)進行測量,由變換發送單元(A/D轉換器)將被控參數變成一定形式的信號,送給控制器CPU,控制器將測量信號(實際位移量)與給定信號(位移量)進行比較,若有誤差則按預定的控制規律產生一控制信號驅動執行機構(伺服電機控制電源)工作,使被控參數(實際位移量)與給定信號(位移量)保持一致。其電機位置隨動系統:其中:=1.8,=0.035,=0.15,K=100,控制算法選用數字PID控制。設計條件PC機一臺,教學實驗箱一臺;計劃學生數及任務3人(1):明確課題功能。(2):把復雜問題分解為若干模塊,確定各模塊處理方法,畫出流程圖。(3):存儲器資源分配(4):編制程序,根據流程圖來編制源程序(5):對程序進行匯編,調試和修改,直到程序運行結果正確為止。計劃設計進程總體方案設計控制系統的建模和數字控制器設計硬件的設計和實現選擇計算機字長(選用51內核的單片機)設計支持計算機工作的外圍電路(EPROM、RAM、I/O端口、鍵盤、顯示接口電路等);設計輸入信號接口電路;設計輸出控制電路;其它相關電路的設計或方案(電源、通信等)。軟件設計分配系統資源,編寫系統初始化和主程序模塊框圖;編寫A/D轉換和位置檢測子程序框圖;編寫控制程序和D/A轉換控制子程序模塊框圖;其它程序模塊(顯示與鍵盤等處理程序)框圖。五、編寫課程設計說明書,繪制完整的系統電路圖(A3幅面)。參考文獻1.于海生計算機控制技術[M]北京:機械工業出版社,2007.62、周荷琴等微型計算機原理及接口技術[M]合肥:中國科技大學出版社,2008.63、李剛民等單片機原理及應用技術[M]北京:高等教育出版社4、樓然苗51系列單片機設計實例[M]北京:北京航空航天大學出版社5、計算機控制技術實驗指導書摘要隨著集成電路技術的飛速發展,微控制器在伺服控制系統普遍應用,這種數字伺服系統的性能可以大大超過模擬伺服系統。數字伺服系統可以實現高精度的位置控制、速度跟蹤,可以隨意地改變控制方式。單片機和DSP在伺服電機控制中得到了廣泛地應用,用單片機作為控制器的數字伺服控制系統,有體積小、可靠性高、經濟性好等明顯優點。。本設計研究的直流伺服電機控制系統即以單片機作為核心部件,主要是單片機為控制核心通過軟硬件結合的方式對直流伺服電機轉速實現開環控制。對于伺服電機的閉環控制,采用PID控制,利用MATLAB軟件對單位階躍輸入響應的PID校正動態模擬仿真,研究PID控制作用以及PID各參數值對控制系統的影響,通過試湊法得到最佳PID參數。同時能更深度地掌握在自動控制領域應用極為廣泛的MATLAB軟件。關鍵詞:單片機直流伺服電機PIDMATLAB目錄1.引言 42.單片機控制系統硬件組成 52.1微控制器 52.2DAC0808轉換器 52.3運算放大器 62.4按鍵輸入和顯示模塊 62.4.1按鍵輸入 62.4.2顯示模塊 62.5直流伺服電動機 63.單片機控制系統軟件設計 73.1主程序 73.2鍵盤處理子程序 84.控制系統原理圖及仿真 94.1控制系統方框圖 94.2控制系統電路原理圖 104.3Proteus仿真結果 115.Simulink組件對直流伺服控制系統的仿真 115.1MATLAB與Simulink簡介 115.1.1MATLAB簡介 115.1.2Simulink簡介 125.2直流伺服電機數學模型 125.3系統Simulink模型及時域特性仿真 125.3.1開環系統Simulink模型及仿真 135.3.2單位負反饋系統Simulink模型及仿真 135.4PID校正 145.4.1PID參數的湊試法確定 155.4.2比例控制器校正 155.4.3比例積分控制器校正 175.4.4PID控制器校正 196.小結 22參考文獻 22附錄 231.引言本設計的單片機控制直流伺服電機系統是一個開環的自動控制系統控制系統。是以單片機為控制器,通過按鈕設置設定值輸入到單片機,單片機對輸入信號處理后輸出控制信號,經D/A轉換器DAC0808轉換后把數字信號轉變為模擬電壓,再經放大器放大后,去控制伺服電機工作,進而控制電機向著預定的轉速轉動。同時單片機處理的數字信號通過LCD來顯示,實時顯示單片機的轉速值。另外本設計還利用了MATLAB軟件,利用Simulink構造直流電機控制系統模型,通過對各個單元部件的參數進行設定,進而對直流伺服電機系統控制進行仿真,就其仿真功能對系統進行時域分析。2.單片機控制系統硬件組成本系統是由一片單片機、矩陣式鍵盤,DAC0808轉換器、運算放大器、顯示模塊和一臺直流伺服電機組成,另外通過Proteus7.4軟件進行仿真。2.1微控制器選用AT89C52單片機。AT89C52是51系列單片機的一個型號,它是ATMEL公司生產的。AT89C52是一個低電壓,高性能CMOS8位單片機,片內含8kbytes的可反復擦寫的Flash只讀程序存儲器和256bytes的隨機存取數據存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準MCS-51指令系統,片內置通用8位中央處理器和Flash存儲單元,功能強大的AT89C52單片機可為您提供許多較復雜系統控制應用場合。AT89C52有40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內含2個外中斷口,3個16位可編程定時計數器,2個全雙工串行通信口,2個讀寫口線,AT89C52可以按照常規方法進行編程,但不可以在線編程(S系列的才支持在線編程)。其將通用的微處理器和Flash存儲器結合在一起,特別是可反復擦寫的Flash存儲器可有效地降低開發成本。AT89C52有PDIP、PQFP/TQFP及PLCC等三種封裝形式,以適應不同產品的需求。主要功能特性:(1)兼容MCS51指令系統,8k可反復擦寫(>1000次)FlashROM(2)32個雙向I/O口,256x8bit內部RAM(3)3個16位可編程定時/計數器中斷,時鐘頻率0-24MHz(4)2個串行中斷,可編程UART串行通道(5)2個外部中斷源,共6個中斷源(6)2個讀寫中斷口線,3級加密位(7)低功耗空閑和掉電模式,軟件設置睡眠和喚醒功能圖2-1AT89C522.2DAC0808轉換器設計中采用的芯片是DAC0808,它是一個8位DAC。圖2是DAC0808典型應用電路。圖2-1中輸出的模擬量是一個正電壓,當需要負電壓時,在DAC的第4引腳直接接一個3KΩ左右的電阻即可。DAC的第4引腳的電流總是流入的,其最大值為1.992mA。當外接一個3KΩ的負載電阻RL時,輸出的電壓是通過RL上所加的電壓,最大的電壓為-3KΩ×1.922mA≈-6V(當所有位輸入都是高電平的時候),與實驗中的數據相符合。需要指出的是,負載電阻的大小會影響轉換時間,當負載電阻為2.5KΩ的時候,在最壞的情況下,會使轉換時間增加1.2μs。圖2-2DAC0808典型應用電路2.3運算放大器把D/A轉換器的電流輸出轉換為電壓輸出,同時也是把微小的電流信號放大為較大的電壓信號,以驅動電機轉動。2.4按鍵輸入和顯示模塊2.4.1按鍵輸入采用自己設計的形如3×4矩陣式按鈕,按鈕用于設定某一數值,即電機轉速值。通過程序設置延時環節來消除按鈕的抖動問題,這樣做使矩陣式按鈕硬件連線簡單,同時按鈕的軟件設計也不復雜。2.4.2顯示模塊系統采用點陣式液晶顯示器,顯示電機的當前轉速值,通過軟件設計使得連線簡單。2.5直流伺服電動機直流伺服電動機在伺服系統中控制機械元件運轉的發動機.是一種補助馬達間接變速裝置。又稱執行電動機,在自動控制系統中,用作執行元件,把所收到的電信號轉換成電動機軸上的角位移或角速度輸出。其主要特點是,當信號電壓為零時無自轉現象,轉速隨著轉矩的增加而勻速下降。其作用可使控制速度,位置精度非常準確。直流伺服電動機的結構與直流電動機基本相同。只是為減小轉動慣量,電機做得細長一些。所不同的是電樞電阻大,機械特性軟、線性(電阻大,可弱磁起動、可直接起動)。供電方式是他勵供電,即勵磁繞組和電樞分別兩個獨立的電源供電??刂品绞接?電樞控制和磁極控制,其中改變電樞電壓U調速范圍較大,直流伺服電機常用此方法調速直流伺服電動機轉速的計算公式如下:式中:n為轉速;Φ為磁通;U為外加電壓;I、R為電樞電流和電阻;Ke為電勢系數。3.單片機控制系統軟件設計軟件設計采用模塊化設計,由主程序模塊和功能實現模塊兩大部分組成。主程序通過讀取鍵值處理后送到D/A轉換以達到控制電機的目的;功能實現模塊主要由主函數模塊、鍵盤處理子程序和D/A轉換子程序等組成。3.1主程序主程序首先對鍵盤和顯示模塊的程序進行初始化,通過讀取鍵值處理后送到D/A轉換以達到控制電機的目的。主程序流程圖如圖2-1所示。顯示模塊初始化顯示模塊初始化鍵盤掃描程序開始讀取鍵值電機轉速顯示模塊鍵盤模塊程序初始化輸入值是否有效?D/A轉換NY圖2-1主程序流程圖3.2鍵盤處理子程序鍵盤采用程序掃描的工作方式,即在特定的程序位置段上安排鍵盤掃描程序讀取鍵盤狀態。鍵盤處理子程序的程序掃描法流程圖如圖2-2所示。是否有鍵按下?是否有鍵按下?延時20ms調用按鍵掃描子程序開始是否有鍵按下?按鍵散轉、處理程序返回NNYY圖2-2鍵盤處理子程序的程序掃描法流程圖4.控制系統原理圖及仿真4.1控制系統方框圖控制系統是以單片機為控制器,通過鍵盤設置輸入轉速值,經單片機處理后送到D/A轉換器,模擬信號經功率放大后驅動電機,最終電機以設定的轉速值穩定旋轉。圖4-1即為控制系統方框圖按鍵輸入按鍵輸入AT89C52D/A轉換驅動電機圖4-1控制系統方框圖4.2控制系統電路原理圖圖4-2控制系統電路原理圖4.3Proteus仿真結果圖4-3Proteus仿真圖利用Proteus7.4a進行仿真,當通過鍵盤選擇某一數值時,電機轉速即為相應的設定值,并在仿真電路圖中電機下方顯示電機對應轉速值的變化及最終穩定值。圖4-3中仿真圖是當通過按鍵設定值為158時,電機下方液晶顯示器即顯示158,表明電機轉速為158r/min。經多次仿真分析,某些時候與鍵盤輸入值相比較得知當電機響應輸入值時有很小的穩態誤差存在,原因是沒有加入反饋環節。以下利用MATLAB仿真軟件研究PID反饋控制對直流伺服電機控制系統的作用。5.Simulink組件對直流伺服控制系統的仿真5.1MATLAB與Simulink簡介5.1.1MATLAB簡介MATLAB軟件推出并應用到自動控制領域后,極大地改善了自動控制系統的動態仿真和性能分析環境。MATLAB(MatrixLaboratory,矩陣實驗室)是一個適用于科學計算和工程應用的數學軟件系統。自1982年由Mathworks軟件公司推出后,經二十多年的發展,現已是IEEE組織認可的最優化的科技應用軟件,成為大學教學和科研中最常用的工具。掌握了MATLAB的應用,對直流伺服電機控制效果的改善,肯定有著意想不到的幫助。該軟件具有以下特點:(1)數值運算功能強大;(2)編程環境簡單;(3)數據可視化功能強;(4)豐富的程序工具箱;(5)可擴展性能強等。5.1.2Simulink簡介Simulink是MATLAB軟件的擴展,它是實現動態系統建模和仿真的一個軟件包,他與MATLAB語言的主要區別在于,其與用戶的交互接口是基于Windows模型化圖形輸入,使得用戶可以把更多的精力投入到系統模型的構建,而非編程上。使用Simulink進行仿真一般分為兩步:用戶首先需要在仿真模型編輯窗口中搭建好自己的仿真模型,設置好具體模型參數和仿真參數,然后就可以開始仿真,Simulink將根據用戶搭建的模型,模擬系統在用戶設定條件下的具體行為。下面將以直流伺服電機的自動控制為例,演示MATLAB中Simulink仿真的應用。5.2直流伺服電機數學模型直流伺服電機開環系統結構圖如圖圖5-1所示U(S)U(S)N(S)圖5-1直流伺服電機開環系統結構圖其中直流伺服電機的傳遞函數為5.3系統Simulink模型及時域特性仿真對于單輸入單輸出系統,在經典控制理論中可用傳遞函數來描述系統,獲得系統的動態響應。同樣,S仿真軟件也有傳遞函數模塊,可方便地描述系統的特性,且簡化了仿真模型。從模塊庫窗口創建系統模型如圖1所示,選信號源模塊組中的階躍信號模塊為輸入信號,以輸出模塊組中的示波器模塊作為顯示器來觀察系統階躍響應。在模型窗口設置傳遞函數模塊的參數和特性,運行仿真模型,得系統階躍響應曲線。5.3.1開環系統Simulink模型及仿真圖5-2直流伺服電機開環系統Simulink模型端口Step為直流伺服電機的輸入電壓,輸出端口為電機轉速。圖5-3是開環系統的仿真結果,即開環系統的階躍響應曲線,也即直流伺服電機輸入1V單位階躍電壓時。電機的轉軸輸出呈線性變化。圖5-3開環系統仿真圖由圖5-3響應曲線可知,系統沒有在可視范圍內達到穩態值“1”,但從理論上分析知此系統屬穩定系統,在足夠時間內是能夠達到穩定狀態的。上述分析說明:系統的響應速度較慢,系統性能較差,從而可能不具備使用價值。這個分析結果表明,該系統沒有達到預期的設計要求。5.3.2單位負反饋系統Simulink模型及仿真圖5-4是在圖5-3的基礎上加一個單位負反饋環節,構成直流伺服電機的單位負反饋系統,單位負反饋系統Simulink模型如圖5-4所示圖5-4直流伺服電機單位負反饋系統Simulink模型圖5-5是單位負反饋系統的仿真結果圖5-5單位負反饋系統仿真圖系統超調:40%,調節時間:2s。由圖5-5和開環階躍響應曲線相比較知:系統應經可以達到較快達到穩態值。說明閉環單位負反饋系統對系統性能有很大改善。5.4PID校正為了使系統能夠達到設計要求,我們可以在圖5-4前向通道上設置一個控制器構成閉環系統來校正直流伺服電機?;赑ID控制(閉環)的直流伺服電機系統框圖如圖5-6所示。圖5-6基于PID控制(閉環)的直流伺服電機系統框圖其控制過程為由測速發電機輸出電壓得到直流電機輸出量,即轉速,通過轉速反饋后與系統輸入信號進行比較,得到偏差信號。偏差信號作為PID控制器的輸入信號根據設定的PID控制規律計算后輸出信號U,作為控制量輸入給直流電機,從而實現整個直流電機調速系統的閉環負反饋PID控制。5.4.1PID參數的湊試法確定增大比例系數KP一般系統響應利于減小靜差,但是過大會增大超調,并產生震蕩,是穩定性變壞。增大TI有減小超調,減小震蕩,是系統更穩定,但靜差消除變慢。增大微分TD利于加快系統響應時間,使超調減小,穩定性增加,但對擾動的抑制能力減弱,對擾動有較敏感的響應。在湊試時,對參數實行下述先比例,后積分,再微分的整定步驟。(1)首先只整定比例部分。即將比例部分由小變大,并觀察相應的系統響應,直到得到反應快,超調小的響應曲線。如果系統沒有靜差或靜差已小到允許范圍內,并且響應曲線已屬滿意,那么只需用比例控制器即可,最優比例系數可由此確定。(2)如果在比例調節的基礎下系統的靜差不能滿足設計要求,則須加入積分環節。整定時首先置積分時間T1為一較大值,并將經第一步整定得到的比例系數略微縮小,然后減小積分時間,并在保持系統良好動態性能的情況下,靜差得到消除。在此過程中,可根據響應曲線的好壞反復改變比例系數與積分時間,以期得到滿意的控制過程與整定參數。(3)若使用比例積分控制器消除了靜差,但動態過程經反復調整仍不能滿意,則可加入微分環節,構成比例積分微分控制器。在整定時,可先置微分時間Td為零。在第二步整定的基礎上,增大Td,同時相應的改變比例系數和積分時間,逐步湊試,以獲得滿意的調節效果和控制參數。5.4.2比例控制器校正為能要求系統在特別短的時間內達到設定的轉速值,比例增益K應盡可能大,以提高比例作用的強度,但必須同時考慮系統的穩定性。采用單純的比例控制,其調整時間和超調量是一對矛盾,無法同時滿足:要縮短調整時間,K要加大;而K加大,超調量也同時加大了。經過多次參數選擇,當K。=10時,階躍響應曲線較為理想,呈現接近0.75衰減率的振蕩過程。比例控制系統Simulink模型及仿真圖5-7比例控制系統Simulink模型Kp=1時仿真圖Kp=3時仿真圖Kp=5時仿真圖由以上三個比例控制的仿真圖可知,增大比例系數KP一般系統響應利于減小靜差,但是過大會增大超調,并產生震蕩,是穩定性變壞。5.4.3比例積分控制器校正積分控制的作用是只要系統存在誤差,積分控制作用就不斷地積累,輸出控制量以消除誤差,因而,只要有足夠的時間,積分控制將能完全消除誤差。在比例環節基礎上加入積分環節,只要參數設置合適就能完全消除系統偏差。比例積分控制系統Simulink模型圖5-8比例積分控制系統Simulink模型Kp=1、Ki=1時仿真圖Kp=1、Ki=3時仿真圖Kp=5、Ki=3時仿真圖由以上三個比例積分控制的仿真圖可知,增大TI有減小超調,減小震蕩,使系統更穩定,但靜差消除變慢。PI控制參數設置適當可使系統靜差為零。經多次試湊,選KI=PID控制器校正比例積分作用雖能是系統誤差為零,但系統動態性能不能得到滿足。積分作用太強可能會使系統出現震蕩。微分控制具有超前控制能力,可抑制最大動態偏差,改善系統動態性能,提高系統的穩定性。為此,在PI作用基礎上引入微分控制,構成PID控制器,以使系統滿足穩、準、快的要求。PID控制控制系統Simulink模型如圖圖5-9PID控制系統Simulink模型Kp=1、Ki=1、Kd=0.1時仿真圖和PI控制閉環響應曲線相比較可知:系統響應時間變短,超調變小,但仍不符合要求;Kp=5、Ki=1、Kd=0.1時仿真圖與KP=1、KI=1、KD=0.1時的仿真圖相比,系統超調和調節時間都變小,仍然不符合要求,繼續校正。需加大Kp及Ki。Kp=12、Ki=1、Kd=0.5時仿真圖由上曲線知此時系統有微量的超調,進一步加大Ki時超調為零。Kp=12、Ki=1、Kd=0.9時仿真圖經過多次校正參數,此時當Kp=12、Ki=1、Kd=0.9時系統超調量為0,穩態誤差為0,性能滿足設計要求,穩定、準確、快速得到了完滿的統一。6.小結控制系統特點是以單片機為控制器,通過鍵盤設置輸入轉速值,使得電機的轉速設置方便快捷,另外又通過軟件實現系統轉速設置范圍的保護。但在proteus中沒能實現閉環系統的PID控制。此缺點通過軟件彌補,在MATLAB軟件中的SIMULINK中進行了直流伺服電機的開環控制系統仿真,單位閉環控制系統仿真,閉環PI控制系統仿真,閉環PD控制仿真,閉環PID控制仿真能夠更好的測試和控制系統的性能,從而為設計事物提供了更準確的性能指標。參考文獻[1]于海生.計算機控制技術[M].北京:機械工業出版社,2007.6[2]周荷琴等.微型計算機原理及接口技術[M].合肥:中國科技大學出版社,2008.6[3]張毅剛等.單片機原理與應用設計[M].北京:電子工業出版社[4]樓然苗.51系列單片機設計實例[M].北京:北京航空航天大學出版,2008.6[5]陳小忠等.單片機接口技術實用子程序.北京:人民郵電出版社,2005.9[6]計算機控制技術實驗指導書附錄單片機控制程序清單:#include"reg52.h"http://#include"absacc.h"http://#include"stdio.h"http://#include"math.h"http://#include"string.h"#defineuncharunsignedchar#defineunintunsignedintvoidwdata(unchardat);//writedatafunctionvoidwcom(uncharcom);//writecommandfunctionvoiddelay(unchart);//delayfunctionsbitrw=P3^1;//rwsbitrs=P3^0;//rssbiten=P3^2;//en#defineMAX_LEN16//數據最大長度#definecount_M150000#defineH_0(65536-count_M1)/256#defineL_0(65536-count_M1)%256uncharcodetab2[]={0x31,0x32,0x33,0x41,0x34,0x35,0x36,0x42,0x37,0x38,0x39,0x43,0x0e,0x30,0x0f,0x44};//鍵盤求值表uncharcodetab3[]={"TargetValue:"};uncharcodetab4[]={""};uncharcodetab6[]={"inputERR"};uncharserial_data[MAX_LEN],serial_len=0,sure_flag=0;voidwdata(unchardat);//writedatafunctionvoidwcom(uncharcom);//writecommandfunctionvoiddelay(unchart);//delayfunctionvoidkeyscan(void);//鍵盤操作程序uncharscankey(void);//鍵盤求值程序voidchushi(void);//初始化程序//voidinit_serial(void);//串口初始化//voiduart_serial(void);//串口主程序voidlcd_write(void);//液晶顯示待發送指令uncharjisuan(void);//計算結果為十進制unintfreq=0;//頻率變量sfr16DPTR=0x82;//申明DPTRchartimes=0;//計算T0中斷次數//delayfunction//P0=0x00;//中斷初始化voidinit_interrup(void) { IE=0x8a;//啟用T0,T1中斷 TMOD=0x51;//T1為計數器,T2為定時器,都采用mode1 TH0=H_0; TL0=L_0; TH1=0; TL1=0; TR0=1; TR1=1; }voiddelay(unchart){unchara,b;for(a=0;a<t;a++)for(b=0;b<128;b++);}//ThefunctionforwritedatatoLCDscreenvoidwdata(unchardat){P1=dat;rs=1;rw=0;en=0;delay(6);en=1;}//ThefunctionforwritecommandtoLCDscreenvoidwcom(uncharcom){P1=com;rs=0;rw=0;en=0;delay(6);en=1;}//初始程序voidchushi(void){ unchari;wcom(0x01);wcom(0x38);wcom(0x0c);wcom(0x06); delay(4); wcom(0x80); delay(4);for(i=0;i<17;i++){wdata(tab3[i]);}wcom(0xc0);delay(2);}//鍵盤求值程序uncharscankey(void){unchartemp,c,d; P2=0x0f; temp=P2;temp=temp&0x0f;//屏蔽高四位,取列值temp=~(temp|0xf0);//將temp中的內容與0xf0進行相加,最后求反可得到是那列按下if(temp==1)c=0;//P2.0位低電平elseif(temp==2)c=1;//P2.1位低電平elseif(temp==4)c=2;//P2.2位低電平elseif(temp==8)c=3;//P2.3位低電平elsec=0;//否則給返回值C=0P2=0xf0;//給P2的行為高電平,以來判斷是高四為的那位為低電平delay(1);temp=P2;temp=temp&0xf0;//屏蔽低四位temp=~((temp>>4)|0xf0);//將temp中的高四位向右移動4位,與0xf0相加,最后求反可以得到是那行按下if(temp==1)c=c+0;//將行P2.4的值加上列的值elseif(temp==2)c=c+4;//將行P2.5的值加上列的值elseif(temp==4)c=c+8;//將行P2.6的值加上列的值elseif(temp==8)c=c+12;//將行P2.7的值加上列的值elsec=0; d=tab2[c];return(d);//最后返回行加列的值}//lcd_writefunctionvoidlcd_write(void){ uncharwrite_0,write_1,jian_zhi[MAX_LEN]; for(write_0=0;write_0<MAX_LEN;write_0++) { serial_data[write_0]=0; }//清空發送緩沖數組 wcom(0x0f);//將光標置在oxc0處 serial_len=0; delay(2); while(1) { write_1=0xc0;//光標地址 wcom(write_1); for(write_0=0;write_0<MAX_LEN;)//輸入指令最大為MAX_LEN { wcom(write_1);P2=0x0f;//等待鍵盤值 while((P2&0x0f)==0x0f); jian_zhi[write_0]=scankey(); delay(1); P2=0x0f; while((P2&0x0f)!=0x0f);//等待按鍵放松 if(jian_zhi[write_0]==0x0e)//當按一下取消鍵時清空所有發送緩沖數組, {//當連續按下兩次時則取消本次通訊,退出 if(write_0==0) gotowrite_out; elseif(write_0>=1) { write_1-=1; wcom(write_1); write_0-=1; wdata(tab4[0]); serial_data[write_0]=0; serial_len--; } } elseif(jian_zhi[write_0]==0x0f)//確定發送的指令 { if(serial_len==3) {if(serial_data[0]<2) sure_flag++; elseif(serial_data[0]>2); else { if(serial_data[1]<5) sure_flag++; elseif(serial_data[1]>5); else { if(serial_data[2]<6) sure_flag++; else; } } } else sure_flag++;//確定的標志位 gotowrite_out;//退出本次輸入指令 } else { wdata(jian_zhi[write_0]); if(jian_zhi[write_0]<=0x39) serial_data[write_0]=jian_zhi[write_0]-0x30; else serial_data[write_0]=jian_zhi[write_0]-0x37; write_1++; write_0++; serial_len++; } } }write_out: delay(1);}//合并數組voidserial_and(void){ uncharand0,and1,and2=0; and1=serial_len/2; for(and0=0;and0<and1;and0++) { serial_data[and0]=(serial_data[and0+and2++]<<4)|serial_data[and0+and2]; } } //鍵盤操作voidkeyscan(void){uncharks_0,ks_1;delay(2);//延時去抖動 P2=0x0f;if((P2&0x0f)!=0x0f)//延時后在判斷一次,去除抖動影響 { ks_0=scankey();//求鍵盤值 P2=0x0f; while((P2&0x0f)!=0x0f);//等待放松while(ks_0==0x41) { switch(ks_0) { case0x41: { chushi(); lcd_write();//調用寫指令

溫馨提示

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

評論

0/150

提交評論