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

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

?? pcd8544.c

?? butterfly MP3源代碼
?? C
字號:
/*** PCD8544 Driver *********************************************************** * *	File Name	: pcd8544.h *	Title		: AVR-GCC Driver for the PCD8544 LCD Controller *	Author		: Muhammad J. A. Galadima *	Created		: 2004 / 01 / 27 *	Revised		: 2004 / 02 / 05 *	Version		: 0.7 *	Target MCU	: Atmel AVRs w/1k+ RAM *	 *	Modified : September 2004 by Nick Lott for AVR Butterfly. *	 *	This program is free software; you can redistribute it and/or *	modify it under the terms of the GNU General Public License *	as published by the Free Software Foundation; either version 2 *	of the License, or (at your option) any later version. *	 *	This program is distributed in the hope that it will be useful, *	but WITHOUT ANY WARRANTY; without even the implied warranty of *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *	GNU General Public License for more details. *	 *	You should have received a copy of the GNU General Public License *	along with this program; if not, write to the Free Software Foundation,  *	Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. *	 **************************************************************************///#include <avr/io.h>#include <avr/pgmspace.h>#include <avr/interrupt.h>#include "types.h"#include "pcd8544.h"//extern 	uint8 frameBuffer[fbCols][fbRows];	extern		uint8 fbXY[];			/*** lcdByte ****************************************************************** *	 *	Send one byte to the LCD *	 *	shift out given byte, MSB fisrt; dc is 1 (data) or 0 (command)  *	(lcdModeData/lcdModeCmd) and is set in calling function *	 **************************************************************************///{void lcdByte(uint8 data) {	// 	uint8 i;		lcdResume;		for(i=0; i<8; i++) {		// clock out the byte, MSB first		if(bit_is_set(data, 7))			lcdPort |= (unsigned char) _BV(SDIN);		else			lcdPort &= (unsigned char)~_BV(SDIN);				// clock out the bit		lcdPort &= (unsigned char) ~_BV(SCLK);		lcdPort |= (unsigned char) _BV(SCLK);		data <<= 1;	}		lcdSuspend;}//}//	void lcdByte(uint8 data)/*** lcdDot ******************************************************************* *	 *	Draw a dot to the frame buffer *	 **************************************************************************///{void lcdDot(uint8 x, uint8 yLine, uint8 color) {	uint8 yBit;			// 00LL LBBB		// f x is more than screen x-res, wrap	while(x>=fbCols)		x		-= fbCols;	// if yLine is more than screen y-res, wrap	while(yLine>=(fbRows*8))		yLine	-= (fbRows*8);			// separate line number (0-5) from atual pixel in line (0-7)	//	this is done by divide	yBit	= yLine & 7;	// 0b0000 0bbb	yLine	= yLine >> 3;	// yline / 8 ; 0b00l ll00 => 0b0000 0lll// if color is diff from frameBuffer, toggle; if color is toggle (2) expression is always true//	if( color ^ (frameBuffer[x][yLine] & _BV(yBit))>>yBit ) {//		frameBuffer[x][yLine] ^= _BV(yBit);//	}}//}//	void lcdDot(uint8 x, uint8 yLine, uint8 color)/*** lcdCh ******************************************************************* *	 *	Write predefined fonts to screen at set location *	 **************************************************************************///{void lcdCh(uint8* fontSet, uint8 ch) {	uint8 i;	uint8 k = pgm_read_byte(fontSet);	uint8 x = pgm_read_byte(fontSet+1);	//uint8 y = pgm_read_byte(fontSet+2);	lcdModeData;		if(ch < k) {						for(i=0; i<x; i++) {			lcdByte(pgm_read_byte(fontSet+(x*ch+3)+i));		//	lcdByte(0);		/*			for(j=0; j<y; j++) {				k=0;				if(pgm_read_byte(fontSet+(x*ch+3)+i) & _BV(j)) {					k=1;				}								lcdDot(fbXY[0],fbXY[1]+j,k);			}		*/	fbXY[0]++;		}	}	else {		//for(j=0; j<y; j++) {		//	lcdDot(fbXY[0],fbXY[1]+j,0);		// show empty if out of range		//}		for(i=0; i<x; i++) {		   lcdByte(0);		   fbXY[0]++;		}	}}//}//	void lcdCh(uint8* fontSet, uint8 ch)/*** lcdWrite ***************************************************************** *	 *	Translate input to selected font, Write to display at set location *	 **************************************************************************///{void lcdWrite(uint8* fontSet, uint8* buf, uint8 is_pstr, uint8 len) {	uint8 i=0, offset, ch;	// check if string is in flash/sram and read appropriately	if(is_pstr) {		ch = pgm_read_byte(buf+i);	}	else {		ch = buf[i];	}	lcdXY(fbXY[0],fbXY[1]);	do {		if(ch > 32) {			offset = 33;						if( (ch>96) && (ch<123) ) {				#ifdef LOwERCASE_STRINGS				offset = 33;				#else				offset = 65;				#endif			}			else if(ch>122) {				offset = 60;			}				lcdCh(fontSet, (ch-offset));		}		else {			lcdCh(fontSet, 255);	// empty (not recognized)		}		fbXY[0]++;	// char spacing		lcdByte(0);		i++;				// check if string is in flash/sram and read appropriately		if(is_pstr) {			ch = pgm_read_byte(buf+i);		}		else {			ch = buf[i];		}	} while((ch != '\0') && (i<=len));   }//}//	void lcdWrite(uint8* fontSet, uint8* buf, uint8 is_pstr)/*** fbClr ******************************************************************** *	 *	Clear the frame buffer *	 **************************************************************************///{void fbClr(void) {	/*		uint8 x, yLine;	for(yLine=0; yLine<fbRows; yLine++) {		for(x=0; x<fbCols; x++) {			frameBuffer[x][yLine] = 0x00;		}	}*/	lcdClr();}//}//	void fbClr(void)/*** lcdClr ******************************************************************* *	 *	Clears the LCD. Call this first to get rid of junk data on the screen. *	 **************************************************************************///{void lcdClr(void) {	uint16 i;	lcdModeData;	for(i=0; i<504; i++) {		lcdByte(0x00);	}}/*** lcdClrLine ******************************************************************* *	 *	Clears an 8x84 line on the LCD.  *	 **************************************************************************///{void lcdClrLine(uint8 lineNo) {	uint16 i;   lcdXY(0,lineNo);	lcdModeData;	for(i=0; i<84; i++) {		lcdByte(0x00);	}}//}//	void lcdClr(void)/*** lcdInit ****************************************************************** *	 *	Initialize the LCD, get it ready to be used; returns in cmd mode *	 **************************************************************************///{void lcdInit(void) {	// set the direction on these pins to output	lcdPortD |= (unsigned char)(_BV(SCLK) | _BV(SDIN) | _BV(DC) | _BV(SCE_) | _BV(RES_));	// set RES: disable reset; IC ready to run	lcdPort  |= (unsigned char)(_BV(SCLK) | _BV(SDIN) | _BV(DC) | _BV(SCE_) | _BV(RES_));	// set all (high); RESET complete, LCD in suspend	//	lcdReset;	lcdClr();	// init settings	lcdModeCmd;		// set command mode	lcdByte(0x21);	// extended instruction set	//	lcdByte(0x90);	// set VOP	lcdByte(0xC8);	// set VOP	lcdByte(0x06);	// set temperature co-eff	lcdByte(0x13);	// bias (1:48)		lcdByte(0x20);	// normal instruction set: PD= 0, V= 0//	lcdByte(0x22);	// normal instruction set: PD= 0, V= 1	lcdByte(0x0c);	// normal mode: d=1, e=0}//}//	void lcdInit(void)/*** lcdXY ******************************************************************** *	 *	Set cursor to location x:y (0-83:0-47). *	 **************************************************************************///{void lcdXY(uint8 x, uint8 y) {	lcdModeCmd;	lcdByte(x|0x80);	// 0b1xxx xxxx	lcdByte(y|0x40);	// 0b0100 0xxx}//}//	void lcdXY(uint8 x, uint8 y)/*--------------------------------------------------------------------------------------------------  Name         :  lcdLine  Description  :  Draws a line between two points on the display.  Argument(s)  :  x1, y1 -> Absolute pixel coordinates for line origin.                  x2, y2 -> Absolute pixel coordinates for line end.                  mode   -> Off, On or Xor. See enum.  Return value :  None.--------------------------------------------------------------------------------------------------*//*void lcdLine ( uint8 x1, uint8 y1, uint8 x2, uint8 y2, uint8 mode ){    int dx, dy, stepx, stepy, fraction;    dy = y2 - y1;    dx = x2 - x1;    if ( dy < 0 )    {        dy    = -dy;        stepy = -1;    }    else    {        stepy = 1;    }    if ( dx < 0 )    {        dx    = -dx;        stepx = -1;    }    else    {        stepx = 1;    }    dx <<= 1;    dy <<= 1;    lcdDot( x1, y1, mode );    if ( dx > dy )    {        fraction = dy - (dx >> 1);        while ( x1 != x2 )        {            if ( fraction >= 0 )            {                y1 += stepy;                fraction -= dx;            }            x1 += stepx;            fraction += dy;            lcdDot( x1, y1, mode );        }    }    else    {        fraction = dx - (dy >> 1);        while ( y1 != y2 )        {            if ( fraction >= 0 )            {                x1 += stepx;                fraction -= dy;            }            y1 += stepy;            fraction += dx;            lcdDot( x1, y1, mode );        }    }  //  UpdateLcd = TRUE;}*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩高清在线一区| 成人做爰69片免费看网站| 亚洲久草在线视频| 日韩毛片在线免费观看| 中文字幕五月欧美| 中文字幕一区二区视频| 国产精品女人毛片| 国产精品久久久久久久久免费相片 | 综合自拍亚洲综合图不卡区| 日本一区二区成人| 亚洲v日本v欧美v久久精品| 亚洲一区免费在线观看| 亚洲国产精品久久久男人的天堂| 亚洲美女视频一区| 怡红院av一区二区三区| 亚洲高清视频的网址| 亚洲综合一区二区| 日精品一区二区| 奇米色一区二区| 久久99精品久久久久久久久久久久| 日本成人在线电影网| 热久久免费视频| 精彩视频一区二区| 国产成a人亚洲| 色综合一区二区| 欧美日韩精品系列| 精品国产在天天线2019| 久久综合久久综合亚洲| 欧美国产日本视频| 亚洲午夜精品网| 毛片av中文字幕一区二区| 国产成人午夜99999| 成年人午夜久久久| 欧美色综合天天久久综合精品| 欧美日韩国产三级| 精品国精品国产| 日韩毛片在线免费观看| 日日夜夜免费精品视频| 国产一区二区三区最好精华液 | 精品少妇一区二区三区日产乱码| 久久一区二区三区四区| ...av二区三区久久精品| 亚洲第一福利视频在线| 国内精品视频666| 91同城在线观看| 欧美人体做爰大胆视频| 国产亚洲女人久久久久毛片| 亚洲日本va午夜在线影院| 日本不卡一区二区三区| 国产成人免费视频一区| 欧美美女视频在线观看| 国产目拍亚洲精品99久久精品| 亚洲永久免费av| 国产成人免费9x9x人网站视频| 欧美在线视频日韩| 久久综合狠狠综合久久综合88| 亚洲一区二区三区四区在线 | 久久精品国产亚洲一区二区三区| 波多野结衣91| 日韩视频在线一区二区| 亚洲人成精品久久久久久| 精品一区二区三区影院在线午夜| 色天使色偷偷av一区二区| 精品国产乱码久久久久久闺蜜| 亚洲婷婷国产精品电影人久久| 激情综合网av| 欧美一区二区性放荡片| 亚洲精品高清视频在线观看| 国产福利电影一区二区三区| 欧美日韩不卡一区二区| 国产精品久久看| 看片网站欧美日韩| 91啪九色porn原创视频在线观看| 欧美成人一区二区三区在线观看| 日韩精品一区二区三区视频在线观看 | 国产精品主播直播| 91精品婷婷国产综合久久竹菊| 国产日产精品一区| 久久国产三级精品| 在线观看一区二区视频| 国产精品亲子伦对白| 视频精品一区二区| 欧美日韩亚洲综合一区二区三区| 久久久久久电影| 狠狠色2019综合网| 欧美日韩一区中文字幕| 亚洲黄色av一区| 大陆成人av片| 国产亚洲欧洲997久久综合| 午夜一区二区三区在线观看| 粉嫩绯色av一区二区在线观看| 日韩免费观看2025年上映的电影| 久久久精品国产免大香伊| 久久黄色级2电影| 欧美日韩1区2区| 日韩高清一区在线| 在线观看亚洲精品| 亚洲裸体在线观看| www.亚洲激情.com| 国产精品国产三级国产aⅴ中文| 狠狠色综合色综合网络| www国产成人| 美女视频免费一区| 欧美精品一卡二卡| 亚洲午夜三级在线| 日本二三区不卡| 中文字幕在线不卡| 成人深夜视频在线观看| 久久精品视频在线看| 日韩中文字幕一区二区三区| 91官网在线观看| 亚洲欧美二区三区| 91在线国产福利| 亚洲国产精品国自产拍av| 国产·精品毛片| 国产精品久久久久久福利一牛影视| 精彩视频一区二区三区 | 国产精品伦理在线| 99re这里只有精品首页| 国产精品对白交换视频| 色噜噜偷拍精品综合在线| 亚洲欧美在线aaa| 欧美调教femdomvk| 亚洲一二三专区| 337p亚洲精品色噜噜噜| 蜜桃av一区二区三区| 久久久久久久久久看片| 国产成人小视频| 亚洲三级在线播放| 在线亚洲+欧美+日本专区| 日韩国产精品久久久久久亚洲| 7777精品伊人久久久大香线蕉 | 青青草97国产精品免费观看| 欧美绝品在线观看成人午夜影视 | 9久草视频在线视频精品| 一区二区三区不卡视频在线观看| 色婷婷av一区| 久久99国产精品久久| 国产视频不卡一区| 色噜噜狠狠成人网p站| 亚洲国产精品一区二区尤物区| 精品伦理精品一区| 成人一区在线看| 日韩高清不卡一区二区| 精品国产乱码91久久久久久网站| 99精品偷自拍| 亚洲在线视频网站| 国产亚洲一区字幕| 岛国精品在线观看| 日本在线不卡视频一二三区| 久久久不卡网国产精品二区| 99久精品国产| 久99久精品视频免费观看| 日本一区二区三区久久久久久久久不| 欧美综合一区二区| 玖玖九九国产精品| 樱桃视频在线观看一区| 欧美一级在线免费| 在线亚洲+欧美+日本专区| 免费成人深夜小野草| 亚洲精品国产无天堂网2021 | 欧美电视剧免费观看| 色综合久久中文字幕综合网| 毛片一区二区三区| 亚洲一区二区三区四区在线免费观看| 国产日韩亚洲欧美综合| 欧美日本免费一区二区三区| 成人av在线资源| 久久99精品久久久久久久久久久久| 亚洲精品欧美在线| 国产精品女同一区二区三区| 日韩欧美一级片| 欧美视频日韩视频| 99精品桃花视频在线观看| 精品一区在线看| 中文字幕在线不卡| 欧美成人精品高清在线播放| 欧美中文字幕一区二区三区亚洲| 国产自产高清不卡| 奇米888四色在线精品| 久久综合久久99| 日韩视频在线永久播放| 欧美日韩免费一区二区三区 | 色中色一区二区| 韩国精品一区二区| 久久精品国产亚洲一区二区三区| 亚洲欧美偷拍三级| 国产精品久久久久桃色tv| 欧美色图天堂网| 91蝌蚪国产九色| www.亚洲精品| 国产精品亚洲人在线观看| 麻豆国产精品一区二区三区| 一区二区三区日本| 亚洲欧美偷拍另类a∨色屁股| 久久久久国产一区二区三区四区| 欧美电影免费观看高清完整版在线观看| 丁香激情综合国产| 成人精品一区二区三区中文字幕 | 色综合久久88色综合天天6|