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

📄 93lc66b.c

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

#define _ROM         ((char *)  0x020000)

void EEPROM_Init()
{
   EEPROM_CS = 0;
   EEPROM_CLK = 0;
   EEPROM_DI = 1;
   EEPROM_DO = 1;
   if (EEPROM_Receive_20_Bit(OP_READ, EE_CHECK_SUM_ADDR) != CHECK_SUM_VALUE)
   {
      EEPROM_Transmit_12_Bit(OP_ERAL, 0x100);    /* clear all */
      EEPROM_Transmit_12_Bit(OP_EWEN, 0x180);
      EEPROM_Transmit_20_Bit(OP_WRITE, EE_CHECK_SUM_ADDR, CHECK_SUM_VALUE);
      Initial_Value();
   }
   EEPROM_Transmit_12_Bit(OP_EWEN, 0x180);
   Recall_Initial_Value();
}

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

void EEPROM_Transmit_Byte(unsigned char value)
{
   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 int value)
{
   static char cnt = 0;

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

   EEPROM_DI = value % 2;
   EEPROM_Clock();
}

void EEPROM_Transmit_20_Bit(char opcode, unsigned int addr, unsigned char value)
{
   EEPROM_CLK = 0;
   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 9 bit */
   EEPROM_Transmit_Addr_Byte(addr);

   /* data 8 bit */
   EEPROM_Transmit_Byte(value);

   EEPROM_CS = 0;

   /* wait EEPROM finish */
   if (opcode != OP_WRAL)
      Delay(800);               /* delay 6ms */
   else
      Delay(1500);              /* delay 15ms */
}

unsigned char EEPROM_Receive_20_Bit(char opcode, unsigned int addr)
{
   char i;
   unsigned char value = 0;

   EEPROM_CLK = 0;
   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 9 bit */
   EEPROM_Transmit_Addr_Byte(addr);

   EEPROM_DO = 1;                       /* very improtant PULL HIGH */
   /* data 8 bit */
   for (i = 0; i < 8; i++)
   {
      EEPROM_Clock();
      if (EEPROM_DO)
         value |= 0x01 << (7 - i);
   }
   EEPROM_CS = 0;
   return(value);
}

void EEPROM_Transmit_12_Bit(char opcode, unsigned int addr)
{
   EEPROM_CLK = 0;
   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 9 bit */
   EEPROM_Transmit_Addr_Byte(addr);

   EEPROM_CS = 0;

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

⌨️ 快捷键说明

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