PCB光控打孔机第二版程序(一)

news2024/7/6 17:34:52

/*PCB机程序 XY同时启动 L9751 CODE61068 2018 6 19 08:00 固定位置释放吸盘*/
/*修正寻点第十二条结束调用计算坐标L5091,自动运行Y计算L6280 6281***/
/*** 开外部中断2关闭定时器2XY轴输出信号,自动运行循环检测外部中断高电平重启XY轴输出信号
增加寻点函数 手动赋值定时器0加减速计数器 程序编辑按START键运行起始动作 前进X电机不动
外中断复位 L6333 6396每块板占用300字节 添加外中断2 优化坐标数据显示***/
              #include       <reg52.h>
              #include       <intrins.h>
              #define        uchar    unsigned char
              #define        uint     unsigned int
              #define        ulong    unsigned long   //
              #define        EEPROM_START       310   //310字节开始存放XY值数据前300字节为当前动作存储数据
              #define        Ele_GearEEAdd    63000   //Z速度起始地址1234位置5678X电机位置9101112Y分子13141516Y分母 32字节
              #define        System_DataAdd   63033   //加速4 5 6 7 减速7 8 9 10 寻点11次数 增量12 12字节
              #define        Counter_DataAdd  63100   //计数器EEPROM起始地址  50条程序共50个字节
              #define        ProgNumber_Add   63155   //文件名保存EEPROM起始地址(高字节 低字节)X50=100字节
              #define        Number_Add       63260   //程序总数FRAM地址 1字节加    运行工号 1字节
              #define        FileName_Add     63300   //
              typedef        unsigned char BYTE;      //
              typedef        unsigned int WORD;
              sfr            INT_CLKO=0x8f;           //外部中断与时钟输出控制寄存器
              uchar          M_Speed,T_Speed;          //手动和编辑状态XY轴运动速度
              uchar          n1,n2;                      //显示缓冲
//uchar          Rst_Run;               //压脚中断定时器计数重启电机信号
              uint           aa,bb,a1,b1,a2;
              uint           Run_Data;                //
              uchar          Work_Counter;            //寻点失败计数器     走完寻点十二步计数器加一
              uchar          Prog_Num=0;              //文件名保存编号 计数器
              uchar          YSpeed;                  //Y轴电机速度
              uchar             Find_Counter;            //寻点标志计数器
              uchar          Find_data;               //寻点 次数
              long            AddVal;                  //寻点 增量
              uchar          Readya,Readyb;           //变量 备用1 备用2
              uchar          kcounter,kstatus;        //按键计数器 按键状态计数器
              uchar          ProgRead_Cursor;         //程序读入光标编号1-24
              uchar          EEY,EEZ;                 //EEPROM存储地址计算变量    EEY单件产品运行步数,EEZ工件编号
              uint           FileSave;                //文件名
              uint           Run_File;                //读出文件名名称
              uchar          Run_FileNum;             //读出运行文件名名称
              char           XCursor,YCursor;         //XY光标
              uint           Speed;                   //Z电机速度
              uint           Position;                //Z电机位置
              uint           XMtPParameter;           //X电机位置参数(上料动作)
              uint           YMtPParameter;           //Y电机位置参数(上料动作)    工件位置修正前进补偿
              uint           XMtSParameter;           //X电机速度参数(上料动作)
              uint           YMtSParameter;           //Y电机编辑前移停止
              uint           Down_Data;               //Z电机联动下降参数
              uint           Stop_Data;               //参数
              uint           XAddSpeed,YAddSpeed;     //Y电机加速
              uint           DecSpeed;                //Y电机减速
              uint           Up_Data;                 //电机上升缓冲
              uint           EditFun_Counter;         //程序编辑功能计数器     选择计数器 绝对运动 直线插补 测位跳转
              uchar          SysCursor;               //系统光标计数器
              uint           ProgSet_Counter;         //程序设置计数器
              uchar             Run_Counter;             //运行计数器
              uchar          Counter_Key;             //按键记录计数器
              uint           Prog_Number;             //程序编号
              uint           Frequency;               //频率
              uchar          Prog_LineNum;            //编程程序行号
              uint           RunLineNum;              //运行程序行号
              uchar          Speed_Data;              //速度百分比
              uint           Frequency;               //频率HZ
              sbit           EX_INT0=P3^2;            //PIN    29 外中断0
              sbit           EX_INT1=P3^3;            //PIN    30 外中断1
              sbit           EX_INT2=P3^6;            //PIN    35 外中断2
              sbit           EX_INT3=P3^7;            //PIN    36 外中断3
              sbit           cd=P7^7;                 //PIN    56
              sbit           ce=P4^5;                 //PIN    57
              sbit           rst=P4^6;                //PIN    58
              sbit           wr=P7^6;                 //PIN    55
              sbit           rd=P7^5;                 //PIN    54
              sbit           fs=P6^0;                 //PIN    5
              sbit           OUT1=P2^7;               //PIN    52    按键总线例
              sbit           OUT2=P7^4;               //PIN    53
              sbit           OUT3=P5^2;               //PIN    64
              sbit           OUT4=P5^3;               //PIN    1
              sbit           IN1=P2^4;                //PIN49    按键总线横
              sbit           IN2=P2^5;                //PIN50
              sbit           IN3=P2^6;                //PIN51
              sbit           IN4=P6^1;                //PIN6
              sbit           IN5=P6^2;                //PIN7
              sbit           IN6=P6^3;                //PIN8
              sbit           IN7=P5^5;                //PIN20
              sbit           INSERT=P3^2;               //停止  STOP
              sbit           STOP=P3^3;             //插入  INSERT
              sbit           CP1=P2^2;                //PIN47
              sbit           DIR1=P2^3;               //PIN48
              sbit           EN1=P7^2;                //PIN39
              sbit           CP2=P2^1;                //PIN46
              sbit           DIR2=P7^1;               //PIN38
              sbit           EN2=P7^0;                //PIN37
              sbit           CP3=P3^5;                //PIN34  P3^5;
              sbit           DIR3=P5^1;               //PIN33  P5^1;
              sbit           EN3=P4^0;                //PIN22  P4^0;
              sbit           INTPUT0=P2^0;            //PIN45
              sbit           INTPUT1=P4^4;            //PIN44
              sbit           INTPUT2=P4^3;            //PIN43
              sbit           INTPUT3=P4^2;            //PIN42
              sbit           INTPUT4=P4^1;            //PIN41
              sbit           INTPUT5=P7^3;            //PIN40
              sbit           INTPUT6=P3^7;            //PIN36
              sbit           INTPUT7=P3^6;            //PIN35
              sbit           OUTPUT0=P1^0;            //PIN9吸盘
              sbit           OUTPUT1=P1^1;            //PIN10夹具
              sbit           GREEN=P4^7;              //PIN11
              sbit           RED=P1^2;                //PIN12
              sbit           BUZZ=P6^6;               //PIN25
              sbit           OUTPUT5=P6^5;            //PIN24  6.5 1.1
              //sbit           OUTPUT6=P6^6;          //PIN25
              sbit           SCL=P1^7;                //PIN17 外部EEPROM       24C64PIN6  外部引脚设置开漏
              sbit           SDA=P5^4;                //PIN18 外部EEPROM       24C64PIN5
              uint           i,j,k,l,m,n;             //显示存储缓冲
              uint           Key_val;                 //按键值个位存储缓冲
              ulong          B_Data;                  //个位
              ulong          T_Data;                  //十位
              ulong          H_Data;                  //百位
              ulong          K_Data;                  //千位
              ulong          TK_Data;                 //万位
              ulong          M_Data;                  //十万位
              ulong          Chuang_Buff;             //转换缓冲
              ulong          XMemory,YMemory;         //临时缓冲数据
              bit            ManuSet_Flag;            //手动设定运行标志
              bit            ManuFast_Flag;           //手动高速反显标志
              bit            JogOperating_Flag;       //点动操作反显标志
              bit            JogOperatSet_Flag;       //点动操作设定标志
              bit            ProgAdmin_Flag;          //程序管理循环检测标志
              bit            ProgEdit_Flag;           //程序编辑循环检测标志
              bit            ProgRead_Flag;           //程序读入循环检测标志
              bit            ProgSave_Flag;           //程序保存循环检测标志
              bit            ProgSaveas_Flag;         //程序另存循环检测标志
              bit            DataSet_Flag;            //参数设置循环检测标志
              bit            SystemDataSet_Flag;      //系统参数设置循环检测标志
              bit            SystemSeifTest_Flag;     //系统自检循环检测标志
              bit            SystemSet_Flag;          //系统数据设置循环检测标志   分子分母最高时间点位起速
              bit            IOSet_Flag;              //IO设置循环检测标志
              bit            XPosiNegate_Flag;        //X值正负标志
              bit            YPosiNegate_Flag;        //Y值正负标志
              bit            AUTO_FLAG;               //自动运行标志
              bit            MOTARUN_FLAG;            //定时器电机A运行标志
              bit            MOTBRUN_FLAG;            //定时器电机B运行标志
              bit            ManuMTARUN_FLAG;         //手动定时器电机A运行标志
              bit            ManuMTBRUN_FLAG;         //手动定时器电机B运行标志
              bit            Factor_FLAG;             //厂值循环运行标志
              bit            X_AddDecFlag;            //手动左移右移加减标志
              bit            Y_AddDecFlag;            //手动前进后退加减标志
              bit            RUN;                     //启动定时器运行标志 任意一定时器启动开RUN,两定时器结束关RUN
              bit            Page_Flag;               //系统数据设置换页循环标志
              bit            Page2Read_Flag;          //程序读出第二页循环标志
              bit            Stop_Flag;               //自动运行停机段循环标志
              bit            Down_Flag;               //XY轴启动Z轴联动循环标志,运行完下降距离标志位置零
              bit            AUTO_STOPFLAG;           //自动暂停运行标志
              bit            PressFoot_Flag;           //压脚中断信号  外部压脚中断 置一 定时器2和外部打孔中断复位
              bit            PastShooting_Flag;       //
              bit            INT1_Flag;               //外中断1标志,自动暂停,返回检测START,ESC退出主程序。
              uint           DownData;                //下降距离    缓冲器
              #define        dataport P0              //P0为LCD数据口
              uchar          counter;                 //按键计数器
              ulong          D_Data;                  //点动输入值
              ulong          Buff_Data;               //缓冲处理变量
              ulong          XBuff_Data;              //X缓冲处理变量
              ulong          YBuff_Data;              //Y缓冲处理变量
              long           FindData;                //寻点运行值
              long           X_FData,Y_FData;         //XY寻点运算结果
              long           X_Data,Y_Data;           //XY当前值
              long           X_RunData,Y_RunData;     //XY定时器运行值
              long           XRun_Data;               //X设定值
              long           YRun_Data;               //Y设定值
              long           DRun_Data;               //点动运行值
              long           vala,valb;               //实际位置与设定位置差,
              sbit           Rom_CS=P1^4;             /*1字库IC接口定义Rom_CS就是字库IC的CS#*/
              sbit           Rom_SCK=P1^6;            /*2字库IC接口定义:Rom_SCK就是字库IC的SCK*/
              sbit           Rom_OUT=P1^3;            /*字库IC接口定义:Rom_OUT就是字库IC的OUT*/
              sbit           Rom_IN=P1^5;             /*字库IC接口定义:Rom_IN就是字库IC的IN*/
              uchar          fontbuff[32];            //字库中读出的32位数据存放缓冲数组单元
              uchar          newbuff[32];             //字库中读出的32位数据转换缓冲存储
              bdata          char com_data;           /********/
              sbit           mos_bit=com_data^7;      /****高位****/
              sbit           low_bit=com_data^0;      /****低位****/
              void           display_manufast(void);
              void           jog_operating(void);
              void           Dis_ZMtSpeed(void);      //正显Z电机速度参数
              void           Dis_ZMtPosition(void);   //正显Z电机位置参数  
              void           Dis_XMtPosition(void);   //正显X电机位置参数  
              void           Dis_XMtPParameter(void); //正显X电机位置参数  
              void           Dis_YMtPParameter(void); //显示Y电机位置参数
              void           Dis_YMT_Speed(void);     //显示Y电机速度参数
              void           Dis_SParameter(void);    //显示起速参数
              void           Dis_ZMTDown(uint);       //
              void           Dis_XMTStop(void);       //X电机停止参数
              void           Negate_XMTStop(void);    //反显X电机停止参数
              void           Negate_ZMtSpeed(void);   //反显Z电机速度参数
              void           Negate_ZMtPosition(void);//反显Z电机位置参数
              void           Negate_XMtPParameter(void);//反显X电机位置参数
              void           Negate_YMtPParameter(void);//反显Y电机位置参数
              void           Negate_HParameter(void); //最高参数闪烁
              void           Negate_SParameter(void); //起速参数闪烁
              void           Negate_ZMTDown(void);    //参数闪烁
              void           Change_FourData(uint ss); //四位数转换个十百千
              void           Display_c(void);           //程序编辑计数器界面显示
              void           NegateDis_Factor_Value(void); //
              void           NegateDis_System(void);       //
              void           Dis_X_AddSpeed(void);         //
              void           Negate_X_AddSpeed(void);      //
              void           Dis_Y_AddSpeed(void);         //
              void           Negate_Y_AddSpeed(void);      //
              void           Dis_Find_Data(void);          //
              void           Negate_Find_Data(void);       //
              void           Dis_Add_Data(void);           //
              void           Negate_Add_Data(void);        //
              void           display_manusmart(void);      //
              void           RstKey(void);                 //按键计数器状态寄存器归零
              void           LowVoltKey(void);             //按键低电平检测
              void           HighVoltKey(void);            //按键高电平检测
              void           DisFileName(uchar X1,Y1);       //
              void           Dis_Counter(void);               //
              void           ReadCounter_Data(void);       //
              void           TestK2(void);                   //
              uchar          ReadRunCounter_Data(uchar m); //
              uint           ReadProg_Name(uchar s);
              uchar          code Clearbuff[32]={
              0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
              0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
              0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
              0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00
              };
              int      code fontadd[32]={0,8,1,9,2,10,3,11,          //竖置横排转横置横排点阵排列表
                           4,12,5,13,6,14,7,15,
                           16,24,17,25,18,26,19,27,
                           20,28,21,29,22,30,23,31};
int      code xsadd[38]={0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256,272,288,304, //0-9清除XY.TPF%
      320,336,352,368,384,400,416,432,448,464,480,496,512,528,544,560,576,592};//0-9首地址 每字16字节
uchar code tab0[618]={
0X00,0X3C,0X42,0X42,0X42,0X42,0X42,0X42,
0X42,0X42,0X42,0X42,0X42,0X42,0X3C,0X00,//0
0X00,0X30,0X50,0X10,0X10,0X10,0X10,0X10,
0X10,0X10,0X10,0X10,0X10,0X10,0X38,0X00,//1
0X00,0X3C,0X42,0X02,0X02,0X02,0X04,0X08,
0X10,0X20,0X20,0X40,0X40,0X42,0X7E,0X00,//2
0X00,0X3C,0X42,0X02,0X02,0X02,0X02,0X3C,
0X02,0X02,0X02,0X02,0X02,0X42,0X3C,0X00,//3
0X00,0X0C,0X14,0X24,0X24,0X44,0X44,0X84,
0X84,0XFE,0X04,0X04,0X04,0X04,0X04,0X00,//4
0X00,0X7E,0X40,0X40,0X40,0X40,0X7C,0X02,
0X02,0X02,0X02,0X02,0X42,0X42,0X3C,0X00,//5
0X00,0X3C,0X42,0X40,0X40,0X40,0X7C,0X42,
0X42,0X42,0X42,0X42,0X42,0X42,0X3C,0X00,//6
0X00,0X3E,0X42,0X04,0X04,0X08,0X08,0X10,
0X10,0X10,0X10,0X10,0X10,0X10,0X10,0X00,//7
0X00,0X3C,0X42,0X42,0X42,0X42,0X42,0X3C,
0X42,0X42,0X42,0X42,0X42,0X42,0X3C,0X00,//8
0X00,0X3C,0X42,0X42,0X42,0X42,0X42,0X3C,
0X02,0X02,0X02,0X02,0X02,0X42,0X3C,0X00,//9
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//"清除"
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*10,*/    
0X00,0X00,0X42,0X42,0X24,0X24,0X18,0X18,//X
0X18,0X18,0X24,0X24,0X42,0X42,0X00,0X00,//11
0X00,0X00,0X41,0X41,0X22,0X14,0X08,0X08,//Y
0X08,0X08,0X08,0X08,0X08,0X08,0X00,0X00,//12
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,// .    
0X00,0X00,0X00,0X00,0X00,0X60,0X60,0X00,//13
0X00,0X3C,0X42,0X42,0X40,0X40,0X40,0X3C,//S
0X02,0X02,0X02,0X02,0X42,0X42,0X3C,0X00,//14    
0X00,0X7F,0X08,0X08,0X08,0X08,0X08,0X08,//T      
0X08,0X08,0X08,0X08,0X08,0X08,0X08,0X08,//15
0X00,0X7C,0X42,0X42,0X42,0X42,0X7C,0X40,//P       
0X40,0X40,0X40,0X40,0X40,0X40,0X40,0X00,//16
0X00,0X7E,0X40,0X40,0X40,0X40,0X7C,0X40,//F       
0X40,0X40,0X40,0X40,0X40,0X40,0X40,0X00,//17
0X00,0X22,0X52,0X52,0X24,0X04,0X08,0X08,//%       
0X10,0X10,0X20,0X24,0X4A,0X4A,0X44,0X00,//18
0X00,0X42,0X42,0X62,0X62,0X52,0X52,0X4A,//N       
0X4A,0X46,0X46,0X42,0X42,0X42,0X42,0X00,//19
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,//填充
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, //    20
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,//清除光标
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,//21
0X00,0X40,0X40,0X40,0X40,0X40,0X40,0X40,//L
0X40,0X40,0X40,0X40,0X40,0X40,0X7E,0X00,//22
0X00,0X00,0X00,0X00,0X00,0X5C,0X62,0X42,//n
0X42,0X42,0X42,0X42,0X42,0X42,0X42,0X00,//23
0X00,0X1C,0X08,0X08,0X08,0X08,0X08,0X08,//I
0X08,0X08,0X08,0X08,0X08,0X08,0X1C,0X08,//24
0X00,0X02,0X02,0X02,0X04,0X04,0X08,0X08,//斜杠/
0X10,0X10,0X20,0X20,0X40,0X40,0X40,0X00,//25
0X00,0X7F,0X7F,0X60,0X60,0X60,0X60,0X60,//方框左部
0X60,0X60,0X60,0X60,0X60,0X7F,0X7F,0X00,//26
0X00,0XFE,0XFE,0X06,0X06,0X06,0X06,0X06,//方框右部
0X06,0X06,0X06,0X06,0X06,0XFE,0XFE,0X00,//27
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,//:分号
0X00,0X00,0X60,0X60,0X00,0X60,0X60,0X00,//28
0X00,0X7F,0X7F,0X60,0X6F,0X6F,0X6F,0X6F,//方框加点左部
0X6F,0X6F,0X6F,0X6F,0X00,0X7F,0X7F,0X00,//29
0X00,0XFE,0XFE,0X06,0XF6,0XF6,0XF6,0XF6,//方框加点右部
0XF6,0XF6,0XF6,0XF6,0X06,0XFE,0XFE,0X00,//30
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,//-左部
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,//31
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFC,//-右部
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,//32
0X00,0X00,0X07,0X08,0X10,0X20,0X20,0X20,//空心圆左部
0X20,0X20,0X20,0X10,0X08,0X07,0X00,0X00,//33
0X00,0X00,0XE0,0X10,0X08,0X04,0X04,0X04,//空心圆右部
0X04,0X04,0X04,0X08,0X10,0XE0,0X00,0X00,//34
0X00,0X00,0X07,0X0F,0X1F,0X3F,0X3F,0X3F,//实心圆左部
0X3F,0X3F,0X3F,0X1F,0X0F,0X07,0X00,0X00,//35
0X00,0X00,0XE0,0XF0,0XF8,0XFC,0XFC,0XFC,//实心圆右部
0XFC,0XFC,0XFC,0XF8,0XF0,0XE0,0X00,0X00,//36
0X00,0X00,0X00,0X00,0X00,0X49,0X2A,0X1C,//*
0X08,0X1C,0X2A,0X49,0X00,0X00,0X00,0X00//37
};
uchar code tab1[32]={
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,//-
0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,//0
0X00,0X00,0X7E,0X42,0X04,0X04,0X08,0X08,//Z
0X10,0X10,0X20,0X20,0X42,0X7E,0X00,0X00 //1
};
/*------------延时子程序---------------------*/
              void delay(unsigned int t)
              {  
              unsigned int i;
              for(i=0;i<t;i++)
              {}
              }
/**************************************/
               void start()
               {
               SDA=1;
               SCL=1;
               SDA=0;
               SCL=0;
               }
/***************************************/
               void stop()
               {
               SDA=0;
               SCL=1;
               SDA=1;
               }
/***************************************/
               void ack()
               {
               SCL=1;
               SCL=0;
               }
/***************************************/
               void shift8(char a)
               {
               data uchar i;
               com_data=a;
                for(i=0;i<8;i++)
                {
                SDA=mos_bit;
                SCL=1;
                SCL=0;
                com_data=com_data*2;
                }
               }
/***************************************/
               uchar rd_24C64(uint a)
               {
               uint addh,addl;
               data uint i,command;
               addl=a;
               addh=a>>8;
               SDA=1;
               SCL=0;
               start();
               command=160;
               shift8(command);                            /*****写入160*****/
               ack();                                        
               shift8(addh);                               /*****写高八位地址addh 高三位无效*****/
               ack();
               shift8(addl);                               /*****写入低八位地址 addl*****/
               ack();
               start();
               command=161;
               shift8(command);                            /*****写入161*****/
               ack();
               SDA=1;
               for(i=0;i<8;i++)
                {
                 com_data=com_data*2;
                 SCL=1;
                 low_bit=SDA;
                 SCL=0;
                }
               stop();
               return(com_data);
              }
/***************************************/
               void wr_24C64(uint a,char b)      //a地址 b数据
               {
               uint addh,addl;
               data uint command;
               addl=a;
               addh=a>>8;
               _nop_();
               SDA=1;
               SCL=0;
               start();
               command=160;
               shift8(command);                            /*****写入160*****/
               ack();                                        
               shift8(addh);                               /*****写高八位地址addh 高三位无效*****/
               ack();
               shift8(addl);                               /*****写入低八位地址 addl*****/
               ack();
               shift8(b);                                  /*****写入 b *****/
               ack();
               stop();
               _nop_();
               }
/************延时函数****************/
              void delay_nms(unsigned int n)
              {
              unsigned int i,j;
              for(i=n;i>0;i--)
              {
               for(j=2000;j>0;j--)
               {
               }
              }
              }
/***状态检查函数*指令,数据读写状态检查**/
              void Lcd_Busy()
              {
              uchar dat;
               do
               {
               dataport=0xff;
               ce=0;  
               cd=1;  
               wr=1;  
               rd=0;  
               dat=dataport;
               rd=1;    
               dat=0x03&dat;//STA0,STA1是否准备好
              }
              while(dat!=0x03);
              }
/*******数据自动写状态检查*****************/
              void autowcheck()
              {
              uchar dat;
               do
               {
               dataport=0xff;
               ce=0;    
               cd=1;    
               wr=1;    
               rd=0;    
               dat=dataport;
               rd=1;    
               dat=0x08&dat;//STA3是否准备好
              }
              while(dat==0x00);
              }
/*------输入/出函数,与T6963通讯------------------------------------------------*/
// 向数据口发Data
              void wr_data(uchar dat)
              {  
              ce=0;
              cd=0;      nop_();_nop_();_nop_();
              dataport=dat;
              wr=0;          
              wr=1;           
              }
/*****写有1个参数命令***********/
              void wr_com1(uchar command)
              {
              Lcd_Busy();
              cd=1;        
              ce=0;    
              rd=1;        
              dataport=command;
              wr=0;        
              wr=1;        
              }
/******写有 3 个参数命令*******************/
              void wr_com3(uchar data1, uchar data2, uchar command)
              {
              Lcd_Busy();
              wr_data(data1);
              Lcd_Busy();
              wr_data(data2);    
              wr_com1(command);
              }
/*--------------------------------*/
              void lcd_address(uchar urow,uchar ucol)    //urow 为1---30(240/8=30),,ucol为1---64
              {
              uint ipos;
              uchar urow1;
              uchar ucol1;
              urow1=urow-1;     //    1---30
              ucol1=ucol-1;     //    1---64
              ipos=ucol1*30+urow1;
              wr_com3(ipos&0xff,0x08+ipos/256,0x24);
              }   L0496

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

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

相关文章

LeetCode 难题解析 —— 正则表达式匹配 (动态规划)

