基于AT89S51的溫度測量系統(tǒng)的設(shè)計(jì)論文_第1頁
基于AT89S51的溫度測量系統(tǒng)的設(shè)計(jì)論文_第2頁
基于AT89S51的溫度測量系統(tǒng)的設(shè)計(jì)論文_第3頁
基于AT89S51的溫度測量系統(tǒng)的設(shè)計(jì)論文_第4頁
基于AT89S51的溫度測量系統(tǒng)的設(shè)計(jì)論文_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于at89s51的溫度測量系統(tǒng)的設(shè)計(jì)一、設(shè)計(jì)題目:基于at89s51的溫度測量系統(tǒng)的設(shè)計(jì)二、元件及器材:單片機(jī)at89c51、溫度傳感器ds18b20、顯示譯碼器74ls47、晶振11.0592mhz、max232cpe、3位led七段顯示器ln5361bs三、系統(tǒng)設(shè)計(jì)過程:1、電路功能:本單片機(jī)開發(fā)電路系統(tǒng)可實(shí)現(xiàn)溫度測量的顯示及與pc機(jī)的串行通信。2、電路原理圖:3、電路分析:電路中采用的溫度傳感器ds18b20是美國dalls公司生產(chǎn)的單總線數(shù)字溫度傳感器,可把溫度信號直接轉(zhuǎn)換成串行數(shù)字信號供微機(jī)處理。從ds18b20讀出或?qū)懭氲男畔H需要一根口線(單總線接口),讀寫及溫度變換功率來源于

2、數(shù)據(jù)總線,總線本身也可以向所掛接的ds18b20供電,而無需額外電源。gnd:地;vcc:電源電壓dq:數(shù)據(jù)輸入/輸出腳(單線接口,可作寄生供電)ds18b20123gnddqvccds18b20的外引腳圖如下:在電路中ds18b20的vcc接+5v電源,給溫度傳感器提供電源;數(shù)據(jù)輸入/輸出腳dq與單片機(jī)at89c51的p2.0相連,實(shí)現(xiàn)將所測的溫度讀入cpu,經(jīng)系統(tǒng)處理后轉(zhuǎn)化為ascii碼通過p0.0p0.3傳送給led顯示電路顯示。溫度讀入程序如下:dswd:clr ealcall rstsnrjnb f0,kend;如果沒有應(yīng)答,返回主程序mov r0,#0cchlcall send_b

3、yte;跳過rom匹配mov r0,#44h;發(fā)出溫度轉(zhuǎn)換命令lcall send_bytesetb eamov p1,#00001111bmov 48h,#1;延時(shí)75ms以上準(zhǔn)備讀ss2:mov 49h,#255ss1:mov 4ah,#255ss0:djnz 4ah,ss0djnz 49h,ss1djnz 48h,ss2mov p1,#11111100bclr ealcall rstsnrjnb f0,kendmov r0,#0cch;跳過rom匹配lcall send_bytemov r0,#0beh ;發(fā)出讀溫度命令lcall send_bytelcall read_bytemov

4、wdlsb,alcall read_bytemov wdmsb,alcall trans12kend:setb earetsend_byte: mov a,r0;發(fā)送一個(gè)字節(jié)程序 mov r5,#8sen3:clr c rrc a jc sen1 lcall write_0 sjmp sen2sen1:acall write_1sen2:djnz r5,sen3;循環(huán)8次,寫一個(gè)字節(jié) retread_byte:mov r5,#8;讀一個(gè)字節(jié)程序read1: lcall read rrc a djnz r5,read1;循環(huán)8次,讀一個(gè)字節(jié) mov r0,a ret ;復(fù)位程序,如果復(fù)位置位f0

5、,沒有就復(fù)位f0rstsnr:setb dat nop nop clr datmov r6,#250;主機(jī)發(fā)復(fù)位脈沖持續(xù)2*300=600sdjnz r6,$mov r6,#50djnz r6,$setb dat;主機(jī)釋放總線,口線改為輸入mov r6,#15djnz r6,$lcall chck;調(diào)用應(yīng)答檢查程序mov r6,#60djnz r6,$retchck:mov c,datjc rst0setb f0;檢測到信號,置位f0sjmp chck0rst0:clr f0;未準(zhǔn)備好f0復(fù)位chck0:ret write_0: clr dat;寫0djnz r6,$setb datretwr

6、ite_1:clr dat;寫1nopnop nop nop nop setb dat djnz r6,$ ret ;讀一位數(shù)據(jù)程序read:setb dat ;先復(fù)位至少1us產(chǎn)生讀起始信號 nop nop clr dat nop nopsetb dat ;置位dat準(zhǔn)備接收數(shù)據(jù)nopnopnopnopnopnopnopmov c,datmov r6,#23djnz r6,$ret溫度轉(zhuǎn)換程序(只取整數(shù))30h=lsb,31h=msb;trans12:mov a,30h;將讀出的溫度低字節(jié)送入累加器a anl a,#0f0h;將低四位清0,保留高四位 mov 3ah,a mov a,31h;

7、將讀出的溫度高字節(jié)送入累加器a anl a,#0fh;將高四位清0,保留低四位 swap a mov b,#10 div ab mov 43h,b div ab mov 42h,b mov 41h,a orl a,#30h;將bcd碼轉(zhuǎn)換為ascii碼 mov 50h,a mov a,42h orl a,#30h mov a,43h orl a,#30h mov 52h,a mov 53h,#20h acall send2pc ret溫度的數(shù)碼顯示:系統(tǒng)處理所得的ascii碼經(jīng)p0.0p0.3送入74ls47譯碼鎖存,單片機(jī)每隔10ms(定時(shí)/計(jì)數(shù)器0利用方式1)采用中斷的形式循環(huán)掃描,利用p

8、0.4p0.6依次點(diǎn)亮3個(gè)led數(shù)碼管,將譯碼器鎖存數(shù)據(jù)顯示。具體程序如下:org 0040htmr0:mov p0,40h ; 最高一位值送p0 orl p0,# 01000000b; 點(diǎn)亮最高一位led數(shù)碼管 acall timsmov p0,41h orl p0,#00100000b;點(diǎn)亮次高一位led數(shù)碼管 acall tims orl p0,#00010000b;點(diǎn)亮最低一位led數(shù)碼管 acall tims mov th0,#low(65535-10000) ;定時(shí)器10ms定時(shí) mov tl0,#high(65535-10000) retitims:mov r5,#00h;延時(shí)子

9、程序tt: mov r6,#9djnz r6,$djnz r5,tt ret與pc機(jī)的串行通信利用p3.0、p3.1的第二功能rxd、txd實(shí)現(xiàn)。4、程序設(shè)計(jì):dat bit p2.0 ;數(shù)據(jù)通信口wdlsb data 30h ;讀出的溫度低字節(jié)wdmsb data 31h ;讀出的溫度高字節(jié);*org 0000hljmp mainorg 000bhsjmp tmr0 ;定時(shí)顯示;*;定時(shí)顯示子程序,采用循環(huán)掃描方式;顯示緩沖區(qū)40h47h;串口發(fā)送緩沖 5052h,ascii格式org 0040htmr0:mov p0,40h ; 最后一位值送p0orl p0,#10000000b; 點(diǎn)亮最

10、后一位call t1msmov p0,41horl p0,#01000000bcall t1msorl p0,#00100000bcall t1msmov p0,43horl p0,#00010000bmov th0,#low(65535-10000) ;定時(shí)器10ms中斷mov tl0,#high(65535-10000)retit1ms: mov r5,#00h ;延時(shí)子程序tt: mov r6,#9djnz r6,$djnz r5,ttret;*;主程序:main: mov sp,#60hmov p2,#0ffhmov r2,#8mov r0,#40h ;over: mov r0,#00

