首页 ADS1115程序代码

ADS1115程序代码

举报
开通vip

ADS1115程序代码ADS1115程序代码 ADS1115模块: #include #define uchar unsigned char #define uint unsigned int #define SCL_H P1OUT |= BIT0 #define SCL_L P1OUT &= ~BIT0 #define SDA_H P1OUT |= BIT1 #define SDA_L P1OUT &= ~BIT1 #define SDA_in P1DIR &= ~BIT1 //SDA改成输入模式 #define SDA_out...

ADS1115程序代码
ADS1115程序代码 ADS1115模块: #include #define uchar unsigned char #define uint unsigned int #define SCL_H P1OUT |= BIT0 #define SCL_L P1OUT &= ~BIT0 #define SDA_H P1OUT |= BIT1 #define SDA_L P1OUT &= ~BIT1 #define SDA_in P1DIR &= ~BIT1 //SDA改成输入模式 #define SDA_out P1DIR |= BIT1 //SDA变回输出模式 #define SDA_val P1IN&BIT1 //SDA的位值 #define TRUE 1 #define FALSE 0 void delay(void) { uchar i; for(i = 0;i < 15;i++) _NOP(); } /******************************************* 函数名称:start 功 能:完成IIC的起始条件操作 参 数:无 返回值 :无 ********************************************/ void start(void) { SCL_H; SDA_H; delay(); SDA_L; delay(); } /******************************************* 函数名称:stop 功 能:完成IIC的终止条件操作 参 数:无 返回值 :无 ********************************************/ void stop(void) { SDA_L; delay(); SCL_H;; delay(); } /******************************************* 函数名称:mack 功 能:完成IIC的主机应答操作 参 数:无 返回值 :无 ********************************************/ void mack(void) { SDA_L; _NOP(); _NOP(); SCL_H; delay(); SCL_L; _NOP();_NOP(); SDA_H; delay(); } /******************************************* 函数名称:mnack 功 能:完成IIC的主机无应答操作 参 数:无 返回值 :无 ********************************************/ void mnack(void) { SDA_H; _NOP(); _NOP(); SCL_H; delay(); SCL_L; _NOP(); _NOP(); SDA_L; delay(); } /**********检查应答信号函数******************/ /*如果返回值为1则证明有应答信号,反之没有*/ /******************************************* 函数名称:check 功 能:检查从机的应答操作 参 数:无 返回值 :从机是否有应答:1--有,0--无 ********************************************/ void ack() { uchar i; i=0; SDA_in; SCL_H; delay(); while((P1IN&BIT1)&&(i<250)) i++; SDA_out; SCL_L; delay(); } /******************************************* 函数名称:write1 功 能:向IIC总线发送一个1 参 数:无 返回值 :无 ********************************************/ void write1(void) { SDA_H; delay(); SCL_H; delay(); SCL_L; delay(); } /******************************************* 函数名称:write0 功 能:向IIC总线发送一个0 参 数:无 返回值 :无 ********************************************/ void write0(void) { SDA_L; delay(); SCL_H; delay(); SCL_L; delay(); } /******************************************* 函数名称:write1byte 功 能:向IIC总线发送一个字节的数据 参 数:wdata--发送的数据 返回值 :无 ********************************************/ void write1byte(uchar wdata) { uchar i; for(i = 8;i > 0;i--) { if(wdata & 0x80) write1(); else write0(); wdata <<= 1; } SDA_H; _NOP(); } /******************************************* 函数名称:read1byte 功 能:从IIC总线读取一个字节 参 数:无 返回值 :读取的数据 ********************************************/ uchar read1byte(void) { uchar rdata = 0x00,i; uchar flag; for(i = 0;i < 8;i++) { SDA_H; SCL_H; SDA_in; flag = SDA_val; rdata <<= 1; if(flag) rdata |= 0x01; SDA_out; SCL_L; } } 显示模块: #include #include"lcd.h" #include"iic.h" #include"math.h" void Send(unsigned char type,unsigned char transdata); void Ini_Lcd(void); void Clear_GDRAM(void); void Disp_HZ(unsigned char addr,unsigned char * pt,unsigned char num); void delay_Nms(unsigned int n); void delay_Nus(unsigned int n); void delay_1ms(void); #define CPU_F ((double)8000000) #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) //延时uS #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) //延时mS #define uchar unsigned char #define uint unsigned int #define address 0x90 #define config 0x01 #define conversion 0x00 #define Lsiwei 0xE3 #define channel_0 0 // 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示选择通道0 #define channel_1 1 //表示选择通道1 #define channel_2 2 //表示选择通道2 #define channel_3 3 //表示选择通道2 uchar jieguo[5]; uchar dianya[3]; void Confige1115(uchar channel) { uchar a_channel; switch (channel) { case 0:a_channel=0xC0;break; case 1:a_channel=0xD0;break; case 2:a_channel=0xE0;break; case 3:a_channel=0xF0;break; default: break; } start(); write1byte(address); ack(); write1byte(config); ack(); write1byte(a_channel); ack(); write1byte(Lsiwei); ack(); stop(); } uint read1115() { uchar result_l,result_h; uint result; start(); write1byte(address); ack(); write1byte(conversion); ack(); stop(); delay_ms(5); start(); write1byte(address+1); ack(); result_h=read1byte(); ack(); result_l=read1byte(); ack(); stop(); result=result_h*256+result_l; return result; } uint go_1115(uchar temp) { uint result_gd; Confige1115(temp); delay_ms(5); result_gd=read1115(); delay_ms(5); return result_gd; } void main() { uchar i;uint result=0; WDTCTL= WDTPW + WDTHOLD; //关闭看门狗 BCSCTL1 &= ~XT2OFF; //基础时钟控制寄存器BCSCTL1的第7位置0,使XT2启动 do { IFG1 &= ~OFIFG; for(i= 0xff; i>0; i--); } while ((IFG1 & OFIFG)!=0); BCSCTL2 |= SELS; P1DIR=0xff; SCL_H; SDA_H; SDA_out; Ini_Lcd(); while(1) { result=go_1115(channel_0); jieguo[0]=(result/10000)+0x30; jieguo[1]=(result/1000%10)+0x30; jieguo[2]=(result/100%10)+0x30; jieguo[3]=(result/10%10)+0x30; jieguo[4]=(result%10)+0x30; Send(1,jieguo[0]); Send(1,jieguo[1]); Send(1,jieguo[2]); Send(1,jieguo[3]); Send(1,jieguo[4]); } } 主函数: #include #include"lcd.h" #include"iic.h" #include"math.h" #define CPU_F ((double)8000000) #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) //延时uS #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) //延时mS #define uchar unsigned char #define uint unsigned int #define address 0x90 #define config 0x01 #define conversion 0x00 #define Lsiwei 0xE3 #define channel_0 0 //表示选择通道0 #define channel_1 1 //表示选择通道1 #define channel_2 2 //表示选择通道2 #define channel_3 3 //表示选择通道2 uchar jieguo[5]; uchar dianya[3]; void Confige1115(uchar channel) { uchar a_channel; switch (channel) { case 0:a_channel=0xC0;break; case 1:a_channel=0xD0;break; case 2:a_channel=0xE0;break; case 3:a_channel=0xF0;break; default: break; } start(); write1byte(address); ack(); write1byte(config); ack(); write1byte(a_channel); ack(); write1byte(Lsiwei); ack(); stop(); } uint read1115() { uchar result_l,result_h; uint result; start(); write1byte(address); ack(); write1byte(conversion); ack(); stop(); delay_ms(5); start(); write1byte(address+1); ack(); result_h=read1byte(); ack(); result_l=read1byte(); ack(); stop(); result=result_h*256+result_l; return result; } uint go_1115(uchar temp) { uint result_gd; Confige1115(temp); delay_ms(5); result_gd=read1115(); delay_ms(5); return result_gd; } void main() { uchar i;uint result=0; WDTCTL= WDTPW + WDTHOLD; //关闭看门狗 BCSCTL1 &= ~XT2OFF; //基础时钟控制寄存器BCSCTL1的第7位置0,使XT2启动 do { IFG1 &= ~OFIFG; for(i= 0xff; i>0; i--); } while ((IFG1 & OFIFG)!=0); BCSCTL2 |= SELS; P1DIR=0xff; SCL_H; SDA_H; SDA_out; Ini_Lcd(); while(1) { result=go_1115(channel_0); jieguo[0]=(result/10000)+0x30; jieguo[1]=(result/1000%10)+0x30; jieguo[2]=(result/100%10)+0x30; jieguo[3]=(result/10%10)+0x30; jieguo[4]=(result%10)+0x30; Send(1,jieguo[0]); Send(1,jieguo[1]); Send(1,jieguo[2]); Send(1,jieguo[3]); Send(1,jieguo[4]); } }
本文档为【ADS1115程序代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_212655
暂无简介~
格式:doc
大小:34KB
软件:Word
页数:15
分类:互联网
上传时间:2017-09-25
浏览量:37