10. 正则表达式匹配 思路解析 这道题虽然看起来不难理解&#xff0c;但却存在多种可能&#xff0c;当然这种可能的数量是有限的&#xff0c;且其规律对于每一次判别都使用&#xff0c;所以自然而然就想到用 动态规划 的方法啦 接下来逐步分析可能的情况&#xff1a; &#x…

探索中位数快速排序算法:高效寻找数据集的中间值

在计算机科学领域&#xff0c;寻找数据集的中位数是一个常见而重要的问题。而快速排序算法作为一种高效的排序算法&#xff0c;可以被巧妙地利用来解决中位数查找的问题。本文将深入探讨中位数快速排序算法的原理、实现方法以及应用场景&#xff0c;带你领略这一寻找中间值的高…

[UDS][OTA] 自定义 IntelHEX (IHEX) format read/write library in C

参考修改 参考github的MIT协议开源项目 ihex 改写的代码 https://gitee.com/liudegui/intelhex-c 修改点&#xff1a; 修改Makefile脚本&#xff0c;支持x86_X64平台和aarch64平台将默认读取行长度设置为16位删除与ihex和bin之间的转换无关的示例代码 十六进制描述 HEX格式…

C++容器——deque

deque容器 定义&#xff1a;动态数组&#xff0c;是一种双向开口的线性容器&#xff0c;意味着你不仅可以像在普通队列的末尾添加和移除元素&#xff0c;还可以在前端执行这些操作。 与其他容器相比不同的点&#xff1a; 与vector的主要区别&#xff1a; 连续性&#xff1a;…

基于 Spring Boot 博客系统开发(六)

基于 Spring Boot 博客系统开发&#xff08;六&#xff09; 本系统是简易的个人博客系统开发&#xff0c;为了更加熟练地掌握 SprIng Boot 框架及相关技术的使用。&#x1f33f;&#x1f33f;&#x1f33f; 基于 Spring Boot 博客系统开发&#xff08;五&#xff09;&#x1f…

商标不做检索分析,直接申请通过率很低!

今天有个网友拿到驳回通知书找到普推知产老杨&#xff0c;让分析驳回通过率如何&#xff0c;他主要两个文字商标和两个图形商标&#xff0c;文字商标都是两个字的&#xff0c;两个字的商标名称基本都有相同或高近&#xff0c;引用了好几个高度近似&#xff0c;直接做驳回复审通…

Unity 性能优化之光照优化(七)

提示&#xff1a;仅供参考&#xff0c;有误之处&#xff0c;麻烦大佬指出&#xff0c;不胜感激&#xff01; 文章目录 前言一、测试目的一、实时光源是什么&#xff1f;二、开始测试1.场景中只有一个光照的数值情况2.添加4个点光源后4.结果 总结 前言 实时光源数量越多&#x…

【前端】创建跳动字符效果的前端技术实现

创建跳动字符效果的前端技术实现 在前端开发中&#xff0c;动态视效能够显著增强用户体验。本文介绍一种实现字符跳动效果的技术方案&#xff0c;通过简单的HTML、CSS和JavaScript代码&#xff0c;你可以为网页文本添加生动的交互动画。这种效果可以用于吸引用户注意、增强品牌…

<网络安全>《77 概念讲解<第十课 物联网常用协议-(近距离通信)感应层协议>》

协议简称全称名称内容说明RFIDRadio Frequency Identification射频识别阅读器与标签之间进行非接触式的数据通信&#xff0c;达到识别目标的目的。RFID的应用非常广泛&#xff0c;典型应用有动物晶片、汽车晶片防盗器、门禁管制、停车场管制、生产线自动化、物料管理。完整的RF…

SQLI-labs-第十三关和第十四关

