0.96英寸OLED STCEEPROM 程序模板


             

              #include     "reg52.h"             //取字库代码显示界面
              #include     "intrins.h"             //连续EEPROM地址写FM24C64文字
              #define      uchar  unsigned char
              #define      uint   unsigned int
              #define      IAP_ADDRESS 0x0000    //EEPROM首地址
              sbit         INTPUT1=P1^4;         //上限位开关输入
              sbit         INTPUT2=P1^5;         //下限位开关输入
              sbit         INTPUT3=P5^5;         //红外线开关输入
              sbit         INTPUT4=P5^4;         //输送正转信号
              bit          UP_Flag;              //提升上升标志
              bit          DWON_Flag;             //提升下降标志
              bit           RunFlag;                 //提升排列运行标志
              sbit         LED=P5^5;             //EEPROM写指示
                sbit         MOTORA_LED=P3^6;      //输送指示
              sbit         MOTORB_LED=P3^7;      //链板指示
              sbit         MOTORC_LED=P2^0;      //提升指示
              sbit         KEY_ADD=P2^6;
              sbit         KEY_DEC=P2^7;
              sbit         KEY_SET=P1^0;
              sbit         KEY_ENTER=P1^1;
              uint         total,A1,A2,A3;       //输入文字总数 个位 十位 百位
              typedef      uchar BYTE;           //
              typedef      uint  WORD;                 //  
              uint         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
              #define      IAP_ADDRESS  0x0000    //EEPROM首地址
              #define      IAP_ADDRESSS 0x0200    //EEPROM首地址
              uint         Counter;
              #define      high 1
              #define      low 0
              uchar        DAT2=0;
/***********************0--A字符表*************************/
uchar 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,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x1F,0x01,0x01,0x01,0x01,0x1F,0x00,/*"A",10*/
0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,/*"D",11*/
0x08,0xF8,0x00,0xF8,0x00,0xF8,0x08,0x00,0x00,0x03,0x3E,0x01,0x3E,0x03,0x00,0x00,/*"W",12*/
0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,/*"O",13*/
0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,/*"N",14*/
};    
uchar code show2[]=
{
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,/*"上",0*/
0x80,0x80,0x84,0x84,0x84,0xFE,0x82,0x83,0x82,0x80,0xFF,0x80,0x80,0x80,0x80,0x00,
0x00,0x80,0x40,0x20,0x18,0x07,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,/*"升",1*/
0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x42,0x82,0x02,0x02,0x02,0x02,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x01,0x06,0x00,0x00,0x00,/*"下",2*/
0x00,0xFE,0x02,0x22,0xDA,0x86,0x90,0x48,0x57,0x24,0xA4,0x54,0x4C,0x84,0x80,0x00,
0x00,0xFF,0x08,0x10,0x08,0x07,0x18,0x12,0x12,0x12,0xFF,0x12,0x12,0x12,0x10,0x00,/*"降",3*/
0x00,0x02,0x02,0xC2,0x02,0x02,0x02,0xFE,0x82,0x82,0x82,0x82,0x82,0x02,0x00,0x00,
0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,/*"正",4*/
0xC8,0xB8,0x8F,0xE8,0x88,0x88,0x40,0x48,0x48,0xE8,0x5F,0x48,0x48,0x48,0x40,0x00,
0x08,0x18,0x08,0xFF,0x04,0x04,0x00,0x02,0x0B,0x12,0x22,0xD2,0x0A,0x06,0x00,0x00,/*"转",5*/
0x00,0x00,0xFC,0x24,0x24,0xE4,0x24,0x24,0x22,0x22,0x22,0xA3,0x62,0x00,0x00,0x00,
0x40,0x30,0x8F,0x80,0x40,0x40,0x23,0x14,0x08,0x14,0x22,0x41,0x40,0x80,0x80,0x00,/*"反",6*/
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,/*"待",7*/
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,/*"机",8*/
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,/*"延",9*/
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,/*"时",10*/
0x40,0x40,0x42,0xCC,0x00,0x40,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0x40,0x00,
0x00,0x00,0x00,0x7F,0x20,0x10,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,/*"计",11*/
0x10,0x10,0x10,0xFF,0x90,0x20,0x98,0x88,0x88,0xE9,0x8E,0x88,0x88,0xA8,0x98,0x00,
0x02,0x42,0x81,0x7F,0x00,0x00,0x80,0x84,0x4B,0x28,0x10,0x28,0x47,0x80,0x00,0x00,/*"按",12*/
0x88,0x68,0x1F,0xC8,0x08,0x10,0xC8,0x54,0x52,0xD1,0x12,0x94,0x08,0xD0,0x10,0x00,
0x09,0x19,0x09,0xFF,0x05,0x00,0xFF,0x12,0x92,0xFF,0x00,0x5F,0x80,0x7F,0x00,0x00,/*"输",13*/
0x00,0x00,0x00,0x00,0x00,0x01,0xE2,0x1C,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x03,0x0C,0x30,0x40,0x80,0x80,0x00,/*"入",14*/
};
/*************Pin Define***************/
              sbit      OLED_SCL=P3^3;       //
              sbit      OLED_SDA=P3^2;       //
              void      Initial_LY096BG30();
              void      Delay_50ms(uint Del_50ms);
              void      fill_picture(uchar fill_Data);
              void      IIC_Start();
              void      IIC_Stop();
              void      Write_IIC_Command(uchar IIC_Command);
              void      Write_IIC_Data(uchar IIC_Data);
              bit       Write_IIC_Byte(uchar IIC_Byte);
              void      dis_Value(uchar s);
