ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:17.42KB ,
资源ID:20370137      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20370137.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(AM2305的测试程序Word文档下载推荐.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

AM2305的测试程序Word文档下载推荐.docx

1、 /收到起始标志位unsigned char Sensor_ErrorFlag; /读取传感器错误标志unsigned int Sys_CNT;unsigned int Tmp;unsigned char *String;/字符串定义#define S_Temp Temp:#define S_RH RH:#define S_CRCT Check: True#define S_CRCF Wrong#define S_Data Data: #define S_NotS Sensor Not Connected/*|* 功能: 延时 晶振为12M时 *|* t = 1 为 20us 然后成倍增加10

2、us左右 *|*/void Delay_N10us(unsigned char t) while(t-) _nop_(); 延时 晶振为12M时 *|* 延时大约 1ms *|*/ void Delay_N1ms(unsigned int t) unsigned int i; unsigned int j; for(j=t;j0;j-) for(i=124;ii-); /延时大约 1ms 初始化串口 *|void InitUART(void) unsigned int iTmpBaud; unsigned long lTmpBaud; iTmpBaud = 0; /首先选定定时器2作为波特率发

3、生器,16位定时器,自动装载 SCON = 0x50; /SM0 SM1 SM2 REN TB8 RB8 TI RI /0 1 0 1 0 0 0 0 PCON = 0x00; /PCON的地址是87H,这里SMOD =0 T2CON = 0x30; /TF2 EXF2 RCLK TCLK EXEN2 TR2 C(/T2) CP(/RL2) /0 0 1 1 0 0 0 0 T2MOD = 0x00; / / / / / / / T2OE DCEN /0 0 0 0 0 0 0 0 lTmpBaud = FOSC/BAUD; lTmpBaud /= 32; /12T-mode iTmpBaud

4、 = lTmpBaud & 0xFFFF; iTmpBaud = 65536 - iTmpBaud; RCAP2H = (iTmpBaud8) & 0x0FF; RCAP2L = iTmpBaud & RI = 0; /清除接收中断标志 REN = 1; /允许串行接收 ES = 1; /允许串行中断 TR2 = 1; /启动定时器1 EA=1;/开总中断 串口发送函数 *|void UARTSend(char UCHAR) SBUF=UCHAR; while(TI=0); TI=0; 串口中断函数 *|void UARTRead(void) interrupt 4 char temp; if

5、(RI) RI=0; temp = SBUF; /* 串口发送子函数 *|void UART_PutString(unsigned char *buf) while(*buf) UARTSend(*buf+);void UART_PutStringAndNum(unsigned char *buf ,unsigned int num) unsigned char a3,i; a3 = 0+num%10; a2 = .; a1 = +num/10%10; a0 = +num/100%10; UARTSend( ); for(i=0;i4;i+) UARTSend(ai);void UART_Pu

6、tStringAnd_Data(unsigned char *buf ,unsigned char *bufdata) unsigned char a2,i,j;5; a0 = bufdatai/16; a1 = bufdatai%16; for(j=0;j9) aj = (aj-10)+A else aj = aj+ UARTSend(aj); UARTSend( 串口发送传感器数据函数 *|void UARTSend_Nbyte(void) if(Sensor_AnswerFlag = 1) Sensor_Check = Sensor_Data0+Sensor_Data1+Sensor_D

7、ata2+Sensor_Data3; /校验成功 if(Sensor_Check =Sensor_Data4) String = S_RH;/ Tmp = Sensor_Data0*256+Sensor_Data1; UART_PutStringAndNum(String,Tmp); UARTSend( String = S_Temp;/ Tmp = Sensor_Data2*256+Sensor_Data3; String = S_CRCT; UART_PutString(String); else /校验失败 送上读到数据 String = S_Data; UART_PutStringAn

8、d_Data(String,Sensor_Data); String = S_CRCF; / 传感器未连接 String = S_NotS; / UART_PutString(String); UARTSend(0x0A);void Clear_Data (void) int i; Sensor_Datai = 0x00; /接收数据清零 读传感器发送的单个字节 *|unsigned char Read_SensorData(void) unsigned char i,cnt; unsigned char buffer,tmp; buffer = 0;8; cnt=0; while(!Sens

9、or_SDA) /检测上次低电平是否结束 if(+cnt = 300) break; /延时Min=26us Max50us 跳过数据0 的高电平 Delay_N10us(2); /延时30us /判断传感器发送数据位 tmp =0; if(Sensor_SDA) tmp = 1; cnt =0; while(Sensor_SDA) /等待高电平 结束 if(+cnt = 200) buffer 300) /防止进入死循环 Sensor_ErrorFlag = 1; return 0; /判断从机是否发出 80us 的高电平,如发出则进入数据接收状态 while(Sensor_SDA) / 数

10、据接收 传感器共发送40位数据 / 即5个字节 高位先送 5个字节分别为湿度高位 湿度低位 温度高位 温度低位 校验和 / 校验和为:湿度高位+湿度低位+温度高位+温度低位 Sensor_Datai = Read_SensorData(); else / 未收到传感器响应 return 1;void main(void) Sensor_SCL = 0; InitUART(); /初始串口发送函数 while(1) Clear_Data(); / 清除收到数据 Read_Sensor(); / 读取传感器数据 UARTSend_Nbyte(); / 串口发送读到传感器数据 Delay_N1ms(2000); / 延时 2S(两次读取间隔至少2S)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1