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

2024-05-07 06:44

本文主要是介绍PCB光控打孔机第二版程序(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/*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

这篇关于PCB光控打孔机第二版程序(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/966618

相关文章

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

将java程序打包成可执行文件的实现方式

《将java程序打包成可执行文件的实现方式》本文介绍了将Java程序打包成可执行文件的三种方法:手动打包(将编译后的代码及JRE运行环境一起打包),使用第三方打包工具(如Launch4j)和JDK自带... 目录1.问题提出2.如何将Java程序打包成可执行文件2.1将编译后的代码及jre运行环境一起打包2

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用

《数据结构(C语言版)第二版》第八章-排序(8.3-交换排序、8.4-选择排序)

8.3 交换排序 8.3.1 冒泡排序 【算法特点】 (1) 稳定排序。 (2) 可用于链式存储结构。 (3) 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n较大时, 此算法不宜采用。 #include <stdio.h>#include <stdlib.h>#define MAXSIZE 26typedef int KeyType;typedef char In

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [