版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、成績 電子測量與系統(tǒng)課程設計報告題 目: 遠程智能測溫控制系統(tǒng) 姓 名: 學 號: 班 級: 07電信 專 業(yè):電 子 信 息 科 學 與 技 術信電學院 2010年12月20日目錄一、實驗內容.21、設計內容2、設計要求二、實驗原理.3三、實驗器材5四、實驗框圖.6五、實驗電路圖.11六、實驗程序.12七、參考文獻21八、總結.22一、實驗內容1、設計內容 1)完成溫度的采集。 2)用單工方式傳送數據實現兩機通信。 3)完成雙機通信的設計制作及仿真。2、設計要求1)能本機顯示溫度采集的數值。2)能向對方機發(fā)送采集的溫度的值。3)能接收對方機發(fā)送的數并顯示。4)發(fā)送數及按鍵用查詢實現。5)用串
2、行口的單工方式通信。6)用按鍵控制上下限并通過lcd顯示。7)溫度超過額定范圍則自動報警。二、實驗原理計算機與外界的信息交換稱為通信,常用的通信方式有兩種:并行通信和串行通信。51單片機用4個接口與外界進行數據輸入與數據輸出就是并行通信,并行通信的特點是傳輸信號的速度快,但所用的信號線較多,成本高,傳輸的距離較近。串行通信的特點是只用兩條信號線(一條信號線,再加一條地線作為信號回路)即可完成通信,成本低,傳輸的距離較遠。串行數據通信要解決兩個關鍵問題,一個是數據傳送,另一個是數據轉換。所謂數據傳送就是指數據以什么形式進行傳送。所謂數據轉換就是指單片機在接收數據時,如何把接收到的串行數據轉化為并
3、行數據,單片機在發(fā)送數據時,如何把并行數據轉換為串行數據進行發(fā)送。單片機的串行通信使用的是異步串行通信,所謂異步就是指發(fā)送端和接收端使用的不是同一個時鐘。異步串行通信通常以字符(或者字節(jié))為單位組成字符幀傳送。字符幀由發(fā)送端一幀一幀地傳送,接收端通過傳輸線一幀一幀地接收。51單片機的串行接口是一個全雙工的接口,它可以作為uart(通用異步接受和發(fā)送器)用,也可以作為同步移位寄存器用。51單片機串行接口的結構如下:(1)數據緩沖器(sbuf)接受或發(fā)送的數據都要先送到sbuf緩存。有兩個,一個緩存,另一個接受,用同一直接地址99h,發(fā)送時用指令將數據送到sbuf即可啟動發(fā)送;接收時用指令將sbu
4、f中接收到的數據取出。(2)串行控制寄存器(pcon)scon用于串行通信方式的選擇,收發(fā)控制及狀態(tài)指示,各位含義如下:sm0sm1sm2rentb8rb8tirism0,sm1:串行接口工作方式選擇位,這兩位組合成00,01,10,11對應于工作方式0、1、2、3。串行接口工作方式特點見下表sm0sm1工作方式功能波特率 0008位同步移位寄存器(用于i/o擴展)forc/1201110位異步串行通信(uart)可變(t1溢出率*2smod/32)10211位異步串行通信(uart)forc/64或forc/3211311位異步串行通信(uart)可變(t1溢出率*2smod/32)sm2:
5、多機通信控制位。ren:接收允許控制位。軟件置1允許接收;軟件置0禁止接收。tb8:方式2或3時,tb8為要發(fā)送的第9位數據,根據需要由軟件置1或清0。rb9:在方式2或3時,rb8位接收到的第9位數據,實際為主機發(fā)送的第9位數據tb8,使從機根據這一位來判斷主機發(fā)送的時呼叫地址還是要傳送的數據。ti:發(fā)送中斷標志。發(fā)送完一幀數據后由硬件自動置位,并申請中斷。必須要軟件清零后才能繼續(xù)發(fā)送。ri:接收中斷標志。接收完一幀數據后由硬件自動置位,并申請中斷。必須要軟件清零后才能繼續(xù)接收。(3)輸入移位寄存器接收的數據先串行進入輸入移位寄存器,8位數據全移入后,再并行送入接收sbuf中。(4)波特率發(fā)
6、生器波特率發(fā)生器用來控制串行通信的數據傳輸速率的,51系列單片機用定時器t1作為波特率發(fā)生器,t1設置在定時方式。波特率時用來表示串行通信數據傳輸快慢程度的物理量,定義為每秒鐘傳送的數據位數。(5)電源控制寄存器pcon其最高位為smod。(6)波特率計算當定時器t1工作在定時方式的時候,定時器t1溢出率=(t1計數率)/(產生溢出所需機器周期)。由于是定時方式,t1計數率= forc/12。產生溢出所需機器周期數=模m-計數初值x。18b20芯片的主要功能:1、基本功能(1)檢測兩點溫度(2)兩秒間隔循環(huán)顯示溫度2、主要技術參數測溫范圍:6到15 顯示精度:1顯示方法:lcd循環(huán)顯示ds18
7、b20有4個主要的數據部件: 64位激光rom。64位激光rom從高位到低位依次為8位crc、48位序列號和8位家族代碼(28h)組成。 溫度靈敏元件。 非易失性溫度報警觸發(fā)器th和tl。可通過軟件寫入用戶報警上下限值。三、實驗器材1、41鍵盤2、2個at89c513、2個lcd4、串口連接線5、一個ds18b20溫度傳感器6、一個蜂鳴器,兩個三極管模仿加熱和報警顯示四、實驗框圖 (1)發(fā)送端流程圖主程序開始從機是否回答bbh?程序初始化主機發(fā)送aahn主機發(fā)送數據,檢驗和輸出完成?n清除標志位(2)接收端流程圖主程序開始檢驗和相等?程序初始化接收數據,計算檢驗和n發(fā)送00h至主機接收完成?n
8、清除標志位發(fā)送ffh,重新接收顯示(3)lcd初始化流程圖:開始使用8位數據,顯示兩行,使用5*7的字型清屏字符不動,光標自動右移一格(0x06)開顯示,無光標退出返回lcd初始化流程圖(4)讀取溫度程序:ds18b20初始化發(fā)跳過rom命令發(fā)溫度讀取命令清dq準備發(fā)送延時1us以上讀一位數據延時15us釋放總線延時1545us2位是否讀完結束讀取ny開始讀取溫度程序(5)溫度顯示程序:開始取得18b20測得溫度數值將數值轉化為液字符型再將數值轉換為十進制調用報警程序字符給lcd顯示溫度值判斷溫度范圍是否越限是否結束顯示 溫度顯示程序五、實驗電路圖六、實驗程序發(fā)送端:#include#defi
9、ne uchar unsigned char#define uint unsigned intsbit dq=p17;/ds18b20與單片機接口sbit rs=p24;sbit rw=p25;sbit en=p26; sbit beep = p36; /蜂鳴器 sbit beep1 = p37;/小燈報警 sbit beep2 = p10; /加熱 sbit key0=p20; sbit key1=p21; sbit key2=p22; sbit key3=p23;unsigned char code str1=tl: th: ;unsigned char code str2=temp: ;
10、 uchar data disdata5;uint tvalue,a1,b1;/溫度值uchar tflag;/溫度符號正負標志static uchar key;uchar templ=6,temph=15; unsigned char tt19; unsigned char tt017=0x54,0x48,0x3a,0x2b,0x31,0x32,0x35,0x20,0x54,0x4c,0x3a,0x2b,0x31,0x32,0x34,0x43,0; void delay(uint n) /延時1us while (-n); void speak() / 蜂鳴器響一小聲 unsigned ch
11、ar i; for (i=0;i200;i+) /喇叭發(fā)聲的時間循環(huán),改變大小可以改變發(fā)聲時間長短 delay(90); /數決定發(fā)聲的頻率,估算值 beep=!beep; /beep取反 beep=1; delay(400) ;/喇叭停止工作,間歇的時間的長短,可改變 /*lcd1602程序*/ void delay1ms(unsigned int ms)/延時1毫秒(不夠精確的) unsigned int i,j; for(i=0;ims;i+) for(j=0;j0;i-) dq = 0; /給脈沖信號 dat=1; dq = 1; /給脈沖信號 if(dq) dat|=0x80; de
12、lay_18b20(10); return(dat); void ds1820wr(uchar wdata)/*寫數據*/ unsigned char i=0; for (i=8; i0; i-) dq = 0; dq = wdata&0x01; delay_18b20(10); dq = 1; wdata=1; read_temp()/*讀取溫度值并轉換*/ uchar a,b; ds1820rst(); ds1820wr(0xcc);/*跳過讀序列號*/ ds1820wr(0x44);/*啟動溫度轉換*/ ds1820rst(); ds1820wr(0xcc);/*跳過讀序列號*/ ds1
13、820wr(0xbe);/*讀取溫度*/ a1=ds1820rd(); b1=ds1820rd(); tvalue=b1; tvalue=8; tvalue=tvalue|a1; if(tvaluetemph) speak(); beep1=0; beep2=1; else if(ztempl) speak(); beep1=0; beep2=0; else beep1=1; tt11=(temph%100)/10+0x30;/分離出十位 tt12=(temph%100)%10+0x30; /分離出個位 tt13=(templ%100)/10+0x30;/分離出十位 tt14=(templ%1
14、00)%10+0x30; /分離出個位 wr_com(0x85); wr_dat(flagdat);/顯示符號位 wr_com(0x86); wr_dat(disdata0);/顯示百位 wr_com(0x87); wr_dat(disdata1);/顯示十位 wr_com(0x88); wr_dat(disdata2);/顯示個位 wr_com(0x89); wr_dat(0x2e);/顯示小數點 wr_com(0x8a); wr_dat(disdata3);/顯示小數位 wr_com(0xcb); wr_dat(tt11); wr_com(0xcc); wr_dat(tt12); wr_c
15、om(0xc3); wr_dat(tt13); wr_com(0xc4); wr_dat(tt14); key=tvalue; void send() /發(fā)送并接收 while(ti=0); ti=0; while(ri=0); ri=0; /*主程序*/ void main() tmod=0x20; th1=0xe6; /設定波特率 tl1=0xe6; tr1=1; scon=0x50; pcon=0x00; init_play();/初始化顯示 while(1) ea=0;ex0=0; if(p32=0) delay(255); if(p32=0) ea=1;ex0=1; read_tem
16、p();/讀取溫度 ds1820disp();/顯示 sbuf=key; send(); 接收端:#include/#include#define uchar unsigned char #define uint unsigned int uchar r; unsigned char code str1=disiner:zws;unsigned char code str2=temp: ;unsigned char bur; sbit dq=p17;/ds18b20與單片機接口sbit rs=p24;sbit rw=p25;sbit en=p26;uchar data disdata5; in
17、t i; uchar tflag;void receive() while(ri=0); r=sbuf; ri=0; sbuf=r;while(ti=0); ti=0; void delay(uint n) /延時1us while (-n); /*lcd1602程序*/ void delay1ms(unsigned int ms)/延時1毫秒(不夠精確的) unsigned int i,j; for(i=0;ims;i+) for(j=0;j100;j+); void wr_com(unsigned char com)/寫指令/ delay1ms(1); rs=0; rw=0; en=0;
18、p0=com; delay1ms(1); en=1; delay1ms(1); en=0; void wr_dat(unsigned char dat)/寫數據/ delay1ms(1); rs=1; rw=0; en=0; p0=dat; delay1ms(1); en=1; delay1ms(1); en=0; void display(unsigned char *p)/顯示/ while(*p!=0) wr_dat(*p); p+; delay1ms(1); void lcd_init()/初始化設置/delay1ms(15); wr_com(0x38);delay1ms(5); wr
19、_com(0x08);delay1ms(5); wr_com(0x01);delay1ms(5); wr_com(0x06);delay1ms(5); wr_com(0x0c);delay1ms(5); init_play()/初始化顯示 lcd_init(); wr_com(0x80); display(str2); wr_com(0xc0); display(str1); void ds1820disp() uchar flagdat; if(r0x0fff) tflag=0; else r=r+1; tflag=1; disdata1=r%1000/100+0x30;/百位數 disdata2=r%100/10+0x30;/個位數 disdata3=r%10+0x30;/小數位 if(disdata1=0x30) disdata1=0x20;/如果百位為0,不顯示 if(tflag=0) flagdat=0x20;/正溫度不顯示符號 else flagdat=0x2d;/負溫度顯示負號:- wr_com(0x85); wr_dat(flagdat);/顯示符號位 wr_com(0x87); wr_dat(disdata1);/顯示十位 wr_com(0x88); wr_dat(disdata2);/顯示個位 wr_co
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 福建省南平市邵武大竹中學高二英語聯考試卷含解析
- 《財務會計實務(業(yè)財融合版)》課件 項目五 銷售與收款
- 2025年江蘇蘇州市常熟市梅李智城產業(yè)發(fā)展有限公司招聘筆試參考題庫附帶答案詳解
- 2025年江西金控投資管理中心招聘筆試參考題庫含答案解析
- 2025年麗水蓮都區(qū)經濟商務局招聘筆試參考題庫含答案解析
- 2025年漳州環(huán)境集團有限公司招聘筆試參考題庫含答案解析
- 2025年中國移動中移金科校園招聘筆試參考題庫含答案解析
- 二零二五年度個人產權房屋買賣帶社區(qū)活動組織服務合同3篇
- 2024旅游業(yè)務運營與管理合同
- 毛概習題及答案
- 冬春季呼吸道傳染病防控
- 數學-2025年高考綜合改革適應性演練(八省聯考)
- 2024-2025學年安徽省六安市金安區(qū)三上數學期末調研試題含解析
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應用實踐指導材料之10:“5領導作用-5.4創(chuàng)新文化”(雷澤佳編制-2025B0)
- 2024年醫(yī)療器械經營質量管理規(guī)范培訓課件
- 2024年計算機二級WPS考試題庫380題(含答案)
- 法院傳票模板
- 企業(yè)價值圖(企業(yè)價值管理圖EVM)
- 水利施工風險管理責任落實表
- 化妝品原料名稱對照及用途
- 雙梁門式起重機計算書
評論
0/150
提交評論