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

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

?? lcd_library.c

?? GPS接收機 衛星導航
?? C
?? 第 1 頁 / 共 2 頁
字號:
*   Function: LCD_PutBigstr(char* Str, unsigned char y,unsigned char x)
*   Input Variables: char* Str, unsigned char y,unsigned char x
*   Return Variables: void
*   Usage:顯示4倍大的字符串
**********************************************/
void LCD_PutBigstr(char* Str, unsigned char y,unsigned char x)
{
		unsigned char i = 0; 
		while(*Str)
		{
				LCD_PutBigchar(*Str++,y,x+11*i);
				i++;
		}
}


/**********************************************
*   Function: LCD_PlotLine(unsigned int NewPoint)
*   Input Variables: unsigned int NewPoint
*   Return Variables: void
*   Usage:在LCD上繪制連續的直線
**********************************************/
void LCD_PlotLine(unsigned int NewPoint)
{
		static short pPlot = 0;
		static unsigned char PLOT_LAST_SHIFT = 0;
		static char PLOT_BUFFER[LCD_PLOT_HEIGHT];
		unsigned char j;
		int diff;
		char PlotShift;
		unsigned long int Plot_Value,WRT_Value;
		/*
		for(i=LCD_PLOT_MAX_POINTS-1;i>0;i--)
		{
				for(j=0;j<LCD_PLOT_HEIGHT;j++)
					{
							PLOT_BUFFER[j][i] = PLOT_BUFFER[j][i-1];
					}
		}
		*/
		if(NewPoint>=LCD_PLOT_MAX_VALUE) PlotShift = LCD_PLOT_HEIGHT*8-1 ;
		else
		PlotShift = (char)((double)NewPoint*(LCD_PLOT_HEIGHT*8-1)/LCD_PLOT_MAX_VALUE);
		// Attention! if LCD_PLOT_MAX_VALUE > 0xff for instance 0xffff, the multiplication might be overflow
		// a double force convert is necessary
		//Plot_Value = ((long int)0x01<<(LCD_PLOT_HEIGHT*8-1))>>PlotShift;
		Plot_Value = 0x80000000>>(4-LCD_PLOT_HEIGHT)*8>>PlotShift;
		WRT_Value = Plot_Value; 
		diff = PlotShift - PLOT_LAST_SHIFT;
	
				if(diff>=2)
				{
						for(j=0;j<diff-1;j++)
						{
								WRT_Value = WRT_Value<<1;
								WRT_Value += Plot_Value;
						}
				}
				else if(diff<=-2)
				{
						for(j=0;j<1-diff;j++)
						{
								WRT_Value = WRT_Value>>1;
								WRT_Value += Plot_Value;
						}
				}
				
				for(j=0;j<LCD_PLOT_HEIGHT;j++)
					{
							PLOT_BUFFER[j] = (char)((WRT_Value>>(j*8))&0xff);
					}
					
		for(j=0;j<LCD_PLOT_HEIGHT;j++)
		{
				LCD_Cursor2yx(j,pPlot+LCD_DISPLAY_OFFSET);
				LCD_WRT_DAT(PLOT_BUFFER[j]);
				LCD_WRT_DAT(0xff);
				LCD_WRT_DAT(0xff);
		}	
		
		if((++pPlot) == LCD_PLOT_MAX_POINTS )pPlot = 0;
		PLOT_LAST_SHIFT = PlotShift;
}





/**********************************************
*   Function: LCD_RollingDisplay(char* pStr)
*   Input Variables: char* pStr
*   Return Variables: void
*   Usage:在LCD滾動顯示信息
**********************************************/
void LCD_RollingDisplay(char* pStr)
{
		static unsigned char i=7,j=0;
		LCD_Cursor2yx(i,5);
		LCD_Putstr("                     ");
		LCD_Cursor2yx(i,5);
		_LCD_SET_DISPLINE(j);
		LCD_Putstr(pStr);
		if(++i>7)i=0;
		j+=8;
		if(j > 56) j =0;
}

U8 LCD_mini_printf(U8 *format, ...)
{
    va_list arg_ptr;
    U8      *p,*sval;
    U8      u8_temp, n_sign, data_idx, min_size;
    U8      data_buf[DATA_BUF_LEN];
    S8      long_flag, alt_p_c;
    S8      s8_val;
    S16     s16_val;
    S32     s32_val;
    U16     u16_val;
    U32     u32_val;

    long_flag = TRUE;
    alt_p_c = FALSE;
    min_size = DATA_BUF_LEN-1;

    va_start(arg_ptr, format);   // make arg_ptr point to the first unnamed arg
    for (p = format; *p; p++)
    {
        if ((*p == '%') || (alt_p_c == TRUE))
        {
            p++;
        }
        else
        {
            LCD_Putchar(*p);
            alt_p_c = FALSE;
            long_flag = FALSE;
            continue;   // "switch (*p)" section skipped
        }
        switch (*p)
        {
            case 'c':
                if (long_flag == TRUE)      // ERROR: 'l' before any 'c'
                {
                    LCD_Putchar('l');
                    LCD_Putchar('c');
                }
                else
                {
                    s8_val = (S8)(va_arg(arg_ptr, int));    // s8_val = (S8)(va_arg(arg_ptr, S16));
                    LCD_Putchar((U8)(s8_val));
                }
                // Clean up
                min_size = DATA_BUF_LEN-1;
                alt_p_c = FALSE;
                long_flag = FALSE;
                break; // case 'c'
                
            case 's':
                if (long_flag == TRUE)      // ERROR: 'l' before any 's'
                {
                    LCD_Putchar('l');
                    LCD_Putchar('s');
                }
                else
                {
                    for (sval = va_arg(arg_ptr, U8 *); *sval; sval++)
                    {
                        LCD_Putchar(*sval);
                    }
                }
                // Clean up
                min_size = DATA_BUF_LEN-1;
                alt_p_c = FALSE;
                long_flag = FALSE;
                break;  // case 's'
                
            case 'l':  // It is not the number "ONE" but the lower case of "L" character
                if (long_flag == TRUE)      // ERROR: two consecutive 'l'
                {
                    LCD_Putchar('l');
                    alt_p_c = FALSE;
                    long_flag = FALSE;
                }
                else
                {
                    alt_p_c = TRUE;
                    long_flag = TRUE;
                }
                p--;
                break;  // case 'l'
                
            case 'd':
                n_sign  = FALSE;               
                for(data_idx = 0; data_idx < (DATA_BUF_LEN-1); data_idx++)
                {
                    data_buf[data_idx] = '0';
                }
                data_buf[DATA_BUF_LEN-1] = 0;
                data_idx = DATA_BUF_LEN - 2;
                if (long_flag)  // 32-bit
                {
                    s32_val = va_arg(arg_ptr, S32);
                    if (s32_val < 0)
                    {
                        n_sign = TRUE;
                        s32_val  = -s32_val;
                    }
                    while (s32_val)
                    {
                        data_buf[data_idx] = s32_val % 10 + '0';
                        s32_val /= 10;
                         data_idx--;
                   }
                }
                else  // 16-bit
                {
                    s16_val = (S16)(va_arg(arg_ptr, int)); // s16_val = va_arg(arg_ptr, S16);
                    if (s16_val < 0)
                    {
                        n_sign = TRUE;
                        s16_val  = -s16_val;
                    }
                    while (s16_val)
                    {
                        data_buf[data_idx] = s16_val % 10 + '0';
                        s16_val /= 10;
                        data_idx--;
                    }
                }
                if (n_sign) { LCD_Putchar('-'); }
                data_idx++;
                if (min_size < data_idx)
                {
                    data_idx = min_size;
                }
                LCD_Putstr (data_buf + data_idx);
                // Clean up
                min_size = DATA_BUF_LEN-1;
                alt_p_c = FALSE;
                long_flag = FALSE;
                break;  // case 'd'
                
            case 'u':
                for(data_idx = 0; data_idx < (DATA_BUF_LEN-1); data_idx++)
                {
                    data_buf[data_idx] = '0';
                }
                data_buf[DATA_BUF_LEN-1] = 0;
                data_idx = DATA_BUF_LEN - 2;
                if (long_flag)  // 32-bit
                {
                    u32_val = va_arg(arg_ptr, U32);
                    while (u32_val)
                    {
                        data_buf[data_idx] = u32_val % 10 + '0';
                        u32_val /= 10;
                        data_idx--;
                    }
                }
                else  // 16-bit
                {
                    u16_val = (U16)(va_arg(arg_ptr, int)); // u16_val = va_arg(arg_ptr, U16);
                    while (u16_val)
                    {
                        data_buf[data_idx] = u16_val % 10 + '0';
                        data_idx--;
                        u16_val /= 10;
                    }
                }
                data_idx++;
                if (min_size < data_idx)
                {
                    data_idx = min_size;
                }
                LCD_Putstr (data_buf + data_idx);
                // Clean up
                min_size = DATA_BUF_LEN-1;
                alt_p_c = FALSE;
                long_flag = FALSE;
                break;  // case 'u':
                
            case 'x':
            case 'X':
                for(data_idx = 0; data_idx < (DATA_BUF_LEN-1); data_idx++)
                {
                    data_buf[data_idx] = '0';
                }
                data_buf[DATA_BUF_LEN-1] = 0;
                data_idx = DATA_BUF_LEN - 2;
                if (long_flag)  // 32-bit
                { 
                    u32_val = va_arg(arg_ptr, U32);
                    while (u32_val)
                    {
                        u8_temp = (U8)(u32_val & 0x0F);
                        data_buf[data_idx] = (u8_temp < 10)? u8_temp+'0':u8_temp-10+(*p=='x'?'a':'A');
                        u32_val >>= 4;
                        data_idx--;
                    }
                }
                else  // 16-bit
                {
                    u16_val = (U16)(va_arg(arg_ptr, int)); // u16_val = va_arg(arg_ptr, U16);
                    while (u16_val)
                    {
                        u8_temp = (U8)(u16_val & 0x0F);
                        data_buf[data_idx] = (u8_temp < 10)? u8_temp+'0':u8_temp-10+(*p=='x'?'a':'A');
                        u16_val >>= 4;
                        data_idx--;
                    }
                }
                data_idx++;
                if (min_size < data_idx)
                {
                    data_idx = min_size;
                }
                LCD_Putstr (data_buf + data_idx);
                // Clean up
                min_size = DATA_BUF_LEN-1;
                alt_p_c = FALSE;
                long_flag = FALSE;
                break;  // case 'x' & 'X'
                
            case '0':   // Max allowed "min_size" 2 decimal digit, truncated to DATA_BUF_LEN-1.
                min_size = DATA_BUF_LEN-1;
                if (long_flag == TRUE)      // ERROR: 'l' before '0'
                {
                    LCD_Putchar('l');
                    LCD_Putchar('0');
                    // Clean up
                    alt_p_c = FALSE;
                    long_flag = FALSE;
                    break;
                }
                u8_temp = *++p;
                if ((u8_temp >='0') && (u8_temp <='9'))
                {
                    min_size = u8_temp & 0x0F;
                    u8_temp = *++p;
                    if ((u8_temp >='0') && (u8_temp <='9'))
                    {
                        min_size <<= 4;
                        min_size |= (u8_temp & 0x0F);
                        p++;
                    }
                    min_size = ((min_size & 0x0F) + ((min_size >> 4) *10));  // Decimal to hexa
                    if (min_size > (DATA_BUF_LEN-1))
                    {
                        min_size = (DATA_BUF_LEN-1);
                    }  // Truncation
                    min_size = DATA_BUF_LEN-1 - min_size;  // "min_size" formatted as "data_ix"
                }
                else      // ERROR: any "char" after '0'
                {
                    LCD_Putchar('0');
                    LCD_Putchar(*p);
                    // Clean up
                    alt_p_c = FALSE;
                    long_flag = FALSE;
                    break;
                }
                p-=2;
                alt_p_c = TRUE;
                // Clean up
                long_flag = FALSE;
                break;  // case '0'  
            default:
                if (long_flag == TRUE)
                {
                    LCD_Putchar('l');
                }
                LCD_Putchar(*p);
                // Clean up
                min_size = DATA_BUF_LEN-1;
                alt_p_c = FALSE;
                long_flag = FALSE;
                break;  // default
                
        }   // switch (*p ...
        
    }   // for (p = ...
    
    va_end(arg_ptr);
    return 0;
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品国产精品国产专区不蜜| 2023国产精品| 大尺度一区二区| 国产九九视频一区二区三区| 久久99深爱久久99精品| 另类欧美日韩国产在线| 美女网站一区二区| 免费观看久久久4p| 久久国产精品无码网站| 国产在线一区二区综合免费视频| 国产在线一区二区综合免费视频| 国产精品资源网| 99久久久久久| 欧美性大战久久久| 欧美一级艳片视频免费观看| 久久综合中文字幕| 国产精品伦一区二区三级视频| 国产精品美女一区二区三区| 亚洲少妇最新在线视频| 亚洲午夜一区二区三区| 天天综合网 天天综合色| 日韩电影在线免费| 国产91对白在线观看九色| 99久久久久免费精品国产 | 国产酒店精品激情| 成人三级伦理片| 欧美色窝79yyyycom| 日韩欧美视频在线| 欧美激情一区二区在线| 亚洲国产日韩av| 国产成人在线视频播放| 91久久国产综合久久| 欧美一区二区三区四区高清| 国产三级欧美三级日产三级99 | 成人免费看视频| 欧洲国内综合视频| 精品成人免费观看| 亚洲裸体在线观看| 国产综合色精品一区二区三区| 成+人+亚洲+综合天堂| 欧美人与z0zoxxxx视频| 国产精品人成在线观看免费| 亚洲成人综合网站| 成人av资源在线| 日韩精品一区二区三区swag | 精品久久久三级丝袜| 亚洲男女一区二区三区| 国产一区二区三区免费看| 欧美日韩成人综合| 亚洲免费观看在线视频| 国产一区二区三区精品欧美日韩一区二区三区 | 911精品国产一区二区在线| 国产91露脸合集magnet| 成人av在线电影| 精品国产一二三区| 亚洲国产精品久久人人爱| 国产精品1区2区3区| 欧美高清激情brazzers| 国产精品久久久久aaaa| 午夜欧美一区二区三区在线播放| 亚洲人成亚洲人成在线观看图片| 欧美日韩免费高清一区色橹橹| 日韩经典一区二区| 日本一区二区视频在线观看| 色婷婷综合中文久久一本| 视频精品一区二区| 久久精品免费在线观看| 一本一道久久a久久精品| 日韩精品久久久久久| 久久精品视频免费观看| 欧美最猛黑人xxxxx猛交| 久久精品国产一区二区| 成人免费一区二区三区在线观看| 欧美色图免费看| 国产精品白丝av| 亚洲大型综合色站| 国产精品麻豆99久久久久久| 日韩视频中午一区| 99re这里只有精品视频首页| 免费视频一区二区| 亚洲欧洲综合另类| 2024国产精品| 91精品国产福利| 色悠悠久久综合| 国产原创一区二区| 午夜激情久久久| 中文字幕一区二区三区在线不卡 | 午夜在线电影亚洲一区| 久久久精品国产免大香伊| eeuss鲁片一区二区三区| 蜜桃视频一区二区三区在线观看| 日韩理论片网站| 国产日韩欧美在线一区| 91精品国产综合久久香蕉的特点 | aaa国产一区| 精品一区二区久久久| 亚洲一二三区在线观看| 欧美国产精品一区二区三区| 精品欧美一区二区在线观看| 欧美区视频在线观看| 日本精品一区二区三区四区的功能| 国产一区二区不卡| 久久精品99久久久| 久久99最新地址| 极品瑜伽女神91| 另类综合日韩欧美亚洲| 蜜臀av一区二区| 蜜桃久久久久久| 久久激情五月婷婷| 玖玖九九国产精品| 日本系列欧美系列| 全国精品久久少妇| 日本亚洲电影天堂| 老司机午夜精品| 韩国三级电影一区二区| 经典三级在线一区| 国产乱码字幕精品高清av| 韩国午夜理伦三级不卡影院| 国产精品一二一区| 成人网页在线观看| 97se亚洲国产综合自在线不卡 | 午夜久久久久久久久久一区二区| 亚洲午夜在线观看视频在线| 亚洲成人午夜影院| 天天色综合天天| 久久99精品久久久久| 国产综合久久久久影院| 岛国一区二区在线观看| 9人人澡人人爽人人精品| 9i在线看片成人免费| 91精品1区2区| 日韩一区二区电影| 久久日一线二线三线suv| 国产精品网站在线| 一区二区三区国产| 免费高清在线一区| 成人国产免费视频| 欧美色倩网站大全免费| 欧美一区日韩一区| 国产亚洲视频系列| 亚洲精品成人在线| 日本午夜一区二区| 成人网在线播放| 欧美日韩一区二区三区在线| 精品国产一区久久| 亚洲女人小视频在线观看| 日韩av高清在线观看| 国产成人精品免费| 欧美三区免费完整视频在线观看| 日韩一区二区精品葵司在线| 国产精品久久久久久久久免费桃花 | 91精品国模一区二区三区| 久久免费视频色| 亚洲一区二区三区自拍| 国产中文字幕精品| 在线这里只有精品| 国产亚洲成年网址在线观看| 亚洲自拍另类综合| 国产盗摄一区二区| 欧美一激情一区二区三区| 国产精品美女一区二区| 久久精工是国产品牌吗| 在线日韩av片| 欧美激情艳妇裸体舞| 美女被吸乳得到大胸91| 色菇凉天天综合网| 久久嫩草精品久久久精品| 天天色天天爱天天射综合| 成人高清在线视频| 日韩精品资源二区在线| 亚洲午夜视频在线观看| 91视频91自| 国产精品午夜在线| 精品一区二区av| 欧美精品精品一区| 亚洲欧美日韩小说| 成人免费毛片a| 久久精品夜色噜噜亚洲a∨| 日韩高清不卡一区二区| 欧美网站一区二区| 亚洲色图另类专区| 91在线观看地址| 成人欧美一区二区三区黑人麻豆| 狠狠狠色丁香婷婷综合久久五月| 欧美二区三区的天堂| 亚洲成年人影院| 欧美色爱综合网| 亚洲电影中文字幕在线观看| 日本丶国产丶欧美色综合| 国产精品久久午夜夜伦鲁鲁| 粉嫩嫩av羞羞动漫久久久 | 午夜视频一区二区| 色婷婷激情综合| 亚洲欧洲色图综合| 成人av资源网站| 成人免费在线视频| 色婷婷av一区二区三区gif | 国产精品影视在线观看| 欧美精品一区二区久久婷婷| 久99久精品视频免费观看|