⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 power.c

📁 26 路电压自动测试 电脑显示保存测试数据
💻 C
📖 第 1 页 / 共 3 页
字号:

			/* 发送 设置的数据  */
			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 + -