⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 93lc46b.c

📁 这是一个7"LCD 液晶屏显示器
💻 C
字号:
#include "indash.h"

void EEPROM_Init()
{
   EEPROM_CS = 0;
   EEPROM_CLK= 0;
   EEPROM_DI = 0;
   EEPROM_DO = 0;
   if ((EEPROM_Receive_25_Bit(OP_READ, EE_CHECK_SUM_ADDR) != CHECK_SUM_VALUE) & (EEPROM_Receive_25_Bit(OP_READ, EE_CHECK_SUM_ADDR1) != CHECK_SUM_VALUE))
   {
      EEPROM_Transmit_9_Bit(OP_EWEN, 0x30);
      EEPROM_Transmit_9_Bit(OP_ERAL, 0x20);    /* clear all */
      EEPROM_Transmit_25_Bit(OP_WRITE, EE_CHECK_SUM_ADDR, CHECK_SUM_VALUE);      
      Initial_Value();
      EEPROM_Transmit_25_Bit(OP_WRITE, EE_CHECK_SUM_ADDR1, CHECK_SUM_VALUE);
   }
   EEPROM_Transmit_9_Bit(OP_EWEN, 0x30);
   Recall_Initial_Value();
}


void EEPROM_Clock()
{
                         /* COMMON clk */
   EEPROM_CLK = 0;
   EEPROM_CLK = 0;
   EEPROM_CLK = 1;
   EEPROM_CLK = 1;
   EEPROM_CLK = 1;
   EEPROM_CLK = 1;
   EEPROM_CLK = 1;
   EEPROM_CLK = 1;
   EEPROM_CLK = 1;
   EEPROM_CLK = 1;
   EEPROM_CLK = 1;
   EEPROM_CLK = 1;
   EEPROM_CLK = 1;
   EEPROM_CLK = 1;
   EEPROM_CLK = 1;
   EEPROM_CLK = 1;
   EEPROM_CLK = 1;
   EEPROM_CLK = 1;
   EEPROM_CLK = 0;
   EEPROM_CLK = 0;
   
}

void EEPROM_Transmit_Byte(unsigned char value)reentrant
{
   static char cnt = 0;

   cnt++;
   if (cnt < 8)
      EEPROM_Transmit_Byte(value / 2);
   else
      cnt = 0;

   EEPROM_DI = value % 2;
   EEPROM_Clock();
}

void EEPROM_Transmit_Addr_Byte(unsigned char value)reentrant
{
   static char cnt = 0;

   cnt++;
   if (cnt < 6)
      EEPROM_Transmit_Addr_Byte(value / 2);
   else
      cnt = 0;

   EEPROM_DI = value % 2;
   EEPROM_Clock();
}

void EEPROM_Transmit_25_Bit(char opcode, unsigned char addr, unsigned int value)
{
   EA = Disable;
   /***** transmit first time  *****/
   EEPROM_CS = 1; //P1.4

   /* start 1 bit */
   EEPROM_DI = 1;//P1.2
   EEPROM_Clock();

   /* opcode 2 bit */
   EEPROM_DI = opcode / 2;
   EEPROM_Clock();
   EEPROM_DI = opcode % 2;
   EEPROM_Clock();

   /* address 6 bit */
   EEPROM_Transmit_Addr_Byte(addr );

   /* data 16 bit */
   EEPROM_Transmit_Byte(value / 256);
   EEPROM_Transmit_Byte(value % 256);

   EEPROM_CS = 0;
   EEPROM_Clock();
   EEPROM_DI = 0;

   /* wait EEPROM finish */
   if (opcode != OP_WRAL)
      Delay(500);               /* delay 6ms */
   else
      Delay(1000);              /* delay 15ms */
   EA = Enable;   
/***** CHECK TRANSMIT VALUE **/
   Delay(4000);
   EEPROM_Receive_25_Bit( OP_READ, addr);
}

unsigned int EEPROM_Receive_25_Bit(char opcode,unsigned char addr)
{
   char i;
//   char buf[5];
   unsigned int value = 0;
   unsigned int value1= 0;
   unsigned int value2= 0;
   unsigned int xor_value = 0;  
/**** receive the first time ******/

   EEPROM_CS = 1;

   /* start 1 bit */
   EEPROM_DI = 1;
   EEPROM_Clock();

   /* opcode 2 bit*/
   EEPROM_DI = opcode / 2;
   EEPROM_Clock();
   EEPROM_DI = opcode % 2;
   EEPROM_Clock();

   /* address 6 bit */
   EEPROM_Transmit_Addr_Byte(addr);

   /* data 16 bit */
   EEPROM_DI = 1;   /* impotant */
   for (i = 0; i < 16; i++)
   {
      EEPROM_Clock();
      if (EEPROM_DO)
         value |= 0x01 << (15 - i);
   }

   EEPROM_CS = 0;
   EEPROM_Clock();
   EEPROM_DI = 0;
/*
   Printxy_Normal( 1,5,"value" , FONT_GREEN);
   Printxy_Normal( 8,5 , Ntoa((signed long) value, Fill(buf, 5, ' '), LEFT, ' '), FONT_GREEN);
*/   


     return(value);
}

void EEPROM_Transmit_9_Bit(char opcode, unsigned char addr)
{
   EEPROM_CS = 1;

   /* start 1 bit */
   EEPROM_DI = 1;
   EEPROM_Clock();

   /* opcode 2 bit*/
   EEPROM_DI = opcode / 2;
   EEPROM_Clock();
   EEPROM_DI = opcode % 2;
   EEPROM_Clock();

   /* address 6 bit */
   EEPROM_Transmit_Addr_Byte(addr);

   EEPROM_CS = 0;
   EEPROM_Clock();
   EEPROM_DI = 0;

   /* wait EEPROM finish */
   Delay(500);                  /* delay 6ms */
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -