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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  目錄</b></p><p>  一. 設(shè)計(jì)背景-----------------------------------------------------------2</p><p>  二.設(shè)計(jì)思路及方案選定--------------------------------------------------2</p>&

2、lt;p>  2.1設(shè)計(jì)要求--------------------------------------------------------2</p><p>  2.2設(shè)計(jì)方案--------------------------------------------------------3</p><p>  三.硬件的選擇與設(shè)計(jì)--------------------------

3、---------------------------5</p><p>  3.1 CPU-------------------------------------------------------------5</p><p>  3.2 檢測(cè)模塊--------------------------------------------------------5</p>

4、<p>  3.3 顯示模塊--------------------------------------------------------8</p><p>  3.4 鍵盤輸入模塊----------------------------------------------------10</p><p>  3.5 時(shí)鐘模塊--------------------------

5、------------------------------11</p><p>  四.軟件設(shè)計(jì)-------------------------------------------------------------12</p><p>  4.1主程序---------------------------------------------------------12</p&g

6、t;<p>  4.2時(shí)鐘顯示-------------------------------------------------------14</p><p>  4.3 鍵碼檢測(cè)-------------------------------------------------------19</p><p>  4.4溫度采集-----------------------

7、--------------------------------25</p><p>  4.5 溫度數(shù)值的轉(zhuǎn)化-------------------------------------------------27</p><p>  4.5 溫度的顯示-----------------------------------------------------27</p>&l

8、t;p>  五.設(shè)計(jì)小結(jié)---------------------------------------------------------------22</p><p>  六.參考文獻(xiàn)---------------------------------------------------------------22</p><p>  七. 附錄(總程序)-------------

9、-------------------------------------------23</p><p><b>  一.設(shè)計(jì)背景 </b></p><p>  溫度的檢測(cè)在很多方面都有非常廣泛的應(yīng)用,小到日常生活中的一些應(yīng)用,比如掛式溫度顯示儀等,大到大型工程應(yīng)用,比如在汽車的很多系統(tǒng)中便有溫度檢測(cè)設(shè)備,用以實(shí)時(shí)的監(jiān)視各個(gè)功能模塊的運(yùn)行狀況。</p>

10、<p>  ? 溫度巡回檢測(cè)儀 一種輸入溫度,直流電壓等模擬信號(hào),在規(guī)定的時(shí)間間隔進(jìn)行數(shù)據(jù)記錄的巡回檢測(cè)記錄儀。溫度巡回檢測(cè)儀分成一體式和分離式二種,其中一體式有30點(diǎn)、20點(diǎn)、15點(diǎn)三種測(cè)定點(diǎn)數(shù);分離式有主體和端子箱組成,主體箱裝有把手可攜帶,也可用于嵌裝。最大測(cè)量點(diǎn)數(shù)可達(dá)到210點(diǎn),共有5個(gè)種類。廣泛應(yīng)用于工業(yè)爐溫度分布、電子產(chǎn)品特性試驗(yàn)、氣象觀察、發(fā)動(dòng)機(jī)測(cè)試、公害測(cè)定管理、原子能材料試驗(yàn)、全自動(dòng)校正裝置、測(cè)量研究

11、和試驗(yàn)等。</p><p>  溫度檢測(cè)是現(xiàn)代檢測(cè)技術(shù)的重要組成部分,在保證產(chǎn)品質(zhì)量、節(jié)約能源和安全生產(chǎn)等方面起著關(guān)鍵的作用。由單片集成電路構(gòu)成的溫度傳感器的種類越來(lái)越多,測(cè)量的精度越來(lái)越高,響應(yīng)時(shí)間越來(lái)越短,因其使用方便、無(wú)需變換電路等特點(diǎn)已經(jīng)得到了廣泛的應(yīng)用。隨著社會(huì)的發(fā)展、科技的進(jìn)步以及人們生活水平的逐步提高,各種方便于生產(chǎn)的自動(dòng)控制系統(tǒng)開(kāi)始進(jìn)入了人們的生活,以單片機(jī)為核心的溫度采集系統(tǒng)就是其中之一。它實(shí)用

12、性強(qiáng),功能齊全,技術(shù)先進(jìn),使人們相信這是科技進(jìn)步的成果。溫度是工業(yè)控制中主要的被控參數(shù)之一,特別是在冶金、化工、建材、食品、機(jī)械、石油等工業(yè)中,具有舉足重輕的作用。</p><p>  溫度采集系統(tǒng)的開(kāi)發(fā)在很大意義上提高了生產(chǎn)生活的需要,方便了生產(chǎn)中對(duì)溫度的控制,有效的提高了生產(chǎn)質(zhì)量。外圍電路比較簡(jiǎn)單雜,測(cè)量精度較高,分辨力高,使用方便。溫度檢測(cè)是現(xiàn)代檢測(cè)技術(shù)的重要組成部分,在保證產(chǎn)品質(zhì)量、節(jié)約能源和安全生產(chǎn)等方

13、面起著關(guān)鍵的作用。本次設(shè)計(jì)正是為了完成溫度巡回采集而設(shè)計(jì)的,而且采用了溫度傳感器LM35,可以說(shuō)與人們的日常生活是息息相關(guān)的,具有很大的現(xiàn)實(shí)意義。</p><p>  二.設(shè)計(jì)思路及方案選定</p><p><b>  2.1設(shè)計(jì)要求</b></p><p>  本設(shè)計(jì)要求學(xué)生設(shè)計(jì)一個(gè)以8031單片機(jī)為核心的8路溫度的溫度巡回檢測(cè)儀,并用AED

14、K51T仿真器調(diào)試、開(kāi)發(fā)該系統(tǒng)的硬件和軟件。</p><p>  溫度巡回檢測(cè)儀的具體設(shè)計(jì)要求如下:</p><p>  系統(tǒng)開(kāi)機(jī)未按任何鍵時(shí),LED顯示實(shí)時(shí)時(shí)鐘(時(shí)、分、秒);</p><p>  系統(tǒng)能與各種熱電阻、熱電偶相配用;</p><p>  8點(diǎn)溫度通道,可由用戶根據(jù)需要選擇其中的幾個(gè)通道進(jìn)行檢測(cè);</p><

15、;p>  要求每點(diǎn)溫度采樣8次,經(jīng)算術(shù)平均濾波后,送到LED顯示,溫度顯示格式為:</p><p><b>  通道號(hào) 溫度值。</b></p><p>  2.2總體設(shè)計(jì)方案:</p><p><b>  設(shè)計(jì)思路如下:</b></p><p>  (1)單片機(jī)通過(guò)鍵盤和數(shù)碼管選擇工作模式

16、,即時(shí)間或某一路溫度信號(hào)</p><p>  (2)由傳感器采集溫度的模擬信號(hào)</p><p>  (3)經(jīng)過(guò)AD轉(zhuǎn)換后進(jìn)入單片機(jī)進(jìn)行運(yùn)算</p><p>  (4)顯示在數(shù)碼管上</p><p>  (5)顯示時(shí)間則需要一個(gè)時(shí)鐘芯片</p><p>  總體來(lái)說(shuō)需要四大模塊:測(cè)量模塊、顯示模塊、鍵盤模塊、時(shí)鐘模塊&l

17、t;/p><p><b>  整體硬件結(jié)構(gòu)如下:</b></p><p><b>  總電路圖見(jiàn)下圖:</b></p><p><b>  三.硬件功能與設(shè)計(jì)</b></p><p><b>  3.1 CPU</b></p><p>

18、  根據(jù)要求選用MCS-8031單片機(jī),由于沒(méi)有內(nèi)置ROM,內(nèi)部RAM存儲(chǔ)量也較小,所以添加一塊片外ROM EPROM2732(12位,4K),以及一塊片外RAM6264(13位,8K),通過(guò)74LS373鎖存器和單片機(jī)連接</p><p><b>  接線圖如下:</b></p><p><b>  3.2檢測(cè)模塊</b></p>

19、<p><b> ?。?)溫度傳感器</b></p><p>  本設(shè)計(jì)中采用的溫度傳感器是LM35,它具有很高的工作精度和較寬的線性工作范圍,它的輸出電壓與攝氏溫度成比例。LM35無(wú)需外部校準(zhǔn),可以提供±0.25℃的常用室溫精度。</p><p>  該傳感器在25℃時(shí),輸出電壓為0.25V,隨著室溫的升高,輸出電壓與溫度成線性關(guān)系,因此可以根

20、據(jù)得到的電壓值計(jì)算出溫度。</p><p> ?。?)LM35工作特性:</p><p>  比例因子:10MV/℃ 測(cè)量范圍:-55℃—150℃ </p><p>  工作電壓:4V—30V 精度:0.5℃</p><p>  由于A/D轉(zhuǎn)換器選用的是ADC0809,輸入模擬電壓為0—5V,數(shù)字量

21、是28,為了提高溫度的轉(zhuǎn)換精度,本設(shè)計(jì)選定溫度傳感器的測(cè)量范圍是0℃—125℃</p><p><b>  (3)放大電路</b></p><p>  采用的是LM324運(yùn)算放大器。LM324可采用單極性或者雙極性電源供電,可以在0~+5V下工作,它內(nèi)部集成了四個(gè)運(yùn)放模塊,它的輸入端是溫度補(bǔ)償?shù)摹?lt;/p><p><b>  放大電路

22、如下圖:</b></p><p><b>  (4)A/D轉(zhuǎn)換器</b></p><p>  A/D轉(zhuǎn)換器選用ADC0809。ADC0809是帶有8位A/D轉(zhuǎn)換器、8路多路開(kāi)關(guān)以及微處理機(jī)兼容的控制邏輯的CMOS組件。它是逐次逼近式A/D轉(zhuǎn)換器,可以和微機(jī)直接接口。</p><p><b>  A.引腳結(jié)構(gòu):</b&

23、gt;</p><p>  ADC0809采用雙列直插式封裝,共有28條引腳。其引腳結(jié)構(gòu)圖如下圖所示。</p><p>  B.地址輸入和控制線:4條</p><p>  ALE 為地址鎖存允許輸入線,高電平有效。當(dāng)ALE現(xiàn)為高電平時(shí),地止鎖存與譯碼器將ADDA、ADDB和ADDC三條地址輸入線,用于選通IN0~IN7上的一路模擬量輸入。通道選擇如下表所示。<

24、/p><p>  C.?dāng)?shù)字量輸出及控制線:11條</p><p>  START 為轉(zhuǎn)換啟動(dòng)信號(hào)。當(dāng)START上升沿時(shí),所有內(nèi)部寄存器清零;下跳沿時(shí),開(kāi)始進(jìn)行A/D轉(zhuǎn)換;在轉(zhuǎn)換期間,START應(yīng)保持低電平。EOC位轉(zhuǎn)換結(jié)束信號(hào)。當(dāng)EOC為高電平時(shí),表明轉(zhuǎn)換結(jié)束;否則,表明正在進(jìn)行A/D轉(zhuǎn)換。OE為輸出允許信號(hào),用于控制三態(tài)輸出鎖存器向單片機(jī)輸出轉(zhuǎn)換得到的數(shù)據(jù)。OE=1,輸出轉(zhuǎn)換得到的數(shù)據(jù);OE

