#include "FM1906.h"
void FM1906_IO_init(void)
{
CS_PU = 1;
CS_PC = 0;
CS_BIT = 0;
WR_PU = 1;
WR_PC = 0;
WR_BIT = 0;
DATA_PU = 1;
DATA_PC = 0;
DATA_BIT = 0;
}
void FM1906_delay(u16 i)
{
while(i --)
{
}
}
void FM1906_send_dataH(u8 data,u8 cnt)
{
u8 i;
for(i =0; i <cnt; i ++)
{
if((data&0x80)==0)
{
DATA_L;
}
else
{
DATA_H;
}
WR_L;
FM1906_delay(10);
WR_H;
data <<= 1;
}
}
void FM1906_send_dataL(u8 data,u8 cnt)
{
u8 i;
for(i =0; i <cnt; i ++)
{
if((data&0x01)==0)
{
DATA_L;
}
else
{
DATA_H;
}
WR_L;
FM1906_delay(10);
WR_H;
data >>= 1;
}
}
void FM1906_wrcmd(u16 cmd)
{
int i;
i = 12;
CS_L;
FM1906_delay(10);
while(i--)
{
WR_L;
if(cmd & 0x8000)
{
DATA_H;
}
else
{
DATA_L;
}
FM1906_delay(10);
WR_H;
FM1906_delay(10);
cmd <<= 1;
}
CS_H;
FM1906_delay(10);
}
void FM1906_write(u8 addr,u8 data)
{
CS_L;
FM1906_send_dataH(0xa0,3);
addr = addr << 2;
FM1906_send_dataH(addr,6);
FM1906_send_dataL(data,4);
CS_H;
}
void FM1906_Config(void)
{
u8 i;
FM1906_delay(50);
FM1906_wrcmd(CMD_BIAS_1_3 | CMD_COM_4);
FM1906_wrcmd(CMD_RC256K);
FM1906_wrcmd(CMD_SYS_DIS);
FM1906_wrcmd(CMD_WDT_DIS);
FM1906_delay(100);
FM1906_wrcmd(CMD_SYS_EN);
FM1906_delay(100);
FM1906_wrcmd(CMD_LCD_ON);
for(i=2;i<27;i++)
FM1906_write(i,0xff);
Lcd_dis_clr();
}
void Lcd_dis_all(void)
{
u8 i;
for(i=2;i<26;i=i+2)
{
FM1906_write(i,0xff);
}
}
void Lcd_dis_clr(void)
{
u8 i;
for(i=2;i<26;i=i+2)
{
FM1906_write(i,0x00);
}
}
void Lcd_config(void)
{
FM1906_IO_init();
FM1906_Config();
Lcd_dis_all();
}
/////////////////**************************