單片機(jī)數(shù)字溫度計(jì)課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  XXX大學(xué)</b></p><p>  嵌入式程序設(shè)計(jì) 課程設(shè)計(jì) </p><p>  設(shè)計(jì)名稱 數(shù)字溫度計(jì) </p><p>  專業(yè)班級(jí) </p><p>  學(xué) 號(hào)

2、 </p><p>  姓 名 </p><p><b>  一設(shè)計(jì)要求:</b></p><p>  1.設(shè)計(jì)溫度傳感器接口電路;</p><p>  2.設(shè)計(jì)LED顯示電路;</p><p>  3.設(shè)計(jì)按鍵接口電路;</p>

3、<p>  4.設(shè)計(jì)數(shù)據(jù)采集及顯示程序。</p><p><b>  二:硬件電路設(shè)計(jì):</b></p><p>  基于單片機(jī)的數(shù)字溫度計(jì)</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作為溫度測(cè)試系統(tǒng)設(shè)計(jì)的核心器件。該器件是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é)可編程閃爍存儲(chǔ)器;</p><p>  (2)靈活的在線系統(tǒng)編程,掉電標(biāo)識(shí)和快速編程特性;</p

6、><p>  (3)壽命為1000次寫/擦周期,數(shù)據(jù)保留時(shí)間可10年以上;</p><p>  (4)全靜態(tài)工作模式:0Hz-33Hz;</p><p>  (5)三級(jí)程序存儲(chǔ)器鎖定;</p><p>  (6)128*8位內(nèi)部RAM,32可編程I/O線;</p><p>  (7)兩個(gè)16位定時(shí)器/計(jì)數(shù)器,6個(gè)中斷源;&

7、lt;/p><p>  (8)全雙工串行UART通道,低功耗的閑置和掉電模式;</p><p>  (9)看門狗(WDT)及雙數(shù)據(jù)指針;</p><p>  (9)片內(nèi)振蕩器和時(shí)鐘電路;</p><p><b>  溫度傳感器介紹</b></p><p>  DS18B20可以程序設(shè)定9~12位的分辨

8、率,精度為±0.5°C??蛇x更小的封裝方式,更寬的電壓適用范圍。分辨率設(shè)定,及用戶設(shè)定的報(bào)警溫度存儲(chǔ)在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)工作于寄生電源時(shí),此引腳必須接地。</p><p>  DQ :數(shù)據(jù)輸入/輸出腳。漏極開路,常態(tài)下高電平。</p>

10、<p><b>  GND :為電源地</b></p><p>  DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。</p><p>  光刻ROM中的64位序列號(hào)是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產(chǎn)品類型標(biāo)號(hào),接著

11、的48位是該DS18B20自身的序列號(hào),最后8位是前面56位的循環(huán)冗余校驗(yàn)碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個(gè)DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)DS18B20的目的。 </p><p>  DS18B20中的溫度傳感器可完成對(duì)溫度的測(cè)量,以12位轉(zhuǎn)化為例:用16位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以0.0625℃/LSB形式表達(dá),其中S為符號(hào)位。 </p&g

12、t;<p>  這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在18B20的兩個(gè)8比特的RAM中,二進(jìn)制中的前面5位是符號(hào)位,如果測(cè)得的溫度大于0,這5位為0,只要將測(cè)到的數(shù)值乘于0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測(cè)到的數(shù)值需要取反加1再乘于0.0625即可得到實(shí)際溫度。 例如+125℃的數(shù)字輸出為07D0H,+25.0625℃的數(shù)字輸出為0191H,-25.0625℃的數(shù)字輸出為FF6FH,-55℃的數(shù)字

13、輸出為FC90H。 </p><p>  DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的E2RAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結(jié)構(gòu)寄存器。 </p><p>  暫存存儲(chǔ)器包含了8個(gè)連續(xù)字節(jié),前兩個(gè)字節(jié)是測(cè)得的溫度信息,第一個(gè)字節(jié)的內(nèi)容是溫度的低八位,第二個(gè)字節(jié)是溫度的高八位。第三個(gè)和第四個(gè)字節(jié)是TH、TL的易失性拷貝,第五個(gè)字節(jié)是結(jié)構(gòu)寄

14、存器的易失性拷貝,這三個(gè)字節(jié)的內(nèi)容在每一次上電復(fù)位時(shí)被刷新。第六、七、八個(gè)字節(jié)用于內(nèi)部計(jì)算。第九個(gè)字節(jié)是冗余檢驗(yàn)字節(jié)。 </p><p>  該字節(jié)各位的意義如下:</p><p>  TM R1 R0 1 1 1 1 1</p><p>  低五位一直都是1 ,TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式。在DS18B20出廠時(shí)該位被設(shè)置為0,

15、用戶不要去改動(dòng)。R1和R0用來設(shè)置分辨率,如表1所示:(DS18B20出廠時(shí)被設(shè)置為12位) </p><p>  表1 DS18B20溫度轉(zhuǎn)換時(shí)間表</p><p>  根據(jù)DS18B20的通訊協(xié)議,主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個(gè)步驟:每一次讀寫之前都要對(duì)DS18B20進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對(duì)DS18B20進(jìn)行預(yù)定的操作。復(fù)

16、位要求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放,DS18B20收到信號(hào)后等待16~60微秒左右,后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號(hào)表示復(fù)位成功。</p><p>  溫度傳感器與單片機(jī)的連接</p><p>  溫度傳感器的單總線(1-Wire)與單片機(jī)的P2.0連接,P2.0是單片機(jī)的高位地址線A8。P2端口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O,其輸出緩沖級(jí)可驅(qū)動(dòng)(吸

17、收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)該端口寫“1”,可通過內(nèi)部上拉電阻將其端口拉至高電平,此時(shí)可作為輸入口使用,這是因?yàn)閮?nèi)部存在上拉電阻,某一引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流。在訪問外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器時(shí)。如執(zhí)行MOVX DPTR指令,則表示P2端口送出高8位的地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲(chǔ)器時(shí),可執(zhí)行MOVX RI指令,P2端口內(nèi)容即為特殊功能寄存器(SFR)區(qū)中R2寄存器內(nèi)容,整個(gè)訪問期間不改變。在

18、Flash編程和程序校驗(yàn)時(shí),P2端口也接收高位地址和其他控制信號(hào)。圖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ù)位信號(hào)及外部復(fù)位電路</p><p>  單片機(jī)的P1.6端口是M

19、AX813看門狗電路中喂狗信號(hào)的輸入端,即單片機(jī)每執(zhí)行一次程序就設(shè)置一次喂狗信號(hào),清零看門狗器件。若程序出現(xiàn)異常,單片機(jī)引腳RST將出現(xiàn)兩個(gè)機(jī)器周期以上的高電平,使其復(fù)位。該復(fù)位信號(hào)高電平有效,其有效時(shí)間應(yīng)持續(xù)24個(gè)振蕩脈沖周期即兩個(gè)機(jī)器周期以上。若使用頻率為12 MHz的晶體振蕩器,則復(fù)位信號(hào)持續(xù)時(shí)間應(yīng)超過2μs才完成復(fù)位操作。</p><p><b>  單片機(jī)與報(bào)警電路</b><

20、/p><p>  系統(tǒng)中的報(bào)警電路是由發(fā)光二極管和限流電阻組成,并與單片機(jī)的P1.2端口連接。P1端口的作用和接法與P2端口相同,不同的是在Flash編程和程序校驗(yàn)期間,P1接收低8位地址數(shù)據(jù)。</p><p><b>  電源電路</b></p><p>  由于該系統(tǒng)需要穩(wěn)定的5 V電源,因此設(shè)計(jì)時(shí)必須采用能滿足電壓、電流和穩(wěn)定性要求的電源。該

21、電源采用三端集成穩(wěn)壓器LM7805。它僅有輸入端、輸出端及公共端3個(gè)引腳,其內(nèi)部設(shè)有過流保護(hù)、過熱保護(hù)及調(diào)整管安全保護(hù)電路.由于所需外接元件少,使用方便、可靠,因此可作為穩(wěn)壓電源。圖6為電源電路連接圖。</p><p>  圖6 電源電路連接圖</p><p><b>  顯示電路</b></p><p>  采用技術(shù)成熟的74HCl64實(shí)現(xiàn)

