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

下載本文檔

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

文檔簡介

1、<p><b>  摘要</b></p><p>  由于單片機在工控領域的優(yōu)點,使以單片機為內核的控制器在生產(chǎn)生活中得到了廣泛的應用。本文對基于單片機的水處理控制系統(tǒng)進行研究。</p><p>  正文針對應用于系統(tǒng)的單片機器件的功能,原理和實現(xiàn)電路作了介紹。系統(tǒng)軟件設計采用面向過程的結構化設計語言C語言實現(xiàn)硬件的工作。本文撰寫的主導思想是軟、硬件相結合,

2、以硬件為基礎,來進行各功能模塊的編寫。</p><p>  關鍵詞:單片機,水處理控制器,7289.</p><p><b>  Astract</b></p><p>  Because of the advantage of microcontroller on controlling ,microcontroller is made la

3、rge use in produce. This text to basic proceeded the research in Micro Controller Unit water handling control system.</p><p>  The text inside introduces functions ,principles and circuits of appliances of M

4、icro Controller Unit. The predominance thought that this text compose is soft, the hardware combines together, regarding hardware as the foundation, proceed the plait of each function mold piece write.</p><p&g

5、t;  Keywords: Micro Controller Unit water purified controller 7289</p><p><b>  目 錄</b></p><p>  The Design Of A Water purified Controller1</p><p><b>  緒 論2

6、</b></p><p>  第一部分 系統(tǒng)設計說明3</p><p>  一.水處理控制器介紹3</p><p>  二.系統(tǒng)的設計思路6</p><p>  第二部分 工程模塊的建立7</p><p>  一.CPU的選擇7</p><p><b> 

7、 二.鍵盤控制10</b></p><p><b>  三.復位18</b></p><p><b>  四.中斷 18</b></p><p>  五,程序簡析 21</p><p>  第三部分 畢業(yè)設計的收獲26</p><p><b&g

8、t;  參考文獻:26</b></p><p><b>  緒 論</b></p><p>  單片微型計算機(Single Chip Microcomputer)簡稱單片機,它是把微型計算機的各個功能部件:中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、定時/計數(shù)器及I/O接口電路等集成在一塊芯片上,構成一個完整的微型計算機。</p>

9、;<p>  單片機以其卓越的性能,得到了廣泛的應用,已深入到各個領域。單片機在控制領域中,具有如下特點:</p><p>  單片機具有體積小、控制功能強、成本低等特點,因而可方便地組裝各種智能式控制設備和儀器,做到機、電、儀一體化。</p><p>  易擴展,很容易構成各種規(guī)模的應用系統(tǒng),為應用系統(tǒng)的設計和生產(chǎn)帶來極大的方便。</p><p> 

10、 可靠性好,適用溫度范圍寬,在各種惡劣的環(huán)境下都能可靠工作,這是其他機種無法比擬的。</p><p>  可以方便地實現(xiàn)多機和分布式控制,從而使整個控制系統(tǒng)的效率和可靠性大為提高</p><p>  隨著社會對環(huán)保工作的要求不斷提高,以及工業(yè)對節(jié)能高效低耗的不斷追求,水處理的新工藝新設備不斷涌現(xiàn)。隨之,對控制系統(tǒng)的要求也不斷提高,由以往的手動控制改為自動控制。單片機由于其自身的特點使其在水

11、處理控制領域有了很大的發(fā)展。</p><p>  此次設計的控制系統(tǒng)主要用于鍋爐用水的軟化。眾所周知,自然界中的水中含有大量的鈣,鎂離子,這些陽離子使得水硬度很高,很容易在加入的時候沉淀出來,形成結垢現(xiàn)象,結垢不僅會使鍋爐的效率降低,同時當結垢達到一定厚度時還會造成安全隱患,發(fā)生爆炸。</p><p>  因此國家有規(guī)定鍋爐的用水必須經(jīng)過軟化處理后方可使用。</p><

12、p>  所以,本次畢業(yè)設計的對象為鍋爐水處理控制系統(tǒng)的控制器。設計中選取的C8051F221器件是完全集成的混合系統(tǒng)級MCU芯片,使用Cygnal的專利CIP-51TM位控制器內核。CIP-51與8051完全兼容,結構上采用流水線結構,與標準的8051結構相比指令執(zhí)行速度有很大的提高,而且在微控制器的內部和外部有幾項關鍵性的改進,提高了整體性能,更易于在最終應用中使用。在設計中用可讀性強的C語言在相應環(huán)境下進行程序設計,調試并進行

13、仿真測試以實現(xiàn)所需功能。</p><p>  第二章 系統(tǒng)設計說明</p><p>  一. 水處理控制器的介紹</p><p>  1. 水處理的工藝流程</p><p>  此控制器的控制對象為四工位平面閥為:</p><p>  松床位,再生位,置換位和清洗位。工藝流程示意圖如下:</p><

14、;p><b>  電機轉動換位</b></p><p>  電機轉動換位 電機轉動換位</p><p>  電機轉動換位 </p><p>  1#為進水閥,3#為再生閥。</p><p&g

15、t;  圖1-1. 水處理工藝流程</p><p>  具體工作過程是:程序啟動,開始運行初始位默認為松床位,按工位順序進行依次是再生 置換 清洗。進水閥開關由水位控制,低水位開,高水位關。換位時電機轉動,進水閥關。再生閥是再生位開始打開,結束時關。</p><p><b>  2.工作原理</b></p><p>  系統(tǒng)可以通過手動控制實現(xiàn)

16、換位,在正常工作狀態(tài)下是自動運行的,換位是由電機轉動完成。原理圖如下:</p><p>  圖1-2. 換位原理</p><p><b>  3.人機界面</b></p><p>  為了便于生產(chǎn)過程中的操作設計出相應的人機界面,使各過程可以在可視狀態(tài)下進行。單片機的CPU及擴展應用的7289使界面的按鍵,數(shù)碼管和指示燈控制相應的工作狀態(tài),顯示

17、相應工作過程。其示意圖如下,其中復位鍵按下顯示初始狀態(tài),選位鍵與〈鍵結合可選工位,確定鍵確定相應設定,∧鍵用來移位。</p><p><b>  圖1-3.人機界面</b></p><p><b>  4.系統(tǒng)實現(xiàn)功能</b></p><p>  4.1 具有記憶、保護功能</p><p>  停電

18、時可自動記憶當前狀態(tài);來電時自動烣復停電前原狀態(tài)繼續(xù)運行;</p><p>  2)無電情況下,芯片內部數(shù)據(jù)可保存10年。</p><p>  4.2 具有水位自動檢測、控制和自動報警、保護、提示功能</p><p>  當水位超高時,6秒后水位高限紅燈亮,自動停運,水位恢復正常后紅燈滅、系統(tǒng)進入保護、工位循環(huán)停止,直至水位降到設定低位,恢復工位循環(huán),水位降至低于低

19、位超過30秒,低限紅燈亮,水箱缺水,但工位循環(huán)繼續(xù)進行,提醒運行人員前去檢查處理;</p><p>  自動電機定位,若電機轉動換位過程中,被卡大于90秒,無霍爾元件到位信號,則過載燈亮,蜂鳴器發(fā)出警報聲,工位循環(huán)停,提醒運行人員前去檢查處理;</p><p>  選位功能,可隨意的進行人為工位選擇;復位功能,可立即清除當前數(shù)據(jù),返回初始狀態(tài);</p><p>&l

20、t;b>  鍵盤防誤功能;</b></p><p> ?。ㄒ唬╅_、關機及復位</p><p>  按電源開關鍵,控制器自動按前次停機時記憶工位及剩余時間開始工作。</p><p>  再按電源開關鍵,控制器記憶當前狀態(tài),并停止工作。</p><p>  運行時,按住復位2秒不放,數(shù)碼管顯示RST,控制器各工位時間全置為出廠時

21、設定的原始數(shù)據(jù),從松床開始工作。</p><p>  (二)數(shù)碼管顯示和流程時間修改</p><p>  工位及流程代碼表1-1</p><p>  按鍵及數(shù)碼管顯示功能表1-2</p><p><b> ?。ㄈ┕の粫r間修改</b></p><p>  流程時間修改時不用停止當前循環(huán),可在任何運

22、行狀態(tài)或電機轉動狀態(tài)下進行,修改完成后按下確認鍵返回當前狀態(tài),在修改過程中,不會影響當前的運行狀態(tài)。如果在修改狀態(tài)下,15秒不觸動任何鍵即返回當前狀態(tài)。</p><p><b>  修改方法:</b></p><p>  1、定個位數(shù)字:按住 確認鍵2秒不放,左第1數(shù)碼管顯示流程代碼,右邊三位數(shù)碼管顯示該代碼下的參數(shù)值,右邊第1數(shù)碼管“閃動”, 按“∧”鍵 ,每按一次

23、,或按住不放,數(shù)字自0至9循環(huán)遞增變化 ,松手即停,按到要設定的個位數(shù)字后松手; </p><p>  2、定十位數(shù)字:按 “<” 進位鍵,十位數(shù)字“閃動”,再按“∧”鍵,十位數(shù)字自0至9循環(huán)遞增變化 ,按到要設定的十位數(shù)字后松手;</p><p>  3、定百位數(shù)字:方法同上; </p><p>  4、進入下一個流程:再按確定鍵,左第1數(shù)碼管顯示下一個流程

24、代碼,再重復上面方法修改時間,直至6個流程時間修改完;</p><p>  5、進入運行狀態(tài):最后一個參數(shù)設置后,按確定鍵確認,這時左第1數(shù)碼管顯示原柱號,數(shù)碼管停止閃動,進入原流程時間設定狀態(tài)繼續(xù)運行;</p><p>  6、參數(shù)設置無效:設置流程時間參數(shù)未全部完成,如果15秒內沒有按下確定鍵,則程序自動返回運行狀態(tài)顯示,且本次參數(shù)設置無效,按原參數(shù)運行; </p>

25、;<p>  7、修改完后的流程時間不會立即見效,下一流程才按設定參數(shù)執(zhí)行, 如果要使設定狀態(tài)</p><p>  立即進入運行,要按下面(三)①選位方法,使它進入原柱號原工位,則控制器按新設置的參數(shù)運行。</p><p>  檢查各流程時間方法: 按確定鍵 左第1數(shù)碼管顯示流程代碼, 右邊三個數(shù)碼管顯示該代碼下的參數(shù)值,按一次確定鍵,進入下一流程,直到最后一流程參數(shù),再按確

26、定鍵,進入運行顯示,如果15秒內后沒有按下確定鍵 ,則自動返回運行顯示。</p><p><b> ?。ㄋ模┻x位操作</b></p><p><b>  1 、選位鍵作用:</b></p><p> ?、儆檬謩臃椒ㄊ箍刂破黠@示工位與多路閥工位一致,或使它進入需要的工位</p><p>  ②排除電機

27、卡住故障或電機轉動換工位用;</p><p><b>  2 、選位操作</b></p><p>  按住選位鍵2秒不放,右邊三個數(shù)碼管中中間一個顯示當前工位代碼,左第1數(shù)碼管顯示柱號,即進入選位狀態(tài)。按“∧”鍵,代碼變到下一個,按下確定鍵,退出選位狀態(tài),就進入選定工位;</p><p><b>  3 、電機轉位操作</b&g

28、t;</p><p>  按選位鍵2秒不放,右邊三個數(shù)碼管中中間一個顯示當前工位代碼,按“<”鍵,電機開始轉動,直到霍爾發(fā)出到位信號,電機自動停止,按“∧”鍵代碼變到下一個工位,按確定鍵,退出轉位操作,返回運行狀態(tài);</p><p>  4、電機卡住故障處理</p><p>  電機卡住時,應先排除故障,再進行電機轉位操作;</p><p&

29、gt;  5、同時進行選位和電機轉位操作</p><p>  在選位狀態(tài)時,可同時進行選位和電機轉位操作。當前在第一工位,要轉換到第三工位,同時電機也要轉位到第三工位,可進行如下的操作:按“∧”鍵,代碼變?yōu)?,再按“∧”鍵,代碼變?yōu)?;按下“<”鍵,電機開始轉動,直到霍爾發(fā)出到位信號,電機自動停止,再按一下“<”鍵,電機開始轉動,直到霍爾發(fā)出到位信號,電機自動停止,再按下確定鍵,退出轉位操作,返回運行

30、狀態(tài),控制器即第三工位開始運行。</p><p><b>  二.系統(tǒng)的設計思路</b></p><p><b>  1.設計方案</b></p><p>  水處理控制器的功能框圖如下所示</p><p><b>  圖1-4.功能框圖</b></p><

31、p>  根據(jù)這個功能框圖可以看出,單片機要完成的主要任務是通過I/O口實現(xiàn)鍵盤功能,通過I/O口和總線擴展實現(xiàn)顯示功能,通過I/O口或A/D轉換實現(xiàn)電機控制和水位檢測功能。通過軟件的中斷設置和單片機外中斷設置,來設置蜂鳴器和工作的優(yōu)先級。</p><p><b>  2.設計步驟</b></p><p>  (1).選擇符合要求的器件</p>&l

32、t;p>  (2).充分了解個器件的功能和原理并掌握其實現(xiàn)電路</p><p><b> ?。?).設計電路</b></p><p><b> ?。?).程序設計</b></p><p>  第二部分 工程模塊的建立</p><p><b>  一.選擇 CPU </b>

33、</p><p>  根據(jù)設計要求選擇C8051F2XX系列器件型號為F221的單片機用CIP-51TM 微控制器內核。</p><p><b>  1.總體結構</b></p><p>  所選CPU與8051完全兼容,結構上與之相同,都具有以下結構:</p><p>  8位CPU,片內時鐘振蕩。</p>

34、<p>  4KB程序存儲器,片內低128B數(shù)據(jù)存儲器RAM。</p><p>  可尋址外部存儲器和數(shù)據(jù)存儲器空間各64KB。</p><p>  片內有21個特殊功能寄存器SFR。</p><p>  4個8 為并行I/O口,1個全雙工串行口。</p><p>  2個16位定時器/ 計數(shù)器。</p><

35、p>  5個中斷元,2個中斷優(yōu)先級。</p><p>  為尋址功能,適用于布爾處理的位處理機。</p><p>  除此之外,它提高了指令執(zhí)行的速度和整體性能,更適于在最終應用中使用。</p><p><b>  結構圖如下:</b></p><p><b>  圖2-1.結構圖</b>&l

36、t;/p><p><b>  2.引腳定義及功能</b></p><p>  C8051F221是32引腳的方形封裝方式集成電路芯片,引腳排列如圖:</p><p><b>  圖2-2. 引腳圖</b></p><p>  從引腳功能來看,可將引腳分為3個部分。</p><p>

37、;<b>  電源及時鐘引腳</b></p><p><b>  VDD:數(shù)字電源</b></p><p><b>  GND:接地</b></p><p>  XTAL1和XTAL2:時鐘引腳,外接晶體引線端。當使用芯片內部時鐘是,此引腳段用于外接石英晶體和微調電容;當使用外部時鐘時,用于接外部時鐘

38、脈沖信號。</p><p><b>  控制引腳</b></p><p>  /RST:芯片復位。當RST輸入端保持2 個極其周期以上高電平是,單片機完成復位。</p><p><b>  VREF:電壓基準</b></p><p>  CP0+:比較器0的正相輸入端 </p><

39、;p>  CP0-:比較器0的反相輸入端</p><p>  CP0:比較器0的輸出端 </p><p>  CP1+:比較器1的正相輸入端</p><p>  CP1-:比較器1的反相輸入端</p><p>  CP1:比較器1的輸出端</p><p><b>  I/O口引腳</b>&l

40、t;/p><p>  P0.0~P0.7:P0口8位雙向I/O口</p><p>  P1.0~P1.7:P1口8位準雙向I/O口</p><p>  P2.0~P2.7:P2口8位準雙向I/O口</p><p>  P3.0~P3.7:P3口8位準雙向I/O口。</p><p><b>  程序設計中的定義&l

41、t;/b></p><p>  在程序設計中要對應用的I/O口引腳進行定義,本設計應用到的輸入輸出端口有P0,P 1,P2,P3的部分口,原程序代碼下:, //CPU與7289通訊用端口定義</p><p>  sbit key=P2^2; </p>&

42、lt;p>  sbit cs=P2^3;</p><p>  sbit clk=P2^0;</p><p>  sbit dio=P2^1;</p><p><b>  // 輸出部分定義</b></p><p>  sbit Mt=P0^0;</p><p>  sbit bFM=P2^4

43、;</p><p>  sbit ZSF=P1^7; //3#再生閥,底電平繼電器吸合</p><p>  sbit JSF1=P1^6; //1#進水閥,底電平繼電器吸合</p><p><b>  //顯示燈的定義</b></p><p>  sbit CDXD=P2^5; //清洗燈</p>

