|
- #include "LCD.h"
-
- u8 ucDispDT;
-
- static const u8 font816[38][16]=
- {
- {0xF8,0xFC,0x04,0xC4,0x24,0xFC,0xF8,0x00,0x07,0x0F,0x09,0x08,0x08,0x0F,0x07,0x00}, // -0-
- {0x00,0x10,0x18,0xFC,0xFC,0x00,0x00,0x00,0x00,0x08,0x08,0x0F,0x0F,0x08,0x08,0x00}, // -1-
- {0x08,0x0C,0x84,0xC4,0x64,0x3C,0x18,0x00,0x0E,0x0F,0x09,0x08,0x08,0x0C,0x0C,0x00}, // -2-
- {0x08,0x0C,0x44,0x44,0x44,0xFC,0xB8,0x00,0x04,0x0C,0x08,0x08,0x08,0x0F,0x07,0x00}, // -3-
- {0xC0,0xE0,0xB0,0x98,0xFC,0xFC,0x80,0x00,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00}, // -4-
- {0x7C,0x7C,0x44,0x44,0xC4,0xC4,0x84,0x00,0x04,0x0C,0x08,0x08,0x08,0x0F,0x07,0x00}, // -5-
- {0xF0,0xF8,0x4C,0x44,0x44,0xC0,0x80,0x00,0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00}, // -6-
- {0x0C,0x0C,0x04,0x84,0xC4,0x7C,0x3C,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00}, // -7-
- {0xB8,0xFC,0x44,0x44,0x44,0xFC,0xB8,0x00,0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00}, // -8-
- {0x38,0x7C,0x44,0x44,0x44,0xFC,0xF8,0x00,0x00,0x08,0x08,0x08,0x0C,0x07,0x03,0x00}, // -9-
- {0xE0,0xF0,0x98,0x8C,0x98,0xF0,0xE0,0x00,0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00}, // -A- 10
- {0x04,0xFC,0xFC,0x44,0x44,0xFC,0xB8,0x00,0x08,0x0F,0x0F,0x08,0x08,0x0F,0x07,0x00}, // -B- 11
- {0xF0,0xF8,0x0C,0x04,0x04,0x0C,0x18,0x00,0x03,0x07,0x0C,0x08,0x08,0x0C,0x06,0x00}, // -C- 12
- {0x04,0xFC,0xFC,0x04,0x0C,0xF8,0xF0,0x00,0x08,0x0F,0x0F,0x08,0x0C,0x07,0x03,0x00}, // -D- 13
- {0x04,0xFC,0xFC,0x44,0xE4,0x0C,0x1C,0x00,0x08,0x0F,0x0F,0x08,0x08,0x0C,0x0E,0x00}, // -E- 14
- {0x04,0xFC,0xFC,0x44,0xE4,0x0C,0x1C,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00}, // -F- 15
- {0xF0,0xF8,0x0C,0x84,0x84,0x8C,0x98,0x00,0x03,0x07,0x0C,0x08,0x08,0x07,0x0F,0x00}, // -G- 16
- {0xFC,0xFC,0x40,0x40,0x40,0xFC,0xFC,0x00,0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00}, // -H- 17
- {0x00,0x00,0x04,0xFC,0xFC,0x04,0x00,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00}, // -I- 18
- {0x00,0x00,0x00,0x04,0xFC,0xFC,0x04,0x00,0x07,0x0F,0x08,0x08,0x0F,0x07,0x00,0x00}, // -J- 19
- {0x04,0xFC,0xFC,0xC0,0xF0,0x3C,0x0C,0x00,0x08,0x0F,0x0F,0x00,0x01,0x0F,0x0E,0x00}, // -K- 20
- {0x04,0xFC,0xFC,0x04,0x00,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x08,0x0C,0x0E,0x00}, // -L- 21
- {0xFC,0xFC,0x38,0x70,0x38,0xFC,0xFC,0x00,0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00}, // -M- 22
- {0xFC,0xFC,0x38,0x70,0xE0,0xFC,0xFC,0x00,0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00}, // -N- 23
- {0xF0,0xF8,0x0C,0x04,0x0C,0xF8,0xF0,0x00,0x03,0x07,0x0C,0x08,0x0C,0x07,0x03,0x00}, // -O- 24
- {0x04,0xFC,0xFC,0x44,0x44,0x7C,0x38,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00}, // -P- 25
- {0xF8,0xFC,0x04,0x04,0x04,0xFC,0xF8,0x00,0x07,0x0F,0x08,0x0E,0x3C,0x3F,0x27,0x00}, // -Q- 26
- {0x04,0xFC,0xFC,0x44,0xC4,0xFC,0x38,0x00,0x08,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00}, // -R- 27
- {0x18,0x3C,0x64,0x44,0xC4,0x9C,0x18,0x00,0x06,0x0E,0x08,0x08,0x08,0x0F,0x07,0x00}, // -S- 28
- {0x00,0x1C,0x0C,0xFC,0xFC,0x0C,0x1C,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00}, // -T- 29
- {0xFC,0xFC,0x00,0x00,0x00,0xFC,0xFC,0x00,0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00}, // -U- 30
- {0xFC,0xFC,0x00,0x00,0x00,0xFC,0xFC,0x00,0x01,0x03,0x06,0x0C,0x06,0x03,0x01,0x00}, // -V- 31
- {0xFC,0xFC,0x00,0x80,0x00,0xFC,0xFC,0x00,0x03,0x0F,0x0E,0x03,0x0E,0x0F,0x03,0x00}, // -W- 32
- {0x0C,0x3C,0xF0,0xC0,0xF0,0x3C,0x0C,0x00,0x0C,0x0F,0x03,0x00,0x03,0x0F,0x0C,0x00}, // -X- 33
- {0x00,0x3C,0x7C,0xC0,0xC0,0x7C,0x3C,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00}, // -Y- 34
- {0x1C,0x0C,0x84,0xC4,0x64,0x3C,0x1C,0x00,0x0E,0x0F,0x09,0x08,0x08,0x0C,0x0E,0x00}, // -Z- 35
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00}, // -.- 36
- {0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00}, // -:- 37
-
- };
- void Get_8x16_Font(u16 character ,u8* backbuf)
- {
- if( (character>='0')&&(character<='9'))
- {
- character -= '0';
- }
- #if 1
- else if( (character>='A')&&(character<='Z'))
- {
- character = character - 'A' + 10;
- }
- #endif
- else if(character == ':')
- {
- character = 37;
- }
- else if(character == '.')
- {
- character = 36;
- }
- //backbuf = (uint8 *)(Num612[character]);
- memcpy(backbuf, (u8 *)(font816[character]),sizeof(font816[character]));
- }
- #if 1
- void HexToDec(u32 tempdata,u8* buf,unsigned char bufLen)
- {
- buf[0]=tempdata/1000000000;
- buf[1]=tempdata/100000000-(buf[0]*10);
- buf[2]=tempdata/10000000-(buf[0]*100)-(buf[1]*10);
- buf[3]=tempdata/1000000-buf[0]*1000-buf[1]*100-buf[2]*10;
- buf[4]=tempdata/100000-buf[0]*10000-buf[1]*1000-buf[2]*100-buf[3]*10;
- buf[5]=tempdata/10000-buf[0]*100000-buf[1]*10000-buf[2]*1000-buf[3]*100-buf[4]*10;
- buf[6]=tempdata/1000-buf[0]*1000000-buf[1]*100000-buf[2]*10000-buf[3]*1000-buf[4]*100-buf[5]*10;
- buf[7]=tempdata/100-buf[0]*10000000-buf[1]*1000000-buf[2]*100000-buf[3]*10000-buf[4]*1000-buf[5]*100-buf[6]*10;
- buf[8]=tempdata/10-buf[0]*100000000-buf[1]*10000000-buf[2]*1000000-buf[3]*100000-buf[4]*10000-buf[5]*1000-buf[6]*100-buf[7]*10;
- buf[9]=tempdata-buf[0]*1000000000-buf[1]*100000000-buf[2]*10000000-buf[3]*1000000-buf[4]*100000-buf[5]*10000-buf[6]*1000-buf[7]*100-buf[8]*10;
- }
- #endif
-
- void AttenuatorConfig(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //1A
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MHz
- GPIO_Init(GPIOA, &GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //2A
- //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MHz
- GPIO_Init(GPIOC, &GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; //3A
- //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MHz
- GPIO_Init(GPIOC, &GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //4A
- //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MHz
- GPIO_Init(GPIOC, &GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14; //5A
- //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MHz
- GPIO_Init(GPIOC, &GPIO_InitStructure);
-
- #if 1 //衰减效果最好
- GPIO_SetBits(GPIOA,GPIO_Pin_8);
- GPIO_SetBits(GPIOC,GPIO_Pin_8);
- GPIO_SetBits(GPIOC,GPIO_Pin_4);
- GPIO_SetBits(GPIOC,GPIO_Pin_5);
- GPIO_SetBits(GPIOC,GPIO_Pin_14);
- #else
- GPIO_ResetBits(GPIOA,GPIO_Pin_8);
- GPIO_ResetBits(GPIOC,GPIO_Pin_8);
- GPIO_ResetBits(GPIOC,GPIO_Pin_4);
- GPIO_ResetBits(GPIOC,GPIO_Pin_5);
- GPIO_ResetBits(GPIOC,GPIO_Pin_14);
- #endif
-
- }
-
- void lcd_init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //LCD POWER
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MHz
- GPIO_Init(GPIOC, &GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //LCD CS
- //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MHz
- GPIO_Init(GPIOC, &GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //LCD RES
- //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MHz
- GPIO_Init(GPIOC, &GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //LCD AO
- //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MHz
- GPIO_Init(GPIOC, &GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; //LCD SCK
- //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MHz
- GPIO_Init(GPIOC, &GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //LCD SDA 不需要
- //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MHz
- GPIO_Init(GPIOC, &GPIO_InitStructure);
-
- GPIO_SetBits(GPIOC,GPIO_Pin_0);
-
- vDispInit(0,24);
- vDispClear();
-
- }
-
- void _vWriteIR_spi(u8 ucData);
- void _vWriteData_spi(void);
- void (* WriteIR)(u8); //20120502 hong 函数指针,指向 _vWriteIR 或者_vWriteIR_spi
- void (* WriteData)(void); //20120502 函数指针,指向_vWriteData或者_vWriteData_spi
-
- #if 0
- __inline void IRQEnable(void)
- {
- int tmp;
- __asm
- {
- MRS tmp,CPSR ///读取CPSR的值
- BIC tmp,tmp,#0x80 //将IRQ中断禁止位I清零,即允许IRQ中断
- MSR CPSR_c,tmp //设置CPSR的值
- }
- }
-
-
- __inline void IRQDisable(void)
- {
- int tmp;
-
- __asm
- {
- MRS tmp,CPSR ///读取CPSR的值
- ORR tmp,tmp,#0x80 //将IRQ中断禁止位I清零,即允许IRQ中断
- MSR CPSR_c,tmp //设置CPSR的值
- }
- }
- #endif
-
- #if 0
- void SetDISPDATA( u8 DISPDATA )
- {
- IO2SET = IO2SET | DISPDATA;
- IO2CLR = (~IO2SET) | ((~DISPDATA) &0x000000ff);
- }
- #endif
- u32 vI2cHzkGetStart( u32 addr /*Int32 addr*/ )
- {
- //ulong HfcAdd;
- u32 HfcAdd;
- HfcAdd = addr >> 8;
- HfcAdd *= 264;
- HfcAdd += (addr & 0xff);
- return ( HfcAdd );
-
- }
-
- /**************************************************************
- 功能 液晶屏写命令函数
- 参数 ucData--命令内容
- 设计 谢红波
- 日期 20080710xiehb
- *************************************************************/
- void _vWriteIR_spi(u8 ucData)
- {
- u8 i;
- // 关中断
- ucData = ucData;
- //IRQDisable();
- //SPI1_CE = 0;
- //P2WPin_HIGH(PIN_LCD_SDA);
- //LCD_SDA_OUTMODE_SET;
- GPIO_SetBits(GPIOC,GPIO_Pin_12);
- //WPin(P2, PIN_LCD_CS0, 0);
- //LCD_CS0_OUTMODE_CLEAR;
- GPIO_ResetBits(GPIOC,GPIO_Pin_2);
- //P2WPin_LOW(PIN_LCD_DC);
- //LCD_DC_OUTMODE_CLEAR;
- GPIO_ResetBits(GPIOC,GPIO_Pin_10);
- for ( i = 0; i < 8; i++ )
- {
- //P2WPin_LOW(PIN_LCD_SCL);
- //LCD_SCL_OUTMODE_CLEAR;
- GPIO_ResetBits(GPIOC,GPIO_Pin_11);
- if ( (ucData & 0x80) == 0 )
- {
- //P2WPin_LOW(PIN_LCD_SDA);
- //LCD_SDA_OUTMODE_CLEAR;
- GPIO_ResetBits(GPIOC,GPIO_Pin_12);
- }
- else
- {
- //P2WPin_HIGH(PIN_LCD_SDA);
- //LCD_SDA_OUTMODE_SET;
- GPIO_SetBits(GPIOC,GPIO_Pin_12);
- }
- ucData = ucData << 1;
- //P2WPin_HIGH(PIN_LCD_SCL);
- //LCD_SCL_OUTMODE_SET;
- GPIO_SetBits(GPIOC,GPIO_Pin_11);
- }
- //WPin(P2, PIN_LCD_CS0, 1);
- //LCD_CS0_OUTMODE_SET;
- GPIO_SetBits(GPIOC,GPIO_Pin_2);
- //P2WPin_HIGH(PIN_LCD_SDA);
- //LCD_SDA_OUTMODE_SET;
- GPIO_SetBits(GPIOC,GPIO_Pin_12);
- // 开中断
- //IRQEnable();
- //SPI1_CE = 1;
-
- }
-
- /**************************************************************
- 功能 液晶屏写数据函数
- 参数 ucDispDT--数据内容
- 设计 谢红波
- 日期 20080710xiehb
- *************************************************************/
- void _vWriteData_spi()
- {
- u8 i;
- // 关中断
- //IRQDisable();
- //SPI1_CE = 0;
-
- //P2WPin_HIGH(PIN_LCD_SDA);
- //LCD_SDA_OUTMODE_SET;
- GPIO_SetBits(GPIOC,GPIO_Pin_12);
- //WPin(P2, PIN_LCD_CS0, 0);
- //LCD_CS0_OUTMODE_CLEAR;
- GPIO_ResetBits(GPIOC,GPIO_Pin_2);
-
- //P2WPin_HIGH(PIN_LCD_DC);
- //LCD_DC_OUTMODE_SET;
- GPIO_SetBits(GPIOC,GPIO_Pin_10);
- for ( i = 0; i < 8; i++ )
- {
- //P2WPin_LOW(PIN_LCD_SCL);
- //LCD_SCL_OUTMODE_CLEAR;
- GPIO_ResetBits(GPIOC,GPIO_Pin_11);
- if ( (ucDispDT & 0x80) == 0 )
- {
- //P2WPin_LOW(PIN_LCD_SDA);
- //LCD_SDA_OUTMODE_CLEAR;
- GPIO_ResetBits(GPIOC,GPIO_Pin_12);
- }
- else
- {
- //P2WPin_HIGH(PIN_LCD_SDA);
- //LCD_SDA_OUTMODE_SET;
- GPIO_SetBits(GPIOC,GPIO_Pin_12);
- }
- ucDispDT = ucDispDT << 1;
- //P2WPin_HIGH(PIN_LCD_SCL);
- //LCD_SCL_OUTMODE_SET;
- GPIO_SetBits(GPIOC,GPIO_Pin_11);
- }
- //WPin(P2, PIN_LCD_CS0, 1);
- //LCD_CS0_OUTMODE_SET;
- GPIO_SetBits(GPIOC,GPIO_Pin_2);
- //P2WPin_HIGH(PIN_LCD_SDA);
- //LCD_SDA_OUTMODE_SET;
- GPIO_SetBits(GPIOC,GPIO_Pin_12);
-
- // 开中断
- //IRQEnable();
- //SPI1_CE = 1;
- }
-
-
-
- /////////////////////////////////////////////////////////////////////////////////////
- //******************************************************************
- // 名称: void _vDispAddr(uchar ucPage,uchar ucCol)
- // 功能: 设置显示地址
- // 输入: ucPage-页地址;ucCol-列地址
- // 返回值:
- //******************************************************************
- void _vDispAddr(u8 ucPage,u8 ucCol)
- {
- #if 0
- if ( GetMainBoardType () == MAINBOARD_TYPE_GENERAL )
- {
- ucCol += 1;
- }
- #endif
- (*WriteIR)(0xb0+ucPage); // 设置页地址
-
- (*WriteIR)(0x10+(ucCol >> 4));//modify by ljc20071017 // 设置显示开始行高4位
- (*WriteIR)( ucCol & 0x0f);//modify by ljc20071017 // 设置显示开始行低4位
- }
-
- //******************************************************************
- // 名称: void vDispOn()
- // 功能: 打开显示
- // 输入:
- // 返回值:
- //******************************************************************
- void vDispOn(void)
- {
- //have adjust
- (*WriteIR)(0xaf); // 设置打开显示
- }
-
- //******************************************************************
- // 名称: void vDispClear()
- // 功能: 清除整个显示屏
- // 输入:
- // 返回值:
- //******************************************************************
- void vDispClear(void)
- {
- u8 i,j;
-
- //have adjust
- for ( i = 0; i < 8; i++ )
- {
- ucDispDT = 0;
- _vDispAddr(i, 0);
- for ( j = 0; j < 133; j++ )
- {
- // 128
- (*WriteData)();
- }
-
- }
- (*WriteIR)(0xaf); // 打开显示
- (*WriteIR)(0x2f); // Power //20070913heq //20071108heq
-
- }
-
- //******************************************************************
- // 名称: void vDispFull()
- // 功能: 整个显示屏
- // 输入:
- // 返回值:
- //******************************************************************
- void vDispFull ( void )
- {
- u8 i,j;
-
- //have adjust
- for ( i = 0; i < 8; i++ )
- {
- _vDispAddr(i, 0);
- for ( j = 0; j < 133; j++ )
- {
- ucDispDT = 0xFF;
- (*WriteData)();
- }
- }
- (*WriteIR)(0xaf); // 打开显示
- (*WriteIR)(0x2f); // Power //20070913heq //20071108heq
-
- }
-
- //#ifdef SPI_LCD_ENABLE //20110704 liugz
- /********************************************
- SPI屏 初始化
- 20080710xiehb
- *********************************************/
- void vDispInit_spi(u8 mode,u8 contrast)
- {
- if ( mode )
- {
- //LCD_SDA_OUTMODE_SET;
- GPIO_SetBits(GPIOC,GPIO_Pin_12);
- delay_5us(1);
- //LCD_RST_OUTMODE_SET;
- GPIO_SetBits(GPIOC,GPIO_Pin_3);
-
- //LCD_CS0_OUTMODE_CLEAR;
- GPIO_ResetBits(GPIOC,GPIO_Pin_2);
-
- //vDelayMS(5);
- delay_ms(5);
- //LCD_RST_OUTMODE_CLEAR;
- GPIO_ResetBits(GPIOC,GPIO_Pin_3);
-
- //vDelayMS(30);
- delay_ms(30);
- //LCD_RST_OUTMODE_SET;
- GPIO_SetBits(GPIOC,GPIO_Pin_3);
-
- //vDelayMS(19);
- delay_ms(19);
- }
- //LCD_CS0_OUTMODE_CLEAR;
- GPIO_ResetBits(GPIOC,GPIO_Pin_2);
-
- //LCD_SDA_OUTMODE_SET;
- GPIO_SetBits(GPIOC,GPIO_Pin_12);
-
- //LCD_RST_OUTMODE_SET;
- GPIO_SetBits(GPIOC,GPIO_Pin_3);
-
- (*WriteIR)(0xe2);
- delay_ms(10);
- (*WriteIR)(0xa2); /* 1/9bias */
- (*WriteIR)(0xa0); /* ADC select , Normal */
- (*WriteIR)(0xc8); /* Common output reverse */
- (*WriteIR)(0xa6); /* normal display 1=on */
- #if 0
- if ( GetMainBoardType () != MAINBOARD_TYPE_GENERAL )
- {
- (*WriteIR)(0x2C);
- DeyNop(10);
- (*WriteIR)(0x2E);
- DeyNop(10);
- }
- #endif
- (*WriteIR)(0x2F); /* V/C off, V/R off, V/F on */
- //DeyNop(10);
- delay_5us(2);
- (*WriteIR)(0xf8); /* Common output reverse */
- (*WriteIR)(0x01); /* normal display 1=on */
- //(*WriteIR)(0x2F); /* V/C off, V/R off, V/F on */
- (*WriteIR)(0x24); /* internal resistor ratio */
- #if 0
- if ( contrast > MAX_CONTRAST )
- {
- contrast = 0x24;
- }
- if ( contrast < MIN_CONTRAST )
- {
- contrast = 0x24;
- }
- #else
- contrast = 0x27; //24
- #endif
- (*WriteIR)(0x81); /* electronic volume mode set */
- (*WriteIR)(contrast); /*0x31*/
- (*WriteIR)(0xaf); /* display on */
- (*WriteIR)(0x40); /* Start line Set 40-7fh 默认40 */ //20110720 liugz //60
- }
-
- ///20120925 hong 智能识别屏
- void vDispInit( u8 mode,u8 contrast )
- {
- WriteIR = _vWriteIR_spi;
- WriteData = _vWriteData_spi;
- vDispInit_spi(mode,contrast);
- }
-
- #if 1
- /*****************************************************************
- 函数:E_MAINBOARD_TYPE GetMainBoardType ( void )
- 功能:主板类型
- 参数:
- 注意:
- 设计:吴伟聪
- 时间:2014.06.28
- 返回:
- ******************************************************************/
- void SetLcdRow ( u8 * ucRow )
- {
- //if ( GetMainBoardType () != MAINBOARD_TYPE_GENERAL )
- {
- if ( *ucRow < 3 )
- {
- *ucRow += 2;
- }
- else
- {
- *ucRow -= 2;
- }
- }
- }
- #endif
-
- //******************************************************************
- // 名称: void vDispClearLine(uchar ucRow)
- // 功能: 清除LCD屏的一行
- // 输入: ucRow-行号
- // 返回值:
- //******************************************************************
- void vDispClearLine(u8 ucRow)
- {
- u8 i,j;
-
- SetLcdRow(&ucRow);
-
- if ( --ucRow >= 4 )
- {
- return ;
- }
-
- ucRow += ucRow;
- for ( i = 0; i < 2; i++ )
- {
- _vDispAddr(ucRow, 0);
- ucDispDT = 0;
- for ( j = 0; j < 128; j++ )
- {
- (*WriteData)();
- }
- _vDispAddr(ucRow + 1, 0);
- ucDispDT = 0;
- for (j = 0; j < 128; j++)
- {
- (*WriteData)();
- }
- }
- }
-
- void Display_Icon16(u8 ucRow, u8 ucCol, unsigned char *icon)
- {
- u8 pZiMo;
-
- SetLcdRow(&ucRow);
-
- if ( --ucRow >= 4 )
- {
- return ;
- }
- if ( --ucCol > 16 )
- {
- return ;
- }
-
- ucRow += ucRow;
- ucCol <<= 3;
-
- _vDispAddr(ucRow, ucCol);
- ucDispDT = 0x00;
- for ( pZiMo = 0; pZiMo < 8; pZiMo++ )
- {
- if ( icon != 0 )
- {
- ucDispDT = icon[pZiMo];
- }
- (*WriteData)();
- }
-
- _vDispAddr(ucRow+1, ucCol);
- for ( ; pZiMo < 16; pZiMo++ )
- {
- if ( icon != 0 )
- {
- ucDispDT = icon[pZiMo];
- }
- (*WriteData)();
- }
-
- (*WriteIR)(0xaf); // 打开显示//20070913heq
- (*WriteIR)(0x2f); // Power //20070913heq
- }
-
- void Display_Icon(u8 ucRow, u8 ucCol, unsigned char *icon,u8 size)
- {
- u8 pZiMo;
-
- SetLcdRow(&ucRow);
-
- if ( --ucRow >= 4 )
- {
- return ;
- }
- if ( --ucCol >= 16 )
- {
- return ;
- }
-
- ucRow += ucRow;
- ucCol <<= 3;
-
- _vDispAddr(ucRow, ucCol);
- ucDispDT = 0x00;
- //for ( pZiMo = 0; pZiMo < 16; pZiMo++ )
- for ( pZiMo = 0; pZiMo < size; pZiMo++ )
- {
- if ( icon != 0 )
- {
- ucDispDT = icon[pZiMo];
- }
- (*WriteData)();
- }
-
- _vDispAddr(ucRow + 1, ucCol);
- //for ( ; pZiMo < 32; pZiMo++ )
- for ( ; pZiMo < (2*size); pZiMo++ )
- {
- if ( icon != 0 )
- {
- ucDispDT = icon[pZiMo];
- }
- (*WriteData)();
- }
-
- (*WriteIR)(0xaf); // 打开显示//20070913heq
- (*WriteIR)(0x2f); // Power //20070913heq
- }
-
- #if 0
- ///AntiColor = 1 反式显示
- ///AntiColor = 0 正常显示
- void vDispStr_light(u8 ucRow, u8 ucCol, char *szData, u8 AntiColor)
- {
- u8 ZiMo[32], pZiMo;
- u8 ucDispT1, ucDispT2, ucDispT4;
- u32 uiDispT;
- u32 uiDispT1;
-
- //SetMayWatchDog();
- IWDG_Feed();
-
- //SetLcdRow(&ucRow);
-
- if ( --ucRow >= 4 )
- {
- return ;
- }
- if ( --ucCol >= 16 )
- {
- return ;
- }
-
- ucRow += ucRow;
- ucCol <<= 3; // *8
- while ( (*szData != 0) && (ucCol < 128) )
- {
- ucDispT1 = *szData;
- szData++;
- if ( ucDispT1 == 0xff )
- {
- return ;
- }
-
- //没有0XFF开始的汉字
- if ( ucDispT1 < 0x80 )
- {
- //ASC
- uiDispT = ucDispT1 << 4;
- //uiDispT <<= 4;
- pZiMo = 0;
- vI2cRead(vI2cHzkGetStart( uiDispT + 222080l),16,(char *)ZiMo);
-
- _vDispAddr(ucRow, ucCol);
- if ( AntiColor )
- {
- for ( ucDispT4 = 0; ucDispT4 < 8; ucDispT4++ )
- {
- ucDispDT = ZiMo[pZiMo++] ^ 0xFF;
- (*WriteData)();
- }
-
- _vDispAddr(ucRow + 1, ucCol);
- for ( ucDispT4 = 8; ucDispT4 < 16; ucDispT4++ )
- {
- ucDispDT = ZiMo[pZiMo++] ^ 0xFF;
- (*WriteData)();
- }
- }
- else
- {
- for ( ucDispT4 = 0; ucDispT4 < 8; ucDispT4++ )
- {
- ucDispDT = ZiMo[pZiMo++];
- (*WriteData)();
- }
-
- _vDispAddr(ucRow + 1, ucCol);
- for ( ucDispT4 = 8; ucDispT4 < 16; ucDispT4++ )
- {
- ucDispDT = ZiMo[pZiMo++];
- (*WriteData)();
- }
- }
- ucCol += 8;
- }
- else
- {
- ucDispT2 = *szData;
- szData++;
- if ( ucCol > 112 )
- {
- break;
- }
- if ( ucDispT1 >= 0xB0 )
- {
- //B0A1~F7FF
- ucDispT1 -= 0xAE;
- }
- else if ( ucDispT1 == 0xA1 )
- {
- //A1A1~A1FF
- ucDispT1 = 0;
- }
- else if ( ucDispT1 == 0xA3 )
- {
- //A3A1~A3FF
- ucDispT1 = 1;
- }
- else
- {
- continue;
- }
- ucDispT2 -= 0xA1;
-
- ucDispT1 <<= 1; //*2; 47
- uiDispT = ucDispT1 << 4;
- uiDispT1 = uiDispT;
- uiDispT <<= 1;
- uiDispT += uiDispT1;
- uiDispT -= ucDispT1;
- uiDispT += ucDispT2;
- pZiMo = 0;
- vI2cRead(vI2cHzkGetStart(uiDispT<<5),32,(char *)ZiMo);
-
- _vDispAddr(ucRow, ucCol);
- if ( AntiColor )
- {
- for ( ucDispT4 = 0; ucDispT4 < 8; ucDispT4++ )
- {
- ucDispDT = ZiMo[pZiMo++] ^ 0xFF;
- (*WriteData)();
- }
- }
- else
- {
- for ( ucDispT4 = 0; ucDispT4 < 8; ucDispT4++ )
- {
- ucDispDT = ZiMo[pZiMo++];
- (*WriteData)();
- }
- }
- if ( ucCol < 56 )
- {
- if ( AntiColor )
- {
- for ( ucDispT4 = 8; ucDispT4 < 16; ucDispT4++ )
- {
- ucDispDT = ZiMo[pZiMo++] ^ 0xFF;
- (*WriteData)();
- }
- }
- else
- {
- for ( ucDispT4 = 8; ucDispT4 < 16; ucDispT4++ )
- {
- ucDispDT = ZiMo[pZiMo++];
- (*WriteData)();
- }
- }
- }
- else
- {
- if ( ucCol == 56 )
- {
- _vDispAddr(ucRow, 64);
- }
- if ( AntiColor )
- {
- for ( ucDispT4 = 8; ucDispT4 < 16; ucDispT4++ )
- {
- ucDispDT = ZiMo[pZiMo++] ^ 0xFF;
- (*WriteData)();
- }
- }
- else
- {
- for ( ucDispT4 = 8; ucDispT4 < 16; ucDispT4++ )
- {
- ucDispDT = ZiMo[pZiMo++];
- (*WriteData)();
- }
- }
- }
- _vDispAddr(ucRow + 1, ucCol);
- if ( AntiColor )
- {
- for ( ucDispT4 = 16; ucDispT4 < 24; ucDispT4++ )
- {
- ucDispDT = ZiMo[pZiMo++] ^ 0xFF;
- (*WriteData)();
- }
- }
- else
- {
- for ( ucDispT4 = 16; ucDispT4 < 24; ucDispT4++ )
- {
- ucDispDT = ZiMo[pZiMo++];
- (*WriteData)();
- }
- }
- if ( ucCol < 56 )
- {
- if ( AntiColor )
- {
- for ( ucDispT4 = 24; ucDispT4 < 32; ucDispT4++ )
- {
- ucDispDT = ZiMo[pZiMo++] ^ 0xFF;
- (*WriteData)();
- }
- }
- else
- {
- for ( ucDispT4 = 24; ucDispT4 < 32; ucDispT4++ )
- {
- ucDispDT = ZiMo[pZiMo++];
- (*WriteData)();
- }
- }
- }
- else
- {
- if ( ucCol == 56 )
- {
- _vDispAddr(ucRow + 1, 64);
- }
- if ( AntiColor )
- {
- for ( ucDispT4 = 24; ucDispT4 < 32; ucDispT4++ )
- {
- //vI2cGetHzk();
- ucDispDT = ZiMo[pZiMo++] ^ 0xFF;
- (*WriteData)();
- }
- }
- else
- {
- for ( ucDispT4 = 24; ucDispT4 < 32; ucDispT4++ )
- {
- //vI2cGetHzk();
- ucDispDT = ZiMo[pZiMo++];
- (*WriteData)();
- }
- }
- }
- ucCol += 16;
- }
- }
- (*WriteIR)(0xaf); // 打开显示//20070913heq //20071108heq
- (*WriteIR)(0x2f); // Power //20070913heq //20071108heq
- }
-
- void vDispStr(u8 ucRow, u8 ucCol, char *szData)
- {
- vDispStr_light(ucRow,ucCol,szData,0);
- }
- #else
- void vDispStr(u8 ucRow, u8 ucCol, char *szData,unsigned char datalen)
- {
- u16 i;
- u16 temHz;
- u8 buf[16];
- if(datalen<=0)
- {
- return ;
- }
- for(i=0;i<datalen;)
- {
- temHz = *(szData+i);
- i +=1;
- Get_8x16_Font(temHz,buf);
- Display_Icon(ucRow,ucCol,buf,8);
- ucCol += 1;
- }
-
- }
-
-
- #endif
|