/****L2251 CODE11820 2025 5 8 16:16*******/
/***轴承上料机控制 提升 摇摆 光电检测***/
/***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
uint Time_1US; //按键检测间隔时间 常数
uint FHz,F_Hz,Step; //F_HZ=100倍(20000对应200HZ) CT=50(占空比50%) Step(步进数)
#define IAP_ADDRESS 0x3200 //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 CT; //占空比
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);
void Timer2_Init(void);
#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 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,/*"率",17*/
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*/
};
/*************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=0; //脉冲频率
L_EN=1; //高电平使能 低电平关闭
R_PWM=0; //脉冲频率
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)
{
uint j,k,s,p;
RunTime_A=IapReadByte(IAP_ADDRESS); //上料延时
RunTime_B=IapReadByte(IAP_ADDRESS+1); //光电延时
CT=IapReadByte(IAP_ADDRESS+2); //占空比
j=IapReadByte(IAP_ADDRESS+3);//
k=IapReadByte(IAP_ADDRESS+4);//
s=IapReadByte(IAP_ADDRESS+5);//
p=IapReadByte(IAP_ADDRESS+6);//
total=j*1000+k*100+s*10+p;
j=IapReadByte(IAP_ADDRESS+7);//
k=IapReadByte(IAP_ADDRESS+8);//
s=IapReadByte(IAP_ADDRESS+9);//
p=IapReadByte(IAP_ADDRESS+10);//
FHz=j*1000+k*100+s*10+p; //
}
/***************************************/
void write_eeprom( )
{
uint j,k,s,p;
IapEraseSector(IAP_ADDRESS); //扇区擦除
IapProgramByte(IAP_ADDRESS,RunTime_A); //上料延时
IapProgramByte(IAP_ADDRESS+1,RunTime_B);//光电延时
IapProgramByte(IAP_ADDRESS+2,CT); //占空比
j=total/1000;
k=(total-j*1000)/100;
s=(total-j*1000-k*100)/10;
p=total-j*1000-k*100-s*10;
IapProgramByte(IAP_ADDRESS+3,j); /**/
IapProgramByte(IAP_ADDRESS+4,k); /**/
IapProgramByte(IAP_ADDRESS+5,s); /**/
IapProgramByte(IAP_ADDRESS+6,p); /**/
j=FHz/1000;
k=(FHz-j*1000)/100;
s=(FHz-j*1000-k*100)/10;
p=FHz-j*1000-k*100-s*10;
IapProgramByte(IAP_ADDRESS+7,j); /**/
IapProgramByte(IAP_ADDRESS+8,k); /**/
IapProgramByte(IAP_ADDRESS+9,s); /**/
IapProgramByte(IAP_ADDRESS+10,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(uint s)
{
uint A1,A2,A3;
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]);
}
for(x=0;x<8;x++) //横向像素
{
Write_IIC_Data(0X00);
}
}
}
/*************设置参数值显示测试**************************/
void dishz(uint s)
{
uint 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*4]); //字符表第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*5]); //字符表第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 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*16]); //字符表第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*17]); //字符表第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*4]); //字符表第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*5]); //字符表第8个字
}
}
}