📄 display1.c
字号:
/*============================================================================
*
* display1.c
*
*
*
*==========================================================================*/
/*============================================================================
*
* Copyright (c) 2002-2006 Innova Card.
* All Rights Reserved.
*
* This software is the confidential and proprietary information of
* Innova Card ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only in
* accordance with the terms of the license agreement you entered
* into with Innova Card.
*
* Innova Card makes no representations or warranties about the suitability of
* the software, either express or implied, including but not limited to
* the implied warranties of merchantability, fitness for a particular purpose,
* or non-infrigement. Innova Card shall not be liable for any damages suffered
* by licensee as the result of using, modifying or distributing this software
* or its derivatives.
*
*==========================================================================*/
/*============================================================================
*
* Author(s): Innova Card
* Contributors:
* Date:
* Purpose:
* Description: This file containts an example of LCD application.
*
*==========================================================================*/
#include <io/lcd_io.h>
#include <hal/usip/hal_gpio.h>
#include <hal/usip/hal_sys.h>
#include <hal/usip/hal_io.h>
#include <hal/usip/hal_display.h>
//==define LCD module Command========
#define display_on 0xaf
#define display_off 0xae
#define initial_line 0x40
#define set_page_adr 0xb0
#define col_adr_msb 0x10
#define col_adr_lsb 0x00
#define adc 0xa0
#define reverse_normal 0xa6
#define reverse_rev 0xa7
#define lcd_bias 0xa0
#define set_modify_read 0xe0
#define shl 0xc8
#define power_control 0x2f
#define reference_volt_mode 0x81
#define reference_volt_register 0x3f
#define indicator_mode 0xa6
#define regulator_resistor 0x26
//====================================
static int s6b0724_write_command( unsigned char cmd );
static int s6b0724_write_data( unsigned char data );
void display_hz(unsigned char x_adr,unsigned char y_adr,unsigned char *hz_adr);
unsigned char xin[32]={0x80,0x40,0x30,0xFC,0x07,0x0A,0xA8,0xA8,0xA9,0xAE,0xAA,0xA8,0xA8,0x08,0x08,0x00, 0x00,0x00,0x00,0x7F,0x00,0x00,0x7E,0x22,0x22,0x22,0x22,0x22,0x7E,0x00,0x00,0x00};
int main( void )
{
int result,i;
HAL_GPIO_CONFIG params;
params.size = HAL_GPIO_SIZE_32 ;
params.direction = 0x00000006;
result=hal_gpio_init(¶ms);
result=hal_gpio_write(0x02); //reset LCD
for(i=0;i<1000;i++) ;
result=hal_gpio_write(0x00);
for(i=0;i<1000;i++) ;
result=hal_gpio_write(0x02);
for(i=0;i<1000;i++) ;
// lcd_init("/dev/t6963c", &handle);
/* Print a message */
//lcd_puts(handle, "Hello !");
//==mcu lcd interface initial====
HAL_DISPLAY_CONFIG params1;
params1.mode = HAL_DISPLAY_MODE_AUTO | HAL_DISPLAY_MODE_E_HIGH;
params1.buswidth = HAL_DISPLAY_BUS_WIDTH_8;
params1.period = 450;
hal_display_init(¶ms1);
//===============================
result=s6b0724_write_command(lcd_bias); //bias
result=s6b0724_write_command(adc); //adc
result=s6b0724_write_command(shl); //shl
for(i=0;i<2000;i++) ; //delay 2ms
result=s6b0724_write_command(power_control); //power control
for(i=0;i<2000;i++) ; //delay 2ms
result=s6b0724_write_command(regulator_resistor); //regulator resistor select
for(i=0;i<2000;i++) ; //delay 2ms
result=s6b0724_write_command(reference_volt_mode); //reference voltage mode
result=s6b0724_write_command(reference_volt_register); //reference voltage register
result=s6b0724_write_command(initial_line); //begining line
result=s6b0724_write_command(set_modify_read); //column addres atuo +1
result=s6b0724_write_command(display_on);
display_hz(0,0,&xin[0]);
while(1);
return 0;
}
static int s6b0724_write_data( unsigned char data )
{
int result;
int status;
result=hal_gpio_write(0x02); //cs=0
hal_display_ioctl(HAL_DISPLAY_IOCTL_SET_RW, 0); //rw=0,write
hal_display_ioctl(HAL_DISPLAY_IOCTL_SET_CD, (void *)1); //rs=1,data
result = hal_display_write(data);
do
{
hal_display_get_status(&status);
} while( (status & HAL_DISPLAY_STATUS_TX_DONE) == 0 );
//result=hal_gpio_write(0x05); //cs=1
return result;
}
static int s6b0724_write_command( unsigned char cmd )
{
int result;
int status;
result=hal_gpio_write(0x02); //cs=0
hal_display_ioctl(HAL_DISPLAY_IOCTL_SET_RW, 0); //rw=0,write
hal_display_ioctl(HAL_DISPLAY_IOCTL_SET_CD, 0); //rs=0,command
result = hal_display_write(cmd);
do
{
hal_display_get_status(&status);
} while( (status & HAL_DISPLAY_STATUS_TX_DONE) == 0 );
//result=hal_gpio_write(0x05); //cs=1
return result;
}
void display_hz(unsigned char x_adr,unsigned char y_adr,unsigned char *hz_adr)
{
unsigned char i,j,column_msb,column_lsb,page_adr;
int result;
page_adr=((x_adr*2)+0xb0);
column_msb=y_adr>>4;
column_msb=column_msb|0xf0;
column_msb=column_msb&0x1f;
column_lsb=y_adr&0x0f;
result=s6b0724_write_command(column_msb);
result=s6b0724_write_command(column_lsb);
result=s6b0724_write_command(page_adr);
for(i=0;i<32;i++)
{
if(i==16)
{
result=s6b0724_write_command(page_adr+1);
result=s6b0724_write_command(column_msb);
result=s6b0724_write_command(column_lsb);
}
j=*hz_adr;
hz_adr++;
s6b0724_write_data(j);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -