單片機溫度傳感器及無線傳輸資料_第1頁
單片機溫度傳感器及無線傳輸資料_第2頁
單片機溫度傳感器及無線傳輸資料_第3頁
單片機溫度傳感器及無線傳輸資料_第4頁
單片機溫度傳感器及無線傳輸資料_第5頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、通信與測控系統課程設計報告、課程設計目的及要求 通過一個具體的項目實例,熟悉項目開發的流程,學習與通信相關的 測控系統開發,包括基本知識、技術、技巧鍛煉硬件編程能力(C51),積累編程經驗,形成代碼風格,理解軟件 層次結構常用外圍器件(接口)的操作、驅動一、實習主要任務采集遠端溫度信息,無線收集,上位機顯示信息硬件配置:51系統板、DS18B20無線數傳模塊IA4421、數碼管編程、調試,完成作品二、硬件電路的原理框圖C; 45 2| EM圖一、AT89s51、數碼管硬件原理圖圖二、IA4421硬件原理圖TO-r圖三、DS18B20硬件原理圖最終實現的功能:溫度傳感器 DSlSB2(k無觸發.

2、IA442L1、讀主程序流程圖三、軟件設計及原理主程序代碼:#in clude #i nclude #in clude #i ncludevi ntri ns.h #in clude #in cludevxia nshi.h #defi ne uint un sig ned int #defi ne uchar un sig ned charunsigned char m;unsigned char n;void zhua nhua n();void delay_led( uint z)_ uint x,y;for(x=z;x0;x_) for(y=110;y0;y-);uint aa;uch

3、ar wei_1 ,wei_25wei_3,v,wei_4,wei_5,wei_6;uint shuju;/得到的溫度值uchar temp2=0,0; 存放DS18B20的溫度寄存器值 uint value = 0;sbit DQ=P3A3; 數據線void ReadSerialNumber(void);uchar sn 1 ,sn2,sn3,sn4,sn5,sn6,sn75sn8J 存放 DS18B20 的 64 位序列 號void ow_reset(void);void tmstart (void);void ReadSerialNumber(void);void Read_Temper

4、ature(void);void write_byte(char); uint read_byte(void);void delay_18B20(ui nt);/void baoji ng();/* 主函 *void mai n() m=0;/in ited();初始化子程序tmstart ();delay_18B20(50);/* 等待轉換結束/while(1) m+;Read_Temperature();delay_18B20(50);tmstart();delay_18B20(50);/* 等待轉換結束/zhua nhua n();ia4421();n=wei_4;wei_4=4;txd

5、 ata4=wei_5| we i_4;if(m=50)m=O;UART_I nit();P 仁 Oxfc;txdata0=0x2d;txdata1=0xd4;txdata2=0xfa;txdata3=0x01;ia442xi ni t();spirevtwobyte();spise ndcomma nd(0x8288); txregframe();P2=0xff;PO=table n;P2_4=0; delay1s();P2_4=1;P0=tablewei_5;P2_5=0; delay1s();P2_5=1;P0=0x80;P2_6=0; delay1s();P2_6=1;P0=0x39;

6、P2_7=0; delay1s();P2_7=1;*八轉*void zhua nhua n() aa=shuju; wei_1=aa/100000;wei_2=aa/10000%10; wei_3=aa/1000%100%10;wei_4=aa/100%1000%100%10;wei_5=aa/10%10000%1000%100%10;wei_6=aa/1 %100000%10000%1000%100%10;/*延時函數 =18b20 程序=*/ void delay_18B20(ui nt sec on ds)延時_for(;sec on ds0;sec on ds-);18b20程序*/=

7、復位=void ow_reset(void)(uchar prese nee;DQ = 0;/pull DQ line lowdelay_18B20(44); 至少 480 微秒 leave it low for 501 usDQ = 1;/ allow line to return high?delay_18B20 (3);/ wait for prese nce18b20 36usprese nee = DQ; / get prese nee sig nal / 0= DS18B20 ready, 1= busy if(!prese nce)P1_0=0;delay_18B20(12);/

8、 wait for end of timeslot_ /=從總線上讀取一個字節=uint read_byte(void)_ uchar i;for (i=8;i0;i-)(value=1;DQ = 0;/ pull DQ low to start timeslot_nop_() ;_nop_() ;_nop_() ;_nop_();DQ = 1;/ then return highif(DQ)( value|=0x80;)delay_18B20; wait for rest of timeslotretur n( value);=向 18B20 寫一個字節=void write_byte(ch

9、ar val)_ uchar ij; for (i=8; / writes byte, one bit at a timei0; i-)(DQ = 0;/ pull DQ low to start timeslotj+;/* 延時 4us*/DQ = val&0x01;delay_18B20(8);/ hold value for remai nder of timeslotDQ= 1;j+; val=1;/=+賣取溫度=void Read_Temperature(void)_ int kJ;int temple;/*存放讀取的溫度值將其除以16即為得到的值/ow_reset();k+; 延時

10、 4uswrite_byte(OxCC); Sk_nop_();ip ROMk+;/ 延時 4uswrite_byte(OxBE); / read registerk+;k+;/ 延時 8ustempO=read_byte(); 讀取低字節temp1=read_byte(); 讀取高字節/if(!(temp0&0x80)/*當低位寄存器第八位為0時*/ /i=temp1;i=8;/*把b放到高八位上去*/i|=temp0;/*將a放到底八位上去*/i&=0x07ff;if (temp1&0x08)temple=i+1;如果為負溫則去除其補碼/ FWD=0;/表示溫度為負數/elsetemple

11、=i;/FWD=1;/*表示溫度為正數7 temple=temp1 *0x100+temp0;shuju=temple*10/16;以下是讀取器件序列號的子程序,需要讀取序列時可在程序中調用;調用時確保總線中只有一只器件,若有多個器件時則讀取出來的號碼無效;將讀取出來的序列號填到前面的數組中即可使用;平時可以將此子程序刪除以節約空間。IIIIIIIIIIIIIIIIIIIIIIIIII 讀取器件序列號子程序 IIIIIIIIIIIIIIIIIIIIIIIIIIII voidow_reset(); 復位delay8B20;延時write_byte(0x33); 發送讀序列號子程序sn 1=rea

12、d_byte(); 讀取第一個序列號,應為sn 2=read_byte(); 讀取第二個序列號,應為sn 3=read_byte();/sn4=read_byte();/sn 5=read_byte();/sn 6=read_byte();/sn 7=read_byte();/sn 8=read_byte();ReadSerialNumber(void)void tmstart (void) 16H10H;ow_reset(); / 復位 delay_18B20;延時/ ReadSerialNumber();write_byte(OxCC);跳過序列號命令,對所有器件有效write_byte(

13、0x44); 發轉換命令 44H,)/*void=初始化= =4艮警=/ baojin g()if(aa=250) FM=O;else FM=1;2、溫度傳感器DS18B20功能簡介:美國DALLAS半導體公司的數字化溫度傳感器DS18B20是世界上第一片 支持“一線總線”接口的溫度傳感器。一線總線獨特而且經濟的特點,使用戶可輕松 地組建傳感器網絡,為測量系統的構建引入全新概念。現在,新一代的DS18B20體 積更小、更經濟、更靈活。DS18B2055c+125C。10C+8505C。現場溫度直接以“一線總線”的數字方式傳輸,大大提高了系統的抗干擾性。 工作原理:DS18B20采用串行單總線,

14、單總線即只有一根數據線,系統中的數據交 換、控制都由這根線完成。設備(主機或從機)通過一個漏極開路或三態端口連至該 數據線,以允許設備在不發送數據時能夠釋放總線,而讓其他設備使用總線。單總線通常要求外接一個約為4.7k 其狀態為高電平。主機和從機之間的通信可通過3個步驟完成,分別為初始化One-Wire器件、識別One-Wire器件和交換數據。由于它們是主從結構,只有主機呼 叫從機時,從機才能應答,因此主機訪問One-Wire器件都必須嚴格遵循單總線命令序列,即初始化、ROM命令、功能命令。如果出現序列混亂,One-Wire器 件將不響應主機(搜索ROM命令、報警搜索命令除外)。程序流程圖部分

15、程序:/*讀取ds18b20當前溫度un sig ned char ReadTemperature(void) unsigned char tt2;In it_DS18B20();Write On eChar(OxCC);跳過讀序號列號的操作WriteOneChar(Ox4E); 寫入“寫暫存器”命令修改TH和TL和分辯率配置寄存器先寫TH,再寫TL,最后寫配置寄存器WriteO neChar(TH);寫入想設定的溫度報警上限WriteO neChar(TL);寫入想設定的溫度報警下限Write On eChar(RS);/ 寫配置寄存器,格式為 0 R1 R0 1,1 1 1 1 R1R0=

16、00分辨率婁9位,R1R0=11分辨率為12位 delay_18B20(80);/ this message is wery imports ntIn it_DS18B20();Write On eChar(OxCC);跳過讀序號列號的操作Write On eChar(0x44); / 啟動溫度轉換delay_18B20(80);/ this message is wery imports ntIn it_DS18B20();Write On eChar(OxCC); 跳過讀序列號的操作Write On eChar(OxBE); 讀取溫度寄存器等(共可讀9個寄存器)前兩個 就是溫度delay_

17、18B20(80);tt0=Read On eChar();讀取溫度值低位tt1=ReadO neChar();讀取溫度值高位T=(tt0&0xf0)4)|(tt1&0x0f)4);return(T);)3、無線數傳模塊IA4421功能簡介:IA4421是全集成的一顆單晶片低功耗,多頻道的FSK收發器,在無須申請注冊的433M、868M、915M頻段的設計應用完全符合FCC和ETSI認證相關規定。IA4421收發器是EZradi。產品線的一部分。是一個很有彈性低 成本、 高集成度在生產中無需統調的產品。內部集成包括有高頻功率放大器(PA)低噪聲放大 器(LNA )、I/Q轉換混頻器,基帶濾波器,放大器、I/Q解調器。所需的RF功能都集 成。僅需要一個晶振和幾顆退藕電容。工作原理:IA4421采用SPI總線協議,SPI接口是Motorola首先提出的全雙工 同步 串行外圍接口,采用主從模式(Master Slave)架構;支持多slave模式應用,一般僅支 持單Master。時鐘由Master控制,在時鐘移位脈沖下

溫馨提示

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

評論

0/150

提交評論