📄 1543.c
字号:
extern void inttilcs(void);
extern void WriteLcdData(unsigned char a);
#include<reg51.h>
#include<intrins.h>
sbit CLOCK=P1^0;
sbit AD_IN=P1^1;
sbit D_OUT=P1^2;
sbit CS =P1^3;
//sbit EOC =P3^2;
/*--------------------------------------------------------
调用方式:uint read1543(uchar port) 晶振是11.0592MHz
函数说明:read1543()返回10位AD芯片TLC1543的port通道采样值。
---------------------------------------------------------*/
unsigned int read1543(unsigned char port) //从TLC1543读取采样值,形参port是采样的通道号
{
unsigned int ad;
unsigned char i;
unsigned char al=0,ah=0;
CLOCK=0;
CS=0;
port<<=4; //先高位后低位
for (i=0;i<4;i++) //把通道号打入1543
{
AD_IN=(bit)(port&0x80);
CLOCK=1;
CLOCK=0;
port<<=1;
}
for (i=0;i<6;i++) //填充6个CLOCK
{
CLOCK=1;
CLOCK=0;
}
CS=1;
//等待AD转换,可加延时等待
CS=0;
for (i=0;i<2;i++) //取D9,D8
{
D_OUT=1;
CLOCK=1;
ah<<=1;
if (D_OUT) ah|=0x01;
CLOCK=0;
}
for (i=0;i<8;i++) //取D7--D0
{
D_OUT=1;
CLOCK=1;
al<<=1;
if (D_OUT) al|=0x01;
CLOCK=0;
}
CS=1;
ad=(unsigned int)ah;
ad<<=8;
ad|=(unsigned int)al; //得到AD值
return (ad);
}
//===========================
void main()
{
unsigned char DASC[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x339};
unsigned char fenwei[3];
unsigned char i,j;
float daicedianyazhi;
unsigned int ADzhi;
inttilcs();
for(j=0;j<2;j++)
{
ADzhi=read1543(0);
}
daicedianyazhi=(ADzhi*2.5)/1024;
ADzhi=daicedianyazhi*100;
fenwei[2]=ADzhi/100;
ADzhi=ADzhi%100;
fenwei[1]=ADzhi/10;
fenwei[0]=ADzhi%10;
for(i=0;i<5;i++)
{
switch(i)
{
case 0:WriteLcdData(DASC[fenwei[2]]);break;
case 1:WriteLcdData(0x2e);break;//.
case 2:WriteLcdData(DASC[fenwei[1]]);break;
case 3:WriteLcdData(DASC[fenwei[0]]);break;
case 4:WriteLcdData(0x56);break;//v
}
}
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -