更新:修复部分bug,(符号+数字显示+缓存)三合一再封装
This commit is contained in:
parent
008b4279f1
commit
f84a3753de
|
@ -331,7 +331,11 @@ float32 get_output_value(void);
|
|||
//设置当前的输出值(实际值*1000 -> (无符号)数组),可直接输入负数
|
||||
void set_output_value(int32_t pvo);
|
||||
|
||||
//设置输出值:数字显示 + 符号 + 缓存
|
||||
void set_output(int32_t sto);
|
||||
|
||||
//改变数码管的显示与缓存值,dir:增加或减少(NIXIE_INCREASE & NIXIE_DECREASE),val:改变量(通常为1)
|
||||
//该函数仅适用于改变前后符号相同的情况
|
||||
void change_nixie_cube_OUT(uint8_t dir, uint8_t val);
|
||||
|
||||
//设置工作模式和工作模式类型
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: wujunchao wujunchao@wuxismart.com
|
||||
* @Date: 2024-12-27 11:50:56
|
||||
* @LastEditors: wujunchao wujunchao@wuxismart.com
|
||||
* @LastEditTime: 2025-03-13 12:13:11
|
||||
* @LastEditTime: 2025-03-13 12:52:58
|
||||
* @FilePath: \signal_generator\App\APP_WU\Src\apps_gather.c
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
|
@ -343,17 +343,7 @@ void key_functions_main(void)
|
|||
//超过上限的情况下,直接显示上限
|
||||
sv = up;
|
||||
sv *= 1000;
|
||||
set_nixie_cube(IO_OUTPUT, 99, (int32_t)sv);
|
||||
set_output_value((int32_t)sv);
|
||||
|
||||
if(up >= 0)
|
||||
{
|
||||
set_nixie_cube_sign(IO_OUTPUT, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
set_nixie_cube_sign(IO_OUTPUT, 1);
|
||||
}
|
||||
set_output(sv);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -373,11 +363,9 @@ void key_functions_main(void)
|
|||
else
|
||||
{
|
||||
//跨越0后,负号熄灭
|
||||
set_nixie_cube_sign(IO_OUTPUT, 0);
|
||||
//pv变为sv后跨越了0,数值可能增大也可能减小,因此直接赋值
|
||||
sv *= 1000;
|
||||
set_nixie_cube(IO_OUTPUT, 99, (int32_t)sv);
|
||||
set_output_value((int32_t)sv);
|
||||
set_output(sv);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -709,17 +697,7 @@ void key_functions_main(void)
|
|||
//超过下限的情况下,直接显示下限
|
||||
sv = low;
|
||||
sv *= 1000;
|
||||
set_nixie_cube(IO_OUTPUT, 99, (int32_t)sv);
|
||||
set_output_value((int32_t)sv);
|
||||
|
||||
if(low >= 0)
|
||||
{
|
||||
set_nixie_cube_sign(IO_OUTPUT, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
set_nixie_cube_sign(IO_OUTPUT, 1);
|
||||
}
|
||||
set_output(sv);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -739,11 +717,9 @@ void key_functions_main(void)
|
|||
else
|
||||
{
|
||||
//跨越0后,负号点亮
|
||||
set_nixie_cube_sign(IO_OUTPUT, 1);
|
||||
//pv变为sv后跨越了0,数值可能增大也可能减小,因此直接赋值
|
||||
sv *= 1000;
|
||||
set_nixie_cube(IO_OUTPUT, 99, (int32_t)sv);
|
||||
set_output_value((int32_t)sv);
|
||||
set_output(sv);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -955,7 +931,7 @@ void set_nixie_cube_sign(uint8_t on2off, uint8_t sg)
|
|||
|
||||
}
|
||||
|
||||
//设置数码管显示值:io_slc-输入/输出,pos-第几个数字(99代表全部),num->数值[000000,999999]
|
||||
//设置数码管显示值:io_slc-输入/输出,pos-第几个数字(99代表全部),num->(可正可负)实际数值*1000
|
||||
void set_nixie_cube(uint8_t io_slc, uint8_t pos, int32_t num)
|
||||
{
|
||||
switch (io_slc)
|
||||
|
@ -1119,6 +1095,7 @@ void set_nixie_cube(uint8_t io_slc, uint8_t pos, int32_t num)
|
|||
|
||||
case 99:
|
||||
{
|
||||
//负数转正数
|
||||
num = ( num >= 0 )?(num):(0 - num);
|
||||
|
||||
if(num > 9999999)
|
||||
|
@ -1165,20 +1142,7 @@ void set_nixie_cube(uint8_t io_slc, uint8_t pos, int32_t num)
|
|||
}
|
||||
}
|
||||
|
||||
//获取当前设定的输出值
|
||||
float32 get_output_value(void)
|
||||
{
|
||||
float32 pvo = 0;
|
||||
|
||||
pvo = m5data.o_numbers[0]*1000 + m5data.o_numbers[1]*100 + 10*m5data.o_numbers[2] + \
|
||||
m5data.o_numbers[3] + m5data.o_numbers[4]*(float32)0.1 + m5data.o_numbers[5]*(float32)0.01 + m5data.o_numbers[6]*(float32)0.001;
|
||||
|
||||
pvo = (m5data.sign_flag_out)?(0 - pvo):(pvo);
|
||||
|
||||
return pvo;
|
||||
}
|
||||
|
||||
//设置当前的输出值(无符号实际值*1000 -> 数组)
|
||||
//设置当前的输出值((可正可负)实际值*1000 -> 数组)
|
||||
void set_output_value(int32_t pvo)
|
||||
{
|
||||
pvo = (pvo > 0)?(pvo):(0 - pvo);
|
||||
|
@ -1192,7 +1156,41 @@ void set_output_value(int32_t pvo)
|
|||
m5data.o_numbers[6] = pvo % 10;
|
||||
}
|
||||
|
||||
//按键触发后对数码管值进行修改(主角界面KEY_UP & KEY_DOWN, dir->KEY_UP/KEY_DOWN, val->步进量
|
||||
//设置输出值:数字显示 + 符号 + 缓存,sto:实际值*1000
|
||||
void set_output(int32_t sto)
|
||||
{
|
||||
//显示
|
||||
set_nixie_cube(IO_OUTPUT, 99, sto);
|
||||
|
||||
//缓存
|
||||
set_output_value(sto);
|
||||
|
||||
//符号
|
||||
if( sto >= 0 )
|
||||
{
|
||||
set_nixie_cube_sign(IO_OUTPUT, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
set_nixie_cube_sign(IO_OUTPUT, 1);
|
||||
}
|
||||
}
|
||||
|
||||
//获取当前设定的输出值
|
||||
float32 get_output_value(void)
|
||||
{
|
||||
float32 pvo = 0;
|
||||
|
||||
pvo = m5data.o_numbers[0]*1000 + m5data.o_numbers[1]*100 + 10*m5data.o_numbers[2] + \
|
||||
m5data.o_numbers[3] + m5data.o_numbers[4]*(float32)0.1 + m5data.o_numbers[5]*(float32)0.01 + m5data.o_numbers[6]*(float32)0.001;
|
||||
|
||||
pvo = (m5data.sign_flag_out)?(0 - pvo):(pvo);
|
||||
|
||||
return pvo;
|
||||
}
|
||||
|
||||
//改变数码管的显示与缓存值,dir:增加或减少(NIXIE_INCREASE & NIXIE_DECREASE),val:改变量(通常为1)
|
||||
//该函数仅适用于改变前后符号相同的情况
|
||||
void change_nixie_cube_OUT(uint8_t dir, uint8_t val)
|
||||
{
|
||||
switch (dir)
|
||||
|
@ -1572,10 +1570,9 @@ void set_working_mode(SIG_FUNCTIONS mode, SIG_FUNCTIONS_TYPE type)
|
|||
for(uint8_t i = 0; i < 7; i++) //用于数值显示的数组,初值为0
|
||||
{
|
||||
m5data.i_numbers[i] = 0; //输入值/测量值
|
||||
m5data.o_numbers[i] = 0; //输出值/设定值
|
||||
}
|
||||
set_nixie_cube(IO_OUTPUT, 99, 0);
|
||||
set_nixie_cube(IO_INPUT, 99, 0);
|
||||
set_output(0);
|
||||
m5data.io_cursor = 3;
|
||||
m5data.io_cursor_prv = 3;
|
||||
set_cursor_position();
|
||||
|
@ -1782,18 +1779,7 @@ void set_working_mode(SIG_FUNCTIONS mode, SIG_FUNCTIONS_TYPE type)
|
|||
set_nixie_cube(IO_INPUT, 99, pltdata.yreal_scd_low*1000);
|
||||
|
||||
//当前输出数值更新为新的上下限
|
||||
int32_t temp = 0;
|
||||
temp = pltdata.yreal_pri_low*1000;
|
||||
set_nixie_cube(IO_OUTPUT, 99, temp);
|
||||
set_output_value(temp);
|
||||
if(temp > 0)
|
||||
{
|
||||
set_nixie_cube_sign(IO_OUTPUT, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
set_nixie_cube_sign(IO_OUTPUT, 1);
|
||||
}
|
||||
set_output(pltdata.yreal_pri_low*1000);
|
||||
}
|
||||
|
||||
void input_value_show(void)
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue