ads1115程序解说
- 格式:wps
- 大小:17.50 KB
- 文档页数:3
//90 用于误差矫正 ptr[0] = real / 1000; //最高位 ptr[1] = (real - ptr[0]*1000)/100;//次高位 ptr[2] = (real - ptr[0]*1000 - ptr[1]*100)/10;//次低位 ptr[3] = (real - ptr[0]*1000 - ptr[1]*100 - ptr[2]*10); //最低位 b[10]=a[ptr[0]]; for(i=1;i<4;i++)
uint read() {
uint result,resulth,resultl; start(); shout(0x91); resulth = shin(); //高八位 resultl = shin(); //底八位 stop(); result=(resulth<<8)|resultl; if(result>0x7fff)
start();//发送起始信号
for(i=0;i<4;i++)
{
shout(table[i]);//将 table 里面的数写入 ads1115
_NOP();
}
stop();//发送停止信号
}
//指向 ADS1115 指针寄存器用于准备读取数据
void PointRegister (void)
{
unsigned char i;
b[i+11]=a[ptr[i]];//b[11]显示“V”符号 display_12864(1,0,table1); display_12864(2,0,table2); display_12864(3,0,table3); display_12864(4,0,b); } }
init_lcd();//初始化液晶屏 delay(10); while(1) { for(i=0;i<16;i++) sum+= getad();//将 ad 转换的值赋给 sum,取 16 次转换的平均值
sum>>=4;//左移相当于除以 16 real=(3.3*sum/32768)*1208-90;//4.096*(2/3)=2.731, 因 为 参 考 电 压 3.3/2.731=1.2084,再扩大 1000 倍便于显示
uchar j,i,ptr[4]; WDTCTL = WDTPW + WDTHOLD; //使用外部高频晶体振荡器 BCSCTL1&=~XT2OFF; do{
IFG1&=~OFIFG; for(j=0XFF;j>0;j--); }while((IFG1&OFIFG)); BCSCTL2|=SELM_2;
table[0] = 0x90;//CMD_Write;
table[1] = 0x01;//指向配置寄存器
table[2] = 0xC2;//设置配置寄存器的高八位 1100 0101,即 AINp=AIN0,AINn=GND;满量
程 FS=+-4.096;连续转换模式
table[3] = 0xe3;//设置配置寄存器的低八位 1100 0101,即
result=~result+1;//用于测量负电压,负电压从 8000~ffff,负电压与正关于 0 有类似对称 关系,按位取反后+1 相同
return result; } //获取最终模数转换之后的结果 uint getad() {
uint value; Confige1115(); _NOP(); PointRegister(); _NOP(); value=read(); return value; } void main() { // Stop watchdog timer to prevent time out reset
table[0] = 0x90;//写
table[1] = 0x00;//指针指向转换寄存器
start();//发送起始信号
for(i=0;i<2;i++)
{
shout(table[i]);//将 table 里面的数写入 ads1115
delay(5);
}
stop();//发送停止信号
பைடு நூலகம்
}
//读转换寄存器里面的值
#include "iic.h" #include "lcd12864.h" uchar a[10]="0123456789"; uchar b[16]="The Volt: . V"; uchar table[4],ReadBuffer[16],buffer[16];
uchar table1[16]=" 欢迎光临
";
uchar table3[16]="当前电压是如下:";
uchar table2[16]="创新实验室 sj618";
uchar table0[16]= "
V";
unsigned long sum = 0;
uint real;
//配置 ads1115
void Confige1115 ()
{
unsigned char i;