目录 第十三关 1、判断注入点 2、判断当前数据库 3、爆表名 4、爆字段名 5、爆值 第十四关 1、判断注入点 知识点&#xff1a;POST方式的单引号和括号闭合错误,报错注入 第十三关 思路&#xff1a; 1、判断注入点 使用Burpsuite抓包 首先加入一个单引号&#xff0c;…

【管理篇】管理三步曲:团队建设(二)

目录标题 如何着手团队建设提升个人能力1、要提升员工的什么能力2、提升员工个人能力的初衷是什么&#xff1f;3、如何达成上述目标4、应该如何激发员工学习的动力和意愿呢5、关于提升员工的能力&#xff0c;有两个信念特别重要&#xff1a; 提升员工的工作意愿和积极性1、管理…

2024年中国AI大模型产业发展报告,洞见下一个智能时代!

人民网财经研究院、至顶科技联合发布的《开启智能新时代&#xff1a;2024年中国AI大模型产业发展报告》,全面梳理了我国AI大模型产业的发展背景、现状、应用案例、面临的挑战以及未来趋势。报告指出,AI大模型是全球科技竞争的新高地、未来产业的新赛道、经济发展的新引擎,在我国…

HIVE统计WordCount

HIVE WORDCOUNT 目录 HIVE WORDCOUNT 一、WORDCOUNT 1.我们先创建一个新的数据库 2.创建表并插入数据 3.统计WORDCOUNT 4.UNION ALL 用法 5.WITH AS 用法 1.WORDCOUNT 1&#xff09;我们先创建一个新的数据库 create database learn3;use learn3; 2&#xff09;创建表…

Docker 入门篇(六)-- idea 打包 docker 镜像流程

环境准备&#xff1a; idea 环境&#xff1a;IntelliJ IDEA 2021.3.1 (Ultimate Edition)docker 版本&#xff1a;v. 26.1.0准备 springboot jar 文件 &#xff1a;target/DockerDemo-0.0.1-SNAPSHOT.jardocker 可视化管理工具 portainer &#xff1a;v2.6.0 一. 配置docker远…

node.js+vue3 实现

目录 一、node.jsvue3 1.1 node安装 1.2 node.jsvue3预期 二、项目及程序代码 2.1 创建项目 2.2 Node.js 服务器 (server.js) 2.3 public/index.html 2.4 src/main.js 2.5 src/App.vue 2.6 vue.config.js 三、编译实现 3.1 安装必要的依赖 3.2 运行Node.js服务器 …

04-25 周四 FastBuild重构实践-TLS、全局捕获异常、一键配置

04-25 周四 FastBuild重构实践 时间版本修改人描述04-25V0.1宋全恒新建文档2024年5月6日14:33:16V1.0宋全恒完成文档撰写 简介 由于 04-22 周日 阿里云-瑶光上部署FastBuild过程(配置TLS、自定义辅助命令)描述了重新部署一个FastBuild实例的过程&#xff0c;通过阅读这个&…

ADS过孔---过孔建模自动化

当前快速建模的方法有两类&#xff1a;一是脚本自动化&#xff0c;也就是今天要分享的方法&#xff0c;但该方法需要工程师有基本的脚本编辑能力&#xff0c;然后根据自己的需要去修改&#xff0c;难度较大一点点&#xff1b;二是参数化建模&#xff0c;也就是在GUI界面输入相应…

基于 Spring Boot 博客系统开发(七)

基于 Spring Boot 博客系统开发&#xff08;七&#xff09; 本系统是简易的个人博客系统开发&#xff0c;为了更加熟练地掌握 SprIng Boot 框架及相关技术的使用。&#x1f33f;&#x1f33f;&#x1f33f; 基于 Spring Boot 博客系统开发&#xff08;六&#xff09;&#x1f…

远程连接是什么?

远程连接是指通过网络连接两个或多个设备&#xff0c;实现远程访问、控制或传输数据的技术。它在现代科技发展中起到了重要作用&#xff0c;使得我们可以随时随地与远程设备进行交互、管理和操作。 天联组网是一种高效的远程连接解决方案&#xff0c;它因为操作简单、跨平台应用…

算法(C++

题目&#xff1a;螺旋矩阵&#xff08;59. 螺旋矩阵 II - 力扣&#xff08;LeetCode&#xff09;&#xff09; 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1&#xff1a; 输入&am…