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

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

?? upsd3200_lcd.c

?? uPSD3200系列MCU的EEPROM的仿真實例
?? C
字號:
/*------------------------------------------------------------------------------
LCD_IO.C

uPSD LCD Display Device Driver Functions
06/2002 Ver 0.1 - Initial Version

Note: Some functions have been commented out so as to remove linker warnings
      for code segments that are not used.


Copyright 2002 STMicroelectrons Inc.

This example demo code is provided as is and has no warranty,
implied or otherwise.  You are free to use/modify any of the provided
code at your own risk in your applications with the expressed limitation
of liability (see below) so long as your product using the code contains
at least one uPSD products (device).

LIMITATION OF LIABILITY:   NEITHER STMicroelectronics NOR ITS VENDORS OR 
AGENTS SHALL BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF USE, LOSS OF DATA,
INTERRUPTION OF BUSINESS, NOR FOR INDIRECT, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES OF ANY KIND WHETHER UNDER THIS AGREEMENT OR
OTHERWISE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
------------------------------------------------------------------------------*/

#pragma optimize(9,size)
#include "upsd3200.h"
#include "upsd3200_hardware.h"
#include "upsd3200_lcd.h"
#include "upsd3200_timer.h"

typedef xdata struct LCD_display_st {
	unsigned char LCD_CMD_WR;  		//   LCD_BASE+0x00
	unsigned char LCD_CMD_RD;  		//           +0x01
   	unsigned char LCD_RAM_WR;		//           +0x02
   	unsigned char LCD_RAM_RD;  		//           +0x03  
}  LCD_DISPLAY;

// XDATA address for display 
xdata LCD_DISPLAY LCD_reg _at_ LCD_BASE_ADDR;

//extern code char blank[];

static unsigned char Cursor_LCD;

//  These are the LCD functions.

code unsigned char cg_data[] = {

		0x1E,	//db	00011110b
		0x1C,	//db	00011100b
		0x18,	//db	00011000b
		0x11,	//db	00010001b
		0x13,	//db	00010011b
		0x1F,	//db	00011111b
		0x0F,	//db	00001111b
		0x06,	//db	00000110b

		0x0F,	//db	00001111b
		0x1E,	//db	00011110b
		0x1C,	//db	00011100b
		0x19,	//db	00011001b
		0x13,	//db	00010011b
		0x0F,	//db	00001111b
		0x0F,	//db	00001111b
		0x06,	//db	00000110b

		0x07,	//db	00000111b
		0x0F,	//db	00001111b
		0x1E,	//db	00011110b
		0x1C,	//db	00011100b
		0x18,	//db	00011000b
		0x13,	//db	00010011b
		0x03,	//db	00000011b
		0x03,	//db	00000011b

		0x00,	//db	00000000b
		0x01,	//db	00000001b
		0x03,	//db	00000011b
		0x07,	//db	00000111b
		0x0F,	//db	00001111b
		0x1E,	//db	00011110b
		0x1C,	//db	00011100b
		0x18,	//db	00011000b

		0x1E,	//db	00011110b
		0x1E,	//db	00011110b
		0x1E,	//db	00011110b
		0x10,	//db	00010000b
		0x00,	//db	00000000b
		0x00,	//db	00000000b
		0x00,	//db	00000000b
		0x00,	//db	00000000b

		0x1C,	//db	00011100b
		0x1C,	//db	00011100b
		0x1C,	//db	00011100b
		0x00,	//db	00000000b
		0x1C,	//db	00011100b
		0x1C,	//db	00011100b
		0x1C,	//db	00011100b
		0x1C,	//db	00011100b

		0x00,	//db	00000000b		// data for '\'
		0x10,	//db	00010000b
		0x08,	//db	00001000b
		0x04,	//db	00000100b
		0x02,	//db	00000010b
		0x01,	//db	00000001b
		0x00,	//db	00000000b
		0x00,	//db	00000000b
 		
		-1
};


void SetUserCG(unsigned char *data_ptr)	// initialize user character pattern
	{
	BusyCheck();
	LCD_reg.LCD_CMD_WR = CG_ADDR | (8*1);		//from character code 1

	while (*data_ptr != -1) {
 		BusyCheck();
 		LCD_reg.LCD_RAM_WR = *data_ptr++;
  		} 		
	}

void lcd_init(void)		// initialize LCD module per specs   
	{
    delay_10ms();
    LCD_reg.LCD_CMD_WR = 0x30;
	delay_10ms();		
	LCD_reg.LCD_CMD_WR = 0x30;
	delay_10ms();		
	LCD_reg.LCD_CMD_WR = 0x30;
	delay_10ms();		

	LCD_reg.LCD_CMD_WR = 0x38;	// 8 bits, 2 lines, 5 x 7 font   
	delay_10ms();				// delay 4 ms   
	BusyCheck();
	LCD_reg.LCD_CMD_WR = 0x0C;	//Display on, Cursor off, Non-Blink
	BusyCheck();
	LCD_reg.LCD_CMD_WR = 0x01;	//Clear display
	BusyCheck();
	LCD_reg.LCD_CMD_WR = 0x02;	//Cursor home
  	BusyCheck();
 	LCD_reg.LCD_CMD_WR = 0x06;	//Cursor inc, no shift/cursor move
 		
	SetUserCG(&cg_data);  		//set user desfined character

	Cursor_LCD = DD_ADDR;		//Display from 1st row, 1st column
	BusyCheck();
	LCD_reg.LCD_CMD_WR = Cursor_LCD;
	}


void BusyCheck(void)			// wait until BF is cleared
	{
	while (LCD_reg.LCD_CMD_RD & BF_BIT);
	}

/*
void setXY_LCD (unsigned char row, unsigned char col) {
	Cursor_LCD = (DD_ADDR | ((row & 0x01) << 6)) + (col & LCD_LINE_LENGTH);
	BusyCheck();
	LCD_reg.LCD_CMD_WR = Cursor_LCD;
}


void putch_LCD(unsigned char ch) {
	BusyCheck();
	LCD_reg.LCD_RAM_WR = ch;
}
*/

void printfLCD(unsigned char *chr_ptr, ...) {

unsigned char *var_ptr=&chr_ptr+1;
unsigned char var;
	
	while (*chr_ptr != NULL) {
		
 		BusyCheck();
		
 		if (*chr_ptr == '\r') {
 			chr_ptr++;
  			Cursor_LCD &= 0xC0;    				//return to position 0 at current line
			LCD_reg.LCD_CMD_WR = Cursor_LCD;
		}
		else
		if (*chr_ptr == '\n') {
 			chr_ptr++;
  			Cursor_LCD ^= 0x40;     			//goto next line
  			Cursor_LCD &= 0xC0;     			//return to position 0
			LCD_reg.LCD_CMD_WR = Cursor_LCD;
		}
 		else
		if (*chr_ptr == '%') {
 			chr_ptr++;
 			if (*chr_ptr == 'd') {			// display 1 digit decimal 0-9
				chr_ptr++;

  					var = *var_ptr++;
					LCD_reg.LCD_RAM_WR = (var & 0x0F)+'0';
  	   		}
  	    		else
  	    		if (*chr_ptr == 'x') {           	// display 1 byte hex 00-FF
				chr_ptr++;

  	    			var = *var_ptr++;
  	    			//LCD_reg.LCD_RAM_WR = Bin2Hex(var>>4);
  	    			LCD_reg.LCD_RAM_WR = htoa_hi(var);
  	    	   		BusyCheck();
  	    	    	//LCD_reg.LCD_RAM_WR = Bin2Hex(var&0x0F);
  	    			LCD_reg.LCD_RAM_WR = htoa_lo(var);
			}
  			else
  	 		if (*chr_ptr == 'w') {  	  	// display 1 word hex 0000-FFFF
				chr_ptr++;

  	    			var = *var_ptr++;
  	    		   	//LCD_reg.LCD_RAM_WR = Bin2Hex(var>>4);
  	    			LCD_reg.LCD_RAM_WR = htoa_hi(var);
  	    	    	BusyCheck();
  	    	        //LCD_reg.LCD_RAM_WR = Bin2Hex(var&0x0F);
  	    			LCD_reg.LCD_RAM_WR = htoa_lo(var);

  	    	        BusyCheck();

  	    			var = *var_ptr++;
  	    		   	//LCD_reg.LCD_RAM_WR = Bin2Hex(var>>4);
  	    			LCD_reg.LCD_RAM_WR = htoa_hi(var);
  	    	    	BusyCheck();
  	    	        //LCD_reg.LCD_RAM_WR = Bin2Hex(var&0x0F);
  	    			LCD_reg.LCD_RAM_WR = htoa_lo(var);
  	  		}
			else {
  				LCD_reg.LCD_RAM_WR = *chr_ptr++;	//out character to LCD Diaplay RAM
  	     	}
		}
 		else
		{
  			LCD_reg.LCD_RAM_WR = *chr_ptr++;		//out character to LCD Diaplay RAM
		}
	}
}

/*
char Bin2Hex(char temp) {

	if (temp <= 9) temp += '0'; else temp=(temp-10)+'A';
	return (temp);
}
*/

//  These are the LCD functions.


void lcd_clear(void)			// clear all characters from display   
	{
	BusyCheck();
	LCD_reg.LCD_CMD_WR = 0x01;
	Cursor_LCD = DD_ADDR;
	}
/*
void lcd_string_display(row,col,string)  	
				// send string to LCD   
				// row = 0 is top row   
				// row = 1 is bottom    
				// col = 0 to 15	    
				// length = string length   
				// string points to char array   
unsigned char row;
unsigned char col;
unsigned char *string;
	{
	char k;
	k = 0;
	lcd_cursor_set(row,col);	// position cursor   
	while (k < LCD_LINE_LENGTH+1 && *string)	// truncate string to 16 
					// or end of string   
		{
		BusyCheck();
		LCD_reg.LCD_RAM_WR = *string++;	// send character   
		k++;
		}
	}


void lcd_char_display(row,col,ch)  	// send single char to LCD   
					// row = 0 is top row   
					// row = 1 is bottom    
					// col = 0 to 15	    
unsigned char row;
unsigned char col;
char ch;
	{
	lcd_cursor_set(row,col);	// position cursor   
	BusyCheck();
	LCD_reg.LCD_RAM_WR = ch;			// send character   
	}

	

void lcd_cursor_set(row,col)	// move cursor to desired position   
unsigned char row;
unsigned char col;
	
	{
	BusyCheck();
	switch(row)
		{
		case 0:
	     		LCD_reg.LCD_CMD_WR = (0x80 + col);
			break;
			
		case 1:
	      		LCD_reg.LCD_CMD_WR = (0xC0 + col);
			break;
		}
	}

*/

// this is a collection of conversion routines used in conjunction with the LCD display


char htoa_lo(byte)	 // converts low nibble of unsigned byte
					 // (0-F hex) to ascii   
unsigned char byte;
	{
	byte = byte & 0x0F;	// keep lower nibble only   
	if (byte <= 0x09)
		return(byte + 0x30);
	else
		return (byte + 0x37);
	}

/*
char lhtoa_lo(word)	 // converts 2nd nibble of unsigned int
					 // (0-F hex) to ascii   
unsigned int word;
	{
	word = word >> 8;
	word = word & 0x000F;
	if (word <= 0x0009)
		return((char)word + 0x30);
	else
		return ((char)word + 0x37);
	}
*/

char htoa_hi(byte)	 // converts hi nibble of unsigned byte
					 // (0-F hex) to ascii   
unsigned char byte;
	{
	byte = byte & 0xF0;	// keep upper nibble only   
	byte = byte >> 4;
	if (byte <= 0x09)
		return(byte + 0x30);
	else
		return (byte + 0x37);
	}

/*
char lhtoa_hi(word)	 // converts 1st nibble of unsigned int
					 // (0-F hex) to ascii   
unsigned int word;
	{
	word = word >> 12;
	word = word & 0x000F;
	if (word <= 0x0009)
		return((char)word + 0x30);
	else
		return ((char)word + 0x37);
	}

*/

/*
void copy_message(msg_ptr, destination)
unsigned int msg_ptr;
unsigned int destination;
	{
	xdata unsigned char i;
	xdata unsigned char code * temp_add;
	 xdata unsigned char src_code;
	 xdata unsigned char xdata * dest_add;
   
	
	for (i=0; i<LCD_LINE_LENGTH; i++)
		{
		temp_add =  (unsigned char *) ( msg_ptr + i);     // get message byte
		src_code =  *  temp_add;
		dest_add = (unsigned char *) (destination + i);   // put message byte
		* dest_add = src_code;
		}	
	}
*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人激情小说乱人伦| 国产精品亚洲一区二区三区妖精| 国产日产欧美一区| 久久久综合网站| 国产日韩欧美综合在线| 久久精品无码一区二区三区| 欧美大片在线观看一区二区| 欧美sm美女调教| 久久日韩精品一区二区五区| 久久综合网色—综合色88| 久久久蜜桃精品| 国产精品免费免费| 亚洲激情一二三区| 亚洲成a人片在线观看中文| 午夜精品福利一区二区三区蜜桃| 日韩高清欧美激情| 国产高清视频一区| 一本久久a久久免费精品不卡| 欧美性做爰猛烈叫床潮| 日韩欧美激情四射| 国产精品大尺度| 亚洲国产日日夜夜| 国产福利一区二区三区视频在线| 99久久国产综合精品麻豆 | 欧美一级二级在线观看| 日韩一区二区中文字幕| 中文字幕巨乱亚洲| 午夜av电影一区| 国产精品乡下勾搭老头1| 色婷婷久久久综合中文字幕| 91精品婷婷国产综合久久性色| 久久网这里都是精品| 亚洲国产中文字幕| 国产成人av一区| 欧美精品粉嫩高潮一区二区| 国产欧美一区二区三区网站 | 国产在线麻豆精品观看| 91影院在线观看| 26uuuu精品一区二区| 午夜影院久久久| 成人va在线观看| 精品国产一二三| 五月天亚洲精品| 色综合色综合色综合| 26uuu成人网一区二区三区| 亚洲图片自拍偷拍| 91在线porny国产在线看| 26uuu另类欧美亚洲曰本| 亚洲成人免费视频| 成+人+亚洲+综合天堂| 精品久久久久99| 天天射综合影视| 91丨porny丨在线| 国产婷婷精品av在线| 天天影视网天天综合色在线播放| 99在线精品免费| 欧美激情在线一区二区三区| 韩国欧美国产1区| 日韩欧美成人一区二区| 婷婷开心激情综合| 欧美日韩久久久久久| 亚洲精品乱码久久久久久久久| 成人毛片视频在线观看| 久久久久久免费| 国产自产2019最新不卡| 91精品国产综合久久精品| 亚洲综合999| 色综合激情五月| 亚洲精品国产精华液| 欧美在线视频日韩| 亚洲福利视频一区二区| 91黄视频在线观看| 一区二区三区在线视频观看| 91日韩在线专区| 亚洲啪啪综合av一区二区三区| 粉嫩av一区二区三区| 自拍偷拍国产亚洲| 色综合久久久久综合99| 亚洲六月丁香色婷婷综合久久| 91免费看视频| 天天av天天翘天天综合网| 在线成人av影院| 日本人妖一区二区| 2024国产精品| 国产a久久麻豆| 国产精品精品国产色婷婷| 色综合天天综合狠狠| 亚洲综合久久久| 日韩视频在线你懂得| 国产精品888| 亚洲三级免费观看| 欧美喷水一区二区| 国产精品一区二区果冻传媒| 中文欧美字幕免费| 日本韩国欧美三级| 美洲天堂一区二卡三卡四卡视频| 久久精品亚洲精品国产欧美| 91丝袜美女网| 蜜芽一区二区三区| 国产亚洲综合色| 色菇凉天天综合网| 激情久久五月天| 亚洲欧美乱综合| 久久夜色精品一区| 欧美视频一区二区三区在线观看| 精久久久久久久久久久| 亚洲免费观看高清完整版在线观看 | 欧美丰满嫩嫩电影| 国内外成人在线视频| 亚洲乱码日产精品bd| 欧美成人欧美edvon| 色综合一区二区| 国产一区二区三区日韩| 亚洲不卡在线观看| 国产欧美日本一区视频| 欧美亚洲综合另类| 成人美女视频在线观看| 免费精品视频最新在线| 亚洲日本欧美天堂| 精品国产亚洲一区二区三区在线观看| aaa国产一区| 国产精品综合一区二区| 日本欧美肥老太交大片| 亚洲欧美区自拍先锋| 国产午夜亚洲精品不卡| 日韩午夜电影在线观看| 精品视频资源站| 色香蕉久久蜜桃| 91丝袜呻吟高潮美腿白嫩在线观看| 美国三级日本三级久久99| 亚洲线精品一区二区三区八戒| 国产欧美精品一区二区三区四区| 欧美一区国产二区| 欧美午夜电影在线播放| 色婷婷精品大在线视频| 成人黄色一级视频| 国产成人福利片| 国产福利视频一区二区三区| 久久99久久精品欧美| 日本91福利区| 日韩成人精品在线观看| 午夜久久久影院| 午夜精品久久久久久久久久久| 一区二区三区四区精品在线视频| 中文字幕视频一区二区三区久| 欧美大片在线观看| 欧美一区二区在线免费观看| 欧美在线免费观看视频| 欧美专区日韩专区| 欧美三级电影在线看| 欧美久久一二三四区| 欧美精品亚洲一区二区在线播放| 色美美综合视频| 欧美另类一区二区三区| 日韩欧美精品在线视频| 精品国产91久久久久久久妲己| 日韩欧美中文字幕公布| 精品国产一区二区精华| 国产午夜亚洲精品羞羞网站| 国产精品欧美极品| 日韩毛片精品高清免费| 一区二区三区不卡视频| 五月天激情综合| 狠狠狠色丁香婷婷综合激情| 国产一区二区在线观看视频| 国产精品白丝jk黑袜喷水| 丁香亚洲综合激情啪啪综合| 一本一道久久a久久精品| 欧美日韩在线观看一区二区 | 欧美一级欧美三级在线观看| 3d动漫精品啪啪一区二区竹菊| 欧美一区二区三区色| 久久色在线观看| 一区二区三区在线高清| 日韩av不卡在线观看| 国产美女精品人人做人人爽| 99久久伊人网影院| 欧美日韩久久一区二区| 2019国产精品| 亚洲午夜三级在线| 国产真实乱子伦精品视频| 成人性色生活片| 欧美区一区二区三区| 亚洲国产经典视频| 丝袜国产日韩另类美女| 国产美女精品人人做人人爽 | 免费在线成人网| 成人网在线播放| 欧美二区在线观看| 国产精品少妇自拍| 日韩av一区二区在线影视| 成人国产在线观看| 日韩一区二区精品| 一二三区精品视频| 国产精品香蕉一区二区三区| 欧美少妇bbb| 国产精品电影一区二区三区| 蜜臀久久久久久久| 精品视频999| 亚洲三级在线免费|