春风电源程序
想知道这个子函数的意思 为什么赋值10 11 12 13 14,为什么要+0x01;oid DispCal(vu8 CalPointer)
{
if(CalPointer == 0)
{
DispBuff = 0;
DispBuff = 0 + 0x10;
DispBuff = 1;
DispBuff = 0;
DispBuff = 10;//------A
DispBuff = 11;//------d
DispBuff = 12;//------J
DispBuff = 13;//------
}
if(CalPointer == 1)
{
DispBuff = 3;
DispBuff = 0 + 0x10;//0.
DispBuff = 0;
DispBuff = 0;
DispBuff = 10;//------A
DispBuff = 11;//------d
DispBuff = 12;//------J
DispBuff = 13;//------
}
if(CalPointer == 2)
{
DispBuff = 10;//------A
DispBuff = 11;//------d
DispBuff = 12;//------J
DispBuff = 13;//------
DispBuff = 0 + 0x10;//------0.
DispBuff = 1;//------1
DispBuff = 0;//------0
DispBuff = 0;//------0
}
if(CalPointer == 3)
{
DispBuff = 10;//------A
DispBuff = 11;//------d
DispBuff = 12;//------J
DispBuff = 13;//------
DispBuff = 4 + 0x10;//------4.
DispBuff = 0;//------0
DispBuff = 0;//------0
DispBuff = 0;//------0
}
} 加了小数点的字符 suda2008wuli 发表于 2014-8-27 22:44
加了小数点的字符
额 不是太明白 能说详细一点 吗 wyf-锋 发表于 2014-8-28 08:46
额 不是太明白 能说详细一点 吗
你先看看LED数码管是怎么点亮的,怎么显示数字的,然后你再仔细看看程序,
DispNum]才是决定数码管各LED点亮与否。 gallop020142 发表于 2014-8-28 09:37
你先看看LED数码管是怎么点亮的,怎么显示数字的,然后你再仔细看看程序,
DispNum才是决定数 ...
好的 谢谢 gallop020142 发表于 2014-8-28 09:37
你先看看LED数码管是怎么点亮的,怎么显示数字的,然后你再仔细看看程序,
DispNum才是决定数 ...
我想问一下 春风电源的程序里对踩回来的AD的处理方法叫什么 本帖最后由 gallop020142 于 2014-8-28 10:16 编辑
wyf-锋 发表于 2014-8-28 09:59
我想问一下 春风电源的程序里对踩回来的AD的处理方法叫什么
不知道你问的是不是这个:
校准后得到4个AD和4个DA值,分别对应最大、最小电压/电流
以输出期望电压为例,输入为期望的电压x, 输出为对应的DA值y:
y = a*x + b
DAUcal30 = a * 30 + b
DAUcal01 = a * 0.1 + b
a = (DAUcal30 - DAUcal01) / (30 - 0.1)
for any x in :
y - DAUcal01 = a * x + b - (a * 0.1 + b) = a * (x - 0.1)
so:
y = DAUcal01 + (x - 0.1) * a
gallop020142 发表于 2014-8-28 10:13
不知道你问的是不是这个:
校准后得到4个AD和4个DA值,分别对应最大、最小电压/电流
就是这个函数的处理方法
if(U >= ADUcal01)
{
V_Coefficient = (30.0-0.10)/(float)(ADUcal30 - ADUcal01);//¼ÆËãÿ¸öLSBµÄµçѹֵ
voltage = ((float)(U - ADUcal01)*V_Coefficient)+0.10; //¼ÆËãʵ¼Êµçѹֵ
}
else
{
V_Coefficient = 0.1/(float)ADUcal01;
voltage = ((float)U * V_Coefficient);
if(voltage <= 0.07) voltage = 0;
else if(voltage > 0.07) voltage = voltage - 0.07;
}
if(voltage < 0) voltage = 0;
全是魔鬼数字。。。。逻辑混乱。。。。 本帖最后由 lmt50211 于 2014-8-29 12:26 编辑
vu8 DispNum[] = { 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x39,0x77,0x38,0x00,0x00,0x00,
// 0 1 2 3 4 5 6 7 8 9 C A L 13 14 15
0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF
//0. 1. 2. 3. 4. 5. 6. 7. 8. 9.
};
对应这个表格里的,前面10个是0-9的编码,16-25是加了小数点的0-9,第10个是“C”,第11个是“A”,第12个是J,所以会这样赋值
if(CalPointer == 0)
{
DispBuff = 0;
DispBuff = 0 + 0x10;//加0X10相当于加16,0-9对应表格里面就是16-25,即0.----9.
DispBuff = 1;
DispBuff = 0;
DispBuff = 10;//------A
DispBuff = 11;//------d
DispBuff = 12;//------J
DispBuff = 13;//------
}
lmt50211 发表于 2014-8-29 12:23
vu8 DispNum[] = { 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x39,0x77,0x38,0x00,0x00,0x00,
...
多谢大神提点 wyf-锋 发表于 2014-8-29 15:54
多谢大神提点
大家一起学习 lmt50211 发表于 2014-8-29 16:11
大家一起学习
大神以前做过春风电源吗
wyf-锋 发表于 2014-8-29 18:07
大神以前做过春风电源吗
有弄过模拟部分的,用电位器控制。最近看有没有时间画板,有的话还是可以做一下。 lmt50211 发表于 2014-8-30 08:39
有弄过模拟部分的,用电位器控制。最近看有没有时间画板,有的话还是可以做一下。 ...
用电位器是怎样控制的呢?能否给个图看看,谢谢 THF 发表于 2014-9-4 21:37
用电位器是怎样控制的呢?能否给个图看看,谢谢
也就是把DA输入换成电位器分压调节。
页:
[1]