25、=0,輸出數(shù)據(jù)線呈高阻狀態(tài)。D7~D0位數(shù)字?jǐn)?shù)出線。</p><p><b>  電路圖如下:</b></p><p><b>  3.3顯示模塊</b></p><p>  數(shù)碼管是一種在單片機(jī)系統(tǒng)中廣泛使用的數(shù)字顯示輸出裝置。對(duì)于數(shù)碼管的驅(qū)動(dòng)控制一般有兩種方式,即靜態(tài)驅(qū)動(dòng)和動(dòng)態(tài)驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)中硬件開(kāi)銷大,成本高,電路板

26、面積增大,布線復(fù)雜;動(dòng)態(tài)驅(qū)動(dòng)中一般只需一塊驅(qū)動(dòng)芯片,多個(gè)數(shù)碼管以極高的頻率逐個(gè)選通,顯示相應(yīng)的數(shù)字,它優(yōu)點(diǎn)在于硬件電路大大簡(jiǎn)化。</p><p>  本電路中使用6個(gè)LED共陰數(shù)碼管顯示,格式為,小時(shí):分鐘:秒 或,通道 溫度</p><p>  LED動(dòng)態(tài)顯示數(shù)碼管通過(guò)8255可編程并行I/O擴(kuò)展(占用8255的PA與PB口)</p><p><b> 

27、 引腳功能</b></p><p>  RESET:復(fù)位輸入線,當(dāng)該輸入端處于高電平時(shí),所有內(nèi)部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成輸入方式。  </p><p>  CS:芯片選擇信號(hào)線,當(dāng)這個(gè)輸入引腳為低電平時(shí),即/CS=0時(shí),表示芯片被選中,允許8255與CPU進(jìn)行通訊;/CS=1時(shí),8255無(wú)法與CPU做數(shù)據(jù)傳輸.   </p><

28、p>  RD:讀信號(hào)線,當(dāng)這個(gè)輸入引腳為低電平時(shí),即/RD=0且/CS=0時(shí),允許8255通過(guò)數(shù)據(jù)總線向CPU發(fā)送數(shù)據(jù)或狀態(tài)信息,即CPU從8255讀取信息或數(shù)據(jù)。   </p><p>  WR:寫入信號(hào),當(dāng)這個(gè)輸入引腳為低電平時(shí),即/WR=0且/CS=0時(shí),允許CPU將數(shù)據(jù)或控制字寫入8255。   </p><p>  D0~D7:三態(tài)雙向數(shù)據(jù)總線,8255與CPU數(shù)據(jù)傳送的通

29、道,當(dāng)CPU 執(zhí)行輸入輸出指令時(shí),通過(guò)它實(shí)現(xiàn)8位數(shù)據(jù)的讀/寫操作,控制字和狀態(tài)信息也通過(guò)數(shù)據(jù)總線傳送。   </p><p>  PA0~PA7:端口A輸入輸出線,一個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個(gè)8位的數(shù)據(jù)輸入鎖存器。   </p><p>  PB0~PB7:端口B輸入輸出線,一個(gè)8位的I/O鎖存器, 一個(gè)8位的輸入輸出緩沖器。   PC0~PC7:端口C輸入輸出線,一個(gè)8位的數(shù)

30、據(jù)輸出鎖存器/緩沖器, 一個(gè)8位的數(shù)據(jù)輸入緩沖器。端口C可以通過(guò)工作方式設(shè)定而分成2個(gè)4位的端口, 每個(gè)4位的端口包含一個(gè)4位的鎖存器,分別與端口A和端口B配合使用,可作為控制信號(hào)輸出或狀態(tài)信號(hào)輸入端口。'   </p><p>  A1,A0:地址選擇線,用來(lái)選擇8255的PA口,PB口,PC口和控制寄存器.   </p><p>  當(dāng)A1=0,A0=0時(shí),PA口被選擇;   

31、</p><p>  當(dāng)A1=0,A0=1時(shí),PB口被選擇;   </p><p>  當(dāng)A1=1,A0=0時(shí),PC口被選擇;   </p><p>  當(dāng)A1=1.A0=1時(shí),控制寄存器被選擇. </p><p><b>  電路圖接線如下:</b></p><p>  8255 8255工作方

32、式控制字格式</p><p>  根據(jù)上如圖所示,8255芯片的PA端口地址為7FFFCH,PB端口地址為7FFDH</p><p>  可以設(shè)置A口和B口輸出,兩者均采用工作方式0,控制字為80H。</p><p><b>  3.4鍵盤輸入模塊</b></p><p>  采用3*3的矩陣式鍵盤,各行分別接P1.3,

33、P1.4,P1.5,各列分別接P1.0,P1.1,P1.2</p><p>  設(shè)有9個(gè)按鈕,1-8為通道號(hào),9為返回</p><p><b>  電路圖如下:</b></p><p><b>  3.5時(shí)鐘模塊</b></p><p>  本電路中采用的是時(shí)鐘芯片DS1302,它可以對(duì)年、月、日、

34、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,按要求只需時(shí)、分、秒進(jìn)行計(jì)時(shí)。工作電壓為2.5V~5.5V,對(duì)采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。</p><p><b>  電路圖如下:</b></p><p>  其中Vcc1為后備電源,V

35、CC2為主電源。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過(guò)把RST輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過(guò)程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。</p>

36、<p><b>  四.軟件設(shè)計(jì)</b></p><p><b>  4.1主程序</b></p><p><b>  流程圖見(jiàn)右:</b></p><p><b>  4.1主程序:</b></p><p><b>  ORG 00

