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

📄 display1.c

📁 MIPS的液晶显示原码,运行在ECLIPSE上,已通过测试.
💻 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(&params);
  	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(&params1);     
    //===============================
    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 + -