版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> XXX大學(xué)</b></p><p> 嵌入式程序設(shè)計 課程設(shè)計 </p><p> 設(shè)計名稱 數(shù)字溫度計 </p><p> 專業(yè)班級 </p><p> 學(xué) 號
2、 </p><p> 姓 名 </p><p><b> 一設(shè)計要求:</b></p><p> 1.設(shè)計溫度傳感器接口電路;</p><p> 2.設(shè)計LED顯示電路;</p><p> 3.設(shè)計按鍵接口電路;</p>
3、<p> 4.設(shè)計數(shù)據(jù)采集及顯示程序。</p><p><b> 二:硬件電路設(shè)計:</b></p><p> 基于單片機(jī)的數(shù)字溫度計</p><p> 根據(jù)系統(tǒng)功能要求,系統(tǒng)原理結(jié)構(gòu)框圖如下:</p><p> 圖1:系統(tǒng)原理結(jié)構(gòu)圖</p><p><b>
4、單片機(jī)的選擇</b></p><p> AT89C51作為溫度測試系統(tǒng)設(shè)計的核心器件。該器件是INTEL公司生產(chǎn)的MCS一5l系列單片機(jī)中的基礎(chǔ)產(chǎn)品,采用了可靠的CMOS工藝制造技術(shù),具有高性能的8位單片機(jī),屬于標(biāo)準(zhǔn)的MCS—51的CMOS產(chǎn)品。不僅結(jié)合了HMOS的高速和高密度技術(shù)及CHMOS的低功耗特征,而且繼承和擴(kuò)展了MCS—48單片機(jī)的體系結(jié)構(gòu)和指令系統(tǒng)。單片機(jī)小系統(tǒng)的電路圖如圖2所示。<
5、;/p><p><b> 圖2:</b></p><p> 圖2 單片機(jī)小系統(tǒng)電路</p><p> AT89C51單片機(jī)的主要特性:</p><p> (1)與MCS-51 兼容,4K字節(jié)可編程閃爍存儲器;</p><p> (2)靈活的在線系統(tǒng)編程,掉電標(biāo)識和快速編程特性;</p
6、><p> (3)壽命為1000次寫/擦周期,數(shù)據(jù)保留時間可10年以上;</p><p> (4)全靜態(tài)工作模式:0Hz-33Hz;</p><p> (5)三級程序存儲器鎖定;</p><p> (6)128*8位內(nèi)部RAM,32可編程I/O線;</p><p> (7)兩個16位定時器/計數(shù)器,6個中斷源;&
7、lt;/p><p> (8)全雙工串行UART通道,低功耗的閑置和掉電模式;</p><p> (9)看門狗(WDT)及雙數(shù)據(jù)指針;</p><p> (9)片內(nèi)振蕩器和時鐘電路;</p><p><b> 溫度傳感器介紹</b></p><p> DS18B20可以程序設(shè)定9~12位的分辨
8、率,精度為±0.5°C??蛇x更小的封裝方式,更寬的電壓適用范圍。分辨率設(shè)定,及用戶設(shè)定的報警溫度存儲在EPROM中,掉電后依然保存。</p><p> 溫度傳感器DS18B20引腳如圖3所示。</p><p> 8引腳封裝 TO-92封裝</p><p><b> 圖3 溫度傳感器
9、</b></p><p><b> 引腳功能說明:</b></p><p> NC :空引腳,懸空不使用;</p><p> VDD :可選電源腳,電源電壓范圍3~5.5V。當(dāng)工作于寄生電源時,此引腳必須接地。</p><p> DQ :數(shù)據(jù)輸入/輸出腳。漏極開路,常態(tài)下高電平。</p>
10、<p><b> GND :為電源地</b></p><p> DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。</p><p> 光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產(chǎn)品類型標(biāo)號,接著
11、的48位是該DS18B20自身的序列號,最后8位是前面56位的循環(huán)冗余校驗碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個DS18B20的目的。 </p><p> DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉(zhuǎn)化為例:用16位符號擴(kuò)展的二進(jìn)制補碼讀數(shù)形式提供,以0.0625℃/LSB形式表達(dá),其中S為符號位。 </p&g
12、t;<p> 這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在18B20的兩個8比特的RAM中,二進(jìn)制中的前面5位是符號位,如果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實際溫度。 例如+125℃的數(shù)字輸出為07D0H,+25.0625℃的數(shù)字輸出為0191H,-25.0625℃的數(shù)字輸出為FF6FH,-55℃的數(shù)字
13、輸出為FC90H。 </p><p> DS18B20溫度傳感器的內(nèi)部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的E2RAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結(jié)構(gòu)寄存器。 </p><p> 暫存存儲器包含了8個連續(xù)字節(jié),前兩個字節(jié)是測得的溫度信息,第一個字節(jié)的內(nèi)容是溫度的低八位,第二個字節(jié)是溫度的高八位。第三個和第四個字節(jié)是TH、TL的易失性拷貝,第五個字節(jié)是結(jié)構(gòu)寄
14、存器的易失性拷貝,這三個字節(jié)的內(nèi)容在每一次上電復(fù)位時被刷新。第六、七、八個字節(jié)用于內(nèi)部計算。第九個字節(jié)是冗余檢驗字節(jié)。 </p><p> 該字節(jié)各位的意義如下:</p><p> TM R1 R0 1 1 1 1 1</p><p> 低五位一直都是1 ,TM是測試模式位,用于設(shè)置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設(shè)置為0,
15、用戶不要去改動。R1和R0用來設(shè)置分辨率,如表1所示:(DS18B20出廠時被設(shè)置為12位) </p><p> 表1 DS18B20溫度轉(zhuǎn)換時間表</p><p> 根據(jù)DS18B20的通訊協(xié)議,主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟:每一次讀寫之前都要對DS18B20進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進(jìn)行預(yù)定的操作。復(fù)
16、位要求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放,DS18B20收到信號后等待16~60微秒左右,后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號表示復(fù)位成功。</p><p> 溫度傳感器與單片機(jī)的連接</p><p> 溫度傳感器的單總線(1-Wire)與單片機(jī)的P2.0連接,P2.0是單片機(jī)的高位地址線A8。P2端口是一個帶內(nèi)部上拉電阻的8位雙向I/O,其輸出緩沖級可驅(qū)動(吸
17、收或輸出電流)4個TTL邏輯門電路。對該端口寫“1”,可通過內(nèi)部上拉電阻將其端口拉至高電平,此時可作為輸入口使用,這是因為內(nèi)部存在上拉電阻,某一引腳被外部信號拉低時會輸出一個電流。在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器時。如執(zhí)行MOVX DPTR指令,則表示P2端口送出高8位的地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器時,可執(zhí)行MOVX RI指令,P2端口內(nèi)容即為特殊功能寄存器(SFR)區(qū)中R2寄存器內(nèi)容,整個訪問期間不改變。在
18、Flash編程和程序校驗時,P2端口也接收高位地址和其他控制信號。圖4為DSl8820內(nèi)部結(jié)構(gòu)。圖5為DSl8820與單片機(jī)的接口電路。</p><p> 圖4 DS18B20內(nèi)部結(jié)構(gòu)圖 </p><p> 圖5 DS18B20和單片機(jī)的接口連接</p><p> 復(fù)位信號及外部復(fù)位電路</p><p> 單片機(jī)的P1.6端口是M
19、AX813看門狗電路中喂狗信號的輸入端,即單片機(jī)每執(zhí)行一次程序就設(shè)置一次喂狗信號,清零看門狗器件。若程序出現(xiàn)異常,單片機(jī)引腳RST將出現(xiàn)兩個機(jī)器周期以上的高電平,使其復(fù)位。該復(fù)位信號高電平有效,其有效時間應(yīng)持續(xù)24個振蕩脈沖周期即兩個機(jī)器周期以上。若使用頻率為12 MHz的晶體振蕩器,則復(fù)位信號持續(xù)時間應(yīng)超過2μs才完成復(fù)位操作。</p><p><b> 單片機(jī)與報警電路</b><
20、/p><p> 系統(tǒng)中的報警電路是由發(fā)光二極管和限流電阻組成,并與單片機(jī)的P1.2端口連接。P1端口的作用和接法與P2端口相同,不同的是在Flash編程和程序校驗期間,P1接收低8位地址數(shù)據(jù)。</p><p><b> 電源電路</b></p><p> 由于該系統(tǒng)需要穩(wěn)定的5 V電源,因此設(shè)計時必須采用能滿足電壓、電流和穩(wěn)定性要求的電源。該
21、電源采用三端集成穩(wěn)壓器LM7805。它僅有輸入端、輸出端及公共端3個引腳,其內(nèi)部設(shè)有過流保護(hù)、過熱保護(hù)及調(diào)整管安全保護(hù)電路.由于所需外接元件少,使用方便、可靠,因此可作為穩(wěn)壓電源。圖6為電源電路連接圖。</p><p> 圖6 電源電路連接圖</p><p><b> 顯示電路</b></p><p> 采用技術(shù)成熟的74HCl64實現(xiàn)
22、串并轉(zhuǎn)換。LED顯示分為靜態(tài)顯示和動態(tài)顯示。這里采用靜態(tài)顯示,系統(tǒng)通過單片機(jī)的串行口來實現(xiàn)靜態(tài)顯示。串行口為方式零狀態(tài),即工作在移位寄存器方式,波特率為振蕩頻率的1/12。當(dāng)器件執(zhí)行任何一條將SBUF作為目的寄存器的命令時,數(shù)據(jù)便開始從RXD端發(fā)送。在寫信號有效時,相隔一個機(jī)器周期后發(fā)送控制端SEND有效,即允許RXD發(fā)送數(shù)據(jù),同時允許從TXD端輸出移位脈沖。圖7為顯示電路的連接圖。</p><p> 圖7
23、顯示電路的連接圖(附在最后)</p><p><b> 看門狗電路</b></p><p> 系統(tǒng)中把P1.6作為看門狗的“喂狗”信號;將MAX813的RESET與單片機(jī)的復(fù)位信號RST連接。由于單片機(jī)每執(zhí)行一次程序,就會給看門狗器件一個復(fù)位信號,這樣也可以用手工方式實現(xiàn)復(fù)位。當(dāng)按鍵按下時,SW—SPST就會在MAX813引腳產(chǎn)生一個超過200 ms的低電平,其實
24、看門狗器件在1.6 s時間內(nèi)沒有復(fù)位,使7引腳輸出一個復(fù)位信號的作用是相同的,其連接圖如圖8所示。</p><p> 圖8 看門狗器件的MAX813的連接圖</p><p><b> 軟件設(shè)計</b></p><p> DSl8820的主要數(shù)據(jù)元件有:64位激光Lasered ROM,溫度靈敏元件和非易失性溫度告警觸發(fā)器TH和TL。DS
25、Bl820可以從單總線獲取電源,當(dāng)信號線為高電平時,將能量貯存在內(nèi)部電容器中;當(dāng)單信號線為低電平時,將該電源斷開,直到信號線變?yōu)楦唠娖街匦陆由霞纳?電容)電源為止。此外,還可外接5 V電源,給DSl8820供電。DSl8820的供電方式靈活,利用外接電源還可增加系統(tǒng)的穩(wěn)定性和可靠性。圖9為讀取數(shù)據(jù)流程圖。</p><p> 圖9 讀取數(shù)據(jù)的流程圖</p><p> 讀出溫度數(shù)據(jù)后,L
26、OW的低四位為溫度的小數(shù)部分,可以精確到0.0625℃,LOW的高四位和HIGH的低四位為溫度的整數(shù)部分,HIGH的高四位全部為1表示負(fù)數(shù),全為0表示正數(shù)。所以先將數(shù)據(jù)提取出來,分為三個部分:小數(shù)部分、整數(shù)部分和符號部分。小數(shù)部分進(jìn)行四舍五入處理:大于0.5℃的話,向個位進(jìn)1;小于0.5℃的時候,舍去不要。當(dāng)數(shù)據(jù)是個負(fù)數(shù)的時候,顯示之前要進(jìn)行數(shù)據(jù)轉(zhuǎn)換,將其整數(shù)部分取反加一。還因為DS18B20最低溫度只能為-55℃,所以可以將整數(shù)部分的
27、最高位換成一個“-”,表示為負(fù)數(shù)。圖10為溫度數(shù)據(jù)處理程序的流程圖。</p><p> 圖10 溫度數(shù)據(jù)處理流程圖</p><p><b> 三:軟件設(shè)計:</b></p><p> DATA_ BUS BITP3.3</p><p> FLAGBIT00H;標(biāo)志位</p><
28、p> TEMP_LEQU 30H;溫度值低字節(jié)</p><p> TEMP_HEQU31H;溫度值高字節(jié)</p><p> TEMP_DPEQU32H;溫度小數(shù)</p><p> TEMP_INTEQU33H;溫度值整數(shù)</p><p> TEMP_BAIEQU34H;溫度百位數(shù)&
29、lt;/p><p> TEMP_SHIEQU35H;溫度十位數(shù)</p><p> TEMP_GEEQU36H;溫度個位數(shù)</p><p> DIS_BAIEQU37H;顯示百位數(shù)</p><p> DIS_SHIEQU38H;顯示十位數(shù)</p><p> DIS_GEEQ
30、U39H;顯示個位數(shù)</p><p> DIS_DPEQU3AH;顯示小數(shù)位</p><p> DIS_ADDEQU3BH;顯示地址</p><p><b> 上機(jī)調(diào)試程序:</b></p><p> ORG 0000H
31、
32、
33、 </p><p> AJMPSTART</p><p> ORG 0050H;初始化</p><p><b> START:</b></p><p> MOVSP,#40H</p><p> MAIN:LCALLREAD_TE
34、MP;調(diào)讀溫度程序</p><p> LCALLPROCESS;調(diào)數(shù)據(jù)處理程序</p><p> AJMP MAIN</p><p><b> ;讀溫度程序</b></p><p> READ_TEMP:</p><p> LCALLRESET_PULSE ;
35、調(diào)用復(fù)位脈沖程序</p><p> MOV A,#0CCH;跳過ROM命令</p><p> LCALL WRITE</p><p> MOVA,#44H;讀溫度</p><p> LCALL WRITE</p><p> LCALLDISPLAY;顯示溫度
36、</p><p> LCALLRESET_PULSE;調(diào)用復(fù)位脈沖程序</p><p> MOVA,#0CCH;跳過ROM命令</p><p> LCALLWRITE</p><p> MOVA,#0BEH;讀緩存命令</p><p> LCALL WRITE</p>
37、;<p> LCALLREAD</p><p><b> RET</b></p><p><b> ;復(fù)位脈沖程序</b></p><p> RESET_PULSE:</p><p> RESET:SETBDATA_BUS</p><p><
38、;b> NOP</b></p><p><b> NOP</b></p><p> CLRDATA_BUS</p><p> MOVR7,#255</p><p> DJNZR7,$</p><p> SETB DATA_BUS</p>&l
39、t;p> MOVR7,#30</p><p><b> DJNZR7,$</b></p><p> JNB DATA_BUS,SETB_FLAG</p><p><b> CLRFLAG</b></p><p><b> AJMPNEXT</b>&
40、lt;/p><p> SETB_FLAG:</p><p> SETB FLAG</p><p> NEXT:MOV R7,#120</p><p> DJNZR7,$</p><p> SETB DATA_BUS</p><p> JNBFLAG,RESET</
41、p><p><b> RET</b></p><p><b> ;寫命令</b></p><p> WRITE:SETBDATA_BUS</p><p> MOVR6,#8</p><p><b> CLRC</b></p>
42、<p><b> WRITING:</b></p><p> CLRDATA_BUS</p><p> MOVR7,#5</p><p> DJNZR7,$</p><p><b> RRCA</b></p><p> MOVDATA_B
43、US, C</p><p> MOVR7,#30H</p><p> DJNZR7,$</p><p> SETBDATA_BUS</p><p><b> NOP</b></p><p> DJNZR6,WRITING</p><p><b&
44、gt; RET</b></p><p><b> ;循環(huán)顯示段位</b></p><p><b> DISPLAY:</b></p><p> MOV R4,#200</p><p><b> DIS_LOOP:</b></p><
45、p> MOVA,DIS_DP</p><p> MOVP2,#0FFH</p><p><b> MOVP0,A</b></p><p><b> CLRP2.7</b></p><p> LCALLDELAY2MS</p><p> MOV
46、A,DIS_GE</p><p> MOVP2,#0FFH</p><p><b> MOVP0,A</b></p><p><b> SETBP0.7</b></p><p> CLRP2.6</p><p> LCALLDELAY2MS&l
47、t;/p><p> MOVA,DIS_SHI</p><p> MOVP2,#0FFH</p><p><b> MOVP0,A</b></p><p><b> CLRP2.5</b></p><p> LCALLDELAY2MS</p>
48、<p> MOVA,DIS_BAI</p><p> MOVP2,#0FFH</p><p><b> MOVP0,A</b></p><p> MOVA,TEMP_BAI</p><p> CJNEA,#0,SKIP</p><p> AJMPNEX
49、TT</p><p> SKIP:CLRP2.4</p><p> LCALLDELAY2MS</p><p> NEXTT:NOP</p><p> DJNZR4,DIS_LOOP</p><p><b> RET</b></p><p><
50、b> ;讀命令</b></p><p> READ:SETBDATA_BUS</p><p> MOVR0,#TEMP_L</p><p> MOV R6,#8</p><p> MOVR5,#2</p><p><b> CLRC</b></
51、p><p><b> READING:</b></p><p> CLRDATA_BUS</p><p><b> NOP</b></p><p><b> NOP</b></p><p> SETBDATA_BUS</p>&l
52、t;p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> MOVC,DATA_BUS</p><
53、p><b> RRCA</b></p><p> MOVR7,#30H</p><p> DJNZR7,$</p><p> SETBDATA_BUS</p><p> DJNZR6,READING</p><p> MOV@R0,A</p>&
54、lt;p><b> INC R0</b></p><p> MOVR6,#8</p><p> SETBDATA_BUS</p><p> DJNZR5,READING</p><p><b> RET</b></p><p><b>
55、 ;數(shù)據(jù)處理</b></p><p><b> PROCESS:</b></p><p> MOV R7,TEMP_L</p><p> MOVA,#0FH</p><p><b> ANLA,R7</b></p><p> MOVTEMP
56、_DP,A</p><p> MOV R7,TEMP_L</p><p> MOVA,#0F0H</p><p><b> ANLA,R7</b></p><p><b> SWAPA</b></p><p> MOVTEMP_L,A</p&
57、gt;<p> MOVR7,TEMP_H</p><p> MOVA,#0FH DATA_BUSBITP3.3</p><p> FLAGBIT00H;標(biāo)志位</p><p> TEMP_LEQU 30H;溫度值低字節(jié)</p><p> TEMP_HEQU31H;溫度值高字節(jié)&
58、lt;/p><p> TEMP_DPEQU32H;溫度小數(shù)</p><p> TEMP_INTEQU33H;溫度值整數(shù)</p><p> TEMP_BAIEQU34H;溫度百位數(shù)</p><p> TEMP_SHIEQU35H;溫度十位數(shù)</p><p> TEMP_GEEQ
59、U36H;溫度個位數(shù)</p><p> DIS_BAIEQU37H;顯示百位數(shù)</p><p> DIS_SHIEQU38H;顯示十位數(shù)</p><p> DIS_GEEQU39H;顯示個位數(shù)</p><p> DIS_DPEQU3AH;顯示小數(shù)位</p><p>
60、 DIS_ADDEQU3BH;顯示地址</p><p> ORG 0000H
61、
62、 </p><p> AJMPSTART</p><p> ORG 0050H;初始化</p><p><b> STA
63、RT:</b></p><p> MOVSP,#40H</p><p> MAIN:LCALLREAD_TEMP;調(diào)讀溫度程序</p><p> LCALLPROCESS;調(diào)數(shù)據(jù)處理程序</p><p><b> AJMPMAIN</b></p><p&
64、gt;<b> ;讀溫度程序</b></p><p> READ_TEMP:</p><p> LCALLRESET_PULSE ;調(diào)用復(fù)位脈沖程序</p><p> MOV A,#0CCH;跳過ROM命令</p><p> LCALL WRITE</p>
65、<p> MOVA,#44H;讀溫度</p><p> LCALL WRITE</p><p> LCALLDISPLAY;顯示溫度</p><p> LCALLRESET_PULSE;調(diào)用復(fù)位脈沖程序</p><p> MOVA,#0CCH;跳過ROM命令</p>&
66、lt;p> LCALLWRITE</p><p> MOVA,#0BEH;讀緩存命令</p><p> LCALL WRITE</p><p> LCALLREAD</p><p><b> RET</b></p><p><b> ;復(fù)位脈沖程序<
67、;/b></p><p> RESET_PULSE:</p><p> RESET:SETBDATA_BUS</p><p><b> NOP</b></p><p><b> NOP</b></p><p> CLRDATA_BUS</p>
68、<p> MOVR7,#255</p><p> DJNZR7,$</p><p> SETB DATA_BUS</p><p> MOVR7,#30</p><p><b> DJNZR7,$</b></p><p> JNB DATA_BUS,SE
69、TB_FLAG</p><p><b> CLRFLAG</b></p><p><b> AJMPNEXT</b></p><p> SETB_FLAG:</p><p> SETB FLAG</p><p> NEXT:MOV R7,#120<
70、/p><p> DJNZR7,$</p><p> SETB DATA_BUS</p><p> JNBFLAG,RESET</p><p><b> RET</b></p><p><b> ;寫命令</b></p><p> WR
71、ITE:SETBDATA_BUS</p><p> MOVR6,#8</p><p><b> CLRC</b></p><p><b> WRITING:</b></p><p> CLRDATA_BUS</p><p> MOVR7,#5<
72、/p><p> DJNZR7,$</p><p><b> RRCA</b></p><p> MOVDATA_BUS, C</p><p> MOVR7,#30H</p><p> DJNZR7,$</p><p> SETBDATA_BUS&l
73、t;/p><p><b> NOP</b></p><p> DJNZR6,WRITING</p><p><b> RET</b></p><p><b> ;循環(huán)顯示段位</b></p><p><b> DISPLAY:<
74、/b></p><p> MOV R4,#200</p><p><b> DIS_LOOP:</b></p><p> MOVA,DIS_DP</p><p> MOVP2,#0FFH</p><p><b> MOVP0,A</b><
75、/p><p><b> CLRP2.7</b></p><p> LCALLDELAY2MS</p><p> MOVA,DIS_GE</p><p> MOVP2,#0FFH</p><p><b> MOVP0,A</b></p>&l
76、t;p><b> SETBP0.7</b></p><p> CLRP2.6</p><p> LCALLDELAY2MS</p><p> MOVA,DIS_SHI</p><p> MOVP2,#0FFH</p><p><b> MOVP0,
77、A</b></p><p><b> CLRP2.5</b></p><p> LCALLDELAY2MS</p><p> MOVA,DIS_BAI</p><p> MOVP2,#0FFH</p><p><b> MOVP0,A</b&g
78、t;</p><p> MOVA,TEMP_BAI</p><p> CJNEA,#0,SKIP</p><p> AJMPNEXTT</p><p> SKIP:CLRP2.4</p><p> LCALLDELAY2MS</p><p> NEXTT:NOP&
79、lt;/p><p> DJNZR4,DIS_LOOP</p><p><b> RET</b></p><p><b> ;讀命令</b></p><p> READ:SETBDATA_BUS</p><p> MOVR0,#TEMP_L</p>
80、<p> MOV R6,#8</p><p> MOVR5,#2</p><p><b> CLRC</b></p><p><b> READING:</b></p><p> CLRDATA_BUS</p><p><b>
81、 NOP</b></p><p><b> NOP</b></p><p> SETBDATA_BUS</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP
82、</b></p><p><b> NOP</b></p><p> MOVC,DATA_BUS</p><p><b> RRCA</b></p><p> MOVR7,#30H</p><p> DJNZR7,$</p>
83、<p> SETBDATA_BUS</p><p> DJNZR6,READING</p><p> MOV@R0,A</p><p><b> INC R0</b></p><p> MOVR6,#8</p><p> SETBDATA_BUS</p
84、><p> DJNZR5,READING</p><p><b> RET</b></p><p><b> ;數(shù)據(jù)處理</b></p><p><b> PROCESS:</b></p><p> MOV R7,TEMP_L</p&
85、gt;<p> MOVA,#0FH</p><p><b> ANLA,R7</b></p><p> MOVTEMP_DP,A</p><p> MOV R7,TEMP_L</p><p> MOVA,#0F0H</p><p><b> A
86、NLA,R7</b></p><p><b> SWAPA</b></p><p> MOVTEMP_L,A</p><p> MOVR7,TEMP_H</p><p> MOVA,#0FH</p><p><b> ANLA,R7</b
87、></p><p><b> SWAPA</b></p><p> ORLA,TEMP_L</p><p> MOV B,#64H</p><p><b> DIVAB</b></p><p> MOVTEMP_BAI,A</p>
88、<p> MOVA,#0AH</p><p><b> XCHA,B</b></p><p><b> DIVAB</b></p><p> MOVTEMP_SHI,A</p><p> MOVTEMP_GE,B</p><p> MOV
89、A,TEMP_DP</p><p> MOV DPTR,#TABLE_DP</p><p> MOVCA,@A+DPTR</p><p> MOVDPTR,#TABLE_INTER</p><p> MOVC A,@A+DPTR</p><p> MOVDIS_DP,A</p>
90、;<p> MOVA,TEMP_GE</p><p> MOV DPTR,#TABLE_INTER</p><p> MOVCA,@A+DPTR</p><p> MOV DIS_GE,A</p><p> MOVA,TEMP_SHI</p><p> MOV DPTR,
91、#TABLE_INTER</p><p> MOVCA,@A+DPTR</p><p> MOVDIS_SHI,A</p><p> MOVA,TEMP_BAI</p><p> MOV DPTR,#TABLE_INTER</p><p> MOVCA,@A+DPTR</p>
92、<p> MOV DIS_BAI,A</p><p><b> RET</b></p><p><b> DELAY2MS:</b></p><p> MOVR6,#3</p><p> LOOP3:MOVR5,#250</p><p>
93、 DJNZR5,$</p><p> DJNZR6,LOOP3</p><p><b> RET</b></p><p><b> TABLE_DP:</b></p><p> DB00H,01H,01H,02H,03H,03H,04H,04H,05H,06H</p>
94、<p> DB06H,07H,08H,08H,09H,09H</p><p> TABLE_INTER:</p><p> DB03FH,006H,05BH,04FH,066H</p><p> DB06DH,07DH,07H,07FH,06FH</p><p><b> END</b>&l
95、t;/p><p><b> ANLA,R7</b></p><p><b> SWAPA</b></p><p> ORLA,TEMP_L</p><p> MOV B,#64H</p><p><b> DIVAB</b><
96、/p><p> MOVTEMP_BAI,A</p><p> MOVA,#0AH</p><p><b> XCHA,B</b></p><p><b> DIVAB</b></p><p> MOVTEMP_SHI,A</p><p&
97、gt; MOVTEMP_GE,B</p><p> MOVA,TEMP_DP</p><p> MOV DPTR,#TABLE_DP</p><p> MOVCA,@A+DPTR</p><p> MOVDPTR,#TABLE_INTER</p><p> MOVC A,@A+DPTR
98、</p><p> MOVDIS_DP,A</p><p> MOVA,TEMP_GE</p><p> MOV DPTR,#TABLE_INTER</p><p> MOVCA,@A+DPTR</p><p> MOV DIS_GE,A</p><p> MOV
99、A,TEMP_SHI</p><p> MOV DPTR,#TABLE_INTER</p><p> MOVCA,@A+DPTR</p><p> MOVDIS_SHI,A</p><p> MOVA,TEMP_BAI</p><p> MOV DPTR,#TABLE_INTER<
100、;/p><p> MOVCA,@A+DPTR</p><p> MOV DIS_BAI,A</p><p><b> RET</b></p><p><b> DELAY2MS:</b></p><p> MOVR6,#3</p><p&
101、gt; LOOP3:MOVR5,#250</p><p> DJNZR5,$</p><p> DJNZR6,LOOP3</p><p><b> RET</b></p><p><b> TABLE_DP:</b></p><p> DB00H,
102、01H,01H,02H,03H,03H,04H,04H,05H,06H</p><p> DB06H,07H,08H,08H,09H,09H</p><p> TABLE_INTER:</p><p> DB03FH,006H,05BH,04FH,066H</p><p> DB06DH,07DH,07H,07FH,06FH&l
103、t;/p><p><b> END</b></p><p> 四:課程設(shè)計總結(jié)與心得: </p><p> 一周半的課程設(shè)計結(jié)束了,在這次的課程設(shè)計中不僅檢驗了我所學(xué)習(xí)
104、的知識,也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在設(shè)計過程中,與同學(xué)分工設(shè)計,和同學(xué)們相互探討,相互學(xué)習(xí),相互監(jiān)督。學(xué)會了合作,學(xué)會了運籌帷幄,學(xué)會了寬容,學(xué)會了理解,也學(xué)會了做人與處世。</p><p> 課程設(shè)計是我們專業(yè)課程知識綜合應(yīng)用的實踐訓(xùn)練,著是我們邁向社會,從事職業(yè)工作前一個必不少的過程.”千里之行始于足下”,通過這次課程設(shè)計,我深深體會到這句千古名言的真正含義.我今天
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計--數(shù)字溫度計
- 單片機(jī)課程設(shè)計-數(shù)字溫度計
- 單片機(jī)課程設(shè)計—數(shù)字溫度計
- 單片機(jī)數(shù)字溫度計課程設(shè)計
- 單片機(jī)課程設(shè)計---數(shù)字溫度計
- 單片機(jī)課程設(shè)計-數(shù)字溫度計
- 單片機(jī)課程設(shè)計—數(shù)字溫度計
- 單片機(jī)課程設(shè)計——數(shù)字溫度計
- 單片機(jī)課程設(shè)計—數(shù)字溫度計
- 單片機(jī)課程設(shè)計-數(shù)字溫度計
- 數(shù)字溫度計--單片機(jī)課程設(shè)計
- 數(shù)字溫度計課程設(shè)計---基于51單片機(jī)數(shù)字溫度計設(shè)計
- 單片機(jī)課程設(shè)計--數(shù)字溫度計設(shè)計
- 單片機(jī)課程設(shè)計--數(shù)字溫度計設(shè)計
- 溫度計課程設(shè)計---基于51單片機(jī)數(shù)字溫度計設(shè)計
- 單片機(jī)課程設(shè)計---單片機(jī)數(shù)字顯示溫度計
- 數(shù)字溫度計課程設(shè)計---基于51單片機(jī)數(shù)字溫度計設(shè)計
- 單片機(jī)課程設(shè)計數(shù)字溫度計
- 單片機(jī)課程設(shè)計報告--數(shù)字溫度計
- 單片機(jī)課程設(shè)計報告數(shù)字溫度計
評論
0/150
提交評論