📄 power.c
字号:
/* 发送 设置的数据 */
sendlong_to_pc232( set_data );
/* 数据 与 数据 间隔 '*' */
sendchar_to_pc232('*');
}
/* 发送完一个 J 循环:
_00000007_00000001*00000008_00000000*00000009_00000000*
0000000A_00000001*0000000B_00000000*0000000C_00000000*
0000000D_00000001*
*/
sendchar_to_pc232('-');
sendchar_to_pc232(NewLine);
/* 等待 pc 发送接收到标志 */
while ( inbuf_232[0] == '0' );
if( ( j == 0 ) && set_data == 0 )
{
break;
}
}
/* 发送 五 个 Z 表示结束 */
for ( i = 0; i < 5; i ++)
{
sendchar_to_pc232( 'Z' );
}
sendchar_to_pc232(NewLine);
inbuf_232[0] == '0';
}
/* 定义点亮led灯操作过程 */
void press_led( uchar led )
{
led_char = led;
write( U11_8255, port_B, block_char | led_char);
}
/* LED显示测试电压数据/设置数据 */
void led_display( long led_disp, char led_bit, char bit_opt )
{
uchar led[4] ;
char i = 0 ;
P1 = 0xff ;
P3 = 0xff ;
/* 设置字段显示(0~6) */
if( led_bit >= 9 )
{
led_disp /= 100 ;
if( boolDC_AC == 2 )
{
led_disp /= 100 ;
}
P2 = 0xff ;
}
else
{
if(led_bit == 1 | led_bit == 2 )
{
led_disp /= 100 ;
if( boolDC_AC == 2 )
{
led_disp /= 100 ;
}
}
P2 = led_bit * 16 ;
}
led_opt = 0 ;
delay( 5 ms );
led_opt = 1 ;
/* 负号及小数点显示 */
if( led_disp < 0 )
{
P2 = minus ;
led_disp = 0 - led_disp ;
}
else
{
if( led_bit >= 9 )
{
if( boolDC_AC == 1 ){ P2 = dot ;}
else{ P2 = 0xff ;}
}
else
{
if(( led_bit == 1 | led_bit == 2 ) & boolDC_AC == 1 ){ P2 = dot ;}
else{ P2 = 0xff ;}
}
}
led_0 = 0 ;
delay( 5 ms );
led_0 = 1 ;
/* 显示数据处理 */
for(i = 3 ; i >= 0 ; i--)
{
led[i] = led_disp % 10 ;
led_disp /= 10 ;
led[i] <<= 4 ;
}
/* 设置字段闪 */
P2 = 0xff ;
if ( bit_opt == 1 ){ led_1 = 0 ;}
if ( bit_opt == 2 ){ led_2 = 0 ;}
if ( bit_opt == 3 ){ led_3 = 0 ;}
if ( bit_opt == 4 ){ led_4 = 0 ;}
delay( 150ms );
P1 = 0xff ;
P3 = 0xff ;
/* 十位数显示 */
if( led_bit >= 9 & led[0] == 0 ){ P2 = 0xff ;}
else{ P2 = led[0];}
led_1 = 0 ;
delay( 5 ms );
led_1 = 1 ;
/* 个位数显示 */
P2 = led[1];
led_2 = 0 ;
delay( 5 ms );
led_2 = 1 ;
/* 十分位数显示 */
P2 = led[2];
led_3 = 0 ;
delay( 5 ms );
led_3 = 1 ;
/* 百分位数显示 */
P2 = led[3];
led_4 = 0 ;
delay( 5 ms );
led_4 = 1 ;
}
/*设置*/
void enact()
{
uchar i , step , bit_led ;
long temp , t ;
delay(3000ms);
press_led( open_all_led );
P2 = 0xff ;
P3 = 0xff ;
if ( shift == 0 & setup == 0 & up == 1 & down == 1 )
{
i = 0 ;
step = 1 ;
bit_led = 4 ;
temp = read_24c32_long ( step * 7 + i );
boolDC_AC = temp ;
P3 = 0xff ;
while ( shift == 0 | setup == 0 ) ;
while ( 1 )
{
display( step );
led_display( temp , i , bit_led );
/* 处理字段设置按键 setup */
P2 = 0xff ;
P3 = 0xff ;
if( shift == 1 & setup == 0 & up == 1 & down == 1 )
{
delay( 8 ms );
if( shift == 1 & setup == 0 & up == 1 & down == 1 )
{
i ++ ;
if( i > 6 ){ i = 0 ;}
bit_led = 4 ;
temp = read_24c32_long ( step * 7 + i );
}
}
/* 处理移位按键 shift */
P2 = 0xff ;
P3 = 0xff ;
if( shift == 0 & setup == 1 & up == 1 & down == 1 )
{
delay( 8 ms );
if( shift == 0 & setup == 1 & up == 1 & down == 1 )
{
bit_led -- ;
if( bit_led < 1 | i == 0 | i == 4 | i == 6 ){ bit_led = 4 ;}
if( i == 3 & bit_led == 2 ){ bit_led = 4 ;}
}
}
/* 处理步数加按键 shift + up */
P2 = 0xff ;
P3 = 0xff ;
if( shift == 0 & setup == 1 & up == 0 & down == 1 )
{
delay( 8 ms );
if( shift == 0 & setup == 1 & up == 0 & down == 1 )
{
step ++ ;
if( step > 26 ){ step = 26 ;}
bit_led = 4 ;
i = 0 ;
temp = read_24c32_long ( step * 7 + i );
boolDC_AC = temp ;
}
}
/* 处理步数减按键 shift + down */
P2 = 0xff ;
P3 = 0xff ;
if( shift == 0 & setup == 1 & up == 1 & down == 0 )
{
delay( 8 ms );
if( shift == 0 & setup == 1 & up == 1 & down == 0 )
{
step --;
if( step < 1 ){ step = 1 ;}
bit_led = 4 ;
i = 0 ;
temp = read_24c32_long ( step * 7 + i );
boolDC_AC = temp ;
}
}
/* 处理数值加按键 up */
P2 = 0xff ;
P2 = 0xff ;
if( shift == 1 & setup == 1 & up == 0 & down == 1 )
{
delay( 8 ms );
if( shift == 1 & setup == 1 & up == 0 & down == 1 )
{
t = 1 ;
if(( i == 1 | i == 2 ) & boolDC_AC == 1 ){ t = 100 ;}
if(( i == 1 | i == 2 ) & boolDC_AC == 2 ){ t = 10000 ;}
switch( bit_led )
{
case 1:
temp += ( 1000 * t );
break ;
case 2:
temp += ( 100 * t );
break ;
case 3:
temp += ( 10 * t );
break ;
case 4:
temp += ( 1 * t );
break ;
}
if( i == 0 )
{
boolDC_AC = temp ;
if( temp > 2 ){ temp = 2 ;}
}
if(( i == 1 | i == 2 ) & boolDC_AC == 1 & temp > 800000 ){ temp = 800000 ;}
if(( i == 1 | i == 2 ) & boolDC_AC == 2 & temp > 10000000 ){ temp = 10000000 ;}
if( i == 3 )
{
if( temp == 14 ){ temp ++ ;}
if(temp > 27 ){ temp = 27 ;}
}
if( i == 4 & temp > 8 ){ temp = 8 ;}
if( i == 5 & temp > 9999 ){ temp = 9999 ;}
if( i == 6 & temp > 1 ){ temp = 1 ;}
}
}
/* 处理数值减按键 down */
P2 = 0xff ;
P3 = 0xff ;
if( shift == 1 & setup == 1 & up == 1 & down == 0 )
{
delay( 8 ms );
if( shift == 1 & setup == 1 & up == 1 & down == 0 )
{
t = 1 ;
if(( i == 1 | i == 2 ) & boolDC_AC == 1 ){ t = 100 ;}
if(( i == 1 | i == 2 ) & boolDC_AC == 2 ){ t = 10000 ;}
switch( bit_led )
{
case 1:
temp -= ( 1000 * t );
break ;
case 2:
temp -= ( 100 * t );
break ;
case 3:
temp -= ( 10 * t );
break ;
case 4:
temp -= ( 1 * t );
break ;
}
if( i == 0 )
{
boolDC_AC = temp ;
if( temp < 0 ){ temp = 0 ;}
}
if(( i == 1 | i == 2 ) & boolDC_AC == 1 & temp < -800000 ){ temp = -800000 ;}
if(( i == 1 | i == 2 ) & boolDC_AC == 2 & temp < 0 ){ temp = 0 ;}
if( i == 3 )
{
if( temp == 14 ){ temp -- ;}
if(temp < 1 ){ temp = 1 ;}
}
if( i == 4 & temp < 0 ){ temp = 0 ;}
if( i == 5 & temp < 0 ){ temp = 0 ;}
if( i == 6 & temp < 0 ){ temp = 0 ;}
}
}
if( temp != read_24c32_long ( step * 7 + i ))
{
write_24c32_long( step * 7 + i , temp );
}
}
}
else{ press_led( close_all_led );}
}
/*
电路板 接线图 ,各 IC 脚位连接,
sbit ic138_a0 = P1^0; // ic138.Y0 = U11_ic8255_cs -> ic_2803 & ic_4511, ic138.Y1 = U10_ic8255_cs -> ic_ad574
sbit ic138_a1 = P1^1; // ic138.Y7 = key_auto
sbit ic138_a2 = P1^2;
sbit audio_out = P1^3;
sbit ic8255_write = P3^6;
sbit ic8255_read_ic245_m = P3^7; // ic 73LS245: L : B-->A in, H : A-->B out
89C51_ALE = ic373_LE , P0 = 74ls245.A , 74ls245.B = ic8255_D
P0.0 = 74ls245.A1 -> 74ls245.B1 = ic373_D1 -> ic8255_A0
P0.1 = 74ls245.A2 -> 74ls245.B2 = ic373_D2 -> ic8255_A1
ic574_out_12pin -> u10_ic8255_A_B
ic574_status = U10_PC0, ic574_CE = U10_PC5, ic574_R/~C = U10_PC4
if ic574_R/~C == 0 允许用ic574_CE = 1启动 574 转换时 status 为 高电位, 当为低电位时, 读取转换结果 u10_ic8255_A_B
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -