版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 溫度檢測(cè)計(jì)課程設(shè)計(jì)---基于單片機(jī)的溫度檢測(cè)儀設(shè)計(jì)
- 微機(jī)課程設(shè)計(jì)報(bào)告--溫度巡回檢測(cè)系統(tǒng)
- 環(huán)境檢測(cè)儀b課程設(shè)計(jì)報(bào)告
- 環(huán)境檢測(cè)儀b課程設(shè)計(jì)報(bào)告
- 噪聲檢測(cè)儀課程設(shè)計(jì)--聲級(jí)計(jì)
- 獸醫(yī)助手——溫度檢測(cè)儀
- 課程設(shè)計(jì)---路燈巡回檢測(cè)電路
- 單片機(jī)課程設(shè)計(jì)--八路溫度巡回檢測(cè)系統(tǒng)
- 多路放大與巡回檢測(cè)課程設(shè)計(jì)
- 溫度檢測(cè)課程設(shè)計(jì)
- 基于51單片機(jī)的酒精檢測(cè)儀課程設(shè)計(jì)
- 基于51單片機(jī)的酒精檢測(cè)儀課程設(shè)計(jì)
- 檢測(cè)儀表課程設(shè)計(jì)
- 課程設(shè)計(jì)報(bào)告--溫度顯示儀
- 畢業(yè)設(shè)計(jì)----溫度檢測(cè)儀的設(shè)計(jì)與制作
- 課程設(shè)計(jì)報(bào)告---一氧化碳檢測(cè)儀設(shè)計(jì)
- 《單片機(jī)原理及應(yīng)用》課程設(shè)計(jì) 八路溫度巡回檢測(cè)系統(tǒng)
- 數(shù)控刀具自動(dòng)視覺(jué)檢測(cè)儀機(jī)電系統(tǒng)設(shè)計(jì).pdf
- 基于pt100的溫度檢測(cè)儀的設(shè)計(jì)
- 基于單片機(jī)的水位檢測(cè)儀系統(tǒng)的設(shè)計(jì)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論