📄 nadc.c
字号:
#include<regx52.h>
#define uchar unsigned char
#define uint unsigned int
#define io_clock P2_0
#define data_input P2_1
#define data_out P2_2
#define cs P2_3
#define rs P2_4
#define rw P2_5
#define e P2_6
void write_command(uchar com);
void write_data(uchar odata);
uint tlc2543(uchar command_word);
void delayms(uint z);
void init();
void bin_to_dec(uint bd);
void carry_reset();
uchar code table1[]=" ";
uchar code table[]="0123456789";
uint T,getint,g,s,bi,q,result[32];
float te;
void main()
{
long sum=0;
uint num;
P3_7=0;
for(num=0;num<3;num++)
{
result[0]=tlc2543(0x00);
}
while(1)
{
for(num=0;num<32;num++)
{
result[num]=tlc2543(0x00);
sum+=result[num];
delayms(1);
}
init();
g=0;
s=0;
q=0;
bi=0;
getint=sum>>5;
sum=0;
te=-0.0000000017*getint*getint*getint+0.000006*getint*getint-0.021*getint+96;
// te=-0.0000045*getint*getint-0.0037*getint+87;
T=(int)(te*10);
bin_to_dec(T);
//bin_to_dec(getint);
for(num=0;num<7;num++)
{
write_data(table1[num]);
}
// write_data(table[q]);
write_data(table[bi]);
write_data(table[s]);
write_data('.');
write_data(table[g]);
write_data(0xdf);
write_data(0x63);
delayms(50);
}
}
uint tlc2543(uchar command_word)
{
uint adcresult=0,num;
cs=0;
for(num=0;num<12;num++)
{
io_clock=0;
delayms(1);
adcresult<<=1;
data_input=(bit)(command_word&0x80);
command_word<<=1;
io_clock=1;
delayms(1);
if(data_out) adcresult=adcresult|0x0001;
}
cs=1;
return adcresult;
}
/*uint tlc2543(uchar port)
{
uint ad=0,i;
io_clock=0;
cs=0;
port<<=4;
for(i=0;i<12;i++)
{
if(data_out) ad|=0x01;
data_input=(bit)(port&0x80);
io_clock=1;
delayms(3);
io_clock=0;
delayms(3);
port<<=1;
ad<<=1;
}
cs=1;
ad>>=1;
return(ad);
} */
void init()
{
e=0;
write_command(0x38);
write_command(0x0e);
write_command(0x06);
write_command(0x01);
write_command(0x80);
}
void write_command(uchar com)
{
rs=0;
rw=0;
P0=com;
delayms(5);
e=1;
delayms(5);
e=0;
}
void write_data(uchar odata)
{
rs=1;
rw=0;
P0=odata;
delayms(5);
e=1;
delayms(5);
e=0;
}
void delayms(uint z)
{
uint x,y;
for(x=0;x<z;x++)
for(y=0;y<110;y++);
}
void bin_to_dec(uint bd)
{
if((bd&0x0800)!=0) g+=8,s+=4,q+=2;
if((bd&0x0400)!=0) g+=4,s+=2,q+=1;
carry_reset();
if((bd&0x0200)!=0) g+=2,s+=1,bi+=5;
carry_reset();
if((bd&0x0100)!=0) g+=6,s+=5,bi+=2;
carry_reset();
if((bd&0x0080)!=0) g+=8,s+=2,bi+=1;
carry_reset();
if((bd&0x0040)!=0) g+=4,s+=6;
carry_reset();
if((bd&0x0020)!=0) g+=2,s+=3;
carry_reset();
if((bd&0x0010)!=0) g+=6,s+=1;
carry_reset();
if((bd&0x0008)!=0) g+=8;
carry_reset();
if((bd&0x0004)!=0) g+=4;
carry_reset();
if((bd&0x0002)!=0) g+=2;
carry_reset();
if((bd&0x0001)!=0) g+=1;
carry_reset();
}
void carry_reset()
{
if(g>=10)
g-=10,s+=1;
if(s>=10)
s-=10,bi+=1;
if(bi>=10)
bi-=10,q+=1;
if(q>=10)
q-=10;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -