📄 tlv5618.c
字号:
#include <at89x51.h>
#define uchar unsigned char
#define uint unsigned int
#define ulint unsigned long int
sbit DIN=P3^4;//串行输入
sbit CLK=P3^3;//工作时钟
sbit CS=P3^2;//片选信号 低电平有效
sbit key1=P2^0;
sbit key2=P2^1;
sbit key3=P2^2;
sbit key4=P2^3;
unsigned char code table_duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,
0x88,0x83,0xc6,0xa1,0x86,0x8e,
0xff,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x18,
};
unsigned char code table_wei[]={0x1f,0x9f,0x5f,0xdf,
0x4f,0xcf,0x2f,0xaf,0x6f
};
uchar x1,x2,x3,x4;
uchar y1,y2,y3,y4,y5;
uint xianshi_MV;
ulint xianshi_MA;
void delay(unsigned int z)
{
uchar i,j;
for(i=0;i<z;i++)
for(j=0;j<110;j++);
}
void display(void)
{
P2=table_wei[0];
P0=table_duan[x1+0x20];
delay(1);
P0=table_duan[0x10];
P2=table_wei[1];
P0=table_duan[x2];
delay(1);
P0=table_duan[0x10];
P2=table_wei[2];
P0=table_duan[x3];
delay(1);
P0=table_duan[0x10];
P2=table_wei[3];
P0=table_duan[x4];
delay(1);
P0=table_duan[0x10];
P2=table_wei[4];
P0=table_duan[y1];
delay(1);
P0=table_duan[0x10];
P2=table_wei[5];
P0=table_duan[y2+0x20];
delay(1);
P0=table_duan[0x10];
P2=table_wei[6];
P0=table_duan[y3];
delay(1);
P0=table_duan[0x10];
P2=table_wei[7];
P0=table_duan[y4];
delay(1);
P0=table_duan[0x10];
P2=table_wei[8];
P0=table_duan[y5];
delay(1);
P0=table_duan[0x10];
P2=0xef;
P0=table_duan[0x11];
delay(1);
P0=table_duan[0x10];
P2=0x8f;
P0=table_duan[0x0a];
delay(1);
P0=table_duan[0x10];
}
void DA_init(uint data1)//data1 待转换的数据
{
uchar i;
CS=1;
DIN=0;
CLK=0;
CS=0;
for(i=0;i<16;i++)
{
if((data1&0x8000)!=0) //0x0400==0001,0000,0000,0000 B
DIN=1;//数据输出
else
DIN=0;//数据输出
CLK=1; //发生时钟
CLK=0; //发生时钟
data1<<=1;//逻辑左移
}
CLK=1; //发生时钟
CLK=0; //发生时钟
CS=1;
DIN=0;
CLK=0;
}
void shuju_fenli(void)
{
x1=xianshi_MV/1000;
x2=(xianshi_MV%1000)/100;
x3=(xianshi_MV%100)/10;
x4=xianshi_MV%10;
y1=xianshi_MA/10000;
y2=(xianshi_MA%10000)/1000;
y3=(xianshi_MA%1000)/100;
y4=(xianshi_MA%100)/10;
y5=xianshi_MA%10;
}
char code dx516[3] _at_ 0x003b;
void main()
{
uint a=0xc800,b=0x4800,c;
float d,shang;
while(1)
{
P2=0x4f;
if(key1==0)
{
delay(20);
if(key1==0)
{
a=a+0x0333;
if(a>0xcfff)
{
a=a-0x0fff;
}
while(key1==0)
{;}
}
}
if(key2==0)
{
delay(20);
if(key2==0)
{
a=a+0x0052;
if(a>0xcfff)
{
a=a-0x0fff;
}
while(key2==0)
{;}
}
}
if(key3==0)
{
delay(20);
if(key3==0)
{
a=a+0x0008;
if(a>0xcfff)
{
a=a-0x0fff;
}
while(key3==0)
{;}
}
}
if(key4==0)
{
delay(20);
if(key4==0)
{
a=a+0x0001;
if(a>0xcfff)
{
a=a-0x0fff;
}
while(key4==0)
{;}
}
}
DA_init(a);
delay(10);
DA_init(b);
delay(10);
c=a;
c=c&0x0fff;
d=c;
shang=d/0x1000;
xianshi_MV=2*2492.3*shang;
xianshi_MV=xianshi_MV+2;
xianshi_MA=xianshi_MV*10;
xianshi_MA=xianshi_MA*10;
xianshi_MA=xianshi_MA*10;
if(xianshi_MV>0&xianshi_MV<10000)
xianshi_MA=xianshi_MA/237.8;
else if(xianshi_MV>10000&xianshi_MV<20000)
xianshi_MA=xianshi_MA/238.5;
else if(xianshi_MV>20000&xianshi_MV<30000)
xianshi_MA=xianshi_MA/238.8;
else if(xianshi_MV>30000&xianshi_MV<40000)
xianshi_MA=xianshi_MA/239;
else if(xianshi_MV>40000&xianshi_MV<50000)
xianshi_MA=xianshi_MA/239.1;
shuju_fenli();
display();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -