电子设计与单片机应用实训教程代码第十六章_第1页
电子设计与单片机应用实训教程代码第十六章_第2页
电子设计与单片机应用实训教程代码第十六章_第3页
电子设计与单片机应用实训教程代码第十六章_第4页
电子设计与单片机应用实训教程代码第十六章_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1:温度传感器模块(单片机):脚unsignedchartempH=0;}11数据传输线接单片机的相应的引//测量到的温度的整数部分//DQ先置高//延时(>480us)//等待(15~60us)/*用X的值来判断初始化有没有成功,18B20存在的话X=0,否则X=1*//*主机数据线先从高拉至低电平1us以上,再使数据线升为高电平,从而产生读信号/*每个读周期最短的持续时间为60us,各个读周期之间必须有1us以上的高电平恢复期*/11一个字节有8位voidWriteOneChar(unsignedchardat)//高电高电{/*数据线从高电平拉至低电平,产生写起始信号。15us之内将所需写的位送到数据线上*//*在15~60us之间对数据线进行采样,如果是电平就写1,低写0发生。*//*在开始另一个写周期前必须有1us以上的高{//读温度寄存器(两个值为温度低位和高//读出温度的低位LSB//最高位为1时温度是负//补码转换,取反加一xiaoshul=(tempL&Ox0f)*iaoshu2=(tempL&OxOf)*100/16/xiaoshu=xiaoshul*10+xia{小数第二位2:温湿度传感器模块(单片机):typedefunsignedcharU8;typedefsignedcharS8;typedefunsignedintU16;typedefunsignedlongU32;typedefsignedlong#defineucharunsigned#defineuintunsignedintU8U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8chU8T_data_H_temp,U8T_dataLtemp,U8Rwhile((!P2_0)&&U8FLAGwhile((P2_0)&&U8FLAG}/1----校验8位==U8checkdata-----*///判断数据位是0还是1则数据位为1*///rof//总线由上拉电阻拉高主机延时20us/*判断从机是否有低电平响应信号如不响应while((!P2_0)&&U8FLAG++);//判断从机发出80us的低电平响应信号是否while((P2_0)&&U8FLAG++);入U8RH_data_H_temp=U8comU8RH_dataLtemp=U8comU8T_dataLtemp=U8comU8checkdata_temp=U8comU8temp=(U8T_data_H_temp+U8TU8RH_data_L=U8RH_dataL}U8T_data_L=U8T_dataLU8checkdata=U8checkdata_/*系统初始化*/voidRSINTROinterrupt4using2{}}//工作方式1,波特率9600bps,允许接收}3:雨滴传感器模块(单片机):#include<reg52.h>率}{{}11允许定时器T1的中断1/定时器T1,在方式2中断产生波特11方式1由定时器控制//波特率设置为9600//开定时器T1运行控制位4:CO₂检测传感器模块(单片机):(1)TTL输出程序#defineucharunsignedchar//宏定义无符号字符型入端//定义单片机P1口的第1位(即P1.0)为指示端{{//当浓度高于设定值时,执行条件函数//确定浓度高于设定值时,执行条件函数}(2)模拟量程序#defineucharunsignedchar1/宏定义无符号字符型#defineuintunsignedint//宏定义无符号整型codeucharseg7code[10]={Oxc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x//显示段码数码管字跟sbitST=P3^0;//A/D启动转换信号sbitOE=P3^1;//数据输出sbitEOC=P3^2;/1A/D转换结束信号voidtimerO()interrupt1//定时器0工作方式1//定时器中断0//脉冲信号初始值为0//电压显示不能超过5V//数码管显示的数据值,其中20为采集数据的毫安值5:触摸传感器模块(单片机):#defineucharunsignedchar//宏定义无符号字符型#defineuintunsignedint//宏定义无符号整型sbitLED=P1^0;//定义单片机P1口的第1位(即P1.0)为指示端入端//当用手触摸时,执行条件函数//确定用手触摸时,执行条件函数6:超声波传感器模块(单片机):unsignedintdistance=0;//距离单位为厘米1/定时器1定时值高八位1/定时器1定时值低八位//定时器0计数值unsignedcharLED_num[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07bitsuccess=0;//回波接收成功标志位时模式//定时器0设定为16位定1/定时器0中断允许J1外部中断0允许11外部中断0下降沿触发voidtimerOint()inte生{的/*50ms*4=0.2s定时,每0.2s产一次超声波,测一次距离*/11判断是否到达4次定时,即//定时产生大约50us脉冲/*定时器1开始计时,测量回波宽度,即超声波来回波动的时间*/1/定时器0初值重填装voidexint0)interrupt0{7:霍尔传感器模块(单片机):voidInitial_com(void)//串口初始化函数率11外部中断0检测回波的下降沿//读取定时器1定时值//定时器1定时值清零//回波接受成功标志位置111允许定时器T1的中断//定时器T1,在方式2中断产生波特/1方式1由定时器控制//波特率设置为9600//开定时器T1运行控制位8:ADXL345加速度传感器模块(单片机):#defineDataPortP2/sbitSCL=PO^4;根据ALTADDRESS地址引脚不同修改0xA6,接电源时地址为0x3A*/typedefunsignedcharBYTE;typedefunsignedshortWORD;voiddelay(unsignedintvoidWriteDataLCM(uchardataW);voidDisplayOneChar(ucharX,ucharY,ucharDData);voidSingle_Write_ADXL345(ucharREG_Address,ucharucharSingle_Read_ADXL345(ucharREG_AddrvoidADXL345_WritePavoidconversion(uinttemp_data)wan=temp_data/10000+temp_data=temp_data%temp_data=temp_data{LCM_EN=1;_nop_();_nopLCM_RS=0;LCM_RW=0;_nvoidWriteDataLCM(uchardataW)/*单个读取内部寄LCM_EN=1;_nop_();_nop_();LvoidDisplayOneChar(ucharX,ucharY,ucharDData)_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();voidADXL345_SendACK(bitack)d{ADXL345_SendByte(BYTEdat)//向IC总线发送一个字节数据}数据voidSingle_Write_ADXL345(ucharREG_Address,ucharREG_data)//单字节写入{ADXL345_SendByte(SlaveAddrADXL345_SendByte(REG_AddrADXL345_SendByte(REG_d11发送设备地址+写信号ADXL345_SendByte(SlaveAddrADXL345_SendByte(REG_AddrADXL345_SendByte(SlaveAddresREG_data=ADXL345_RecvvoidMultiple_read_ADXL3{ADXL345_SendByte(SlaveAddrADXL345_SendByte(0xADXL345_SendByte(SlaveAddres{BUF[i]=ADXL345_Recv11发送设备地址+写信号11发送存储单元地址,从0开始1/发送设备地址+读信号度数据,地址范围0x32~0x37*/11发送设备地址+写信号11发送设备地址+读信号//连续读取6个地址数据//存储0x32地址中的数据if(i==5)NOACK}temp=(float)dis_datDisplayOneChar(11,0}//最后一个数据需要回{elseDisplayOneChatemp=(float)dis_dat{DisplayOneChar(11,111第1行,第0列显示y11第0行,第10列显示Zdevid=Single_Read_ADXL//读出的数据为OXE5,正确//连续读出数据,存在BUF中9:地磁传感器模块(单片机):#defineucharunsigned址typedefunsignedcharBYTE;typedefunsignedshortWORD;/1使用的端口,请按照以下接线//LCD1602数据端口//IC时钟引脚定义//IC数据引脚定义//LCD1602命令端口//LCD1602命令端口//LCD1602命令端口1/定义器件在IC总线中的从地1/初始化5883voidWriteDataLCM(uchardataW);voidDisplayOneChar(ucharX,ucharY,ucharDData);voidconversion(uinttemp_data);voidSingle_Write_HMC5883(ucharREG_Address,ucharREG_data);//单个写入ucharSingle_Read_HMC5883(ucharREG_Address);据voidMultiple_Read_HMvoidHMC5883_SendACK(bitvoidHMC5883_SendByte(BYTEvoidHMC5883_ReadPavoidconversion(uinttemp_data)wan=temp_data/10000+temp_data=temp_data%temp_data=temp_databai=temp_data/100+0x30;LCM_EN=1;_nop_();_nopLCM_EN=1;_nop_();_nop_();LvoidWriteDataLCM(uchardataW)LCM_EN=1;_nop_();_nop_();LvoidDisplayOneChar(ucharX,ucharY,ucharDData)_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();voidHMC5883_Stop()voidHMC5883_SendACK(bitack)voidHMC5883_SendByte(BYTEdat)数据字节数据数据.1/8位计数器voidSingle_Write_HMC5883(ucharREG_HMC5883_SendByte(SlaveAd11发送设备地址+写信号HMC5883_SendByte(R

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论