44、<p>  //輸入部分端口定義</p><p>  sbit MPosCur1=P0^2;</p><p>  sbit MPosCur=P0^2;</p><p>  sbit WaterLS=P0^3;</p><p>  sbit WaterHS=P0^4;</p><p>  sbit WaterH

45、S1=P0^4;</p><p>  sbit WaterLS1=P0^3;</p><p>  二. 鍵盤控制器(ZLG7289)</p><p>  1.ZLG7289的主要特性</p><p>  很寬的工作電壓范圍:+2.7~6V</p><p>  直接驅動8位共陰式數(shù)碼管或64只獨立的LED</p&g

46、t;<p>  能夠管理64只按鍵,自動消除抖動</p><p>  段電流可達15mA以上,自電流可達100mA </p><p>  利用功率電路可以方便的驅動1英寸以上的大型數(shù)碼管</p><p>  具有左移,右移,閃爍,消隱,斷點.亮等強大功能</p><p>  要顯示的數(shù)據(jù)提供有兩種不同的譯碼方式</p>

47、;<p>  不接數(shù)碼管而僅使用鍵盤管理功能時,工作電流可降至3mA</p><p>  與微控制器之間采用SPI串行總線接口,操作方便,占用I/O資源少</p><p>  工作溫度范圍:-40~+85 0 C</p><p>  封裝:SOP-28,DIP-28。</p><p>  2.引腳圖及功能介紹</p>

48、<p>  圖2-3.ZLG7289引腳</p><p><b>  表2-1.引腳功能</b></p><p><b>  3.應用電路及簡析</b></p><p>  硬件設計中的電路設計如下: </p><p><b>  圖2-4.應用電路</b><

49、;/p><p>  為了使電源更加穩(wěn)定,一般要在Vcc 到GND 之間接入47~470uF的電解電容。J1 是ZLG7289B 與微控制器的接口。晶振Y1 取4~16MHz,調節(jié)電容C3 和</p><p>  C4 通常取值在10pF 左右。復位信號是低電平有效,一般只需外接簡單的RC 復位電路,也可以通過直接拉低RST 引腳的方法進行復位。數(shù)碼管必須是共陰式的,不能直接使用共陽式的。DPY

50、1 和DPY2 是4 位聯(lián)體式數(shù)碼管,共同組成完整的8 位。數(shù)碼管在工作時要消耗較大的電流,R9~R16 是限流電阻,典型值是270Ω。64 只按鍵中,左下角是K0,右上角是K63。為了使鍵盤掃描得以正常進行,下拉電阻R1~R8 和位選電阻R17~R24 是必須的。它們之間還要遵從一定的比例關系,比值在5:1到50:1 之間,典型值是10:1。下拉電阻取值范圍在10~100KΩ,位選電阻取值范圍在1~10KΩ。在多數(shù)應用當中可能用不到太

51、多的按鍵,建議按列裁減鍵盤,則相應列的位選電阻可以省略。但是下拉電阻一個都不能省去,除非完全不使用鍵盤。</p><p>  4. SPI 串行接口信號</p><p>  ZLG7289B 與微控制器的接口采用3 線制SPI 串行總線,由CS、CLK 和DIO 這3 根信號線組成。CS 和CLK 是輸入信號,由微控制器提供。DIO 信號是雙向的,必須接到微控制器上具有雙向功能的I/O 上

52、。SPI 信號線的具體意義請參見下表:</p><p> ?。?) SPI 總線時序圖</p><p>  操作SPI 總線的時序圖請參見圖1、圖.2 和圖3。其中圖3 是讀按鍵值的時序圖,只有當INT 引腳出現(xiàn)下跳沿時才允許去讀取按鍵值,否則將得不到有意義的數(shù)據(jù)。</p><p>  圖2-4.SPI時序圖</p><p><b>

53、;  5 控制指令詳解</b></p><p>  ZLG7289B 的控制指令分為單字節(jié)純指令和雙字節(jié)帶數(shù)據(jù)指令兩大類。</p><p><b>  1 單字節(jié)純指令</b></p><p>  所有這些指令的長度都是1 個字節(jié)。執(zhí)行這一類指令時,不需要附帶任何其它數(shù)據(jù)。</p><p>  (1) 復位(

54、清除)指令</p><p>  這時一條軟復位指令,執(zhí)行后會將數(shù)碼管所有的顯示內容清除掉,原先設置的所有閃爍、消隱等屬性也一并被清除,就像硬件復位一樣。</p><p><b>  (2) 測試指令</b></p><p>  該指令使所有的數(shù)碼管各段包括小數(shù)點在內全部點亮,并處于不斷閃爍之中。這條指令可用于生產(chǎn)測試,以確定ZLG7289B 或

55、數(shù)碼管是否有問題。</p><p><b>  (3) 左移指令</b></p><p>  該指令使數(shù)碼管所有的顯示自右向左移動一位(以第3 章中圖3.1 的接法為準),處于閃爍和消隱狀態(tài)的顯示位也一起被移動。原來最左邊的顯示數(shù)據(jù)被移出后自動丟棄,最右邊的一位用無任何顯示的空白代替。每執(zhí)行一次該指令,就左移一位。</p><p><b&

56、gt;  (4) 右移指令</b></p><p>  與左移指令類似,執(zhí)行該指令后,數(shù)碼管的數(shù)據(jù)顯示向右移動一位,原來最右邊的一位被丟棄,而最左邊的一位用空白代替。</p><p>  (5) 循環(huán)左移指令</p><p>  與左移指令類似,但原來最左邊被移出的顯示數(shù)據(jù)不是被丟棄,而是補在最右邊。</p><p>  執(zhí)行一次