22、串并轉(zhuǎn)換。LED顯示分為靜態(tài)顯示和動(dòng)態(tài)顯示。這里采用靜態(tài)顯示,系統(tǒng)通過單片機(jī)的串行口來實(shí)現(xiàn)靜態(tài)顯示。串行口為方式零狀態(tài),即工作在移位寄存器方式,波特率為振蕩頻率的1/12。當(dāng)器件執(zhí)行任何一條將SBUF作為目的寄存器的命令時(shí),數(shù)據(jù)便開始從RXD端發(fā)送。在寫信號(hào)有效時(shí),相隔一個(gè)機(jī)器周期后發(fā)送控制端SEND有效,即允許RXD發(fā)送數(shù)據(jù),同時(shí)允許從TXD端輸出移位脈沖。圖7為顯示電路的連接圖。</p><p>  圖7

23、顯示電路的連接圖(附在最后)</p><p><b>  看門狗電路</b></p><p>  系統(tǒng)中把P1.6作為看門狗的“喂狗”信號(hào);將MAX813的RESET與單片機(jī)的復(fù)位信號(hào)RST連接。由于單片機(jī)每執(zhí)行一次程序,就會(huì)給看門狗器件一個(gè)復(fù)位信號(hào),這樣也可以用手工方式實(shí)現(xiàn)復(fù)位。當(dāng)按鍵按下時(shí),SW—SPST就會(huì)在MAX813引腳產(chǎn)生一個(gè)超過200 ms的低電平,其實(shí)

24、看門狗器件在1.6 s時(shí)間內(nèi)沒有復(fù)位,使7引腳輸出一個(gè)復(fù)位信號(hào)的作用是相同的,其連接圖如圖8所示。</p><p>  圖8 看門狗器件的MAX813的連接圖</p><p><b>  軟件設(shè)計(jì)</b></p><p>  DSl8820的主要數(shù)據(jù)元件有:64位激光Lasered ROM,溫度靈敏元件和非易失性溫度告警觸發(fā)器TH和TL。DS

25、Bl820可以從單總線獲取電源,當(dāng)信號(hào)線為高電平時(shí),將能量貯存在內(nèi)部電容器中;當(dāng)單信號(hào)線為低電平時(shí),將該電源斷開,直到信號(hào)線變?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ù)提取出來,分為三個(gè)部分:小數(shù)部分、整數(shù)部分和符號(hào)部分。小數(shù)部分進(jìn)行四舍五入處理:大于0.5℃的話,向個(gè)位進(jìn)1;小于0.5℃的時(shí)候,舍去不要。當(dāng)數(shù)據(jù)是個(gè)負(fù)數(shù)的時(shí)候,顯示之前要進(jìn)行數(shù)據(jù)轉(zhuǎn)換,將其整數(shù)部分取反加一。還因?yàn)镈S18B20最低溫度只能為-55℃,所以可以將整數(shù)部分的

27、最高位換成一個(gè)“-”,表示為負(fù)數(shù)。圖10為溫度數(shù)據(jù)處理程序的流程圖。</p><p>  圖10 溫度數(shù)據(jù)處理流程圖</p><p><b>  三:軟件設(shè)計(jì):</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;溫度個(gè)位數(shù)</p><p>  DIS_BAIEQU37H;顯示百位數(shù)</p><p>  DIS_SHIEQU38H;顯示十位數(shù)</p><p>  DIS_GEEQ

30、U39H;顯示個(gè)位數(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;溫度個(gè)位數(shù)</p><p>  DIS_BAIEQU37H;顯示百位數(shù)</p><p>  DIS_SHIEQU38H;顯示十位數(shù)</p><p>  DIS_GEEQU39H;顯示個(gè)位數(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è)計(jì)總結(jié)與心得: </p><p>  一周半的課程設(shè)計(jì)結(jié)束了,在這次的課程設(shè)計(jì)中不僅檢驗(yàn)了我所學(xué)習(xí)

104、的知識(shí),也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在設(shè)計(jì)過程中,與同學(xué)分工設(shè)計(jì),和同學(xué)們相互探討,相互學(xué)習(xí),相互監(jiān)督。學(xué)會(huì)了合作,學(xué)會(huì)了運(yùn)籌帷幄,學(xué)會(huì)了寬容,學(xué)會(huì)了理解,也學(xué)會(huì)了做人與處世。</p><p>  課程設(shè)計(jì)是我們專業(yè)課程知識(shí)綜合應(yīng)用的實(shí)踐訓(xùn)練,著是我們邁向社會(huì),從事職業(yè)工作前一個(gè)必不少的過程.”千里之行始于足下”,通過這次課程設(shè)計(jì),我深深體會(huì)到這句千古名言的真正含義.我今天

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論