37、00H</b></p><p>  SJMP START</p><p><b>  ORG 0003H</b></p><p>  AJMP INTR0</p><p><b>  ORG 0040H</b></p><p>  START: MOV A,#0C

38、7H ;開(kāi)放行(行輸出全為0)</p><p><b>  MOV P1,A</b></p><p><b>  CLR P3.3</b></p><p>  CLR IT0 ;電平觸發(fā)</p><p>  MOV IE,#81H ;開(kāi)放IN

39、T0中斷</p><p>  MOV 30H, #00H ;設(shè)定時(shí)鐘初值</p><p>  MOV SECOND,#00H</p><p>  MOV MINUTE,#00H</p><p>  MOV HOUR,#12H</p><p>  LCALL SET1302</p><

40、p>  LCALL GET1302</p><p>  LCALL DISPLAY</p><p>  MAIN: MOV R5,#25</p><p>  MOV TMOD,#01H;工作方式1</p><p>  MOV TH0,#63H ;置定時(shí)器初值(定時(shí)40ms)</p><p> 

41、 MOV TL0,#0C0H</p><p>  SETB TR0 ;啟動(dòng)定時(shí)器0</p><p>  LP1: MOV A, 30H</p><p>  JNZ SHOWTEM</p><p>  JBC TF0,LP2 ;查詢計(jì)數(shù)溢出</p><p>  SJMP LP1

42、 ;未到40 ms繼續(xù)計(jì)數(shù)</p><p>  LP2: MOV TH0,#63H ;重新置定時(shí)器初值</p><p>  MOV TL0,#0C0H</p><p>  LCALL DISPLAY ;顯示</p><p>  DJNZ R5,LP1 ;未到1 S繼續(xù)循環(huán)</p><

43、p>  LCALL GET1302 ;每過(guò)1s從DS1302讀取一次時(shí)間</p><p>  MOV R5,#25 </p><p><b>  SJMP LP1</b></p><p>  SHOWTEM: MOV A, 30H</p><p><b>  JZ LP1</b>&

44、lt;/p><p>  4.2時(shí)鐘顯示程序:</p><p>  T_CLK Bit P3.4 ;實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳</p><p>  T_IO Bit P3.5 ;實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳</p><p>  T_RST Bit P3.1;實(shí)時(shí)時(shí)鐘復(fù)位線引腳</p><p>  SECOND EQU 50H

45、 ;秒寄存器</p><p>  MINUTE EQU 51H ;分寄存器</p><p>  HOUR EQU 52H ;時(shí)寄存器</p><p>  子程序名:DISPLAY功 能:顯示程序</p><p>  調(diào) 用:CHAG,DELAY</p><p>  

46、影響資源: A R2 R3 R6 R7 </p><p>  DISPLAY: </p><p>  MOV DPTR, #7FFFH </p><p>  MOV A, #80H</p><p>  MOVX @DPTR,A ;設(shè)置8255控制字</p><p> 

47、 MOV R3,SECOND</p><p>  LCALL CHAG</p><p>  MOV DPTR, #7FFDH</p><p>  MOV A, #0FEH</p><p>  MOVX @DPTR, A </p><p>  MOV DPTR, #7FFCH</p><p>

48、<b>  MOV A, R2</b></p><p>  MOVX @DPTR, A</p><p>  LCALL DELAY</p><p>  MOV DPTR, #7FFDH</p><p>  MOV A,#0FDH</p><p>  MOVX @DPTR, A </p>

49、;<p>  MOV DPTR, #7FFCH</p><p><b>  MOV A, R3</b></p><p>  MOVX @DPTR, A</p><p>  LCALL DELAY </p><p>  MOV R3, MINUTE</p><p>  LCALL CH

50、AG</p><p>  MOV DPTR, #7FFDH</p><p>  MOV A,#0FBH </p><p>  MOVX @DPTR, A</p><p>  MOV DPTR, #7FFCH</p><p><b>  MOV A, R2</b></p><

51、p>  MOVX @DPTR, A</p><p>  LCALL DELAY</p><p>  MOV DPTR, #7FFDH</p><p>  MOV A,#0F7H </p><p>  MOVX @DPTR,A </p><p>  MOV DPTR, #7FFCH</p>&l

52、t;p><b>  MOV A, R3</b></p><p>  MOVX @DPTR, A</p><p>  LCALL DELAY</p><p>  MOV R3, HOUR</p><p>  LCALL CHAG</p><p>  MOV DPTR, #7FFDH</p

53、><p>  MOV A,#0EFH </p><p>  MOVX @DPTR, A </p><p>  MOV DPTR, #7FFCH</p><p><b>  MOV A, R2</b></p><p>  MOVX @DPTR, A</p><p>  LCA

54、LL DELAY</p><p>  MOV DPTR, #7FFDH</p><p>  MOV A, #0DFH </p><p>  MOVX @DPTR,A </p><p>  MOV DPTR, #7FFCH</p><p><b>  MOV A, R3</b></p>

55、<p>  MOVX @DPTR, A</p><p>  LCALL DELAY</p><p><b>  RET</b></p><p>  子程序名:DELAY功 能:延時(shí)程序</p><p>  影響資源: R6 R7 </p><p>  DELAY: MO

56、V R7,#50</p><p>  D1: MOV R6,#10</p><p>  D2: DJNZ R6,$</p><p>  DJNZ R7,D1</p><p><b>  RET</b></p><p><b>  子程序名:CHAG</b></p&g

57、t;<p>  功 能:將R3中數(shù)據(jù)拆分,低字節(jié)放入R2,高字節(jié)放入R3</p><p>  影響資源: A R2 R3 </p><p>  CHAG: PUSH ACC ;低字節(jié)放入R2,高字節(jié)放入R3</p><p><b>  MOV A,R3</b></p><p>  ANL A,#0FH&

58、lt;/p><p><b>  MOV R2,A</b></p><p><b>  MOV A,R3</b></p><p><b>  SWAP A</b></p><p>  ANL A,#0FH</p><p><b>  MOV R3,A

59、</b></p><p>  MOV DPTR,#DATATAB</p><p><b>  MOV A,R2</b></p><p>  MOVC A,@A+DPTR</p><p><b>  MOV R2,A</b></p><p><b>  M

60、OV A,R3</b></p><p>  MOVC A,@A+DPTR</p><p><b>  MOV R3,A</b></p><p><b>  POP ACC </b></p><p><b>  RET</b></p><p>

61、  DATATAB: DB 0B7H,90H,3DH,0B9H,9AH,0ABH,0AFH,0B0H,0BFH,0BBH</p><p>  ******************************************************************************</p><p>  子程序名:Set1302功 能:設(shè)置DS1302 初始時(shí)間,并啟動(dòng)計(jì)時(shí)

62、。調(diào) 用:RTInputByte入口參數(shù):初始時(shí)間在:Second,Minute,Hour,Day,Month,Week.Year (地址連續(xù)。起始80H)影響資源:A B R0 R1 R7 </p><p><b>  SET1302:</b></p><p><b>  CLR T_RST</b></p><

63、;p><b>  CLR T_CLK</b></p><p>  SETB T_RST</p><p>  MOV B, #8EH ;控制寄存器</p><p>  LCALL RTInputByte</p><p>  MOV B, #00H ;寫操作前WP=0</p><p> 

64、 LCALL RTInputByte</p><p>  SETB T_CLK</p><p><b>  CLR T_RST</b></p><p>  MOV R0, #Second;</p><p>  MOV R7, #7 ;</p><p>  MOV R1, #80H ;秒寫地址&

65、lt;/p><p>  S13021: CLR T_RST</p><p><b>  CLR T_CLK</b></p><p>  SETB T_RST</p><p>  MOV B, R1 ;寫秒 分 時(shí)</p><p>  LCALL RTInputByte</p><

66、;p>  MOV A, @R0 ;寫秒數(shù)據(jù)</p><p><b>  MOV B, A</b></p><p>  LCALL RTInputByte</p><p><b>  INC R0</b></p><p><b>  INC R1</b></p&g

67、t;<p><b>  INC R1</b></p><p>  SETB T_CLK</p><p><b>  CLR T_RST</b></p><p>  DJNZ R7, S13021</p><p><b>  CLR T_RST</b></p&

68、gt;<p><b>  CLR T_CLK</b></p><p>  SETB T_RST</p><p>  MOV B, #8EH ;控制寄存器</p><p>  LCALL RTInputByte</p><p>  MOV B, #80H ;控制,WP=1,寫保護(hù)</p>

69、<p>  LCALL RTInputByte</p><p>  SETB T_CLK</p><p><b>  CLR T_RST</b></p><p><b>  RET</b></p><p>  子程序名:GET1302功 能:從DS1302 讀時(shí)間調(diào) 用:RTInpu

70、tByte,RTOutputByte入口參數(shù):時(shí)間保存在:Second,Minute,Hour,Day,Month,Week.YearL影響資源:A B R0 R1 R4 R7</p><p><b>  GET1302:</b></p><p>  MOV R0, #SECOND;</p><p>  MOV R7, #7</p&g

71、t;<p>  MOV R1, #81H ;秒地址</p><p>  G13021: CLR T_RST</p><p><b>  CLR T_CLK</b></p><p>  SETB T_RST</p><p>  MOV B, R1 ;秒 分 時(shí) </p>

72、<p>  LCALL RTInputByte</p><p>  LCALL RTOutputByte</p><p>  MOV @R0, A ;秒</p><p><b>  INC R0</b></p><p><b>  INC R1</b></p><

73、p><b>  INC R1</b></p><p>  SETB T_CLK</p><p><b>  CLR T_RST</b></p><p>  DJNZ R7, G13021</p><p>  RET***************************************

74、***************************************</p><p>  子程序名:RTInputByte</p><p>  功 能:寫1302一字節(jié) (內(nèi)部子程序)</p><p>  影響資源:A B R4 </p><p>  RTInputByte:</p><p>  M

75、OV R4, #8</p><p>  Inbit1: MOV A, B</p><p><b>  RRC A</b></p><p><b>  MOV B, A</b></p><p>  MOV T_IO, C</p><p>  SETB T_CLK</p&g

76、t;<p><b>  CLR T_CLK</b></p><p>  DJNZ R4, Inbit1</p><p><b>  RET</b></p><p>  ***********************************************************************

77、*******</p><p>  子程序名:RTOutputByte</p><p>  功 能:讀1302一字節(jié) (內(nèi)部子程序)</p><p>  影響資源:A R4 </p><p>  RTOutputByte:</p><p>  MOV R4, #8</p><p>  

78、Outbit1: MOV C, T_IO</p><p><b>  RRC A</b></p><p>  SETB T_CLK</p><p><b>  CLR T_CLK</b></p><p>  DJNZ R4, Outbit1</p><p><b>

79、  RET</b></p><p><b>  4.3鍵盤輸入模塊</b></p><p><b>  流程圖見(jiàn)下:</b></p><p>  采用3*3的矩陣式鍵盤,各列分別接P1.3,P1.4,P1.5,各行分別接P1.0,P1.1,P1.2</p><p>  設(shè)有9個(gè)按鈕,1-

80、8為通道號(hào),9為返回</p><p><b>  電路圖如下:</b></p><p><b>  行列式鍵盤電路圖:</b></p><p>  鍵盤掃描原理簡(jiǎn)介(圖):</p><p>  在上圖(a)中,當(dāng)沒(méi)有鍵被按下時(shí),單片機(jī)3條列線全部輸出為0,則將從行線讀入的位數(shù)全為1.</p&g

81、t;<p>  在上圖(b)中,當(dāng)圓圈中的按鍵被按下時(shí),列線輸出全部為0,被按下鍵所在行線讀入位數(shù)字為0,其它行線仍然為1,這樣可通過(guò)檢測(cè)行狀態(tài)判斷是否有按鍵被按下,并且圖視情況可知被按下的鍵所在行號(hào)為2.</p><p>  當(dāng)判斷有鍵按下后,令三條列線中只有一條輸出為0,其他列線輸出為1,然后檢測(cè)行線的位數(shù)字是否出現(xiàn)0,若沒(méi)有則依次使下一列線輸出為0,重復(fù)行線檢測(cè),直道有按鍵按下的行位數(shù)字為0為

82、止,從而實(shí)現(xiàn)確定按鍵的位置。(如下圖)通過(guò)列掃描,鍵值公式可由K=(行數(shù)i-1)*3+列數(shù)j求得。</p><p><b>  鍵盤程序:</b></p><p>  INTR0: LACALL DELAY ;延時(shí)去抖</p><p>  MOV A,P1 ;讀取P1口列值</p><p&

83、gt;  ANL A, #0C7H ;屏蔽低六位</p><p>  CJNE A,#0C7H,SKEY ;不等轉(zhuǎn)移指令,判斷是否有鍵閉合,有轉(zhuǎn)SKEY鍵盤掃描</p><p>  AJMP FINISH ;無(wú)鍵閉合,返回</p><p>  SKEY: MOV A,#00H ;列掃描</p>

84、<p>  MOV R0,A ;R0作為列計(jì)數(shù)器,開(kāi)始為0</p><p>  MOV R1,A ;行計(jì)數(shù)器</p><p>  MOV R3,#0F7H ;R3為列掃描字暫存</p><p>  SKEY2: MOV A, R3 ;掃描第一列</p><p>  MOV P1,A

85、 ;輸出列掃描字</p><p><b>  NOP</b></p><p><b>  NOP</b></p><p>  NOP ;三個(gè)nop操作使P1口輸出穩(wěn)定</p><p>  MOV A,P1;讀行值</p><p>  MOV R1,A

86、;暫存行值</p><p>  ANL A,#OC7H ;與運(yùn)算,無(wú)閉合鍵則0C7H不變,取行值</p><p>  CPL A;取反,高電平則有鍵閉合</p><p>  JNZ SKEY3 ;非0跳轉(zhuǎn),有鍵按下轉(zhuǎn)SKEY3,無(wú)則進(jìn)行下一列掃描</p><p>  INC R0 ;列計(jì)數(shù)器加一<

87、/p><p>  SETB C ;為行掃描字左移做準(zhǔn)備</p><p>  MOV A,R3 </p><p>  RLC A ;帶進(jìn)位C左移</p><p>  MOV R3,A ;形成下一列掃描字</p><p><b>  MOV A,R0</b>

88、</p><p>  CJNE A,#03H,SKEY2 ;共需掃描3列</p><p>  AJMP FINISH</p><p><b>  行號(hào)譯碼</b></p><p>  SKEY3: MOV A,R1</p><p>  JNB ACC.2, SKEY4</p>&

89、lt;p>  JNB ACC.1, SKEY5</p><p>  JNB ACC.0, SKEY6</p><p>  AJMP FINISH</p><p>  SKEY4:MOV A,#01H</p><p>  MOV R2,A ;存1行號(hào)</p><p><b>  AJMP DKEY&

90、lt;/b></p><p>  SKEY5:MOV A,#02H</p><p>  MOV R2,A ;存2行號(hào)</p><p><b>  AJMP DKEY</b></p><p>  SKEY6:MOV A,#03H</p><p>  MOV R2,A ;存3行號(hào)&l

91、t;/p><p><b>  AJMP DKEY</b></p><p><b>  鍵位置譯碼</b></p><p>  DKEY: MOV A,R2 ;取行號(hào)</p><p>  ACALL DECODE ;</p><p>  MOV DPTR, #T

92、ABLE1</p><p>  JMP @A+DPTR</p><p>  TABLE1: ACALL AA</p><p><b>  ACALL BB</b></p><p><b>  ACALL CC</b></p><p><b>  ACALL DD&

93、lt;/b></p><p><b>  ACALL EE </b></p><p><b>  ACALL FF </b></p><p><b>  ACALL GG </b></p><p><b>  ACALL HH</b></p&g

94、t;<p><b>  ACALL II </b></p><p>  FINISH: RETI</p><p><b>  鍵號(hào)譯碼</b></p><p>  DECODE: MOV A,R2 ;取行號(hào)送A</p><p>  DEC A ;(行號(hào)-1);&l

95、t;/p><p>  MOV B,#03H ;每行按鍵個(gè)數(shù)</p><p>  MUL AB ;(行號(hào)-1)*按鍵數(shù)</p><p>  ADD A,R0 ;(行號(hào)-1)*按鍵數(shù)+列號(hào)=鍵號(hào),存在A中</p><p><b>  RET</b></p><p><b>  延時(shí)<

96、;/b></p><p>  DELAY: MOV R7,#18H</p><p>  TM:MOV R6,#0FFH</p><p>  TM1:DJNZ R6,TM1</p><p>  DJNZ R7,TM</p><p><b>  RET</b></p>&l

97、t;p>  延時(shí)時(shí)間={(15*16+15)*(1*16+8)}*機(jī)器周期T</p><p><b>  4.4溫度采集:</b></p><p><b>  溫度采集程序:</b></p><p>  AA: MOV R0, #00H ;存數(shù)據(jù)高八位</p><p>  MOV

98、 R1, #00H ;存數(shù)據(jù)低八位</p><p>  MOV R2, #08H ;共8次采樣</p><p>  MOV DPTR, #0BFF8H ;定義ADC轉(zhuǎn)換器首地址</p><p>  LP4:MOV @DPTR, A ;開(kāi)始轉(zhuǎn)換</p><p>  ACALL DELAY

99、;延時(shí)</p><p>  LP1:JNB P3.3,LP1 ;等待轉(zhuǎn)換完畢</p><p>  LP2: MOVX A, @DPTR ;讀一個(gè)數(shù)據(jù)</p><p>  ADD A, R1 ;與低八位相加</p><p>  JNC LP3 ;無(wú)進(jìn)位轉(zhuǎn)移</p>

100、;<p>  INC R0 ;有進(jìn)位則高八位加一</p><p>  CLR C </p><p>  LP3: MOV R1, A ;保存低八位</p><p>  DJNZ R2, LP4 ;循環(huán)8次</p><p>  MOV R

101、2, #03H ;需要循環(huán)右移3次,即除以8</p><p>  LP5; MOV A, R0 ;取高八位</p><p>  RRC A ;高8位右移一位,即除以2</p><p>  MOV R0, A ;保存高八位</p><p>  MOV

102、 A, R1 ;取低八位</p><p>  RRC A ;低八位右移一位</p><p>  MOV R1, A ;保存低八位</p><p>  DJNZ R2, LP5 ;循環(huán)右移三次,即除以8</p><p>  MOV 30H, #01H

103、;30H置1</p><p>  MOV 31H, R1 ;采樣得到的溫度值入31H保存</p><p><b>  RET</b></p><p>  4.5溫度數(shù)值的轉(zhuǎn)化</p><p><b>  溫度轉(zhuǎn)化程序:</b></p><p>  MOV A

104、, 31H ;溫度數(shù)值轉(zhuǎn)化</p><p><b>  MOV B,#20</b></p><p><b>  MUL AB</b></p><p><b>  MOV B,#51</b></p><p><b>  DIV AB</b&

105、gt;</p><p><b>  MOV R1,A</b></p><p><b>  MOV A,B</b></p><p><b>  MOV B,#10</b></p><p><b>  MUL AB</b></p><p&g

106、t;<b>  MOV B,#51</b></p><p><b>  DIV AB</b></p><p>  MOV 32H,A;小數(shù)后一位放于32H</p><p>  MOV 31H,R1;結(jié)果存放31H</p><p>  MOV B,#100</p><p&g

107、t;  MOV A,31H </p><p><b>  DIV AB</b></p><p>  MOV 73H,A ;溫度的百位</p><p><b>  MOV A,B</b></p><p><b>  MOV B,#10</b></

108、p><p><b>  DIV AB</b></p><p>  MOV 72H,A ;溫度的十位</p><p>  MOV 71H,B ;溫度的個(gè)位</p><p>  MOV 70H, 32H ;溫度的十分位</p><p>  MOV 75H, 30H

109、 ;通道數(shù)</p><p><b>  4.6溫度的顯示</b></p><p><b>  程序:</b></p><p>  MOV DPTR, #7FFFH ;選擇控制存儲(chǔ)器地址</p><p>  MOV A, #80H ;寫入方式0控制字到A,A口和B口均為輸出

110、 </p><p>  MOVX @DPTR,A ;芯片初始化,設(shè)置8255控制字</p><p>  MOV DPTR, #7FFDH ;DPTR←B口地址</p><p>  MOV A, #0FEH ;選LED右數(shù)第一位(十分位)</p><p>  MOVX @DPTR, A ;PB口賦值<

111、;/p><p>  MOV DPTR, #TAB1 ;選不帶小數(shù)點(diǎn)共陰極數(shù)碼段編碼</p><p>  MOV A, 70H ;A←70H單元中溫度的十分位數(shù)值</p><p>  MOVC A, @A+DPTR ;查到70H單元中所對(duì)應(yīng)的數(shù)碼值</p><p>  MOV DPTR, #7FFCH ;選PA口

112、地址</p><p>  MOVX @DPTR, A ;PA賦值顯示</p><p>  LCALL DELAY </p><p>  MOV DPTR, #7FFDH ;DPTR←B口地址</p><p>  MOV A, #0FDH ;選LED右數(shù)第二位(個(gè)位)</p><p&g

113、t;  MOVX @DPTR, A ;PB口賦值 </p><p>  MOV DPTR, #TAB2 ;選帶小數(shù)點(diǎn)共陰極數(shù)碼段編碼</p><p>  MOV A, 71H ;A←71H單元中溫度的個(gè)位數(shù)值</p><p>  MOVC A, @A+DPTR ;查到71單元中所對(duì)應(yīng)的數(shù)碼值</p>

114、<p>  MOV DPTR, #7FFCH ;選PA口地址</p><p>  MOVX @DPTR, A ;PA賦值顯示</p><p>  LCALL DELAY</p><p>  MOV DPTR, #7FFDH ;DPTR←B口地址</p><p>  MOV A, #0FBH

115、 ;選LED右數(shù)第三位(十位)</p><p>  MOVX @DPTR, A ;PB口賦值 </p><p>  MOV DPTR, #TAB1 ;選不帶小數(shù)點(diǎn)共陰極數(shù)碼段編碼</p><p>  MOV A, 72H ;A←72H單元中溫度的十位數(shù)值</p><p>  MOVC

116、A, @A+DPTR ;查到72單元中所對(duì)應(yīng)的數(shù)碼值</p><p>  MOV DPTR, #7FFCH ;選PA口地址</p><p>  MOVX @DPTR, A ;PA賦值顯示</p><p>  LCALL DELAY</p><p>  MOV DPTR, #7FFDH ;DPTR

117、←B口地址</p><p>  MOV A, #0F7H ;選LED右數(shù)第四位(百位)</p><p>  MOVX @DPTR, A ;PB口賦值</p><p>  MOV DPTR, #TAB1 ;選不帶小數(shù)點(diǎn)共陰極數(shù)碼段編碼</p><p>  MOV A, 73H

118、;A←73H單元中溫度的百位數(shù)值</p><p>  MOVC A, @A+DPTR ;查到73單元中所對(duì)應(yīng)的數(shù)碼值</p><p>  MOV DPTR, #7FFCH ;選PA口地址</p><p>  MOVX @DPTR, A ;PA賦值顯示</p><p>  LCALL DELAY

119、 </p><p>  MOV DPTR, #7FFDH ;DPTR←B口地址</p><p>  MOV A, #0DFH ;選LED右數(shù)第六位(通道位)</p><p>  MOVX @DPTR, A ;PB口賦值 </p><p>  MOV DPTR, #TAB1

120、 ;選不帶小數(shù)點(diǎn)共陰極數(shù)碼段編碼</p><p>  MOV A, 75H ;A←75H單元中通道數(shù)值</p><p>  MOVC A, @A+DPTR ;查到75單元中所對(duì)應(yīng)的數(shù)碼值</p><p>  MOV DPTR, #7FFCH ;選PA口地址</p><p>  MOVX @DPT

121、R, A ;PA賦值顯示 </p><p>  LCALL DELAY</p><p>  MOV A, 30H ;A←30H單元中通道數(shù) </p><p>  JZ LP3 ;判斷返回鍵是否按下,是則30H為零,</p><p>  AJMP SHOWTEM

122、 ;絕對(duì)轉(zhuǎn)移到時(shí)鐘程序</p><p>  LP3: LJMP LP1 ;判斷返回鍵是否按下,否則繼續(xù)溫度顯示循環(huán)</p><p>  TAB1:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H</p><p>  DB 7FH,6FH ;0-9不帶小數(shù)點(diǎn)共陰極數(shù)碼段編碼 </p>&l

123、t;p>  TAB2:DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H</p><p>  DB 0FFH,0EFH ;0-9帶小數(shù)點(diǎn)共陰極數(shù)碼段編碼 </p><p><b>  5.任務(wù)分工</b></p><p><b>  略</b></p>

124、<p><b>  6.小結(jié)</b></p><p>  通過(guò)本次課程設(shè)計(jì),我們充分了解到了單片機(jī)的學(xué)習(xí)不僅僅是編程這么簡(jiǎn)單,外部電路的設(shè)計(jì),各種芯片的選擇搭配都是非常重要的。同時(shí)我們對(duì)單片機(jī)有了更深一步的了解,比如硬件接口、地址分配,編程的技巧得到了提高。</p><p>  總的來(lái)說(shuō),課程設(shè)計(jì)中遇到了很多困難,比如時(shí)鐘芯片DS1302的功能使用和匯編

125、程序,十六進(jìn)制轉(zhuǎn)化成十進(jìn)制等等,我們通過(guò)網(wǎng)絡(luò)查閱了大量資料,查參考書(shū)了解了許多單片機(jī)專業(yè)開(kāi)發(fā)人員的經(jīng)驗(yàn),覺(jué)得獲益非淺。在設(shè)計(jì)的過(guò)程中,不但豐富了知識(shí)、鍛煉了能力,而且養(yǎng)成了好的思維習(xí)慣,一種嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度。</p><p><b>  7.參考文獻(xiàn)</b></p><p>  1.李廣弟 《單片機(jī)基礎(chǔ)》 北京航空航天大學(xué)出版社</p><p&

126、gt;  2.楊旭方 《單片機(jī)控制與應(yīng)用實(shí)訓(xùn)教程》 電子工業(yè)出版社</p><p>  3. 張迎新 《單片機(jī)初級(jí)教程》 北京航空航天大學(xué)出版社</p><p>  4. 楊汝清 《機(jī)電控制技術(shù)》 科學(xué)出版社</p><p><b>  七.附錄:</b></p><p><b>  總程序:

127、</b></p><p>  T_CLK Bit P3.4 ;實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳</p><p>  T_IO Bit P3.5 ;實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳</p><p>  T_RST Bit P3.1;實(shí)時(shí)時(shí)鐘復(fù)位線引腳</p><p>  SECOND EQU 50H ;秒寄存器</p>

128、<p>  MINUTE EQU 51H ;分寄存器</p><p>  HOUR EQU 52H ;時(shí)寄存器</p><p><b>  ORG 0000H</b></p><p>  SJMP START</p><p><b>  ORG 0003H&

129、lt;/b></p><p>  AJMP INTR0</p><p><b>  ORG 0040H</b></p><p>  START: MOV A,#0C7H ;開(kāi)放行(行輸出全為0)</p><p><b>  MOV P1,A</b></p><p&

溫馨提示

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

評(píng)論

0/150

提交評(píng)論