57、循環(huán)左移指令后,顯示就變成了:</p><p>  (6) 循環(huán)右移指令</p><p>  與右移指令類似,但原來最右邊被移出的顯示數(shù)據(jù)不是被丟棄,而是補在最左邊。</p><p>  2 雙字節(jié)帶數(shù)據(jù)指令</p><p>  所有這些指令的長度都是2 個字節(jié)。第1 字節(jié)是命令字,第2 字節(jié)是輸入或輸出的數(shù)據(jù)。</p><

58、;p>  (1) 下載數(shù)據(jù)并且按方式0 進行譯碼</p><p>  在指令格式中,高5 位的10000 是命令字段;a2a1a0 是數(shù)碼管顯示數(shù)據(jù)的位地址,位地址編號按從左到右的順序依次為0、1、2、3、4、5、6、7;dp控制小數(shù)點是否顯示,dp=0 時該位的小數(shù)點被點亮,dp=1 時該位的小數(shù)點被熄滅;xxx是無關位;d3d2d1d0 是要顯示的數(shù)據(jù)。顯示數(shù)據(jù)按照下表中的規(guī)則進行譯碼:</p&g

59、t;<p>  (2) 下載數(shù)據(jù)并且按方式1 進行譯碼</p><p>  在指令格式中,高5 位的11001 是命令字段;a2a1a0 是數(shù)碼管顯示數(shù)據(jù)的位地址,位地址編號按從左到右的順序依次為0、1、2、3、4、5、6、7;dp控制小數(shù)點是否顯示,dp=0 時該位的小數(shù)點被點亮,dp=1 時該位的小數(shù)點被熄滅;xxx是無關位;d3d2d1d0 是要顯示的數(shù)據(jù)。</p><p&

60、gt;  (3) 下載數(shù)據(jù)但不譯碼</p><p>  在指令格式中,高5 位的10010 是命令字段;a2a1a0 是數(shù)碼管顯示數(shù)據(jù)的位地址,位地址編號按從左到右的順序依次為0、1、2、3、4、5、6、7;dp控制小數(shù)點是否顯示,dp=0 時該位的小數(shù)點被點亮,dp=1 時該位的小數(shù)點被熄滅;abcdefg對應數(shù)碼管內部的7 個LED 字段。不譯碼的數(shù)據(jù)下載方式給用戶提供了最大的靈活性,dp 連同abcdefg

61、 一共有256 種不同的組合,想怎樣顯示就怎樣顯示。</p><p><b>  (4) 閃爍控制</b></p><p>  該指令控制數(shù)碼管各位的閃爍屬性。在指令格式中,第1 字節(jié)是命令字段;第2 字節(jié)的d7d6d5d4d3d2d1d0 分別對應數(shù)碼管的第7 至第0 位,0-閃爍,1-不閃爍。復位后,所有位都不閃爍。</p><p><

62、;b>  (5) 消隱控制</b></p><p>  該指令控制數(shù)碼管各位的消隱屬性。在指令格式中,第1 字節(jié)是命令字段;第2 字節(jié)的d7d6d5d4d3d2d1d0 分別對應數(shù)碼管的第0 至第7 位,0-消隱,1-顯示。復位后,所有位都不消隱。</p><p><b>  (6) 段點亮指令</b></p><p>  該

63、指令可以單獨點亮數(shù)碼管中的某一指定的段,或者LED 矩陣中某一指定的LED。在指令格式中,第1 字節(jié)是命令字段;xx 表示無關位;d5d4d3d2d1d0 是6 位段地址。在某位數(shù)碼管里,各段的點亮順序按照“g,f,e,d,c,b,a,dp”進行。</p><p><b>  (7) 段關閉指令</b></p><p>  該指令可以單獨熄滅數(shù)碼管中的某一指定的段,或

64、者LED 矩陣中某一指定的LED。在指令格式中,第1 字節(jié)是命令字段;xx 表示無關位;d5d4d3d2d1d0 是6 位段地址。在某位數(shù)碼管里,各段的關閉順序按照“g,f,e,d,c,b,a,dp”進行。</p><p>  (8) 讀鍵盤數(shù)據(jù)指令</p><p>  當有鍵按下時,ZLG7289B 的INT 引腳會變成低電平。這時利用該指令可以讀出當前的鍵值。與其它帶數(shù)據(jù)指令不同的是,

65、第2 字節(jié)是ZLG7289B 向微控制器返回的鍵值,而不是輸入數(shù)據(jù)。正常情況下,鍵值的范圍是0~63(00H~3FH),無按鍵的狀態(tài)用255(FFH)表示。</p><p>  6.原程序中的相應程序代碼</p><p>  void send(char sebuf)</p><p><b>  {</b></p><p&g

66、t;<b>  char i;</b></p><p><b>  TR2=0;</b></p><p><b>  TR0=0;</b></p><p>  com_data=sebuf;</p><p><b>  clk=0;</b></p&g

67、t;<p><b>  cs=0;</b></p><p>  delay_50us();</p><p>  for(i=0;i<8;i++)</p><p><b>  {</b></p><p>  delay_8us();</p><p>  di

68、o=mos_bit;</p><p><b>  clk=1;</b></p><p>  delay_8us();</p><p>  com_data=com_data<<1;</p><p><b>  clk=0;</b></p><p><b>

69、;  }</b></p><p><b>  dio=0;</b></p><p><b>  TR2=1;</b></p><p><b>  TR0=1;</b></p><p><b>  }</b></p><p&g

