📄 cat5113.c
字号:
#include "CAT5113.h"
#include "Eprom.h"
code uchar MaxA = 93;
code uchar MinA = 50;
uchar xdata CAT_A = 93;
uchar xdata CAT_B = 100;
#define CS1 P1_4
#define CS2 P1_5
#define INC P1_6
#define U_D P1_7
uchar Get5113A(void)
{
return CAT_A;
}
uchar Get5113B(void)
{
return CAT_B;
}
void Set5113A(uchar Cat5113)
{
if((Cat5113 >= MinA)&&(Cat5113 <= MaxA))
CAT_A = Cat5113;
}
void CAT5113(uchar pos)
{
uchar xdata i;
for(i = 0; i < 110; i++)
{
INC = 0;
delay(1);
INC = 1;
}
U_D = 0;
delay(3);
for(i = 0; i < pos; i++)
{
INC = 0;
delay(1);
INC = 1;
}
U_D = 1;
}
void CAT5113A(uchar pos)
{
CS1 = 0; //选中
delay(3);
CAT5113(pos);
delay(3);
CS1 = 1;
}
void CAT5113B(uchar pos)
{
CS2 = 0; //选中
delay(3);
CAT5113(pos);
delay(3);
CS2 = 1;
}
//获得模拟电压
float GetPos(uchar x1, uchar x2)
{
uchar xdata r1 = x1;
float r2 = 0.0;
if(!(x1 > 0&&x1 < 100&&x2 > 0&&x2 <= 100))
{
return 0.0;
}
r2 = 1.0/(1.0/(100.0 - x1) + 1.0/(float)x2);
return (1.0/((r1 + r2)/r1)*5.0);
}
void CAT5113Change(char Pos)
{
float xdata v1 = 0.0,v2 = 0.0;
char xdata i = 0;
ReadEprom(30, &CAT_A, 1);
ReadEprom(31, &CAT_B, 1);
if(CAT_A > MaxA)CAT_A = MaxA;
if(CAT_A < MinA)CAT_A = MinA;
if(CAT_B > 100)CAT_B = 100;
if(CAT_B < 1)CAT_B = 1;
if(Pos >= 0)
{
for(i = 0; i < Pos; i++)
{
v1 = GetPos(CAT_A, CAT_B);
v2 = GetPos(CAT_A + 1,100);
if(v2 < v1)
{
if(CAT_A < 99)
CAT_A++;
CAT_B = 100;
}else
{
CAT_B--;
}
}
}else
{
for(i = Pos; i < 0; i++)
{
if(CAT_B >= 100)
{
if(CAT_A > 2)
{
v2 = GetPos(CAT_A,100);
CAT_A--;
v1 = GetPos(CAT_A,CAT_B);
while(v1 < v2)
{
CAT_B--;
v1 = GetPos(CAT_A, CAT_B);
}
}
}else
{
CAT_B++;
}
}
}
CAT5113A(0);
CAT5113B(CAT_B);
CAT5113A(CAT_A);
WriteEprom(30, &CAT_A, 1);
WriteEprom(31, &CAT_B, 1);
}
void StopCAT5113()
{
CAT5113A(0);
CAT5113B(100);
CAT5113A(100);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -