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

📄 lpc_lib_88.c

📁 使用embest IDE开发工具开发的基于LPC2294 的触摸屏开发
💻 C
字号:


/*
***********************************************************************

       Embest Info&Tech Co., Ltd.  All rights reserved.
                     www.embedinfo.com

***********************************************************************

---------------- file information -------------------------------------

file name: 88_test.c
version  : v0
author   : peter pan / panqan@hotmail.com
begin    : 2006-02-10
finish   : 2006-02-10
define   : 88 test file

notes    :

---------------- modify information -----------------------------------
version  :
modify   :
begin    :
finish   :
define   :
-----------------------------------------------------------------------
*/


// (--------------------- compiler condition --------------------------

/*
#ifdef  xxx
        #define  xxx
#endif
*/

// --------------------- compiler condition --------------------------)



/*-------------------------------------------------------------------*/
/*                       include files                               */
/*---------------------------------------------------------------- --*/

#include    "..\..\com\lpc_lib_88\lpc_lib_88.h"


/*-------------------------------------------------------------------*/
/*                       local function declare                      */
/*-------------------------------------------------------------------*/

/*
void    xxx(xxx xxx, xxx xxx);
*/


/*-------------------------------------------------------------------*/
/*                       variable define                             */
/*-------------------------------------------------------------------*/

static INT32U display_88_data=0;


extern	void irq_timer0(void);




/*-------------------------------------------------------------------*/
/*                       extern function declare                     */
/*-------------------------------------------------------------------*/

/*--- define in XXX.c ---
extern  void    XXX();
*/


/*-------------------------------------------------------------------*/
/*                       extern variable declare                     */
/*-------------------------------------------------------------------*/

/*--- USED in XXX() ---
XXX SSS; // used inXXX()
*/



/*-------------------------------------------------------------------*/
/*                       function code                               */
/*-------------------------------------------------------------------*/




void  display_88(INT32U data_88)
{	
	display_88_data=data_88;			
}

void display_88_init(void)
{
	
	timer_init(0,1,0);
	
	VICVectCntl3 = 0x24;
	VICVectAddr3 = (INT32U)irq_timer0;
	VICIntEnable = 0x00000010;
}

void timer_init(INT8U which_timer,INT32U mstime,INT8U int_onoff)
{
	INT32U i;
	i=PCLKF*mstime/((TIMERPR+1)*1000);
	
	if(which_timer==0)
	{
		TIMER0_PR=TIMERPR;
			if(int_onoff!=0)
				TIMER0_MCR=0x02;
			else
				TIMER0_MCR=0x03;
		TIMER0_MR0=i;
		TIMER0_TCR = 0x03;
		TIMER0_TCR = 0x01;
	}
	else
	{
		TIMER1_PR=TIMERPR;
			if(int_onoff!=0)
				TIMER1_MCR=0x02;
			else
				TIMER1_MCR=0x03;
		TIMER1_MR0=i;
		TIMER1_TCR = 0x03;
		TIMER1_TCR = 0x01;		
	}
}	

void display_88_close(void)
{
	timer_init(0,0,1);
	spi_data_send(0, 0);
   	spi_data_send(0, 0);

           //latch 88
    display88_latch(1);
           //EN 88
    display88_outputen(1);
	
}	


void dis88_timer0_svr(void)
{        
      INT32U data_bit;
      INT32U data_bit_d;
      INT32U data_bit_value=0;
      INT32U data_bit_value_d;
      INT32U data_divisor=1;
      INT32U data_10_n;	  
      
      for (data_bit=1;data_bit<9;data_bit++)
          {
           switch(data_bit)
                 {
                  case 1:
                          data_10_n    = 10;
                          data_divisor = 1;
                          data_bit_d = 0xEF; //b11101111
                          break;
                  case 2:
                          data_10_n    = 100;
                          data_divisor = 10;
                          data_bit_d = 0xDF; //b11011111
                          break;
                  case 3:
                          data_10_n    = 1000;
                          data_divisor = 100;
                          data_bit_d = 0xBF; //b10111111
                          break;
                  case 4:
                          data_10_n    = 10000;
                          data_divisor = 1000;
                          data_bit_d = 0x7F; //B01111111
                          break;
                  case 5:
                          data_10_n    = 100000;
                          data_divisor = 10000;
                          data_bit_d = 0xFE; //b11111110
                          break;
                  case 6:
                          data_10_n    = 1000000;
                          data_divisor = 100000;
                          data_bit_d = 0xFD; //b11111101
                          break;
                  case 7:
                          data_10_n    = 10000000;
                          data_divisor = 1000000;
                          data_bit_d = 0xFB; //b11111011
                          break;
                  case 8:
                          data_10_n    = 100000000;
                          data_divisor = 10000000;
                          data_bit_d = 0xF7; //b11110111
                          break;
                  default:
                          break;
                 }

           data_bit_value = (display_88_data % data_10_n) / data_divisor;
           
           switch(data_bit_value)
                 {
                  case 0:
                          data_bit_value_d = D88_0;
                          break;
                  case 1:
                          data_bit_value_d = D88_1;
                          break;
                  case 2:
                          data_bit_value_d = D88_2;
                          break;
                  case 3:
                          data_bit_value_d = D88_3;
                          break;
                  case 4:
                          data_bit_value_d = D88_4;
                          break;
                  case 5:
                          data_bit_value_d = D88_5;
                          break;
                  case 6:
                          data_bit_value_d = D88_6;
                          break;
                  case 7:
                          data_bit_value_d = D88_7;
                          break;
                  case 8:
                          data_bit_value_d = D88_8;
                          break;
                  case 9:
                          data_bit_value_d = D88_9;
                          break;
                  default:

                          break;
                 }

           //send the data to 88 bit?/enbit?
           spi_data_send(0, data_bit_d);
           spi_data_send(0, data_bit_value_d);

           //latch 88
           display88_latch(1);
           //EN 88
           display88_outputen(1);
          }
	//set all off
    //send the data to 88 bit?/enbit?
    spi_data_send(0, 0);
	spi_data_send(0, 0);

   	//latch 88
   	display88_latch(1);
    //EN 88
    display88_outputen(1);	

	TIMER0_IR =TIMER0_IR;
    VICVectAddr = 0x00;
     
}








⌨️ 快捷键说明

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