单片机自动排列上料控制程序

/****L2233 CODE11549 2025 4 18 08:53*******/
/***轴承上料机控制 提升 摇摆 光电检测***/
/***2025  3 21 电机控制PCB板 PAST    ***/
/*2.3 2.2 1.2 1.3 1.4 1.5 1.6 1.7 5.3 3.2  ***/
/*启动 解锁 光电 接近 前停 后停 电机前 电机后*/
              #include     "REG52.h"             //
              #include     "intrins.h"           //
              #define      FOSC 11059200L
              #define      uchar    unsigned char
              #define      uint     unsigned int
              #define      ulong    unsigned long
              #define      IAP_ADDRESS  0x31FF   //EEPROM首地址
              #define      IAP_ADDRESSS 0x33FF   //EEPROM首地址    
              bit          MOTORRUN_L;             //电机正转标志
              bit          MOTORRUN_R;             //电机反转标志
              bit          dis_Flag=0;             //光电显示刷新标志
              bit          Key_Flag;
              bit          Photoele_Flag;        //光电   标志
              bit          Switch_Flag;          //开关闸 标志
              bit          Time_Flag;            //
              bit          Run_Flag;             //排列电机开启运行标志 开机后关闭 避免电机重复开启
              uchar        func;                 /*功能标志*/
              bit          Sign,adddecbit;                          /*功能设置运行标志 加减位标志01*/
              sbit         L_PWM=P1^7;           //
              sbit         L_EN=P3^3;            // 高电平使能 低电平关闭
              sbit         R_PWM=P3^0;           //
              sbit         R_EN=P3^1;            //
              sbit         OUT1=P3^6;            //
              sbit         OUT2=P3^5;            //
              sbit         LED=P3^4;             //EEPROM写指示
              sbit         MOTORA_CW=P3^7;       //上料电机
              sbit         MOTORB_CW=P2^1;       //排列电机
              sbit         MOTORB_CCW=P2^0;      //
              sbit         StartD1=P2^3;         //启动自动
              sbit         INTPUTD2=P2^2;        //光电输入信号
              sbit         INTPUT0=P1^2;         //排列电机停机
              sbit         INTPUT1=P1^3;         //电机前限位
              sbit         INTPUT2=P1^4;         //电机后限位
              sbit         INTPUT3=P1^5;         //
              sbit         INTPUT4=P1^6;         //
              sbit         INTPUT5=P1^7;         //
              sbit         INTPUT6=P5^4;         //
              sbit         EXIT_0=P3^2;         //
              sbit         Funkey=P1^0;          //功能键                        
              sbit         Quitkey=P1^1;   
              sbit         KEY_ADD=P2^6;
              sbit         KEY_DEC=P2^7;
              bit          Start_Flag;
              uchar        Valve_Time;
              typedef      uchar BYTE;           //
              typedef      uint  WORD;           //  
              uchar        RunTime_A;            //上料延时
              uchar        RunTime_B;            //光电延时
              uchar        RunTime_C;            //停顿时间
              uchar        RunTime_D;            //电机速度
              uint         RunTime_E;            //运行频率
              uchar        Time_A;               //
              uchar        Time_B;               //
              uchar        RunTime;              //
              uchar        vala,valb;            //
              uchar        kcounter,kstatus;     //按键计数标志 按键状态标志
              bdata        char com_data;        /****暂用 ****/
              WORD         IAPEEPROMADD;         //
              #define      CMD_IDLE    0         //空闲模式
              #define      CMD_READ    1         //IAP字节读命令
              #define      CMD_PROGRAM 2         //IAP字节编程命令
              #define      CMD_ERASE   3         //IAP扇区擦除命令
              #define      ENABLE_IAP  0x82      //if SYSCLK<20MHz
              void         IapIdle();
              BYTE         IapReadByte(WORD addr);
              void         IapProgramByte(WORD addr, BYTE dat);
              void         IapEraseSector(WORD addr);
              uint         total,A1,A2,A3;       //输入文字总数 个位 十位 百位
              #define      high 1
              #define      low 0
              bdata        char com_data;        /****暂用 ****/
              uint         total,A1,A2,A3;       //输入文字总数 个位 十位 百位
              #define      high 1
              #define      low 0
              bit          RunFlag;
/***********************0--A字符表*************************/
unsigned char code show1[]=
{
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,/*"0",0*/
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,/*"1",1*/
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,/*"2",2*/
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,/*"3",3*/
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,/*"4",4*/
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,/*"5",5*/
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,/*"6",6*/
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,/*"7",7*/
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,/*"8",8*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,/*"9",9*/
0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,/*"A",10*/
0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,/*"B",11*/
0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,/*"C",12*/
0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,/*"D",13*/
0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,/*"E",14*/
0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,/*"F",15*/
};    
uchar code show3[]=
{
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"一",0*/
0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x00,
0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00,/*"二",1*/
0x00,0x04,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x04,0x00,0x00,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,/*"三",2*/
0x00,0xFC,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0xFC,0x00,0x00,
0x00,0x7F,0x28,0x24,0x23,0x20,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x7F,0x00,0x00,/*"四",3*/
0x00,0x02,0x42,0x42,0x42,0xC2,0x7E,0x42,0x42,0x42,0x42,0xC2,0x02,0x02,0x00,0x00,
0x40,0x40,0x40,0x40,0x78,0x47,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x00,/*"五",4*/
0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x22,0x2C,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
0x00,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x01,0x02,0x04,0x18,0x60,0x00,0x00,/*"六",5*/
0x80,0x80,0x80,0x80,0x80,0x40,0xFF,0x40,0x40,0x40,0x20,0x20,0x20,0x20,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x40,0x40,0x78,0x00,0x00,/*"七",6*/
0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x60,0x18,0x07,0x00,0x00,0x00,0x00,0x00,0x03,0x0C,0x30,0x40,0x80,0x00,/*"八",7*/
0x00,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0xF0,0x00,0x00,0x00,0x00,0x00,
0x80,0x40,0x20,0x18,0x07,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x78,0x00,/*"九",8*/
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"十",9*/
};
uchar code show4[]=
{
0x00,0x20,0x20,0xA8,0x6C,0x2A,0x39,0x28,0xA8,0x2A,0x6C,0xA8,0x20,0x20,0x00,0x00,
0x02,0x82,0x81,0x90,0x92,0x4A,0x49,0x45,0x24,0x22,0x10,0x08,0x01,0x02,0x02,0x00,/*"参",0*/
0x90,0x52,0x34,0x10,0xFF,0x10,0x34,0x52,0x80,0x70,0x8F,0x08,0x08,0xF8,0x08,0x00,
0x82,0x9A,0x56,0x63,0x22,0x52,0x8E,0x00,0x80,0x40,0x33,0x0C,0x33,0x40,0x80,0x00,/*"数",1*/
0x40,0x40,0x42,0xCC,0x00,0x40,0xA0,0x9E,0x82,0x82,0x82,0x9E,0xA0,0x20,0x20,0x00,
0x00,0x00,0x00,0x3F,0x90,0x88,0x40,0x43,0x2C,0x10,0x28,0x46,0x41,0x80,0x80,0x00,/*"设",2*/
0x00,0x17,0x15,0xD5,0x55,0x57,0x55,0x7D,0x55,0x57,0x55,0xD5,0x15,0x17,0x00,0x00,
0x40,0x40,0x40,0x7F,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0x40,0x40,0x40,0x00,/*"置",3*/
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00,
0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,/*"上",4*/
0x40,0x44,0x58,0xC0,0xFF,0x50,0x4C,0x00,0x22,0xCC,0x00,0x00,0xFF,0x00,0x00,0x00,
0x10,0x08,0x06,0x01,0xFF,0x01,0x06,0x00,0x04,0x04,0x04,0x04,0xFF,0x02,0x02,0x00,/*"料",5*/
0x04,0x84,0xC4,0xB4,0x8C,0x00,0x00,0xE4,0x04,0x04,0xFE,0x42,0x43,0x42,0x00,0x00,
0x80,0x44,0x28,0x18,0x27,0x20,0x40,0x4F,0x48,0x48,0x4F,0x48,0x48,0x48,0x40,0x00,/*"延",6*/
0x00,0xFC,0x84,0x84,0x84,0xFC,0x00,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x00,
0x00,0x3F,0x10,0x10,0x10,0x3F,0x00,0x00,0x01,0x06,0x40,0x80,0x7F,0x00,0x00,0x00,/*"时",7*/
0x20,0x30,0xAC,0x63,0x20,0x18,0x00,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x00,0x00,
0x22,0x67,0x22,0x12,0x12,0x12,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x00,/*"红",8*/
0x00,0xC0,0x30,0x1F,0x10,0x10,0xF0,0x00,0x00,0xFF,0x20,0x40,0x80,0x00,0x00,0x00,
0x81,0x40,0x21,0x12,0x0C,0x03,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x03,0x00,0x00,/*"外",9*/
0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0xF8,0x00,0x00,0x00,
0x00,0x00,0x1F,0x08,0x08,0x08,0x08,0x7F,0x88,0x88,0x88,0x88,0x9F,0x80,0xF0,0x00,/*"电",10*/
0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,
0x04,0x03,0x00,0xFF,0x00,0x83,0x60,0x1F,0x00,0x00,0x00,0x3F,0x40,0x40,0x78,0x00,/*"机",11*/
0x40,0x40,0x42,0xCC,0x00,0x04,0xF4,0x94,0x94,0xFF,0x94,0x94,0xF4,0x04,0x00,0x00,
0x00,0x40,0x20,0x1F,0x20,0x48,0x44,0x42,0x41,0x5F,0x41,0x42,0x44,0x48,0x40,0x00,/*"速",12*/
0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00,
0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00,/*"度",13*/
0x40,0x40,0x42,0xCC,0x00,0x20,0x22,0x22,0xA2,0x62,0x22,0x22,0x22,0x20,0x00,0x00,
0x00,0x40,0x20,0x1F,0x20,0x44,0x4E,0x45,0x44,0x44,0x44,0x45,0x46,0x4C,0x40,0x00,/*"运",14*/
0x00,0x10,0x88,0xC4,0x33,0x00,0x40,0x42,0x42,0x42,0xC2,0x42,0x42,0x42,0x40,0x00,
0x02,0x01,0x00,0xFF,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,/*"行",15*/
0x40,0x7C,0x40,0x7F,0x48,0x48,0x40,0xF2,0x12,0x1A,0xD6,0x12,0x12,0xF2,0x02,0x00,
0x90,0x8E,0x40,0x4F,0x20,0x1E,0x80,0x4F,0x20,0x18,0x07,0x10,0x20,0x4F,0x80,0x00,/*"频",16*/
0x00,0x14,0xA4,0x44,0x24,0x34,0xAD,0x66,0x24,0x94,0x04,0x44,0xA4,0x14,0x00,0x00,
0x08,0x09,0x08,0x08,0x09,0x09,0x09,0xFE,0x09,0x09,0x0B,0x08,0x08,0x09,0x08,0x00,/*"率",0XFE17*/
0x80,0x60,0xF8,0x07,0x00,0x04,0x74,0x54,0x55,0x56,0x54,0x54,0x74,0x04,0x00,0x00,
0x00,0x00,0xFF,0x00,0x03,0x01,0x05,0x45,0x85,0x7D,0x05,0x05,0x05,0x01,0x03,0x00,/*"停",18*/
0x08,0xE8,0x08,0xFF,0x08,0xE8,0x08,0xF2,0x12,0x1A,0xD6,0x12,0x12,0xF2,0x02,0x00,
0x00,0x03,0x02,0x7F,0x22,0x13,0x80,0x4F,0x20,0x18,0x07,0x10,0x20,0x4F,0x80,0x00,/*"顿",19*/
0x00,0xFC,0x84,0x84,0x84,0xFC,0x00,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x00,
0x00,0x3F,0x10,0x10,0x10,0x3F,0x00,0x00,0x01,0x06,0x40,0x80,0x7F,0x00,0x00,0x00,/*"时",20*/
0x00,0xF8,0x01,0x06,0x00,0xF0,0x12,0x12,0x12,0xF2,0x02,0x02,0x02,0xFE,0x00,0x00,
0x00,0xFF,0x00,0x00,0x00,0x1F,0x11,0x11,0x11,0x1F,0x00,0x40,0x80,0x7F,0x00,0x00,/*"间",21*/
0x10,0x10,0x10,0xFF,0x10,0x10,0xF0,0x00,0x00,0xF8,0x08,0x08,0x08,0xF8,0x00,0x00,
0x80,0x40,0x30,0x0F,0x40,0x80,0x7F,0x00,0x00,0x7F,0x20,0x20,0x20,0x7F,0x00,0x00,/*"加",22*/
0x00,0x02,0x0C,0xC0,0x00,0xF8,0x08,0x48,0x48,0x48,0x08,0xFF,0x08,0x09,0x8A,0x00,
0x02,0x02,0x7F,0x80,0x40,0x3F,0x00,0x1E,0x92,0x5E,0x20,0x17,0x38,0x46,0xF1,0x00,/*"减",23*/
0x04,0x84,0xE4,0x5C,0x44,0xC4,0x20,0x10,0xE8,0x27,0x24,0xE4,0x34,0x2C,0xE0,0x00,
0x02,0x01,0x7F,0x10,0x10,0x3F,0x80,0x60,0x1F,0x09,0x09,0x3F,0x49,0x89,0x7F,0x00,/*"确",24*/
0x40,0x40,0x42,0xCC,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3F,0x90,0x48,0x20,0x18,0x07,0x00,0x07,0x18,0x20,0x40,0x80,0x00,/*"认",25*/
0x40,0x40,0x42,0x44,0x58,0xC0,0x40,0x7F,0x40,0xC0,0x50,0x48,0x46,0x40,0x40,0x00,
0x80,0x80,0x40,0x20,0x18,0x07,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x78,0x00,/*"光",26*/
0x00,0xFC,0x00,0x00,0xFF,0x00,0x04,0x84,0x84,0x84,0x84,0x84,0x84,0xFC,0x00,0x00,
0x00,0x87,0x40,0x30,0x0F,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7F,0x00,0x00,/*"归",27*/
0x10,0x0C,0x05,0x55,0x55,0x55,0x85,0x7F,0x85,0x55,0x55,0x55,0x05,0x14,0x0C,0x00,
0x04,0x04,0x02,0x0A,0x09,0x29,0x2A,0x4C,0x48,0xA9,0x19,0x02,0x02,0x04,0x04,0x00,/*"零",28*/
0x00,0x10,0x88,0xC4,0x33,0x40,0x48,0x48,0x48,0x7F,0x48,0xC8,0x48,0x48,0x40,0x00,
0x02,0x01,0x00,0xFF,0x00,0x02,0x0A,0x32,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x00,/*"待",29*/
0x10,0x10,0x10,0xFF,0x10,0x10,0xF0,0x00,0x00,0xF8,0x08,0x08,0x08,0xF8,0x00,0x00,
0x80,0x40,0x30,0x0F,0x40,0x80,0x7F,0x00,0x00,0x7F,0x20,0x20,0x20,0x7F,0x00,0x00,/*"加",30*/
0x00,0x02,0x0C,0xC0,0x00,0xF8,0x08,0x48,0x48,0x48,0x08,0xFF,0x08,0x09,0x8A,0x00,
0x02,0x02,0x7F,0x80,0x40,0x3F,0x00,0x1E,0x92,0x5E,0x20,0x17,0x38,0x46,0xF1,0x00,/*"减",31*/
0x40,0x40,0x42,0xCC,0x00,0x00,0xFF,0x49,0x49,0xC9,0x49,0x49,0x7F,0x80,0x00,0x00,
0x00,0x40,0x20,0x1F,0x20,0x40,0x5F,0x48,0x44,0x40,0x41,0x42,0x45,0x58,0x40,0x00,/*"退",32*/
0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0xFC,0x00,0x00,0x00,
0x00,0x7C,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0xFC,0x00,0x00,/*"出",33*/
0x00,0x02,0x02,0xF2,0x12,0x1A,0x16,0xD2,0x12,0x12,0x12,0xF2,0x02,0x02,0x00,0x00,
0x00,0x80,0x80,0x4F,0x40,0x20,0x18,0x07,0x08,0x10,0x20,0x4F,0x80,0x00,0x00,0x00,/*"页",34*/
0x02,0x02,0xE2,0x22,0x22,0xF2,0x2E,0x22,0x22,0xE2,0x22,0x22,0xE2,0x02,0x02,0x00,
0x00,0x00,0xFF,0x40,0x40,0x7F,0x49,0x49,0x49,0x7F,0x40,0x40,0xFF,0x00,0x00,0x00,/*"面",35*/
0x80,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x80,0x00,
0x00,0x80,0x40,0x30,0x0F,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,/*"开",36*/
0x00,0x00,0x10,0x11,0x16,0x10,0x10,0xF0,0x10,0x10,0x14,0x13,0x10,0x00,0x00,0x00,
0x81,0x81,0x41,0x41,0x21,0x11,0x0D,0x03,0x0D,0x11,0x21,0x41,0x41,0x81,0x81,0x00,/*"关",37*/
0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0xF2,0x12,0x1A,0xD6,0x12,0x12,0xF2,0x02,0x00,
0x00,0x20,0x40,0x3F,0x00,0x00,0x80,0x4F,0x20,0x18,0x07,0x10,0x20,0x4F,0x80,0x00,/*"顶",38*/
0x40,0x40,0x42,0xCC,0x00,0x80,0x88,0x88,0xFF,0x88,0x88,0xFF,0x88,0x88,0x80,0x00,
0x00,0x40,0x20,0x1F,0x20,0x40,0x50,0x4C,0x43,0x40,0x40,0x5F,0x40,0x40,0x40,0x00,/*"进",39*/
0x40,0x40,0x42,0xCC,0x00,0x00,0xFF,0x49,0x49,0xC9,0x49,0x49,0x7F,0x80,0x00,0x00,
0x00,0x40,0x20,0x1F,0x20,0x40,0x5F,0x48,0x44,0x40,0x41,0x42,0x45,0x58,0x40,0x00,/*"退",40*/
0x10,0x10,0x10,0xFF,0x90,0x08,0x88,0x88,0xFF,0x00,0x00,0xFF,0x88,0x88,0x08,0x00,
0x02,0x42,0x81,0x7F,0x00,0x08,0x08,0x08,0xFF,0x00,0x00,0xFF,0x08,0x08,0x08,0x00,/*"排",41*/
0x00,0x02,0xC2,0x32,0x1E,0x12,0x12,0xF2,0x02,0x00,0xF8,0x00,0x00,0xFF,0x00,0x00,
0x02,0x81,0x40,0x21,0x12,0x0C,0x03,0x00,0x00,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00,/*"列",42*/
0x20,0x10,0x4C,0x47,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0xD4,0x04,0x04,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x30,0x40,0xF0,0x00,/*"气",43*/
0x00,0xF8,0x01,0x06,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x00,0x00,
0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,/*"门",44*/
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00,
0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,/*"上",45*/
0x40,0x44,0x58,0xC0,0xFF,0x50,0x4C,0x00,0x22,0xCC,0x00,0x00,0xFF,0x00,0x00,0x00,
0x10,0x08,0x06,0x01,0xFF,0x01,0x06,0x00,0x04,0x04,0x04,0x04,0xFF,0x02,0x02,0x00,/*"料",46*/
};
/*************Pin Define***************/
              sbit      OLED_SCL=P2^4;       //16S
              sbit      OLED_SDA=P2^5;       //16S
              void      Initial_LY096BG30();
              void      Delay_50ms(unsigned int Del_50ms);
              void      fill_picture(unsigned char fill_Data);
              void      IIC_Start();
              void      IIC_Stop();
              void      Write_IIC_Command(unsigned char IIC_Command);
              void      Write_IIC_Data(unsigned char IIC_Data);
              bit       Write_IIC_Byte(unsigned char IIC_Byte);
              void      dis_Value(uchar s);
/**************Delay*******************************/
              void     Delay_50ms(unsigned int Del_50ms)        //
              {
              unsigned int m;
              for(;Del_50ms>0;Del_50ms--)
              for(m=62450;m>0;m--);
              }
/*---------------延时子程序----------------*/
              void Delay_us(uint us)
              {
              uint i;
              for(i=0;i<us;i++)
              ;
              }    
/*---------------延时子程序----------------*/
              void delay(uint ms)
              {
              uint i,j;
              for(i=0;i<ms;i++)
              for(j=0;j<200;j++)
              ;
              }    
/****************按键计数器状态寄存器归零*************/
              void RstKey()
              {
              kcounter=0;                        //按键计数器归零
              kstatus=0;                         //状态寄存器归零
              }
/*****************按键低电平检测函数*****************/
              void   LowVoltKey(void)            //按键计数器状态标志加一
              {
              kcounter++;                       
              kstatus++;     
              }
/*****************按键高电平检测函数*****************/
              void    HighVoltKey(void)          //按键计数器加一 状态标志归零
              {
              kcounter++;                        //按键计数器加一
              kstatus=0;                         //按键状态标志归零
              }
/*****************按键低电平检测函数*****************/
              void   LowRst(void)                //按键计数器状态标志加一
              {
              kcounter++;                       
              kstatus=0;     
              }
/*****************按键高电平检测函数*****************/
              void    HighSet(void)              //按键计数器加一 状态标志归零
              {
              kcounter++;                        //按键计数器加一
              kstatus++;                         //按键状态标志归零
              }
/*******************IIC Start******************/
              void IIC_Start()
              {
               OLED_SCL=high;
               Delay_us(5);        
               OLED_SDA=high;
               Delay_us(5);   
               OLED_SDA=low;
               Delay_us(5);   
               OLED_SCL=low;
              }
/*************IIC Stop*************************/
              void IIC_Stop()
              {
              OLED_SDA=low;
              Delay_us(5);   
              OLED_SCL=high;
              Delay_us(5);   
              OLED_SDA=high;
              }
/*****************IIC Write byte***************/
              bit Write_IIC_Byte(unsigned char IIC_Byte)
              {
              unsigned char i;
               bit Ack_Bit;                      //应答信号
               for(i=0;i<8;i++)        
               {
               if(IIC_Byte & 0x80)               //1?0?
               OLED_SDA=high;
               else
               OLED_SDA=low;
//Delay_us(1);
               OLED_SCL=high;
               Delay_us(5);
               OLED_SCL=low;
//Delay_us(1);
               IIC_Byte<<=1;                     //loop
               }
              OLED_SDA=high;                     //释放IIC SDA总线为主器件接收从器件产生应答信号    
              Delay_us(5);
              OLED_SCL=high;                     //第9个时钟周期
              Delay_us(5);
              Ack_Bit=OLED_SDA;                  //读取应答信号
              OLED_SCL=low;
              return Ack_Bit;    
              }  
/*************IIC Write Command*****************/
              void Write_IIC_Command(unsigned char IIC_Command)
              {
              IIC_Start();
              Write_IIC_Byte(0x78);              //Slave address,SA0=0
              Write_IIC_Byte(0x00);              //write command
              Write_IIC_Byte(IIC_Command);
              IIC_Stop();
              }
/****************IIC Write Data*****************/
              void Write_IIC_Data(uchar IIC_Data)
              {
              EA=0;
              IIC_Start();
              Write_IIC_Byte(0x78);            
              Write_IIC_Byte(0x40);              //write data
              Write_IIC_Byte(IIC_Data);
              IIC_Stop();
              EA=1;
              }
/********************picture**********************/
              void cleardisp()
              {
              unsigned char x,y;
              for(y=0;y<8;y++)
               {
               Write_IIC_Command(0xb0+y);
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x10);
                for(x=0;x<128;x++)               //横向像素
                {
                Write_IIC_Data(0X00);
                }
               }
              }
/***********************Initial code*********************/
              void Initial_LY096BG30()
              {
              Write_IIC_Command(0xAE);   //display off
              Write_IIC_Command(0x20);   //Set Memory Addressing Mode    
              Write_IIC_Command(0x10);   //00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
              Write_IIC_Command(0xb0);   //Set Page Start Address for Page Addressing Mode,0-7
              Write_IIC_Command(0xc8);   //Set COM Output Scan Direction
              Write_IIC_Command(0x00);   //---set low column address
              Write_IIC_Command(0x10);   //---set high column address
              Write_IIC_Command(0x40);   //--set start line address
              Write_IIC_Command(0x81);   //--set contrast control register
              Write_IIC_Command(0x7f);
              Write_IIC_Command(0xa1);   //--set segment re-map 0 to 127
              Write_IIC_Command(0xa6);   //--set normal display
              Write_IIC_Command(0xa8);   //--set multiplex ratio(1 to 64)
              Write_IIC_Command(0x3F);   //
              Write_IIC_Command(0xa4);   //0xa4,Output follows RAM content;0xa5,Output ignores RAM content
              Write_IIC_Command(0xd3);   //-set display offset
              Write_IIC_Command(0x00);   //-not offset
              Write_IIC_Command(0xd5);   //--set display clock divide ratio/oscillator frequency
              Write_IIC_Command(0xf0);   //--set divide ratio
              Write_IIC_Command(0xd9);   //--set pre-charge period
              Write_IIC_Command(0x22);   //
              Write_IIC_Command(0xda);   //--set com pins hardware configuration
              Write_IIC_Command(0x12);
              Write_IIC_Command(0xdb);   //--set vcomh
              Write_IIC_Command(0x20);   //0x20,0.77xVcc
              Write_IIC_Command(0x8d);   //--set DC-DC enable
              Write_IIC_Command(0x14);   //
              Write_IIC_Command(0xaf);   //--turn on oled panel
             }
/*************关所有输出*******************************/             
              void Init_io()
              {
               P1M0=0X80;                        //    Init  1.7
               P1M1=0X00;                        //
               P2M0=0X00;                        //
               P2M1=0X00;                        //
               P3M0=0X0B;                        //    3.3 3.1 3.0
               P3M1=0X00;                        //
               P5M0=0X00;                        //
               P5M1=0X00;                        //
               L_PWM=1;                          //脉冲频率
               L_EN=1;                           //高电平使能 低电平关闭
               R_PWM=1;                          //脉冲频率
               R_EN=1;                           //高电平使能 低电平关闭
               INTPUT1=1;                        //
               INTPUT2=1;                        //
               INTPUT3=1;                        //
               MOTORA_CW=1;                      //链条电机
               MOTORB_CW=1;                      //料斗电机
               MOTORB_CCW=1;      //
               Photoele_Flag=0;                  //光电    标志
               Switch_Flag=0;                    //开关闸 标志
               func=0;                           //功能计数器归零
               MOTORRUN_L=0;                     //电机正转标志
               MOTORRUN_R=0;                     //电机反转标志
              }
/*************关所有输出*******************************/             
               void Reset_io()
               {
               MOTORA_CW=1;                      //链条电机
               MOTORB_CW=1;                      //料斗电机
               MOTORB_CCW=1;                     //
               OUT1=1;                           //
               OUT2=1;                           //
               }
/*----关闭IAP----------------------------*/
              void IapIdle()
              {
              IAP_CONTR=0;                     //关闭IAP功能
              IAP_CMD=0;                       //清除命令寄存器
              IAP_TRIG=0;                      //清除触发寄存器
              IAP_ADDRH=0x80;                  //将地址设置到非IAP区域
              IAP_ADDRL=0;
              }
/*-从ISP/IAP/EEPROM区域读取一字节-*/
              BYTE IapReadByte(WORD addr)
              {
              BYTE dat;                          //数据缓冲区
              IAP_CONTR=ENABLE_IAP;              //使能IAP
              IAP_CMD=CMD_READ;                  //设置IAP命令
              IAP_ADDRL=addr;                    //设置IAP低地址
              IAP_ADDRH=addr>>8;                 //设置IAP高地址
              IAP_TRIG=0x5a;                     //写触发命令(0x5a)
              IAP_TRIG=0xa5;                     //写触发命令(0xa5)
              _nop_();                           //等待ISP/IAP/EEPROM操作完成
              dat=IAP_DATA;                      //读ISP/IAP/EEPROM数据
              IapIdle();                         //关闭IAP功能
              return dat;                        //返回
              }
/*-写一字节数据到ISP/IAP/EEPROM区域-*/
              void IapProgramByte(WORD addr, BYTE dat)
              {
              IAP_CONTR=ENABLE_IAP;              //使能IAP
              IAP_CMD=CMD_PROGRAM;               //设置IAP命令
              IAP_ADDRL=addr;                    //设置IAP低地址
              IAP_ADDRH=addr>>8;                 //设置IAP高地址
              IAP_DATA=dat;                      //写ISP/IAP/EEPROM数据
              IAP_TRIG=0x5a;                     //写触发命令(0x5a)
              IAP_TRIG=0xa5;                     //写触发命令(0xa5)
              _nop_();                           //等待ISP/IAP/EEPROM操作完成
              IapIdle();
              }
/*---扇区擦除---------------*/
              void IapEraseSector(WORD addr)
              {
              IAP_CONTR=ENABLE_IAP;              //使能IAP val=IapReadByte(IAP_ADDRESS+1);
              IAP_CMD=CMD_ERASE;                 //设置IAP命令
              IAP_ADDRL=addr;                    //设置IAP低地址
              IAP_ADDRH=addr>>8;                 //设置IAP高地址
              IAP_TRIG=0x5a;                     //写触发命令(0x5a)
              IAP_TRIG=0xa5;                     //写触发命令(0xa5)
              _nop_();                           //等待ISP/IAP/EEPROM操作完成
              IapIdle();
              }
/*-----------------------------------------*/
              void red_eeprom(void)
              {
              RunTime_A=IapReadByte(IAP_ADDRESS);     //上料延时
              RunTime_B=IapReadByte(IAP_ADDRESS+1);   //光电延时
              RunTime_C=IapReadByte(IAP_ADDRESS+2);   //停顿时间
              RunTime_D=IapReadByte(IAP_ADDRESS+3);   //电机速度
              }
/***************************************/              
              void write_eeprom( )
              {
              IapEraseSector(IAP_ADDRESS);       //扇区擦除      
              IapProgramByte(IAP_ADDRESS,RunTime_A); /**/
              IapProgramByte(IAP_ADDRESS+1,RunTime_B);
              IapProgramByte(IAP_ADDRESS+2,RunTime_C);
              IapProgramByte(IAP_ADDRESS+3,RunTime_D);
              }   
/*-----------------------------------------*/
              void red_eepromt(void)
              {
              uint j,k,s,p;
              j=IapReadByte(IAP_ADDRESSS);//
              k=IapReadByte(IAP_ADDRESSS+1);//
              s=IapReadByte(IAP_ADDRESSS+2);//
              p=IapReadByte(IAP_ADDRESSS+3);//    
              RunTime_E=j*1000+k*100+s*10+p;//
              }
/***************************************/              
              void write_eepromt(uint dat)
              {
              uint j,k,s,p;
              j=dat/1000;
              k=(dat-j*1000)/100;
              s=(dat-j*1000-k*100)/10;
              p=dat-j*1000-k*100-s*10;    
              IapEraseSector(IAP_ADDRESSS);      //扇区擦除      
              IapProgramByte(IAP_ADDRESSS+0,j);  /**/
              IapProgramByte(IAP_ADDRESSS+1,k);  /**/
              IapProgramByte(IAP_ADDRESSS+2,s);  /**/
              IapProgramByte(IAP_ADDRESSS+3,p);  /**/    
              }  
/***************显示上料电机延时计时*************/
               void dis_Value(uchar s)
               {
               uchar x,y;
               uint i=0;
               A1=s/100;
               A2=(s-A1*100)/10;
               A3=s-A1*100-A2*10;
               for(y=0;y<2;y++)                  //百位显示
               {
               Write_IIC_Command(0XB2+y);        //纵向页
               Write_IIC_Command(00);            //横向离左部边缘开始的距离
               Write_IIC_Command(0X15);          //横向第四个字
                for(x=0;x<8;x++)                 //横向像素
                {
                Write_IIC_Data(show1[x+y*8+A1*16]);     //0--A字符表
                }
                for(x=0;x<8;x++)                 //横向像素
                {
                Write_IIC_Data(show1[x+y*8+A2*16]);
                }
               }
                for(y=0;y<2;y++)                 //十位显示
                {
                Write_IIC_Command(0XB2+y);       //纵向页
                Write_IIC_Command(00);           //横向离左部边缘开始的距离
                Write_IIC_Command(0X16);         //横向第五个字
                 for(x=0;x<8;x++)                //横向像素
                 {
                 Write_IIC_Data(show1[x+y*8+A3*16]);
                 }
                }
               }
/***************显示显示排列电机延时计时******************/
               void dis_Val(uchar s)
               {
               uchar x,y;
               uint i=0;
               A1=s/100;
               A2=(s-A1*100)/10;
               A3=s-A1*100-A2*10;
               for(y=0;y<2;y++)                  //百位显示
               {
               Write_IIC_Command(0XB4+y);        //纵向页
               Write_IIC_Command(00);            //横向离左部边缘开始的距离
               Write_IIC_Command(0X15);          //横向第四个字
                for(x=0;x<8;x++)                 //横向像素
                {
                Write_IIC_Data(show1[x+y*8+A1*16]);     //0--A字符表
                }
                for(x=0;x<8;x++)                 //横向像素
                {
                Write_IIC_Data(show1[x+y*8+A2*16]);
                }
               }
                for(y=0;y<2;y++)                 //十位显示
                {
                Write_IIC_Command(0XB4+y);       //纵向页
                Write_IIC_Command(00);           //横向离左部边缘开始的距离
                Write_IIC_Command(0X16);         //横向第五个字
                 for(x=0;x<8;x++)                //横向像素
                 {
                 Write_IIC_Data(show1[x+y*8+A3*16]);
                 }
                }
               }               
/*************设置参数值显示**************************/                 
              void display(uchar s)
              {
               uchar x,y;
               uint i=0;
               A1=s/100;
               A2=(s-A1*100)/10;
               A3=s-A1*100-A2*10;
               for(y=0;y<2;y++)                  //百位显示
               {
               Write_IIC_Command(0XB2+y);        //纵向页
               Write_IIC_Command(00);            //横向离左部边缘开始的距离
               Write_IIC_Command(0X15);          //横向第四个字
                for(x=0;x<8;x++)                 //横向像素
                {
                Write_IIC_Data(show1[x+y*8+A1*16]);     //0--A字符表
                }
                for(x=0;x<8;x++)                 //横向像素
                {
                Write_IIC_Data(show1[x+y*8+A2*16]);
                }
               }
                for(y=0;y<2;y++)                 //十位显示
                {
                Write_IIC_Command(0XB2+y);       //纵向页
                Write_IIC_Command(00);           //横向离左部边缘开始的距离
                Write_IIC_Command(0X16);         //横向第五个字
                 for(x=0;x<8;x++)                //横向像素
                 {
                 Write_IIC_Data(show1[x+y*8+A3*16]);
                 }
                }
              }
/*************设置参数值显示测试**************************/                 
              void distest(uchar s)
              {
               uchar x,y;
               uint i=0;
               uchar A1,A2,A3;
               A1=s/100;
               A2=(s-A1*100)/10;
               A3=s-A1*100-A2*10;
               for(y=0;y<2;y++)                  //百位显示
               {
               Write_IIC_Command(0XB2+y);        //纵向页
               Write_IIC_Command(00);            //横向离左部边缘开始的距离
               Write_IIC_Command(0X15);          //横向第四个字
                for(x=0;x<8;x++)                 //横向像素
                {
                Write_IIC_Data(show1[x+y*8+A1*16]);     //0--A字符表
                }
                for(x=0;x<8;x++)                 //横向像素
                {
                Write_IIC_Data(show1[x+y*8+A2*16]);
                }
               }
                for(y=0;y<2;y++)                 //十位显示
                {
                Write_IIC_Command(0XB2+y);       //纵向页
                Write_IIC_Command(00);           //横向离左部边缘开始的距离
                Write_IIC_Command(0X16);         //横向第五个字
                 for(x=0;x<8;x++)                //横向像素
                 {
                 Write_IIC_Data(show1[x+y*8+A3*16]);
                 }
                }
              }
/*************显示开机次数参数值******************/                 
              void DisCouter(uint s)
              {
               uchar A1,A2,A3,A4;
               uchar x,y;
               uint i=0;
               A1=s/1000;
               A2=(s-A1*1000)/100;
               A3=(s-A1*1000-A2*100)/10;
               A4=s-A1*1000-A2*100-A3*10;    
               for(y=0;y<2;y++)                  //百位显示
               {
               Write_IIC_Command(0XB2+y);        //纵向页
               Write_IIC_Command(00);            //横向离左部边缘开始的距离
               Write_IIC_Command(0X15);          //横向第四个字
                for(x=0;x<8;x++)                 //横向像素
                {
                Write_IIC_Data(show1[x+y*8+A1*16]);     //千位显示 0--A字符表
                }
                for(x=0;x<8;x++)                 //横向像素
                {
                Write_IIC_Data(show1[x+y*8+A2*16]);    //百位显示
                }
               }
               for(y=0;y<2;y++)                 
                {
                Write_IIC_Command(0XB2+y);            //纵向页
                Write_IIC_Command(00);                //横向离左部边缘开始的距离
                Write_IIC_Command(0X16);              //横向第五个字
                 for(x=0;x<8;x++)                     //横向像素
                 {
                 Write_IIC_Data(show1[x+y*8+A3*16]);  //十位位显示
                 }
                 for(x=0;x<8;x++)                     //横向像素
                 {
                 Write_IIC_Data(show1[x+y*8+A4*16]);    //个位显示
                 }
                }
              }
/***************“清除状态显示******************/
              void Clear_State()
              {
               uchar x,y;
               uint  Cnt=32;
//
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb0+y);        //竖向第二行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x10);          //横向第一个字
                for(x=0;x<16;x++)                //横向像素
                {
                Write_IIC_Data(0X00); //字符表第4个字
                }
               }
//
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb0+y);        //竖向第二行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x11);          //横向第一个字
                for(x=0;x<16;x++)                //横向像素
                {
                Write_IIC_Data(0X00); //字符表第4个字
                }
               }
              }
/***************显示上料电机******************/
              void DisLoaderMotor()
              {
               uchar x,y;
               uint  Cnt=32;
//上B2 1  4
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第二行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x10);          //横向第一个字
                for(x=0;x<16;x++)                //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*45]); //字符表第4个字
                }
               }
//料B2 2  5
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第二行
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x11);          //横向第二个字
                for(x=0;x<16;x++)                //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*46]);  //字符表第5个字
                }
               }
//电B2 3  10
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第二行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x12);          //横向第三个字
                for(x=0;x<16;x++)                //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*10]); //字符表第10个字
                }
               }
//机B2 4  11
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第二行
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x13);          //横向第四个字
                for(x=0;x<16;x++)                //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*11]);  //字符表第11个字
                }
               }
              }
/***************显示排列电机******************/
              void DisArrangeMotor()
              {
               uchar x,y;
               uint  Cnt=32;
//排B4 1  41
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb4+y);        //竖向第二行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x10);          //横向第一个字
                for(x=0;x<16;x++)                //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*41]); //字符表第4个字
                }
               }
//列B4 2  42
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb4+y);        //竖向第二行
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x11);          //横向第二个字
                for(x=0;x<16;x++)                //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*42]);  //字符表第1个字
                }
               }
//电B4 3  10
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb4+y);        //竖向第二行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x12);          //横向第三个字
                for(x=0;x<16;x++)                //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*10]); //字符表第0个字
                }
               }
//机B4 4  11
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb4+y);        //竖向第二行
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x13);          //横向第四个字
                for(x=0;x<16;x++)                //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*11]);  //字符表第1个字
                }
               }
              }
/***************“上料电机”显示开******************/
              void LoaderMotorOpen()
              {
               uchar x,y;
               uint  Cnt=32;
//开B2 17 36
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第二行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x17);          //横向第一个字
                for(x=0;x<16;x++)                //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*36]); //字符表第4个字
                }
               }
              }
/***************“上料电机”显示关******************/
              void LoaderMotorClose()
              {
               uchar x,y;
               uint  Cnt=32;
//关B2 17 37
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第二行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x17);          //横向第一个字
                for(x=0;x<16;x++)                //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*37]); //字符表第4个字
                }
               }
              }
/***************“排列电机”显示开******************/
              void ArrangeMotorOpen()
              {
               uchar x,y;
               uint  Cnt=32;
//开B2 17 36
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb4+y);        //竖向第二行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x17);          //横向第一个字
                for(x=0;x<16;x++)                //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*36]); //字符表第4个字
                }
               }
              }
/***************“排列电机”显示关******************/
              void ArrangeMotorClose()
              {
               uchar x,y;
               uint  Cnt=32;
//关B2 17 37
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb4+y);        //竖向第二行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x17);          //横向第一个字
                for(x=0;x<16;x++)                //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*37]); //字符表第4个字
                }
               }
              }
/***************显示顶进******************/
              void DisJacking()
              {
               uchar x,y;
               uint  Cnt=32;
//顶B0 12  38
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb0+y);        //竖向第一行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x10);             //横向第三个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*38]); //字符表第0个字
                }
               }
//进B0 13  39
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb0+y);        //竖向第一行
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x11);             //横向第四个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*39]);  //字符表第1个字
                }
               }
              }
 /***************显示顶退******************/
              void DisRetreat()
              {
               uchar x,y;
               uint  Cnt=32;
//顶B0 16 38
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb0+y);        //竖向第一行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x10);             //横向第三个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*38]); //字符表第0个字
                }
               }
//退B0 17 40
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb0+y);        //竖向第一行
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x11);             //横向第四个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*40]);  //字符表第1个字
                }
               }
              }

/*************显示参数设置加减设置退出*********************/               
              void DisSetData()
              {              
               uchar x,y;
               uint  Cnt=32;
//参B0 12    00
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb0+y);        //竖向第一行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x11);             //横向第三个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*0]); //字符表第0个字
                }
               }
//数B0 13   01
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb0+y);        //竖向第一行
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x12);             //横向第四个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*1]);  //字符表第1个字
                }
               }
//设B0 14  02
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb0+y);        //竖向第一行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x13);             //横向第五个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*2]); //字符表第2个字
                }
               }
//置B0 15  03
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb0+y);        //竖向第一行    机
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x14);             //横向第六个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*3]);  //字符表第3个字
                }
               }
//加B0 15  03
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb6+y);        //竖向第一行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x10);             //横向第五个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*30]); //字符表第2个字
                }
               }
//减B0 15  03
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb6+y);        //竖向第一行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x12);             //横向第五个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*31]); //字符表第2个字
                }
               }

//设B0 14  02
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb6+y);        //竖向第一行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x14);             //横向第五个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*2]); //字符表第2个字
                }
               }
//置B0 15  03
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb6+y);        //竖向第一行    机
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x15);             //横向第六个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*3]);  //字符表第3个字
                }
               }
//退B0 14  02
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb6+y);        //竖向第一行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x16);             //横向第五个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*32]); //字符表第2个字
                }
               }
//出B0 15  03
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb6+y);        //竖向第一行    机
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x17);             //横向第六个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*33]);  //字符表第3个字
                }
               }
//页B4 14  34
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb4+y);        //竖向第一行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x10);             //横向第五个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*34]); //字符表第2个字
                }
               }
//面B4 15  35
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb4+y);        //竖向第一行    机
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x11);             //横向第六个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*35]);  //字符表第3个字
                }
               }
              }
/********************显示参数设置编号**********************/               
              void DisNumber(uchar Number)
              {              
               uchar x,y;
               uint  Cnt=32;
//参B0 12    00
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb0+y);        //竖向第一行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x16);             //横向第三个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show3[x+y*16+Cnt*Number]); //字符表第Number个字
                }
               }
              }
/**************显示参数设置编号数据*********************/               
              void Dis_Num(uchar Number)
              {              
               uchar x,y;
               uint i=0;
               A1=Number/100;
               A2=(Number-A1*100)/10;
               A3=Number-A1*100-A2*10;
               for(y=0;y<2;y++)                  //百位显示
               {
               Write_IIC_Command(0XB4+y);        //纵向页
               Write_IIC_Command(00);            //横向离左部边缘开始的距离
               Write_IIC_Command(0X13);          //横向第四个字
                for(x=0;x<8;x++)                 //横向像素
                {
                Write_IIC_Data(show1[x+y*8+A1*16]);     //0--A字符表
                }
                for(x=0;x<8;x++)                 //横向像素
                {
                Write_IIC_Data(show1[x+y*8+A2*16]);
                }
               }
                for(y=0;y<2;y++)                 //十位显示
                {
                Write_IIC_Command(0XB4+y);       //纵向页
                Write_IIC_Command(00);           //横向离左部边缘开始的距离
                Write_IIC_Command(0X14);         //横向第五个字
                 for(x=0;x<8;x++)                //横向像素
                 {
                 Write_IIC_Data(show1[x+y*8+A3*16]);
                 }
                }
              }
/********************显示停顿时间**********************/               
              void DisStopData()
              {              
               uchar x,y;
               uint  Cnt=32;
//停
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第二行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x10);             //横向第一个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*18]); //字符表第18个字
                }
               }
//顿
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第二行
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x11);             //横向第二个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*19]);  //字符表第19个字
                }
               }
//时
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第二行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x12);             //横向第三个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*20]); //字符表第20个字
                }
               }
//间
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第二行    机
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x13);             //横向第四个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*21]);  //字符表第21个字
                }
               }
              }
/********************显示电机速度**********************/               
              void DisMotorSpeed()
              {              
               uchar x,y;
               uint  Cnt=32;
//电
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第二行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x10);             //横向第一个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*10]); //字符表第18个字
                }
               }
//机
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第二行
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x11);             //横向第二个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*11]);  //字符表第19个字
                }
               }
//速
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第二行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x12);             //横向第三个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*12]); //字符表第20个字
                }
               }
//度
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第二行    机
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x13);             //横向第四个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*13]);  //字符表第21个字
                }
               }
              }
/************上料延时*****/
              void  Infrared_delay()               //photoelectricity
              {
              uchar x,y;
              uint  Cnt=32;
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第一行    上
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x10);             //横向第一个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*4]); //字符表第7个字
                }
               }
//
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第一行    料
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x11);             //横向第二个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*5]);  //字符表第8个字
                }
               }
//
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第一行    延
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x12);             //横向第二个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*6]);  //字符表第8个字
                }
               }
//
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第一行    时
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x13);             //横向第二个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*7]);  //字符表第8个字
                }
               }
              }            
/************光电延时*****/
              void  photoelectricity_delay()              
              {
              uchar x,y;
              uint  Cnt=32;
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第一行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x10);             //横向第一个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*26]); //字符表第7个字
                }
               }
//光
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第一行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x11);             //横向第二个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*10]);  //字符表第8个字
                }
               }
//电
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第一行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x12);             //横向第二个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*6]);  //字符表第8个字
                }
               }
//延
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第一行    进
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x13);             //横向第二个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*7]);  //字符表第8个字
                }
               }
//时
              }        
/********************显示待机**********************/
              void Diswait()
              {
              uchar x,y;
              uint  Cnt=32;
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb0+y);        //竖向第一行    待
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x16);             //横向第一个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*29]); //字符表第7个字
                }
               }
//
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb0+y);        //竖向第一行    机
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x17);             //横向第二个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*11]);  //字符表第8个字
                }
               }
              }    
/********************显示运行**********************/
              void DisDoon()
              {
              uchar x,y;
              uint  Cnt=32;
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb6+y);        //竖向第一行    运
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x16);             //横向第一个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*14]); //字符表第7个字
                }
               }
//
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb6+y);        //竖向第一行    行
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x17);             //横向第二个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*15]);  //字符表第8个字
                }
               }
              }    
 /********************显示上料**********************/
              void DisWork()
              {
              uchar x,y;
              uint  Cnt=32;
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb0+y);        //竖向第一行    上
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x10);             //横向第一个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*45]); //字符表第7个字
                }
               }
//
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb0+y);        //竖向第一行    料
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x11);             //横向第二个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*46]);  //字符表第8个字
                }
               }
              }    
/***************上料时间参数显示******************/
               void dis_timea(uchar s)
               {
               uchar x,y;
               uint i=0;
               A1=s/100;
               A2=(s-A1*100)/10;
               A3=s-A1*100-A2*10;
               for(y=0;y<2;y++)                  //百位显示
               {
               Write_IIC_Command(0XB2+y);        //纵向页
               Write_IIC_Command(00);            //横向离左部边缘开始的距离
               Write_IIC_Command(0X15);          //横向第四个字
                for(x=0;x<8;x++)                 //横向像素
                {
                Write_IIC_Data(show1[x+y*8+A1*16]);     //0--A字符表
                }
                for(x=0;x<8;x++)                 //横向像素
                {
                Write_IIC_Data(show1[x+y*8+A2*16]);
                }
               }
                for(y=0;y<2;y++)                 //十位显示
                {
                Write_IIC_Command(0XB2+y);       //纵向页
                Write_IIC_Command(00);           //横向离左部边缘开始的距离
                Write_IIC_Command(0X16);         //横向第五个字
                 for(x=0;x<8;x++)                //横向像素
                 {
                 Write_IIC_Data(show1[x+y*8+A3*16]);
                 }
                }
               }
/***************设置参数显示******************/
               void dis_timeb(uchar s)
               {
               uchar x,y;
               uint i=0;
               A1=s/100;
               A2=(s-A1*100)/10;
               A3=s-A1*100-A2*10;
               for(y=0;y<2;y++)                  //百位显示
               {
               Write_IIC_Command(0XB4+y);        //纵向页
               Write_IIC_Command(00);            //横向离左部边缘开始的距离
               Write_IIC_Command(0X15);          //横向第四个字
                for(x=0;x<8;x++)                 //横向像素
                {
                Write_IIC_Data(show1[x+y*8+A1*16]);     //0--A字符表
                }
                for(x=0;x<8;x++)                 //横向像素
                {
                Write_IIC_Data(show1[x+y*8+A2*16]);
                }
               }
                for(y=0;y<2;y++)                 //十位显示
                {
                Write_IIC_Command(0XB4+y);       //纵向页
                Write_IIC_Command(00);           //横向离左部边缘开始的距离
                Write_IIC_Command(0X16);         //横向第五个字
                 for(x=0;x<8;x++)                //横向像素
                 {
                 Write_IIC_Data(show1[x+y*8+A3*16]);
                 }
                }
               }
/***************显示参数归零******************/
               void csgl()
               {
               uchar x,y;
               uint  Cnt=32;
//参B0 12    00
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb0+y);        //竖向第一行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x11);             //横向第三个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*0]); //字符表第0个字
                }
               }
//数B0 13   01
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb0+y);        //竖向第一行
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x12);             //横向第四个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*1]);  //字符表第1个字
                }
               }
//归B0 14  02
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb0+y);        //竖向第一行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x13);             //横向第五个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*27]); //字符表第2个字
                }
               }
//零B0 15  03
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb0+y);        //竖向第一行    机
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x14);             //横向第六个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*28]);  //字符表第3个字
                }
               }
              }
/***************显示运行频率******************/
              void DisRunSpeed()
              {
               uchar x,y;
               uint  Cnt=32;
//运B0 12    00
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第一行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x10);             //横向第三个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*14]); //字符表第0个字
                }
               }
//行B0 13   01
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第一行
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x11);             //横向第四个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*15]);  //字符表第1个字
                }
               }
//频B0 14  02
              for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第一行    
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x12);             //横向第五个字
                for(x=0;x<16;x++)                 //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*16]); //字符表第2个字
                }
               }
//率B0 15  03
               for(y=0;y<2;y++)
               {
               Write_IIC_Command(0xb2+y);        //竖向第一行    机
               Write_IIC_Command(0x00);
               Write_IIC_Command(0x13);          //横向第六个字
                for(x=0;x<16;x++)                //横向像素
                {
                Write_IIC_Data(show4[x+y*16+Cnt*17]);  //字符表第3个字
                }
               }
              }
/*----------功能判断子程序------------*/
               void   function(uchar FuncData)
               {
                uchar  func;
                func=FuncData;
                Dis_Num(func);    
                display(func);                   //临时测试
                if(func==1)                      //功能设置循环置为1
                {
                Initial_LY096BG30();             //初始化显示屏
                Infrared_delay();                //上料延时
                DisNumber(0);                    //功能编号
                distest(RunTime_A);
                }
                if(func==2)                      //功能设置循环置为2
                {
                Initial_LY096BG30();             //初始化显示屏
                photoelectricity_delay();        //光电延时
                DisNumber(1);                    //功能编号
                distest(RunTime_B);
//                xscssz();
                }
                if(func==3)                      //功能设置循环置为3
                {
                Initial_LY096BG30();             //初始化显示屏
                DisStopData();                   //停顿时间
                DisNumber(2);                    //功能编号
                distest(RunTime_C);
                }
                if(func==4)                      //功能设置循环置为4
                {
                Initial_LY096BG30();             //初始化显示屏
                DisMotorSpeed();                 //电机速度
                DisNumber(3);                     //功能编号
                distest(RunTime_D);
                }
                if(func==5)                      //功能设置循环置为4
                {
                Initial_LY096BG30();             //初始化显示屏
                DisRunSpeed();                   //运行频率
                DisCouter(RunTime_E);            //
                DisNumber(4);                    //功能编号
                display(RunTime_E);
               //运行频率
                }
              }  
/*----------参数加-----------------*/
               void   DataOn( )                  /*写数据B子函数*/
               {                                 /*子函数开始*/
               valb=valb+1;                      /**加一**/
               if(valb>999)
               valb=0;                           /*大于999归零*/
               }                                 /*子函数结束*/
/*----------参数减---------------*/
               void   DataDown( )                /*写数据B子函数*/
               {                                 /*子函数开始*/
               valb=valb-1;                      /**加一**/
               if(valb==0)
               valb=999;                         /*大于999归零*/
               }                                                            //                    
/*-----------加减按键处理子程序------*/
               void   addfunt(int funtt,bit adddec) //功能编号 加减标志
               {
                int fun;
                bit adddecb;
                fun=funtt;
                adddecb=adddec;
                switch(fun)
                {                                //
                  case 1:                        //上升结束延时加
                  if(adddecb)
                  {    
                  valb=RunTime_A;                //数据交上升结束延时加函数子程序处理
                  DataOn();                      //加函数  display()函数处理lmn
                  RunTime_A=valb;                //处理数据交上升结束延时 存储器
                  distest(RunTime_A);            //参数显示 分离lmn百十个位数据
                  write_eeprom();
                  }
                  else
                  {                              //减
                  valb=RunTime_A;                //数据交上升结束延时减函数子程序处理
                  DataDown();                    //减函数  display()函数处理lmn
                  RunTime_A=valb;                //处理数据交上升结束延时 存储器
                  distest(RunTime_A);            //参数显示 分离lmn百十个位数据
                  write_eeprom();
                  }break;   
                  case 2:                        //下降时间加
                  if(adddecb)
                  {    
                  valb=RunTime_B;                //数据交下降时间加函数子程序处理
                  DataOn();                      //加函数  display()函数处理lmn
                  RunTime_B=valb;                //处理数据交下降时间 存储器
                  distest(RunTime_B);            //参数显示 分离lmn百十个位数据
                  write_eeprom();
                  }
                  else
                  {                              //下降时间减
                  valb=RunTime_B;                //数据交减函数子程序处理
                  DataDown();                    //减函数  display()函数处理lmn
                  RunTime_B=valb;                //处理数据交下降时间 存储器
                  distest(RunTime_B);            //参数显示 分离lmn百十个位数据
                  write_eeprom();
                  }break;   
                  case 3:                    
                  if(adddecb)
                  {                              //下降停留时间加
                  valb=RunTime_C;                //数据交加函数子程序处理
                  DataOn();                      //加函数  display()函数处理lmn
                  RunTime_C=valb;                //处理数据交下降停留时间 存储器
                  distest(RunTime_C);            //参数显示 分离lmn百十个位数据
                  write_eeprom();
          //        write3();                    //写EEPROM lmn百十个位数据
                  }
                  else
                  {                              //下降停留时间减
                  valb=RunTime_C;                //数据交减函数子程序处理
                  DataDown();                    //减函数  display()函数处理lmn
                  RunTime_C=valb;                //处理数据交下降停留时间 存储器
                  distest(RunTime_C);            //参数显示 分离lmn百十个位数据
                  write_eeprom();
                  }break;   
                  case 4:                   
                  if(adddecb)
                  {                              //开模时间加
                  valb=RunTime_D;                //数据交加函数子程序处理
                  DataOn();                      //加函数  display()函数处理lmn
                  RunTime_D=valb;                //处理数据交开模时间存储器
                  distest(RunTime_D);            //参数显示 分离lmn百十个位数据
                  write_eeprom();
                  }
                  else
                  {                              //开模时间减
                  valb=RunTime_D;                //数据交减函数子程序处理
                  DataDown();                    //减函数  display()函数处理lmn
                  RunTime_D=valb;                //处理数据交开模时间存储器
                  distest(RunTime_D);            //参数显示 分离lmn百十个位数据
                  write_eeprom();
                  } break;  
                  case 5:                   
                  if(adddecb)
                  {                              //开模时间加
                  RunTime_A=0X10;                //上料延时
                  RunTime_B=0X20;                //光电延时
                  RunTime_C=0X30;                //停顿时间
                  RunTime_D=0X05;                //电机速度
                  RunTime_E=0;
                  write_eeprom();
                  write_eepromt(RunTime_E);
                  DisCouter(RunTime_E);          //
                  csgl();
                  }
                  else
                  {    
                  RunTime_A=0X10;                //上料延时
                  RunTime_B=0X20;                //光电延时
                  RunTime_C=0X30;                //停顿时间
                  RunTime_D=0X05;                //电机速度
                  RunTime_E=0;
                  write_eeprom();
                  write_eepromt(RunTime_E);
                  DisCouter(RunTime_E);          //
                  csgl();
                  }
                 break;   
                 default :break;
                 }
                }
/*************功能设置函数**************/
/*****功能,加减键设定各界面参数*********/
/**************     **************/
              void  funset()
              {
               while(func)                       //进入功能设置流程
               {
                DisSetData();                     //显示参数设置加减设置退出
                if(func==0)                      //功能计数器为0返回主程序
                break;                           //功能标志大于等于6功能计数器归零
                if(!KEY_ADD)                     //检测按键加
                 {                               //数据处理
                  Delay_50ms(2);                  //延时等待
                  adddecbit=1;                   //加减处理标志置1
                  addfunt(func,adddecbit);       //调用加减处理功能子函数 func界面号adddecbit加减标志
                 }
                 if(!KEY_DEC)                    //检测按键减  
                 {                               //数据处理
                 Delay_50ms(2);                  //延时等待
                 adddecbit=0;                    //加减处理标志置0
                 addfunt(func,adddecbit);        //调用加减处理功能子函数 func界面号adddecbit加减标志
                 }
                 if(!Funkey)                     //再检测功能键
                 {
                 func++;                         //功能标志加一
                 Delay_50ms(2);                 //延时等待
                 Dis_Num(func);    
                 if(func>=6)                     //功能标志大于等于6归0
                  {
                   func=0;                       //功能计数器归零
                   Initial_LY096BG30();          //初始化显示屏
                  }                                 //
                  function(func);                //刷新功能显示界面
                 }
// 退出检测
                 RstKey();
                 for(;kcounter<5;)               //按键循环5次
                 if(!Quitkey)                   //按键低电平
                  {
                   LowVoltKey();                      //按键低电平 清除计数器
                  }
                  else if(~!Quitkey)             //按键高电平
                  {
                   HighVoltKey();                     //按键计数器加一 状态计数器加一
                  }
                  if(kstatus>=3)                  /*按键状态标志大于等于3为有效值*/
                  {
                   func=0;
                   cleardisp();
                  }
             //   Delay_50ms(1);                   //延时等待
              //  ClearSetData();
              //  Delay_50ms(1);                   //延时等待
                }     
               cleardisp();
               Diswait();
               Delay_50ms(5);
               }
/*****************************/
              void  MOTORLRUN()                  //顶进
              {
               do
               {
               RstKey();                        //按键复位
                for(;kcounter<5;)                //按键循环5次
                 {
                  if(!INTPUT1)                   //按键低电平
                  {
                  LowVoltKey();
                  }
                  else if(~!INTPUT1)             //按键高电平
                  {
                  HighVoltKey();
                  }
                 }
                 if(kstatus>=4)                  /*按键状态标志大于等于3为有效值*/
                 {                               /*循环检测 */
                 MOTORRUN_L=0;
                 }
                }                           
                while(MOTORRUN_L);
              }
/*****************************/
              void  MOTORRRUN()                  //顶退
              {
              do
               {
               RstKey();                        //按键复位
                for(;kcounter<5;)                //按键循环5次
                 {
                  if(!INTPUT2)                   //按键低电平
                  {
                  LowVoltKey();
                  }
                  else if(~!INTPUT2)             //按键高电平
                  {
                  HighVoltKey();
                  }
                 }
                 if(kstatus>=4)                  /*按键状态标志大于等于3为有效值*/
                 {                               /*循环检测 */
                 MOTORRUN_R=0;
                 }
                }                           
                while(MOTORRUN_R);
              }

//自动运行
              void AutoRun()
              {
/***************检测料满停机信号*********************/
//低电平开始计时 到设定值料满停机
               do
                {                                 //定时器检测INTPUTD2
// 高电平 允许开摇摆电机
                 RstKey();                       //
                 for(;kcounter<5;)               //按键循环5次
                  {
                   if(!EXIT_0)                   //P3.2按键低电平
                   {
                   LowRst();                     //按键低电平 清除计数器
                   }
                   else if(~!EXIT_0)             //按键高电平
                   {
                   HighSet();                    //按键计数器加一 状态计数器加一
                   }
                  }
                  if(kstatus>=3)                 /*按键状态标志大于等于3为有效值*/
                  {
                   Time_A=0;
                   Switch_Flag=0;                //定时器计时标志
                   OUT1=1;                       //放料闸门关
                   if(Photoele_Flag==0)             //光电上料允许
                   {
                   MOTORA_CW=0;                  //上料电机开
                   MOTORB_CW=0;                  //排列电机开启
                   }
                  }
/******外中断0检测到中断信号 置位Switch_Flag=1***/
/***************检测上料信号*计时到电机停止******/
                 if(Switch_Flag==1)              /*按键状态标志大于等于3为有效值*/
                 {                                 //Switch_Flag=1;
                  LoaderMotorClose();             //“上料电机”显示关
                  DisWork();                     //显示上料
                  MOTORA_CW=1;                   //上料电机停止
                  OUT1=0;                        //放料闸门开 计时到闸门关闭
                   for(Time_A=0;Time_A<RunTime_A;Time_A++)
                   {                             //循环延时设定时间值
                   dis_timea(Time_A);             //显示上料时间
                   Delay_50ms(5);                 //延时
                  }
                  Clear_State();                 //清除第一行状态显示
                  Switch_Flag=0;                 //上料信号标志复位
                  MOTORA_CW=0;                   //上料电机开启
                  LoaderMotorOpen();             //“上料电机”显示开
                  OUT1=1;      
                 }
                 if(dis_Flag==1)                 //定时器2读到一次低电平 刷新显示
                 {
                  dis_Flag=0;
                  dis_timeb(Time_B);
                 }
/***************光电低电平定时器计数 主程序显示时间******/
// Photoele_Flag=1 检测光电开关信号 高电平开排列电机 上料电机
                 if(Photoele_Flag==1)//光电 链条传输 运行关闭态 开摇摆电机
                 {
                  LoaderMotorClose();             //“上料电机”显示关
                  ArrangeMotorClose();             //“排列电机”显示关
                  MOTORA_CW=1;                   //上料电机关闭
                  MOTORB_CW=1;                   //排列电机关闭
                  MOTORB_CCW=1;                     //备用
                  Delay_50ms(50);                 //
                  RstKey();                         //满料光电检测
                  for(;kcounter<10;)             //按键循环5次
                   {
                    if(!INTPUTD2)                //按键低电平
                    {
                       LowRst();                      //
                    }
                    else if(~!INTPUTD2)          //按键高电平
                    {
                      HighSet();                     //
                    }
                   }
                   if(kstatus>=8)                /*按键状态标志大于等于3为有效值*/
                   {                             /*循环检测 */
                   Delay_50ms(10);                 //
                   MOTORA_CW=0;                  //上料电机开
                   MOTORB_CW=0;                  //排列电机开
                   LoaderMotorOpen();             //“上料电机”显示开
                   ArrangeMotorOpen();             //“排列电机”显示开
                   Photoele_Flag=0;              //定时器中断计时标志 计时到电机停止
                   }                               //Clearkey
                  }                                 //
//光电高电平 重启运行
                 RstKey();                         //拍列电机到位
                 for(;kcounter<5;)               //按键循环5次
                  {
                   if(!INTPUT0)                  //按键低电平
                   {
                   LowVoltKey();                 //按键低电平 清除计数器
                   }
                   else if(~!INTPUT0)            //按键高电平
                   {
                   HighVoltKey();                //按键计数器加一 状态计数器加一
                   }
                  }
                  if(kstatus>=3)                 /*按键状态标志大于等于3为有效值*/
                  {
                   L_EN=1;
                   R_EN=1;
                   DisJacking();                 //显示顶进
                   MOTORRUN_L=1;                 //电机正转标志
                   MOTORLRUN();                  //顶进
                   L_EN=1;
                   R_EN=1;
                   DisRetreat();                 //显示顶退
                   MOTORRUN_R=1;                 //电机反转标志
                   MOTORRRUN();                  //顶退
                   L_EN=0;
                   R_EN=0;
                   DisRetreat();                 //清除显示
                   Clear_State();                 //清除第一行状态显示
                  }
//检测直流电机
                 RstKey();                         //
                 for(;kcounter<5;)               //按键循环5次
                  {
                   if(!Quitkey)                  //按键低电平
                   {
                   LowVoltKey();                 //按键低电平 清除计数器
                   }
                   else if(~!Quitkey)            //按键高电平
                   {
                   HighVoltKey();                //按键计数器加一 状态计数器加一
                   }
                  }
                  if(kstatus>=3)                 /*按键状态标志大于等于3为有效值*/
                  {
                  Reset_io();                     //关闭输出
                  RunFlag=0;                     //自动运行循环标志
                  cleardisp();                     //清除显示
                  Diswait();                     //显示待机
                  }
//退出自动检测
                }
                while(RunFlag);                     //
              }
/**************定时中断*************************/
               void timer0() interrupt 1
               {
                uchar aa;
                aa++;                            //定时基数变量
                if(aa>=200)                      //定时周期
                {
                 aa=0;                            //定时基数归零
                }                                //Photoele_Flag=1
//光电停机计时
                if(Switch_Flag==1)               //外中断0 开闸计时标志
                {
                 Time_A++;                       //定时器计时开闸时间
                 if(Time_A>=RunTime_A)           //计数器到开闸设定值
                 {
                 Time_A=0;                       //计数器归零
                 Switch_Flag=0;                  //开闸计时标志归零
                 }
                }
//开闸计时
               }     
/*************P3.2下降沿中断**链条上料***********/
              void exint0() interrupt 0          //INT0中断入口
              {                                  //
               RstKey();
               for(;kcounter<5;)                 //按键循环5次
               {
                if(!EXIT_0)                      //P3.2按键低电平
                {
                LowVoltKey();                    //按键低电平 计数器加一状态标志加一
                }
                else if(~!EXIT_0)                //按键高电平
                {
                HighVoltKey();                   //按键计数器加一    状态标志归零
                }
               }
               if(kstatus>=3)                    /*按键状态标志大于等于3为有效值*/
               {  
               Switch_Flag=1;                    //定时器计时标志
               }                                 //自动运行函数上料电机停止
              }
//========================================================================
// 函数: void Timer0_Init(void)
// 描述: 定时器0初始化函数。
// 参数: none.
// 返回: none.
// 版本: VER1.0
// 日期: 2022-6-2
// 备注:
//========================================================================
              void Timer_Init(void)
              {
              AUXR=0X80;         //STC系列的1T 设置
              TMOD=0X01;          //
              TL0=0X32;
              TH0=0X53;
              ET0=1;
              TR0=1;  
              AUXR|=0x04;        //定时器2为1T模式      12MHZ
              T2L=0X90;             //设置定时初值
              T2H=0XE8;             //设置定时初值
              AUXR|=0X10;        //定时器2开始计时
              IE2|=0x04;         //开定时器2中断
              }
/*定时器2扩展外部普通IO中断****************/
/*P2.2低电平开计数器高电平关计数器*/
/******/
              void t2int() interrupt 12          //中断入口
              {
               uint CT0,CT1,CT2,CT3; //
               uchar aa;
               aa++;                             //定时基数变量
               if(aa>=100)                       //定时周期
                {
                aa=0;                            //定时基数归零
//计时标志为0 检测低电平信号
                if(Photoele_Flag==0)             //满料光电检测
                {
                 if(!INTPUTD2)                   //按键低电平 INTPUTD2 P2.2口
                  {
                   Time_B++;                     //计数满清零
                   dis_Flag=1;                     //计数器刷新显示标志
                   if(Time_B>=RunTime_B)         //Auto_Run  Time_B++
                   {
                   Photoele_Flag=1;              //定时器中断计时标志 计时到电机停止
                   Time_B=0;                     //计数满清零
                   }
                  }                                 //高电平计数器归零
                  else  if(~!INTPUTD2)           //按键低电平 INTPUT3 P3.3口
                  {
                  Time_B=0;                      //计数满清零
                  }
                 }
                }
//
                if(MOTORRUN_L==1)
                {
                CT2++;
                if(CT2>=2)
                {
                 CT2 = 0;
                 CT0++;
                 if(CT0>=50)
                 {
                 L_PWM = 1; //
                 }
                 else
                 {
                 L_PWM = 0;
                 }
                 if(CT0>=100)
                 {
                 CT0 = 0;
                 }
                }
               }
//
               if(MOTORRUN_R==1)
                {
                CT3++;
                if(CT3>=2)
                {
                 CT3 = 0;
                 CT1++;
                 if(CT1>=50)            //RunTime_D
                 {
                 R_PWM = 1; //
                 }
                 else
                 {
                 R_PWM = 0;
                 }
                 if(CT1>=100)
                 {
                 CT1 = 0;
                 }
                }
               }
//
              }
/******************** 主函数 **************************/
              void main(void)
              {
              // P_SW2 |= 0x80;     //扩展寄存器(XFR)访问使能
               func=0;
               RunFlag=0;                         //自动运行循环标志
               LED=0;
               total=0;
               IT0=1;                            //设置INT0的中断类型 (1:仅下降沿 0:上升沿和下降沿)
               EX0=1;                            //使能INT0中断
               EA=1;
               Init_io();
               Initial_LY096BG30();
               cleardisp();
               red_eeprom();
               red_eepromt();
               RunTime_E++;
               write_eepromt(RunTime_E);
               if(RunTime_E>1000)
               {
               RunTime_E=0;                      //计数值清除
               write_eepromt(RunTime_E);
               DisCouter(RunTime_E);
               }
              Timer_Init();                      //定时器0初始化
              dis_Flag=0;                         //光电显示刷新标志
              Run_Flag=0;                         //自动运行标志
              Photoele_Flag=0;                   //光电低电平计时标志 定时器1读IO口
              Valve_Time=0;
              cleardisp();
              DisNumber(2);       
              Diswait();                         //
              Delay_50ms(50);
              while(1)
               {
               // OUT2=~OUT2;                      //
                Delay_50ms(5);
                cleardisp();
                Diswait();                         //
                RstKey();    
                for(;kcounter<10;)               //按键循环5次
                 {
                  if(!Funkey)                    //按键低电平
                  {
                  LowVoltKey();
                  delay(50);                     //延时
                  }
                  else if(~!Funkey)              //按键高电平
                  {
                  HighVoltKey();
                  delay(50);                     //延时
                  }
                 }
                 if(kstatus>=8)                  /*按键状态标志大于等于3为有效值*/
                 {                               /*循环检测 */
                 Initial_LY096BG30();            //初始化显示屏
                 func+=1;                        // 功能循环标志
                 cleardisp();
                 DisSetData();
                 function(func);                 // 功能判断子程序 功能设置散转
                 funset();                       //进入功能设置界面
                 }                                 //Clearkey
///
//功能键
                 RstKey();
                 for(;kcounter<5;)               //按键循环5次
                  {
                   if(!StartD1)                  //按键低电平
                   {
                   LowVoltKey();                 //按键低电平 清除计数器
                   }
                   else if(~!StartD1)            //按键高电平
                   {
                   HighVoltKey();                //按键计数器加一 状态计数器加一
                   }
                  }
                  if(kstatus>=3)                 /*按键状态标志大于等于3为有效值*/
                  {
                  cleardisp();
                  DisDoon();                     //显示运行
                  DisLoaderMotor();                 //上料电机
                  Delay_50ms(5);
                  DisArrangeMotor();             //排列电机
                  Delay_50ms(5);
                  dis_Value(Time_A);
                  dis_Val(Time_B);
                  Delay_50ms(10);
                  LoaderMotorOpen();
                  ArrangeMotorOpen();
                  RunFlag=1;                     //自动运行循环标志
                  AutoRun();                     //自动运行子程序
                  }
               }                                 //参数设置 EEPROM储存
              }                                     //L2233 CODE11549 2025 4 18
             

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/81788.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣119题解

记录 2025.5.5 题目&#xff1a; 思路&#xff1a; 代码: class Solution {public List<Integer> getRow(int rowIndex) {List<Integer> row new ArrayList<Integer>();row.add(1);for (int i 1; i < rowIndex; i) {row.add((int) ((long) row.get(i…

国产化海光C86架构服务器安装windows实录

最近几年与红蓝关系急转直下&#xff0c;尤其是科技领域尤为突出。随之而来的就是软硬件的国产化大潮。由于行业的原因根据要求必须使用国产化服务器、国产化操作系统、国产化数据库、国产化中间件。虽然闭关锁国断开红蓝联系可以在一定程度激发国产化发展&#xff0c;但是不得…

Oracle OCP证书有效期是三年?

这一段时间&#xff0c;网上经常传出消息Oracle OCM认证证书有效期为三年&#xff0c;其实这个假消息&#xff0c;通过博睿谷与Oracle官方人员确认&#xff0c;OCP认证证书有效期是永久的。 OCP证书本身永久有效&#xff0c;但老版本的OCP证书代表着更多的项目经验&#xff0c…

Python 闭包:函数式编程中的魔法变量容器

闭包与匿名函数的常见混淆 在编程社区中&#xff0c;闭包(closure)和匿名函数(anonymous function)经常被混为一谈&#xff0c;这种混淆有其历史根源&#xff1a; 历史发展因素&#xff1a;在早期编程实践中&#xff0c;在函数内部定义函数并不常见&#xff0c;直到匿名函数广…

迅睿CMS导入别站数据库

<?php if (isset($_GET[go])) {$host localhost;// 数据库服务器$username uname;// 数据库用户名$password pwd;// 数据库密码$database database;// 数据库名$cmscid $_GET[cmscid];$mtabcid $_GET[mtabcid];if ($_GET[go] step1) {//第一步&#xff1a;先获取CMS…

基于C++、JsonCpp、Muduo库实现的分布式RPC通信框架

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;项目 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 项目介绍JsonCpp库简单介绍Muduo库简单介绍C11异步操作——std::future1. 使用 std::async 关联异步任务2. std::packaged_task 配…

EPSG:3857 和 EPSG:4326 的区别

EPSG:3857 和 EPSG:4326 是两种常用的空间参考系统&#xff0c;主要区别在于坐标表示方式和应用场景。以下是它们的核心差异&#xff1a; 1. 坐标系类型 EPSG:4326&#xff08;WGS84&#xff09; 地理坐标系&#xff08;Geographic Coordinate System&#xff09;&#xff0c;基…

Docker 使用与部署(超详细)

目录 引入 入门使用 部署对比 镜像仓库 命令解释 基础 常见命令 示例 数据卷的使用 数据卷的概念 数据卷的使用 挂载本地目录文件 镜像 结构 Dockerfile 容器网络 部署 DockerCompose 语法 ​编辑 基础命令 引入 当我们在 Linux 上部署一个集成了很多中间件…

JAVA在线考试系统考试管理题库管理成绩查询重复考试学生管理教师管理源码

一、源码描述 这是一套在线考试源码&#xff0c;基于SpringBootVue框架&#xff0c;后端采用JAVA语言&#xff0c;可以用于重复考试&#xff0c;一、管理员功能&#xff1a;1、考试管理&#xff1a;包括考试查询与添加考试功能&#xff0c;2、题库管理&#xff1a;管理所有题库…

在Qt Creator中使用CUDA

要在Qt Creator项目中使用CUDA进行GPU加速计算&#xff0c;你需要进行一些配置。以下是详细步骤&#xff1a; 1. 安装必要软件 安装最新版本的NVIDIA CUDA Toolkit 确保已安装Qt Creator和兼容的编译器(如MSVC或GCC) 2. 创建Qt项目 打开Qt Creator&#xff0c;创建一个新的…

qml显示视频帧(QQuickImageProvider)

一、实现方式 解码视频可以选择:opencv、ffmpeg等。 显示视频可以选择:Qt Multimedia、QQuickImageProvider、ShaderEffect、自定义QQuickItem等。 本文使用opencv解码视频,QQuickImageProvider显示视频。 二、QQuickImageProvider 中,requestImage 和 requestTexture区…

深度实时美颜:Deep-Live-Cam

深度实时美颜:Deep-Live-Cam 在这个数码化加速的时代,如何用一张图片,捕捉瞬间,将虚拟与现实无缝融合在一起?Deep-Live-Cam给出了惊人的答案。这个应用程序不仅实现了实时脸部替换和一键视频深度伪装,还通过一张图片完成了这些操作,其独特的技术让人在视频通话和直播中…

OPENGLPG第九版学习 -视口变换、裁减、剪切与反馈

文章目录 5.1 观察视图5.1.1 视图模型—相机模型OpenGL的整个处理过程中所用到的坐标系统&#xff1a;视锥体视锥体的剪切 5.1.2 视图模型--正交视图模型 5.2 用户变换5.2.1 矩阵乘法的回顾5.2.2 齐次坐标5.2.3 线性变换与矩阵SRT透视投影正交投影 5.2.4 法线变换逐像素计算法向…

卷积神经网络实战(2)

接上一篇文章&#xff0c;说到模型定义&#xff1a; class CNN(nn.Module):def __init__(self, activation"relu"):super(CNN, self).__init__()self.activation F.relu if activation "relu" else F.selu#输入通道数&#xff0c;图片是灰度图&#xff…

方案精读:业财融合转型路径和华为实践【附全文阅读】

在当今快速变化、竞争激烈的时代,业务面临不确定性,业财融合至关重要。以华为为例,其从财务到财经的转型,历经财务四统一变革、IFS 变革等,构建了包含财经能力中心(COE)、业务伙伴(BP)和财经共享中心(SSC)的财务组织架构 。通过实现财务四算拉通、提升预算预测、项目…

GAF-CNN-SSA-LSSVM故障诊断/分类预测,附带模型研究报告(Matlab)

GAF-CNN-SSA-LSSVM故障诊断/分类预测&#xff0c;附带模型研究报告&#xff08;Matlab&#xff09; 目录 GAF-CNN-SSA-LSSVM故障诊断/分类预测&#xff0c;附带模型研究报告&#xff08;Matlab&#xff09;效果一览基本描述程序设计参考资料 效果一览 基本描述 本研究提出的GA…

新型深度神经网络架构:ENet模型

语义分割技术能够为图像中的每个像素分配一个类别标签&#xff0c;这对于理解图像内容和在复杂场景中找到目标对象至关重要。在自动驾驶和增强现实等应用中&#xff0c;实时性是一个硬性要求&#xff0c;因此设计能够快速运行的卷积神经网络非常关键。 尽管深度卷积神经网络&am…

基于DGI框架的最佳实践

基于DGI框架的核心逻辑和搜索结果中的实践案例&#xff0c;以下是最精简的5步实施路径推荐&#xff1a; 1. 明确治理目标与范围&#xff08;Why & What&#xff09; 聚焦核心问题&#xff1a;优先选择1-2个业务痛点&#xff08;如数据质量低下、主数据混乱、合规风险&…

使用Prometheus监控网站是否正常打开

要使用普罗米修斯监控你的网站主页 http://gyq.com/&#xff0c;可以通过以下步骤实现。普罗米修斯本身并不直接支持 HTTP 状态码的监控&#xff0c;但可以通过 Blackbox Exporter 来完成这项任务。 方案概述 Blackbox Exporter 是一个普罗米修斯官方提供的工具&#xff0c;用…

基于YOLOv8与LSKNet的遥感图像旋转目标检测新框架 —LSKblock注意力机制在小目标检测中的性能优化与SOTA探索

针对遥感图像中目标尺度差异大、方向任意性强、背景复杂度高等挑战,本文提出一种基于 YOLOv8 与 LSKNet 的新型旋转目标检测框架。通过引入 LSKblock 注意力机制 ,实现对多尺度特征的有效建模与动态感受野调整,显著提升了模型对小目标与旋转目标的识别能力。 1. 引言 随着遥…