亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? disp.c

?? 一款收款機C源代碼!因為是幾年前的代碼了
?? C
字號:
#include "ecrsys.h"
#include "data.h"
#include "sysdata.h"
#include "lcd.h"
#include "vfd.h"
#include "vfd_new.h"
#include "disp.h"
#include <string.h>

bool IsVfd(void);

CHR  dsp_piriod[MAX_DISP_NUM];
const char Bit_Point[8] = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 };
/*---------------------------------------------------------------
*  Period Get,
*  According to the dsp_piriod[0][1] to get the POINT position
*     
*  03-9-8 21:02
*--------------------------------------------------------------*/
CHR   period_get( CHR idx )
{
   char ret;
   
//    #ifdef NEW_VFD
//    idx = MAX_DISP_NUM - idx -1;
//    #endif
   if ( idx < 8 )
   {
      if (dsp_piriod[0] & Bit_Point[idx])
         ret = TRUE;
      else
         ret = FALSE;
   }
   else
   {
      if ( dsp_piriod[1] & Bit_Point[idx-8])
         ret = TRUE;
      else
         ret = FALSE;
   }
   return(ret);
}
/************************************************************************************************
*  Insert One Character to the charged position 
*  Input : dsp_char  - the Character need to Insert.
*        : posi      - the position of the character need to insert.
*
*	Modified on 2004-04-13 9:31
************************************************************************************************/
void  Insert_Char(CHR dsp_char,CHR posi)
{
   CHR   jj;
   
    if(posi >= MAX_DISP_NUM)
   	return;
   jj = period_get(posi);

    #ifdef LCD_DISP
        LCD_DispChar(posi, dsp_char, jj);
    #endif
    #ifdef VFD_DISP
        Vfd_DispChar(posi, dsp_char, jj);
    #endif
}

/*------------------------------------------------------------------------------------------
*  Insert a Numberic on LCD display.
*  Input :  CHR   dsp_data -- the data need display.
*        :  CHR   posi     -- position need display.
*  03-9-8 20:59
*
*	Modified on 2004-04-13 9:29
*------------------------------------------------------------------------------------------*/
void  Insert_Num(CHR dsp_data,CHR posi)
{
   CHR   jj;
   
    if(posi >= MAX_DISP_NUM)
   	return;
   jj = period_get(posi);

    #ifdef LCD_DISP
        LCD_DispChar(posi, dsp_data, jj);
    #endif
    
    #ifdef VFD_DISP
        Vfd_DispChar(posi, dsp_data, jj);
    #endif

}


/*--------------------------------------------------------------------------------*
 *                Insert a sect to the LCD display.
 *--------------------------------------------------------------------------------*/
void Insert_Sect(CHR dsp_data,CHR posi)
{
    CHR   jj;
    if(posi >= MAX_DISP_NUM)
     return;
    jj = period_get(posi);

    #ifdef LCD_DISP
        LCD_Insert_Sect(dsp_data, posi, jj);
    #endif

}


// Insert a string number to LCD display,
// 03-4-1 18:54   by ZhengXC     
void disp_Num_Str(CHR *ptr,CHR posi)
{
    for ( ;  posi < MAX_DISP_NUM ; posi ++ )
    {
   	    if((*ptr >= '0') && (*ptr <= '9'))
   		    Insert_Num((*ptr ++) - 0x30, posi);
   	    else
   		    Insert_Char(*ptr ++, posi);
    }
}
//Insert a string to LCD display
// 03-4-1 15:46   
void disp_Char_Str( CHR* str,CHR posi )
{
   CHR   tmp;
   
    for ( ;(( posi < MAX_DISP_NUM) && (*str != 0)); posi ++ )
   {
      tmp = *str ++;
      if((tmp >= '0') && (tmp <= '9'))
      	Insert_Num(tmp - '0', posi);
      else
      	Insert_Char(tmp, posi);
   }
}
/***************************************************************************************
*  Insert one byte to the LCD
*  In:    the first position
*      the Data need insert;
***************************************************************************************/
void  Insert_Byte(CHR dsp_Byte, CHR posi)
{
   CHR tmp;
   Insert_Num(dsp_Byte >> 4,posi);
   Insert_Num(dsp_Byte&0x0f,posi+1);
}

/*----------------------------------------------------------------------------------------
*  void  LCD_Back(CHAR flag);
*  In:   On / Off the LCD backlight.
*  03-4-2 11:23   by ZhengXC
*---------------------------------------------------------------------------------------*/
void  Disp_Back(CHR flag)
{
    #ifdef LCD_DISP
    LCD_Back(flag);
    #endif
}


/*------------------------------------------------------------------------------------*
 *    Set the LCD backlight base on the flag.
 *------------------------------------------------------------------------------------*/
void LCD_Back_Set(void)
{
    #ifdef LCD_DISP
   if(sysflag->BackLight==1)
   {
      LCD_Back(ON);
   	g_LCDBLCnt = sysflag->LCD_BL_Time;
   }
   else
   {
      LCD_Back(OFF);
      g_LCDBLCnt = 0;
   }
    #endif
}

/*----------------------------------------------------------------------------------------
*  void  Clr_Dsp_Data(void);
*  In:      None
*  Out:  None
*  Clear the Display data.
*---------------------------------------------------------------------------------------*/
void Clr_Dsp_Data(void)
{
   CHR tmp;
    #ifdef  LCD_DISP
        Reset_LCD();
    #endif
   for ( tmp = 0; tmp < MAX_LCD_NUM; tmp ++ )
      Insert_Char(' ',tmp);
}

/*----------------------------------------------------------------------------------------
*   Initialize the LCD controller and clear the display
*---------------------------------------------------------------------------------------*/
void Init_Disp(void)
{
    #ifdef LCD_DISP
    Lcd_Init();
    #endif
    #ifdef VFD_DISP
    Vfd_Init();
    #endif
}
void LCD_Test(void)
{
   WORD  tmp;
   CHR   cntr;

   cntr = 0;
   
   Clr_Dsp_Data();
   disp_Char_Str("ABCDEFGHIJKLM",0);

   for ( tmp = 0; tmp < 0xff; tmp ++ )
      for ( cntr = 0; cntr < 0xff; cntr ++ );
   
}

void  Init_Lcd(void)
{
    #ifdef VFD_DISP
  	    Vfd_Init();
    #endif
    #ifdef LCD_DISP
        LCD_Init();
    #endif
}
/*----------------------------------------------------------------------------*
*  Insert the period to the LCD.   
*  Note: In this function, the radix point only display one times, 
*		and will display the radix point immediately              
*----------------------------------------------------------------------------*/
void Insert_Period(byte posi)
{
    if(posi >= MAX_DISP_NUM)
   	    return;
    
    #ifdef LCD_DISP
    LCD_InsPeriod(posi);
    #endif
    #ifdef VFD_DISP
    Vfd_InsPeriod(posi);
    #endif
}
/*----------------------------------------------------------------------------*
*   Cancel the period displayed in the LCD   
*  Note: This function will clear the radix point dispaly immediately             
*----------------------------------------------------------------------------*/
void Cancel_Period(byte posi)
{
    #ifdef  LCD_DISP
    LCD_ClrPeriod(posi);
    #endif
    #ifdef VFD_DISP
    Vfd_ClrPeriod(posi);
    #endif
}


/*-------------------------------------------------------------------*
 *					Clear the period array, When next display,
 *				will not display the period in the LCD.
 *-------------------------------------------------------------------*/
void Clr_Period(void)
{
	dsp_piriod[0] = 0;
	dsp_piriod[1] = 0;
}


//////////////////////////////////////////////////////////////////////////////
/// 			The display library funcitons, add after 2004-12-09 by JWM
//////////////////////////////////////////////////////////////////////////////

/* Set the default display */
void	Set_Dft_Dsp(void)
{
	Clr_Dsp_Data();
	RightDisp(0, sysflag->sysdots);
}

/* The specify display, only contains left align format */
void	Spec_Disp(dword dsp_data, char len, byte posi)
{
	posi += len - 1;
	while(len --)
	{
		Insert_Num(dsp_data%10, posi --);
		dsp_data /= 10;
	}
}

/*---------------------------------------------------------------------------*
 *          Display the long number in the right position.                   *
 *          num   :  the long number, it can negative.                       *
 *          dots  :  the position of the radix point.                        *
 *---------------------------------------------------------------------------*/
void RightDisp(long num ,char dots)
{
	byte tmp[MAX_LENGTH_15+1];
	byte len;
    
    {//TFT display
	if (num == 0 && dots == sysflag->sysdots)
		Lcd_Tl_Input_Disp(TL_INPUT_CLEAR, 0);
    }

    //LCD / VFD display
	tmp[MAX_LENGTH_15] = 0;
	len = LongAndDot2Str(num, dots, tmp, 0, 0, 0, 0);

	VFDDisplay(tmp+MAX_LENGTH_15-len, NOTCLEARD, RIGHT);

   if(dots > 0)
   {
   	    Insert_Period(MAX_LCD_NUM - dots - 1);			/* Display the dots only once */
   }
}

void	disp_long(DWORD data)
{
	char i;
	
	Clr_Dsp_Data();
	Insert_Byte((CHR)data,8);
	data >>= 8;
	Insert_Byte((CHR)data,6);
	data >>= 8;
	Insert_Byte((CHR)data,4);
	data >>= 8;
	Insert_Byte((CHR)data,2);
	bellcnt = 0xfe;		
	GetKey();
}

/*-------------------------------------------------------------------------------------------------------------*
 *                                                                           												*
 *                   Set the period position:                                												*
 *          position    :  1~16                                              												*
 *          clear       :  CLR      ---clear.                                												*
 *                         SET      ---set.                                  												*
 *                                                                           												*
 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *
 *    posi:       0  |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  A  |  B  |  C  |  D  |  E  |  F  *
 *bit(dsp_piriod):b0 |  b1 |  b2 |  b3 |  b4 |  b5 |  b6 |  b7 |  b8 |  b9 |  b8 |  b8 |  b8 |  b8 |  b8 |  b8 *
 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *
 *                                                                                                             *
 *-------------------------------------------------------------------------------------------------------------*/
void VFDSetPeriod(byte position,byte flag)
/* Note: When used this function, it will display the radix point to the LCD immediately */
{
   if(position > MAX_LCD_NUM-1)
        return;
//#ifdef NEW_VFD
//   position = MAX_DISP_NUM - position -1;
//#endif
   if(flag == CLR)				/* Clear flag */
   {
      if(position < 8)
         dsp_piriod[0] &= (~Bit_Point[position]);
      else
         dsp_piriod[1] &= (~Bit_Point[position-8]);
      Cancel_Period(position);
   }
   else if(flag == SET)			/* Set flag */
   {
      if(position < 8)
         dsp_piriod[0] |= (Bit_Point[position]);
      else
         dsp_piriod[1] |= (Bit_Point[position-8]);
      Insert_Period(position);
   }
   else return;
}


/*----------------------------------------------------------------------------
* Display a character string.
*  
*  IN:      *str     --- > string need display.
*           clear    --- > Flag for clear the current display on LCD or not
*           LeftRight--- > Null flag, will be delete later.
*  03-8-13 10:28  by X.C.Zheng 
*
*	Modified on 2004-04-13 9:22
-----------------------------------------------------------------------------*/
void VFDDisplay(char *str, char clear,byte LeftRight)
{
   int	i;
   char	cch0, len;
   char 	posi;

	if(LeftRight > 2)
		return;

   len = strlen(str);
   if(len > MAX_LCD_NUM )
   	len = MAX_LCD_NUM;
   if( LeftRight == RIGHT )		/* The right position, adjust */
      posi = MAX_LCD_NUM - len;
   else if(LeftRight == ALIGN_MID)
      posi = (MAX_LCD_NUM - len)/2;
   else
        posi = 0;

    if(clear == CLEARD)				/* Clear the previous display */
   	    Clr_Dsp_Data();
    for( i = 0; i < len; i++ )
    {
   	    if(posi >= MAX_LCD_NUM)		/* Out of range, no need to display the remainder data */
   		    break;
   	    cch0 = str[i];
   	    if((cch0 >= '0') && (cch0 <= '9'))
   		    Insert_Num(cch0 - '0', posi ++);
   	    else
   		    Insert_Char(cch0, posi ++);
    }
}

#if 0//check LCD or VFD, 現在不用檢測, 但是保留以前的程序. 
//如果需要檢測跳線來檢測顯示屏的類型, 再開放這一段程序, 
//同時要修改LCD_DISP/VFD_DISP 的宏定義方式.
///////////////////////////////////////////////////////////////////////////////
// Description: Check whether VFD display
// In Param:	void
// Out Param:	void
// Return:		TRUE / FALSE
///////////////////////////////////////////////////////////////////////////////
bool IsVfd(void)
{
	return true;
}


///////////////////////////////////////////////////////////////////////////////
// Description:Read Jump set from mainboard.
// In Param:	void
// Out Param:	void
// Return:		TRUE -- VFD / FALSE -- LCD
///////////////////////////////////////////////////////////////////////////////
byte Vfd_ReadJumper(void)
{
	byte i;
	
	pur3 = 0xff;
	for (i=0; i<5; i++);
	
#if	COUNTRY == AMERICA
	if ((Sw_Read() & 0x01) == 0x01)					// tie to GND --- LCD
	{
		vfd_lcd_Disp = LCD_DISP;
	}
	else
	{
		vfd_lcd_Disp = VFD_DISP;
	}
#else
	if ((Sw_Read() & 0x01) == 0x01)					// short with GND --- LCD
	{
		vfd_lcd_Disp = VFD_DISP;
	}
	else
	{
		vfd_lcd_Disp = LCD_DISP;
	}
#endif

	return IsVfd();
}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产综合久久| 欧美成人a在线| 欧美激情综合在线| 国产 欧美在线| 中文一区二区完整视频在线观看| 日韩欧美黄色影院| 国产成人丝袜美腿| 一区二区国产盗摄色噜噜| 欧美午夜精品久久久| 日本不卡一二三区黄网| 一区二区在线免费观看| 欧美精品少妇一区二区三区| 极品少妇xxxx精品少妇偷拍| 国产精品成人免费在线| 欧美精品在线视频| 日韩欧美一二三四区| 精品少妇一区二区三区在线视频| 精品国内片67194| 欧美在线观看18| 国产91精品一区二区麻豆亚洲| 国产成人av影院| 97精品国产露脸对白| 捆绑变态av一区二区三区| 亚洲美女偷拍久久| 国产亚洲综合在线| 欧美三级中文字| 99久久综合色| 国产精品亚洲视频| 精品写真视频在线观看| 成人在线一区二区三区| 国产成人av网站| 91国产成人在线| 91在线观看美女| 成人高清av在线| 成人毛片在线观看| 欧美日韩免费不卡视频一区二区三区| 日韩欧美国产一区在线观看| 国产欧美一二三区| 国产欧美日韩在线看| 亚洲综合精品久久| 一区二区三区精品视频在线| 久国产精品韩国三级视频| 99久久精品国产一区二区三区| 欧美日韩美少妇| 国产精品成人免费| 免费在线观看成人| 欧美性生活影院| 中文字幕成人网| 美女视频第一区二区三区免费观看网站 | 日韩欧美中文一区| 日韩一区二区三区免费看| 国产精品久久二区二区| 麻豆国产欧美一区二区三区| 色www精品视频在线观看| 精品国产凹凸成av人导航| 亚洲精品午夜久久久| 国产福利精品一区二区| 日韩精品在线一区二区| 天堂蜜桃一区二区三区 | 精品国产一区二区三区久久久蜜月| 亚洲另类在线视频| 成人午夜av在线| 久久夜色精品一区| 自拍视频在线观看一区二区| 亚洲超碰97人人做人人爱| 天堂va蜜桃一区二区三区漫画版| 99国产欧美另类久久久精品| 久久久久久久久久久久久久久99 | 天天操天天干天天综合网| 无码av免费一区二区三区试看 | 欧美成人vps| 久久精品久久久精品美女| 欧美人xxxx| 秋霞电影网一区二区| 欧美精品免费视频| 午夜精品久久久久久久久| 欧美日韩一区成人| 偷拍一区二区三区四区| 欧美精品日韩一区| 青娱乐精品视频| 精品国产91亚洲一区二区三区婷婷| 亚洲h精品动漫在线观看| 337p亚洲精品色噜噜噜| 国产婷婷精品av在线| 国产99久久久国产精品免费看 | 欧美色视频在线观看| 亚洲国产日韩综合久久精品| 国产一区亚洲一区| 在线欧美日韩国产| 日韩国产精品久久| 91蝌蚪国产九色| 亚洲一线二线三线久久久| 欧美日本韩国一区二区三区视频 | 色香色香欲天天天影视综合网| 欧美丰满嫩嫩电影| 蜜臂av日日欢夜夜爽一区| 欧美成人官网二区| 国产999精品久久久久久绿帽| 亚洲视频狠狠干| 欧美日韩aaa| 国产成人av资源| 亚洲18色成人| 337p日本欧洲亚洲大胆精品| 91麻豆免费看片| 天堂影院一区二区| 欧美国产一区在线| 欧美日韩一区二区三区免费看| 国产一区激情在线| 国产精品另类一区| 国产一区二区三区国产| 亚洲欧美日韩一区二区| 日韩欧美国产小视频| 国产激情偷乱视频一区二区三区| 亚洲精品日日夜夜| 精品久久久久久亚洲综合网| 在线亚洲人成电影网站色www| 免费高清视频精品| 亚洲欧美偷拍三级| 精品三级av在线| 欧美性猛交xxxxxx富婆| 国产精品77777| 亚洲丰满少妇videoshd| 国产精品毛片高清在线完整版| 3d动漫精品啪啪| 欧美主播一区二区三区美女| 国产精品一区二区三区99| 日韩精品每日更新| 一卡二卡三卡日韩欧美| 亚洲丝袜精品丝袜在线| 国产欧美日韩在线| 欧美变态口味重另类| 7777精品伊人久久久大香线蕉的| 91在线播放网址| 春色校园综合激情亚洲| 黄色小说综合网站| 久久一区二区三区四区| 91精品国产一区二区三区蜜臀 | www.性欧美| 国产成人av电影在线| 黄网站免费久久| 美女视频一区二区| 视频一区在线视频| 亚洲午夜免费福利视频| 一区二区三区欧美在线观看| 国产精品第一页第二页第三页| 国产欧美一区二区精品性色超碰 | 在线综合+亚洲+欧美中文字幕| 91老司机福利 在线| 91一区一区三区| 99这里只有久久精品视频| 国产成人99久久亚洲综合精品| 国产综合久久久久久久久久久久| 日本女优在线视频一区二区| 日本欧美久久久久免费播放网| 日韩激情中文字幕| 日日摸夜夜添夜夜添精品视频 | 色女孩综合影院| 欧日韩精品视频| 欧美喷水一区二区| 欧美一级xxx| 国产亚洲成av人在线观看导航| 欧美国产日产图区| 中文字幕精品一区二区三区精品| 国产女同互慰高潮91漫画| 中文字幕在线免费不卡| 91.成人天堂一区| 9191精品国产综合久久久久久| 91麻豆精品国产| 日韩美一区二区三区| 久久精品亚洲乱码伦伦中文| 国产精品久久久久精k8| 亚洲免费观看高清完整| 三级精品在线观看| 久久66热re国产| 91丨porny丨户外露出| 欧美日韩另类国产亚洲欧美一级| 777欧美精品| 国产精品久久久久久妇女6080| 亚洲制服丝袜一区| 美国精品在线观看| 99精品视频在线免费观看| 欧美精品黑人性xxxx| 久久午夜羞羞影院免费观看| 亚洲色图在线看| 日本成人中文字幕在线视频| 国产91丝袜在线观看| 欧美剧情片在线观看| 久久久久久久久久久久久夜| 夜夜嗨av一区二区三区网页 | 久久精品在线免费观看| 亚洲精品久久7777| 国产一区啦啦啦在线观看| 色婷婷久久一区二区三区麻豆| 精品久久久久香蕉网| 亚洲永久精品国产| 成人性生交大合| 日韩片之四级片| 亚洲卡通动漫在线| 国产成人综合亚洲91猫咪| 欧美色区777第一页|