基于MSP430的TSL2561光强度传感器的程序.wps_第1页
基于MSP430的TSL2561光强度传感器的程序.wps_第2页
基于MSP430的TSL2561光强度传感器的程序.wps_第3页
基于MSP430的TSL2561光强度传感器的程序.wps_第4页
基于MSP430的TSL2561光强度传感器的程序.wps_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

#include #include /*/ #define flash_address 0x01000 /宏定义信息flash 存储器 b 段地址 /= =/ #define sda 0x04 / sda on p3.2 #define scl 0x08 / scl on p3.3 #define rde 0x40 / rde on p3.5 /= = / #define tsl2561_addr 0x52 /0x298; data1=4; send_485(); break; default: ; break; newrxd=0; /* / uart0 rx isr will for exit from lpm3 in mainloop #pragma vector=uart0rx_vector _interrupt void usart0_rx (void) /_bic_sr_irq(lpm3_bits); / clear lpm3 bits from 0(sr) /p2out = 0x20; / toggle p1.0 using exclusive-or buffrs=rxbuf0; if(buffrs=0xa5) /收到结束符号 rxdnow=0; /关接收状态 newrxd=1; /收到新的数据包 if(rxdnow=1) /数据包结收中 rxdatatemprxdnum=buffrs; /接收到缓冲区 rxdnum+; /接受数加 1 if(buffrs=0xaa) /数据包开始符 rxdnum=0; /接收数清零 rxdnow=1; /在接受数据包状态 void send_485(void) unsigned char g=0; p3out |= rde; delay(600); txbuf0 =0xaa; / rxbuf0 to txbuf0 for (g=0;g 0); /= = void start(void)/iic 开始 p3out /设定 p3.2 和p3.3 为低 p3dir /通过选择方向来实现高低电平输出(上拉),选通则输出低,不选通则 为高 delay(10); p3dir /set high level delay(10); p3dir |= sda; /先拉低sda。(在scl 为高的时候,拉低 sda) delay(10); p3dir |= scl; /拉低scl delay(10); /= = void stop(void)/iic 结束 p3dir |= sda;/拉低sda delay(10); p3dir /拉高scl delay(10); p3dir /在scl 为高的时候,拉低 sda,表示结束 delay(10); /p3dir |= scl; /= = void send_byte(unsigned char byte)/发送 8位数据或命令 int i; for (i=0;i1; /= = /*void i2c_write(unsigned char addr,unsigned char data) while (1) start(); delay(10); send_byte(0x90);/write a byte :slave device/ad7746 写为 0x90 ack(); if (ack_flag) continue; delay(10); send_byte(addr);/ write a byte :sub address ack(); if (ack_flag) continue; delay(10); send_byte(data);/ write a byte :sub address ack(); if(!(ack_flag) break; stop(); /= = void i2c_read(unsigned char addr) while(1) start(); send_byte(0x90);/write a byte :slave device/ad7746 写为 0x90 ack(); if(ack_flag)/若不应答(ack_flag=1)继续发(跳回上面)。不执行下面的语句 continue; send_byte(addr);/写要查询的地址 ack(); if(ack_flag)/若不应答(ack_flag=1)继续发(跳回上面)。不执行下面的语句 continue; start(); send_byte(0x91);/write a byte :slave device/ad7746 读为 0x91 ack(); if(ack_flag)/若不应答(ack_flag=1)继续发(跳回上面)。不执行下面的语句 continue; receive_byte();/读取 noack(); stop(); break; */ /= = void powertsl2561(unsigned char state)/ state=0x03 开,state=0x00 关 while(1) start(); delay(10); send_byte(tsl2561_addr|tsl2561_wr);/write a byte :slave device ack(); if(ack_flag)/若不应答(ack_flag=1)继续发(跳回上面)。不执行下面的语句 continue; delay(10); send_byte(0x80|0x00); /写命令 ack(); if(ack_flag)/若不应答(ack_flag=1)继续发(跳回上面)。不执行下面的语句 continue; delay(10); send_byte(state);/ write a byte :sub address ack(); if(!(ack_flag) break; stop(); /= = void readwordtsl2561(unsigned char channel)/channel=2 选 1通道,channel=0 选 0通道 while(1) start(); send_byte(tsl2561_addr|tsl2561_wr);/write a byte :slave device/ad7746 写为 0x90 ack(); if(ack_flag)/若不应答(ack_flag=1)继续发(跳回上面)。不执行下面的语句 continue; send_byte(0x8c+channel);/写要查询的地址 ack(); if(ack_flag)/若不应答(ack_flag=1)继续发(跳回上面)。不执行下面的语句 continue; start(); send_byte(tsl2561_addr|tsl2561_rd);/write a byte :slave device/ ack(); if(ack_flag)/若不应答(ack_flag=1)继续发(跳回上面)。不执行下面的语句 continue; receive_byte();/读取 noack(); stop(); break; void luxcalculation(void) ch1ch0=(float)channel1value)

温馨提示

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

评论

0/150

提交评论