/**************Delay*******************************/
              void     Delay_50ms(uint Del_50ms)        //
              {
               uint m;
               for(;Del_50ms>0;Del_50ms--)
               for(m=62450;m>0;m--);
              }
/************按键计数器状态寄存器归零************/
              void key_reset()
              {
              kcounter=0;                        //计数器归零
              kstatus=0;                         //状态计数器归零
              }
/************按键计数器状态寄存器加一************/
              void Key_ValAdd()
              {
              kcounter++;                        //按键计数器加一
              kstatus++;                         //按键状态标志加一
              }
/***********按键计数器加一状态寄存器归零*********/
              void Key_Clear()
              {
              kcounter++;                        //按键计数器加一
              kstatus=0;                         //按键状态标志归零
              }
/*-----------(1)延时子程序12MHz 加千百十个显示--------*/
               void Delay_100ms(uint x)          //
               {
               uint i,j;
                for(i=0;i<x;i++)
                {
                for(j=0;j<18000;j++);
                }
               }

/*******************IIC Start******************/
              void IIC_Start()
              {
               OLED_SCL=high;
               OLED_SDA=high;
               _nop_();
               OLED_SDA=low;
               _nop_();_nop_();
               OLED_SCL=low;
              }
/*************IIC Stop*************************/
              void IIC_Stop()
              {
              OLED_SDA=low;
              _nop_();
              OLED_SCL=high;
              _nop_();_nop_();
              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;
               OLED_SCL=high;
               _nop_();_nop_();
               OLED_SCL=low;
               IIC_Byte<<=1;                     //loop
               }
              OLED_SDA=high;                     //释放IIC SDA总线为主器件接收从器件产生应答信号    
              _nop_();_nop_();
              OLED_SCL=high;                     //第9个时钟周期
              _nop_();_nop_();
              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)
              {
              IIC_Start();
              Write_IIC_Byte(0x78);            
              Write_IIC_Byte(0x40);              //write data
              Write_IIC_Byte(IIC_Data);
              IIC_Stop();
              }
/********************picture**********************/
              void cleardisp()
              {
              uchar 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 Diswait()
              {
              uchar x,y;
              uint i=0;
              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(show2[x+y*16+Cnt*7]); //字符表第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(show2[x+y*16+Cnt*8]);  //字符表第8个字
                }
               }
              }
/********************显示延时**********************/
              void  DisDelay()                       //显示延时
              {
              uchar x,y;
              uint i=0;
              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(show2[x+y*16+Cnt*9]); //字符表第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(show2[x+y*16+Cnt*10]);  //字符表第8个字
                }
               }
              }
/********************显示上升**********************/
              void  DisUp()                       //显示延时
              {
              uchar x,y;
              uint i=0;
              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(show2[x+y*16+Cnt*0]); //字符表第1个字
                }
               }
//
               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(show2[x+y*16+Cnt*1]);  //字符表第2个字
                }
               }
              }
/********************显示下降**********************/
              void  DisDwon()                       //显示延时
              {
              uchar x,y;
              uint i=0;
              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(show2[x+y*16+Cnt*2]); //字符表第3个字
                }
               }
//
               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(show2[x+y*16+Cnt*3]);  //字符表第4个字
                }
               }
              }
/********************显示正转**********************/
              void  DisCW()                       //显示延时
              {
              uchar x,y;
              uint i=0;
              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(show2[x+y*16+Cnt*4]); //字符表第5个字
                }
               }
//
               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(show2[x+y*16+Cnt*5]);  //字符表第6个字
                }
               }
              }
/********************显示反转**********************/
              void  DisCCW()                       
              {
              uchar x,y;
              uint i=0;
              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(show2[x+y*16+Cnt*6]); //字符表第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(show2[x+y*16+Cnt*5]);  //字符表第6个字
                }
               }
              }
/***************延时参数显示******************/
               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(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(0XB2+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 dis_Values(uint 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(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 reset_io()
              {
              P1M0=0X00;
              P1M1=0X00;
              P2M0=0X00;
              P2M1=0X00;
              P3M0=0X00;
              P3M1=0X00;
              P5M0=0X00;
              P5M1=0X00;
              INTPUT1=1;                         //上限位开关输入
              INTPUT2=1;                         //下限位开关输入
              INTPUT3=1;                         //红外线开关输入
              INTPUT4=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 write_eeproms(uint dat)
              {
              uint j,k,s;
              j=dat/100;
              k=(dat-j*100)/10;
              s=dat-j*100-k*10;
              IapEraseSector(IAP_ADDRESSS);       //扇区擦除      
              IapProgramByte(IAP_ADDRESSS+0,j);     /**/
              IapProgramByte(IAP_ADDRESSS+1,k);     /**/
              IapProgramByte(IAP_ADDRESSS+2,s);     /**/
              }                                                            
/*********************************************************/
              void main(void)                    //
              {
              EA=1;
              Initial_LY096BG30();               //初始化显示屏
              total=0;
              cleardisp();
              reset_io();
              Diswait();                         //显示待机
              
                Delay_50ms(2);
              DisDelay();                        //显示延时
            
              
               while(1)
               {

               }
              }                                     //L1013  CODE 4158 2022 6 4

  • 11
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值