msp430写的ads1115代码.docx
- 文档编号:4382199
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:16
- 大小:17.22KB
msp430写的ads1115代码.docx
《msp430写的ads1115代码.docx》由会员分享,可在线阅读,更多相关《msp430写的ads1115代码.docx(16页珍藏版)》请在冰豆网上搜索。
msp430写的ads1115代码
第一个文件Main.c
#include
#include"12864.h"
#include"ads1115.h"
#include"math.h"
uintresult;
voiddisplay()
{
ucharjieguo[5];
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;
write_cmd(0x98);
write_dat(jieguo[0]);
write_dat(jieguo[1]);
write_dat(jieguo[2]);
write_dat(jieguo[3]);
write_dat(jieguo[4]);
}
voidmain()
{
result=0;
WDTCTL=WDTPW+WDTHOLD;//关闭看门狗
ad_init();
lcd_init();
while
(1)
{
if(Confige1115(channel_0))
{
result=read1115();
//result=read1115();
display();
}
}
}
第二个文件iic.h
#include
//typedefunsignedcharuchar;
//typedefunsignedintuint;
#defineSCL_HP2OUT|=BIT3
#defineSCL_LP2OUT&=~BIT3
#defineSDA_HP2OUT|=BIT4
#defineSDA_LP2OUT&=~BIT4
#defineSDA_inP2DIR&=~BIT4//SDA改成输入模式
#defineSDA_outP2DIR|=BIT4//SDA变回输出模式
#defineSDA_valP2IN&BIT4//SDA的位值
#defineTRUE1
#defineFALSE0
/*******************************************
函数名称:
delay
功能:
延时约15us的时间
参数:
无
返回值:
无
********************************************/
voiddelay(void)
{
uchari;
for(i=0;i<15;i++)
_NOP();
}
/*******************************************
函数名称:
start
功能:
完成IIC的起始条件操作
参数:
无
返回值:
无
********************************************/
voidstart(void)
{
SCL_H;
SDA_H;
delay();
SDA_L;
delay();
SCL_L;
delay();
}
/*******************************************
函数名称:
stop
功能:
完成IIC的终止条件操作
参数:
无
返回值:
无
********************************************/
voidstop(void)
{
SDA_L;
delay();
SCL_H;
delay();
SDA_H;
delay();
}
/*******************************************
函数名称:
mack
功能:
完成IIC的主机应答操作
参数:
无
返回值:
无
********************************************/
voidmack(void)
{
SDA_L;
_NOP();_NOP();
SCL_H;
delay();
SCL_L;
_NOP();_NOP();
SDA_H;
delay();
}
/*******************************************
函数名称:
mnack
功能:
完成IIC的主机无应答操作
参数:
无
返回值:
无
********************************************/
voidmnack(void)
{
SDA_H;
_NOP();_NOP();
SCL_H;
delay();
SCL_L;
_NOP();_NOP();
SDA_L;
delay();
}
/**********检查应答信号函数******************/
/*如果返回值为1则证明有应答信号,反之没有*/
/*******************************************
函数名称:
check
功能:
检查从机的应答操作
参数:
无
返回值:
从机是否有应答:
1--有,0--无
********************************************/
ucharcheck(void)
{
ucharslaveack;
SDA_H;
_NOP();_NOP();
SCL_H;
_NOP();_NOP();
SDA_in;
_NOP();_NOP();
slaveack=SDA_val;//读入SDA数值
SCL_L;
delay();
SDA_out;
if(slaveack)returnFALSE;
elsereturnTRUE;
}
/*******************************************
函数名称:
write1
功能:
向IIC总线发送一个1
参数:
无
返回值:
无
********************************************/
voidwrite1(void)
{
SDA_H;
delay();
SCL_H;
delay();
SCL_L;
delay();
}
/*******************************************
函数名称:
write0
功能:
向IIC总线发送一个0
参数:
无
返回值:
无
********************************************/
voidwrite0(void)
{
SDA_L;
delay();
SCL_H;
delay();
SCL_L;
delay();
}
/*******************************************
函数名称:
write1byte
功能:
向IIC总线发送一个字节的数据
参数:
wdata--发送的数据
返回值:
无
********************************************/
voidwrite1byte(ucharwdata)
{
uchari;
for(i=8;i>0;i--)
{
if(wdata&0x80)write1();
elsewrite0();
wdata<<=1;
}
SDA_H;
_NOP();
}
/*******************************************
函数名称:
read1byte
功能:
从IIC总线读取一个字节
参数:
无
返回值:
读取的数据
********************************************/
ucharread1byte(void)
{
ucharrdata=0x00,i;
ucharflag;
for(i=0;i<8;i++)
{
SDA_H;
delay();
SCL_H;
SDA_in;
delay();
flag=SDA_val;
rdata<<=1;
if(flag)rdata|=0x01;
SDA_out;
SCL_L;
delay();
}
returnrdata;
}
第三个文件ads1115.h
#include"IIC.h"
#defineaddress0x90
#defineconfig0x01
#defineconversion0x00
#defineLsiwei0xE3
#definechannel_00//表示选择通道0
#definechannel_11//表示选择通道1
#definechannel_22//表示选择通道2
#definechannel_33//表示选择通道2
/*******************************************
函数名称:
delay_10ms
功能:
延时约6ms,等待EEPROM完成内部写入
参数:
无
返回值:
无
********************************************/
voiddelay_10ms(void)
{
uinti=1000;
while(i--);
}
ucharConfige1115(ucharchannel)
{
uchara_channel;
switch(channel)
{
case0:
a_channel=0xC2;break;
case1:
a_channel=0xD2;break;
case2:
a_channel=0xE2;break;
case3:
a_channel=0xF2;break;
default:
break;
}
start();
write1byte(address);
if(check())
write1byte(config);
else
return0;
if(check())
write1byte(a_channel);
else
return0;
if(check())
write1byte(Lsiwei);
else
return0;
if(check())
stop();
else
return0;
delay_10ms();//等待EEPROM完成内部写入
return1;
}
uintread1115()
{
ucharresult_l,result_h;
uintresult;
start();
write1byte(address);
if(check())
write1byte(conversion);
else
return0;
if(check())
stop();
else
return0;
delay_10ms();
start();
write1byte(address+1);
if(check())
result_h=read1byte();
else
return0;
mack();
result_l=read1byte();
mnack();
stop();
result=result_h*256+result_l;
returnresult;
}
voidad_init()
{P2DIR|=0x18;
SCL_H;
SDA_H;
SDA_out;
}
第四个文件12864.h
#include
typedefunsignedcharuchar;
typedefunsignedintuint;
#defineLCD_DataInP3DIR=0x00//数据口方向设置为输入
#defineLCD_DataOutP3DIR=0xff//数据口方向设置为输出
#defineLCD2MCU_DataP3IN
#defineMCU2LCD_DataP3OUT
#defineLCD_CMDOutP3DIR|=0x07//P3口的低三位设置为输出
#defineLCD_RS_HP4OUT|=BIT3//P3.0
#defineLCD_RS_LP4OUT&=~BIT3//P3.0
#defineLCD_RW_HP4OUT|=BIT2//P3.1
#defineLCD_RW_LP4OUT&=~BIT2//P3.1
#defineLCD_EN_HP4OUT|=BIT1//P3.2
#defineLCD_EN_LP4OUT&=~BIT1//P3.2
constuchardis1[]={"普中科技"};
constuchardis2[]={"自学单片机第一站"};
constuchardis3[]={""};
//ucharcodedis4[]={"TEL:
755-29325187"};
/*******************************************
延时
********************************************/
voiddelay1(uintn)
{
uinti,j;
for(i=n;i>0;i--)
for(j=150;j>0;j--)
_NOP();
}
/*******************************************
函数名称:
Write_Cmd
功能:
向液晶中写控制命令
参数:
cmd--控制命令
返回值:
无
********************************************/
voidwrite_cmd(ucharcmd)
{
ucharlcdtemp=0;
LCD_RS_L;
LCD_RW_H;
LCD_DataIn;
do//判忙
{
LCD_EN_H;
_NOP();
lcdtemp=LCD2MCU_Data;
LCD_EN_L;
}
while(lcdtemp&0x80);
LCD_DataOut;
LCD_RW_L;
MCU2LCD_Data=cmd;
LCD_EN_H;
_NOP();
LCD_EN_L;
}
/*******************************************
函数名称:
Write_Data
功能:
向液晶中写显示数据
参数:
dat--显示数据
返回值:
无
********************************************/
voidwrite_dat(uchardat)
{
ucharlcdtemp=0;
LCD_RS_L;
LCD_RW_H;
LCD_DataIn;
do//判忙
{
LCD_EN_H;
_NOP();
lcdtemp=LCD2MCU_Data;
LCD_EN_L;
}
while(lcdtemp&0x80);
LCD_DataOut;
LCD_RS_H;
LCD_RW_L;
MCU2LCD_Data=dat;
LCD_EN_H;
_NOP();
LCD_EN_L;
}
/*******************************************
函数名称:
Ini_Lcd
功能:
初始化液晶模块
参数:
无
返回值:
无
********************************************/
voidlcd_init()
{
uchari;
LCD_CMDOut;//液晶控制端口设置为输出
P6DIR|=BIT3;P6OUT|=BIT3;
P4DIR|=0x0e;
//Delay_Nms(500);
write_cmd(0x30);//基本指令集
delay1
(1);
write_cmd(0x0c);//整体显示打开,游标关闭
delay1
(1);
write_cmd(0x01);//清除显示
delay1
(1);
write_cmd(0x80);//设置显示位置为第一行
i=0;
while(dis1[i]!
='\0')
{
write_dat(dis1[i]);
i++;
}
write_cmd(0x90);//设置显示位置为第二行
i=0;
while(dis2[i]!
='\0')
{
write_dat(dis2[i]);
i++;
}
write_cmd(0x88);//设置显示位置为第三行
i=0;
while(dis3[i]!
='\0')
{
write_dat(dis3[i]);
i++;
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- msp430 ads1115 代码