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

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

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

相关文章

5:OOP面向对象编程 VS GP 泛型编程

文章目录 两种概念的差别OOP 想要将datas 和methods放在一起GP 想要将datas 和methods分开来 GP的好处sort方法 两种概念的差别 OOP 面向对象 —大量的继承关系和 虚函数 比较复杂 GP–stl的使用 使用模版编程 不用继承和大量虚函数需要理清楚关系 OOP 想要将datas 和methods…

抖音爆火的QQ价格评估前端源码

最近抖音很火直播给别人测qq价值多少&#xff0c;这个源码只有前端&#xff0c; 包含激活码验证页&#xff0c;评估页 源码免费下载地址抄笔记 (chaobiji.cn)

数据结构(C):玩转顺序表

&#x1f37a;0.前言 &#x1f3b7;1.线性表 &#x1f3b8;2.顺序表 &#x1f4c0;动态顺序表的实现 &#x1f4bf;初始化 &#x1f4bf;检查容量是否满了&#xff0c;进行扩容 &#x1f4bf;插入&#xff1a;头插和尾插 &#x1f4bf;删除&#xff1a;头删和尾删 &…

基于PSO优化的PV光伏发电系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于PSO优化的PV光伏发电系统simulink建模与仿真。其中PSO采用matlab编程实现&#xff0c;通过simulink的函数嵌入模块&#xff0c;将matlab调用进simulink中。 2.系统仿真结…

【强训笔记】day10

NO.1 思路&#xff1a;中心扩展。从i位置开始&#xff0c;从i-1为左边和i1右边进行移动&#xff0c;字符相等就继续移动&#xff0c;直到不等&#xff0c;更新回文串长度&#xff0c;让i为左边&#xff0c;i1右边再移动&#xff0c;同样字符相等就移动&#xff0c;不等就更新长…

五、VGA 叠加图像原理和实现(十字光标)

前言&#xff1a;该案例在VGA项目&#xff1a;联合精简帧双fifosobel算法 实现VGA显示项目的基础上进行改动。 要求&#xff1a;通过串口助手把 198x198 的十字光标图像二进制数据传递给 FPGA 板卡&#xff0c;FPGA 板 卡接收到后存储到 Ram 中用于 VGA 叠加显示。 预期效果展…

为什么电子商务安全是速度和保护之间的平衡行为

微信搜索关注公众号网络研究观&#xff0c;获取更多信息。 电子商务世界是一把双刃剑。虽然它为企业和消费者提供了便利和可访问性&#xff0c;但它也为网络犯罪分子提供了诱人的目标。在这个不断变化的环境中&#xff0c;优先考虑安全不再是一种选择&#xff1b;而是一种选择&…

解决Win10家庭版找不到组策略gpedit.msc的·方法

因为电脑出问题&#xff0c;一开机就会自动开启ie浏览器&#xff0c;所以就想找有没有方法解决&#xff0c;然后就了解到了gpedit.msc的作用以及相关的一些方法&#xff0c;也是为之后也许有人遇到相同的问题有个提供方法的途径。 首先我们直接运行gpedit.msc 是找不到的&…

vivado刷题笔记46

题目&#xff1a; Design a 1-12 counter with the following inputs and outputs: Reset Synchronous active-high reset that forces the counter to 1 Enable Set high for the counter to run Clk Positive edge-triggered clock input Q[3:0] The output of the counter c…

【网络知识】光猫、路由器 和 交换机 的作用和区别?

数字信号&#xff1a;是指自变量是离散的、因变量也是离散的信号&#xff0c;这种信号的自变量用整数表示&#xff0c;因变量用有限数字中的一个数字来表示。在计算机中&#xff0c;数字信号的大小常用有限位的二进制数表示。 模拟信号&#xff1a;模拟信号是指用连续变化的物…

神经网络中的归一化

我们今天介绍一下神经网络中的归一化方法~ 之前学到的机器学习中的归一化是将数据缩放到特定范围内&#xff0c;以消除不同特征之间的量纲和取值范围差异。通过将原始数据缩放到一个特定的范围内&#xff0c;比如[0,1]或者[-1,1]&#xff0c;来消除不同特征之间的量纲和取值范围…

Excel利用数据透视表将二维数据转换为一维数据(便于后面的可视化分析)

一维数据&#xff1a;属性值都不可合并&#xff0c;属性值一般在第一列或第一行。 二维数据&#xff1a;行属性或列属性是可以继续合并的&#xff0c;如下数据中行属性可以合并为【月份】 下面利用数据透视表将二维数据转换为一维数据&#xff1a; 1、在原来的数据上插入数据透…