单片机温度传感器及无线传输资料

上传人:无*** 文档编号:32151629 上传时间:2021-10-13 格式:DOCX 页数:16 大小:450.29KB
返回 下载 相关 举报
单片机温度传感器及无线传输资料_第1页
第1页 / 共16页
单片机温度传感器及无线传输资料_第2页
第2页 / 共16页
单片机温度传感器及无线传输资料_第3页
第3页 / 共16页
点击查看更多>>
资源描述
通信与测控系统课程设计报告、课程设计目的及要求 通过一个具体的项目实例,熟悉项目开发的流程,学习与通信相关的 测控系统开发,包括基本知识、技术、技巧锻炼硬件编程能力(C51),积累编程经验,形成代码风格,理解软件 层次结构常用外围器件(接口)的操作、驱动一、实习主要任务采集远端温度信息,无线收集,上位机显示信息硬件配置:51系统板、DS18B20无线数传模块IA4421、数码管编程、调试,完成作品二、硬件电路的原理框图C; 45 2| EM图一、AT89s51、数码管硬件原理图图二、IA4421硬件原理图TO-r图三、DS18B20硬件原理图最终实现的功能:温度传感器 DSlSB2(k无触发.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;uchar 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_Temperature(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 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;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程序*/=复位=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);/ 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(char 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+; 延时 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=i;/FWD=1;/*表示温度为正数7 temple=temp1 *0x100+temp0;shuju=temple*10/16;以下是读取器件序列号的子程序,需要读取序列时可在程序中调用;调用时确保总线中只有一只器件,若有多个器件时则读取出来的号码无效;将读取出来的序列号填到前面的数组中即可使用;平时可以将此子程序删除以节约空间。IIIIIIIIIIIIIIIIIIIIIIIIII 读取器件序列号子程序 IIIIIIIIIIIIIIIIIIIIIIIIIIII voidow_reset(); 复位delay8B20;延时write_byte(0x33); 发送读序列号子程序sn 1=read_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(0x44); 发转换命令 44H,)/*void=初始化= =4艮警=/ baojin g()if(aa=250) FM=O;else FM=1;2、温度传感器DS18B20功能简介:美国DALLAS半导体公司的数字化温度传感器DS18B20是世界上第一片 支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松 地组建传感器网络,为测量系统的构建引入全新概念。现在,新一代的DS18B20体 积更小、更经济、更灵活。DS18B2055c+125C。10C+8505C。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。 工作原理:DS18B20采用串行单总线,单总线即只有一根数据线,系统中的数据交 换、控制都由这根线完成。设备(主机或从机)通过一个漏极开路或三态端口连至该 数据线,以允许设备在不发送数据时能够释放总线,而让其他设备使用总线。单总线通常要求外接一个约为4.7k 其状态为高电平。主机和从机之间的通信可通过3个步骤完成,分别为初始化One-Wire器件、识别One-Wire器件和交换数据。由于它们是主从结构,只有主机呼 叫从机时,从机才能应答,因此主机访问One-Wire器件都必须严格遵循单总线命令序列,即初始化、ROM命令、功能命令。如果出现序列混乱,One-Wire器 件将不响应主机(搜索ROM命令、报警搜索命令除外)。程序流程图部分程序:/*读取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=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_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控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSB打rst) ; SPI接口有2根单向数据线,为全双工通信,目前应用中的数 据速率可达几Mbps的水平。SPI,是英语Serial Peripheral Interface的缩写,顾名思 义就是串行外围设备接口。SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布 局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成 了这种通信协议。SPI接口,共有4根信号线,分别是:设备选择线,时钟线,串行 输出数据线,串行输入数据线流程图:
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 临时分类 > 职业技能


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!