70、t;  void receive()</p><p><b>  {</b></p><p><b>  char i;</b></p><p><b>  TR2=0;</b></p><p><b>  cs=0;</b></p><

71、;p><b>  dio=1;</b></p><p><b>  clk=0;</b></p><p>  send(0x15);</p><p>  delay_50us();</p><p>  for(i=0;i<8;i++)</p><p><b&

72、gt;  {</b></p><p><b>  clk=1;</b></p><p>  delay_8us();</p><p>  com_data=com_data<<1;</p><p>  low_bit=dio;</p><p><b>  clk=

73、0;</b></p><p><b>  dio=1;</b></p><p>  delay_8us();</p><p><b>  }</b></p><p>  rebuf=com_data;</p><p><b>  dio=1;</b

74、></p><p><b>  cs=1;</b></p><p>  delay_50ms();</p><p><b>  TR2=1;</b></p><p><b>  }</b></p><p>  void reset()</p&

75、gt;<p><b>  {</b></p><p><b>  TR2=0;</b></p><p><b>  dio=1;</b></p><p>  delay_50ms();</p><p>  send(0xa4);</p><p

76、>  delay_50ms();</p><p><b>  cs=1;</b></p><p><b>  key=1;</b></p><p><b>  TR2=1;</b></p><p><b>  }</b></p><

77、;p><b>  三. 復位</b></p><p><b>  1. 復位源</b></p><p>  MCU的復位電路允許很容易地將控制器置于一個預定的缺省狀態(tài)。在進入復位狀態(tài)時,CIP-51程序停止執(zhí)行,將外部端口引腳置于一個已知狀態(tài),將SFR初始化為缺省狀態(tài),禁止中斷和定時器。有六個能使MCU進入復位狀態(tài)的復位源:上電/掉電復位,

78、外部/RST引腳,軟件命令,比較器0,時鐘丟失檢測器及看門狗定時器。論文中就看門狗定時器為例作介紹。</p><p>  2.看門狗定時器復位</p><p>  MCU內部有一個使用系統(tǒng)時鐘可編程看門狗定時器(WDT)。當看門狗定時器溢出時,WDT將強制CPU進入復位狀態(tài)。為了防止復位,必須在溢出發(fā)生前重新觸發(fā)WDT。如果系統(tǒng)出現(xiàn)了硬件/軟件發(fā)生錯誤,使應用軟件不能重新觸發(fā)WDT,則WD

79、T將溢出并發(fā)生復位,這可以防止系統(tǒng)失控。</p><p>  WDT是一個21位的使用系統(tǒng)時鐘的定時器。該定時器檢測對其控制器寫操作的時間間隔,如果這個時間間隔超過了編程的極限值,將產(chǎn)生一個WDT復位??梢愿鶕?jù)需要用軟件允許或禁止WDT,或根據(jù)要求將其設置為永久性允許狀態(tài)??撮T狗功能可以通過看門狗定時器控制寄存器(WDTCN)控制。</p><p><b>  允許/復位WDT&

80、lt;/b></p><p>  向WDTCN寄存器寫入0xA5將允許并復位看門狗定時器。</p><p><b>  禁止 WDT</b></p><p>  向WDTCN 寄存器寫入0xDE后再寫入0xAD將禁止WDT。 </p><p>  3.看門狗在程序中的應用</p><p> 

81、 RSTSRC=RSTSRC&0x00000010b;//RSTSRC為復位源寄存器</p><p>  WDTCN = 0xde;</p><p>  WDTCN = 0xad;</p><p>  WDTCN = 0xA5;</p><p><b>  四 .中斷</b></p><p&g

82、t;  在CPU與外設交換信息時,若使用查尋方式,則CPU會浪費較多的時間去等待外設,這就是快速的CPU和慢速的外設之間的矛盾。為了解決這個問題,引入了中斷。它有以下優(yōu)點:同步工作實時處理故障處理</p><p><b>  1.中斷源</b></p><p>  C8051F200提供了5個中斷請求源,其中兩個為外部中斷請求和,2個為片內定時器/計數(shù)器T0和T1的溢

83、出中斷請求TF0和TF1,一個為片內串行口發(fā)送或接收中斷請求TI或RI.這些中斷請求源分別由特殊功能寄存器TCON和SCON的相應位鎖存。</p><p>  2.允許中斷寄存器IE</p><p>  下圖示出允許中斷寄存器各位的定義,現(xiàn)說明如下:</p><p>  EA(IE.7)總允許位。EA=0,禁止一切中斷。EA=1,則每個中斷源是允許還是禁止,分別由各

84、自的允許位決定。</p><p>  ——(IE.6)保留位。</p><p>  ET2(IE.5)定時器2中斷允許位。ET2=0,禁止定時器2中斷。</p><p>  ES(IE.4)串行口中斷允許位。ES=0,禁止串行口中斷。</p><p>  ET1(IE.3)定時器1中斷允許位。ET1=0,禁止定時器1中斷。</p>

85、<p>  EX1(IE.2)外部中斷1允許位。EX1=0,禁止外部中斷1。</p><p>  ET0(IE.1)定時器0中斷允許位。ET0=0,禁止定時器0中斷。</p><p>  EX0(IE.0)外部中斷0允許位。EX0=0,禁止外部中斷0。</p><p>  3.中斷優(yōu)先級寄存器IP</p><p>  C8051

86、F200的中斷分為兩個優(yōu)先級。每個]中斷源的優(yōu)先級都可以通過中斷優(yōu)先級寄存器IP中的相應位來設定。下圖示出IP各位的定義,現(xiàn)說明如下:</p><p>  ——(IP.7)保留位。</p><p>  ——(IP.6) 保留位。</p><p>  PT2(IP.5)定時器2中斷優(yōu)先級設定位. PT2=1,設定為高優(yōu)先級。</p><p> 

87、 PS(IP.4)串行口中斷優(yōu)先級設定位。PS=1,設定為高優(yōu)先級。</p><p>  PT1(IP.3)定時器1中斷優(yōu)先級設定位。PT1=1,設定為高優(yōu)先級。</p><p>  PX1(IP.2)外部中斷1優(yōu)先級設定位。PX1=1,設定為高優(yōu)先級。</p><p>  PT0(IP.1) 定時器0中斷優(yōu)先級設定位。PT0=1,設定為高優(yōu)先級。</p>

88、;<p>  PX0(IP.01)外部中斷0優(yōu)先級設定位。PX0=1,設定為高優(yōu)先級。</p><p><b>  4.中斷響應協(xié)議</b></p><p>  當某中源提出中斷請求后,作為應答,CPU首先使相應的“優(yōu)先級激活”觸發(fā)器置位,以阻斷同級和低級的中斷。然后,根據(jù)中斷源的類別,在硬件控制下,程序轉向相應的單元,執(zhí)行中斷服務子程序。</p&

89、gt;<p>  硬件中斷服務子程序調用時,把當時程序計數(shù)器PC的內容壓入堆棧,同時還根據(jù)中斷的來源,把相應的向量單元地址裝入PC中。</p><p>  中斷服務子程序的最后一條指令應是RETI(中斷返回)。RETI指令將清除“優(yōu)先級激活”觸發(fā)器(該觸發(fā)器在響應中斷時被置位),然后由堆棧彈出兩個字節(jié)(下一個指令地址)裝入到PC中。</p><p><b>  5.

90、中斷請求的撤除</b></p><p>  CPU響應某中斷請求后,在中斷返回(RETI)前,該中斷請求應該撤除,否則會引起另一次中斷。</p><p>  對于定時器0或1溢出中斷,CPU響應中斷后,就用硬件清除了有關的中斷請求標志TF0(TCON.5)或TF1(TCON.7),即中斷請求是自動撤除的,無需采用其他措施。</p><p>  對于邊沿激

91、活的外部中斷,CPU響應中斷后,也用硬件清除了有關的中斷請求標志IE0(TCON.1)或IE1(TCON.3),即自動撤除了中斷請求。</p><p>  對于電平激活的外部中斷,由于在硬件上,CPU對和引腳的信號完全沒有控制(在專用寄存器中,沒有相應的中斷請求標志),因此要另外采取撤除措施。</p><p><b>  6. 程序中的中斷</b></p>

92、<p>  void Timer0_Init()</p><p><b>  {</b></p><p>  TCON = 0x00; </p><p>  TMOD= 0x01;</p><p><b>  TH0=0xff;</b>&l

93、t;/p><p><b>  TL0=0x00;</b></p><p><b>  TR0=1;</b></p><p><b>  ET0=1;</b></p><p><b>  }</b></p><p>  //-------

94、-----------------Timer0 中斷程序---------------------------</p><p>  void Timer0_ISR(void) interrupt 1</p><p><b>  { </b></p><p><b>  TH0=0xeb;</b></p>

95、<p><b>  TL0=0x3e;</b></p><p><b>  nsec++;</b></p><p>  if(nsec>55)</p><p><b>  {</b></p><p>  if(!TickBegin)</p>&l

96、t;p><b>  tsec=0;</b></p><p><b>  else</b></p><p><b>  tsec++;</b></p><p><b>  nsec=0;</b></p><p><b>  ticksw=1;

97、</b></p><p><b>  tick0=1;</b></p><p><b>  tickYX=1;</b></p><p>  IFMtlock();//電機轉動后60秒不到位則MtLock=1;</p><p><b>  }</b></p>

98、;<p>  if(tsec>59) //真正分鐘時設置為59</p><p><b>  {</b></p><p><b>  tmin++;</b></p><p><b>  tsec=0;</b></p><p>  tickMin=1;<

99、/p><p><b>  }</b></p><p>  if(tmin>60)</p><p><b>  tmin=0;</b></p><p>  IFMUpPs();</p><p><b>  TF0=0; </b></p>

100、<p><b>  }</b></p><p>  //---------------------送參數(shù)子程序----------------------------------</p><p>  void subSendParm( unsigned char x,unsigned char y)</p><p>  { del

101、ay_50us();</p><p><b>  send(x);</b></p><p>  delay_50us();</p><p><b>  send(y);</b></p><p>  delay_50us();</p><p><b>  cs=1;&