11、h; 清顯示緩沖inc r0djnz r2,overmov tmod,#21h;t0=16b counter,t1=8b autoloadmov th1,#0fdh;串口波特率960011.0592mmov tl1,#0fdhmov scon,#50h;串口方式1: 8,n,1mov pcon,#00hmov th0,#low(65535-10000)mov tl0,#high(65535-10000)setb tr1setb tr0loop: lcall dswd ;調(diào)用讀出ds18b20溫度程序sjmp loop ; 讀出ds18b20溫度程序dswd:clr ealcall rstsnr

12、jnb f0,kend ;如果沒有應(yīng)答,返回主程序mov r0,#0cchlcall send_byte ;跳過rom匹配mov r0,#44h ;發(fā)出溫度轉(zhuǎn)換命令lcall send_bytesetb eamov p1,#00001111bmov 48h,#1 ;延時(shí)75ms以上準(zhǔn)備讀ss2: mov 49h,#255ss1: mov 4ah,#255ss0: djnz 4ah,ss0djnz 49h,ss1djnz 48h,ss2mov p1,#11111100bjnb f0,kendmov r0,#0cch ;跳過rom匹配lcall send_bytemov r0,#0beh ;發(fā)出讀

13、溫度命令lcall send_bytelcall read_bytemov wdlsb,alcall read_bytemov wdmsb,alcall trans12kend: setb earet;* ;溫度轉(zhuǎn)換程序(只取整數(shù)) ,30h=lsb,31h=msb;trans12:mov a,30h;hex to bcd convertanl a,#0f0hmov 3ah,amov a,31hanl a,#0fhorl a,3ahswap amov b,#10div abmov 43h,b div abmov 42h,bmov 41h,aorl a,#30h;bcd to ascii con

14、vertmov 50h,aorl a,#30hmov 51h,amov a,43horl a,#30hmov 52h,amov 53h,#20hacall send2pcret;*;發(fā)送給pcsend2pc:mov r1,#50hmov r2,#04hsndpc:mov sbuf,r1inc r1swt:jbc ti,chksjmp swtchk:djnz r2,sndpcret;*send_byte: ;發(fā)送一個(gè)字節(jié)程序mov a,r0mov r5,#8sen3: clr crrc ajc sen1lcall write_0sjmp sen2sen1: lcall write_1待添加的隱藏

15、文字內(nèi)容3sen2: djnz r5,sen3 ; 循環(huán)8次,寫一個(gè)字節(jié)retread_byte: ;讀一個(gè)字節(jié)程序mov r5,#8read1: lcall readrrc adjnz r5,read1 ; 循環(huán)8次,讀一個(gè)字節(jié)ret;復(fù)位程序,如果復(fù)位置位f0,沒有就復(fù)位f0rstsnr: setb datnopnopclr datmov r6,#250 ;主機(jī)發(fā)復(fù)位脈沖持續(xù)3s200=600sdjnz r6,$mov r6,#50djnz r6,$setb dat ;主機(jī)釋放總線,口線改為輸入mov r6,#15djnz r6,$call chck ;調(diào)用應(yīng)答檢查程序mov r6,#60

16、djnz r6,$setb datretchck: mov c,datjc rst0setb f0 ;檢測到信號,置位f0sjmp chck0rst0: clr f0 ;未準(zhǔn)備好f0復(fù)位chck0: retwrite_0: ;寫0mov r6,#30djnz r6,$setb datretwrite_1: ;寫1clr dat nopnopnopnopnopsetb datmov r6,#30djnz r6,$ret;讀一位數(shù)據(jù)程序read: setb dat ;先復(fù)位至少1us產(chǎn)生讀起始信號nopnopclr datnopnopsetb dat ;置位dat準(zhǔn)備接收數(shù)據(jù)nopnopnopnopnopnopnopmov c,datmov r6,#23djnz r6,$retend;

溫馨提示

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

評論

0/150

提交評論