102、lt;/b></p><p>  delay_50ms();</p><p>  void Timer2_Init()</p><p><b>  {</b></p><p>  T2CON = 0x00; // Stop Timer2; configure for auto-reload<

103、;/p><p>  CKCON &= ~0x20; // T2M=0 (use SYSCLK/12 as timebase)</p><p>  //0x20先按位取反,再與CKCON按位與,再把值賦給CKCON</p><p>  RCAP2 = 62000; // Init reload value</p><p&

104、gt;  T2 = 0xffff; // set to reload immediately</p><p>  ET2 = 1; // enable Timer2 interrupts</p><p>  TR2 = 1; </p><p><b>  }</b></p><

105、;p><b>  五.程序簡析</b></p><p><b>  1.主程序流程圖:</b></p><p><b>  2.程序代碼</b></p><p>  主程序的代碼,包含函數(shù)的調用</p><p>  void main()</p><p

106、><b>  {</b></p><p><b>  EA=0;</b></p><p>  prt0_init();</p><p>  //delay_1sec();</p><p>  EIE1=0x20; //比較窗0上升沿中斷設置</p><p>  EIP

107、1=0x20; //</p><p>  Timer2_Init();</p><p><b>  reset();</b></p><p>  delay_1sec();</p><p>  Timer0_Init();</p><p><b>  TFuWei=0;</b&g

108、t;</p><p><b>  TR2=1;</b></p><p><b>  TR0=1;</b></p><p><b>  bFM=1;</b></p><p>  BianHao=1;</p><p><b>  edy=0;<

109、;/b></p><p><b>  EA=1;</b></p><p><b>  ed1=0;</b></p><p><b>  ed2=0;</b></p><p>  WDTCN = 0xA5;</p><p>  while(edy!=

110、ELECDELAY)</p><p><b>  {</b></p><p>  WDTCN = 0xA5;</p><p><b>  if(tick0)</b></p><p><b>  {</b></p><p><b>  edy++

111、;</b></p><p>  XSSheDing(ed1,ed2,0x10);</p><p><b>  ed1+=1;</b></p><p><b>  ed2+=111;</b></p><p><b>  if(ed1>9)</b></p&g

112、t;<p><b>  {</b></p><p><b>  ed1=0;</b></p><p><b>  ed2=0;</b></p><p><b>  }</b></p><p><b>  tick0=0;</b

113、></p><p><b>  }</b></p><p>  }//while(edy!=ELECDELAY)結束</p><p>  WDTCN = 0xde;</p><p>  WDTCN = 0xad;</p><p><b>  RDAgin=1;</b>

114、</p><p><b>  Work=1;</b></p><p>  mm=Readchar(0x2024);//執(zhí)行此語句后mm=100</p><p>  if(mm!=100)//若不等于100,則地址有誤,會造成其后參數(shù)值錯誤。應復位</p><p>  SubFuWei();</p><

115、p><b>  else</b></p><p>  ReadParam();</p><p>  MtMoveOnce=1;</p><p>  WorkPre=1;</p><p>  WorkOnce=1;</p><p><b>  while(1)</b>&l

116、t;/p><p><b>  {</b></p><p><b>  EA=1;</b></p><p>  WorkPre=Work;</p><p>  IFWaterL();</p><p>  IFWaterH();</p><p>  if(!k

117、ey&&!TFuWei&&!SheDing&&!Work) //在高水位中按下^鍵</p><p><b>  {</b></p><p>  if(!TFuWei&&(rebuf==0x1c))</p><p><b>  {</b></p>

118、<p><b>  TFuWei=1;</b></p><p>  delay_1sec();</p><p><b>  rebuf=0;</b></p><p><b>  }</b></p><p><b>  }</b></p>

119、;<p>  if(!key&&!TFuWeiBegin&&!SheDing&&Mt&&Work) //在運行中按下復位鍵</p><p><b>  {</b></p><p>  if(!TFuWei&&(rebuf==0x1d))</p><p&g

120、t;  TFuWeiBegin=1;</p><p><b>  }</b></p><p>  if(!key&&!T2secbegin&&!TFuWei&&Mt) //在運行中按下確定鍵,</p><p><b>  {</b></p><p>

121、;  if(!SheDing&&(rebuf==0x1b))</p><p>  T2secbegin=1;</p><p><b>  }</b></p><p><b>  if(Work)</b></p><p><b>  {</b></p&g

122、t;<p>  if(!key&&!TFuWei&&!SheDing&&!XWBegin&&Mt) //在運行中按下選位鍵, </p><p><b>  {</b></p><p>  if(!XWei&&(rebuf==0x1e))</p><p

123、>  XWBegin=1;</p><p><b>  }</b></p><p>  if(SheDing)//進入設定程序</p><p>  SubSheDing();</p><p>  if(TFuWei&&!SheDing)//暫時這樣,以后修改</p><p>

124、;  SubFuWei();</p><p><b>  if(XWei)</b></p><p>  SubXuanWei();</p><p>  if(!SheDing&&!TFuWei&&!XWei)</p><p>  YunXing();</p><p>

125、;  if(MtUpPs||MtLock)</p><p><b>  {</b></p><p><b>  Mt=1;</b></p><p>  if(MtLock)</p><p><b>  {</b></p><p><b>  

126、bFM=0;</b></p><p><b>  }</b></p><p>  subSendParm(LampOff,ZWD);</p><p><b>  }</b></p><p>  }//if(Work)結束</p><p>  else if/*((

127、WorkPre!=Work)||WorkOnce)*/(!Work)</p><p><b>  {</b></p><p>  if(tick0&&!SheDing)</p><p><b>  {</b></p><p>  subSendParm(0x88,0xff);<

128、/p><p>  subSendParm(0x83,0x0C);//方式0譯碼,無顯示</p><p>  subSendParm(0x82,0x01); </p><p>  subSendParm(0x81,0x06);</p><p>  subSendParm(0x80,0x0C);</p><p>  subSe

129、ndParm(LampOff,ZWD);</p><p>  subSendParm(LampOff,SCD);</p><p>  subSendParm(LampOff,ZSD);</p><p>  subSendParm(LampOff,ZHD);</p><p>  subSendParm(LampOff,QXD);</p&g

130、t;<p>  WorkOnce=0;</p><p><b>  tick0=0;</b></p><p><b>  }</b></p><p>  if(SheDing&&!TFuWei)//進入設定程序</p><p>  SubSheDing();</p

131、><p>  else if(TFuWei)</p><p><b>  {</b></p><p><b>  Work=1;</b></p><p><b>  TFuWei=0;</b></p><p>  TFuWeiBegin=0;</p&g

132、t;<p><b>  }</b></p><p>  subAllStop();</p><p>  Mt=1;//福州反映的問題的解決</p><p>  }//if(!Work)結束</p><p>  }//while(1)結束</p><p>  第三部分 畢業(yè)設計的收獲

133、</p><p>  轉眼間幾個月過去了,畢業(yè)設計已接近尾聲?;仡^看看,我才發(fā)現(xiàn)我努力的結果不僅僅只是這篇論文。這段時間里,我的收獲更重要的是對學習方法和態(tài)度的改進以及我對自己生活質量的要求的改變。這些收獲得益于我的導師伍老師和與我共同奮戰(zhàn)的127的同學們,感謝他們。</p><p><b>  參考文獻:</b></p><p>  [1]

溫馨提示

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

評論

0/150

提交評論