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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pictiva.c

?? oled 驅(qū)動
?? C
字號:
/*
    Title:    Pictiva mit ATMEGA32
	Version:  1.00
    Author:   Jens Dietrich
    Start:    26/12/2006
    Date:     30/12/2006
    Purpose:  3,3 Volt
    Software: AVR-GCC
    Hardware: ATMEGA32 + 3,3 Volt
    Note:     http://www.icplan.de
	File:     pictiva.c
*/

#include <avr/io.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <avr/eeprom.h>
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
#include "pictiva.h"

int main(void)
{
	unsigned int a;
	
	PORTA = 0x00;			    									/* port a ausgaenge auf low */
	DDRA =0xff;  				    								/* port a output */
	
	DDRC = 0xfc;													/* bit 0,1 I2C rest ausgaenge */

	PORTD = 0b00000010;		    									/* port c bit txd mit pulup */
	DDRD =  0b11111100; 		                              		/* bit 2-7 output ; bit 0,1 input rs232 */
	PORTD = 0x00;
	DDRD =  0b11111110; 		                              		/* bit 1-7 output ; bit 0 input rs232 */

	TWBR = 0x80;													/* i2c bitrate etwa 40 khz */
	UBRRL = 103;													/* 51=8 103=16 mhz bei 9600 baud */
	UCSRB = 0x98;													/* rx, tx + inter bei rx einschalten */
 	
	TCCR1B = 0x03;	    											/* CK/8 = 0x02 */
	TIMSK = 0x04;		    										/* timer 1 overflow enable */

    PORTA &= ~(0x08);
    delay(10);
    PORTA |= (0x08);												/* reset display */
    delay(200);

// pictiva display laut herstellerangaben initialisieren

    send_data(0x15); 												/* Set Column Address */
	send_data(0x00); 												/* Start = 0 */
	send_data(0x3F); 												/* End = 127 */

	send_data(0x75); 												/* Set Row Address */
	send_data(0x00); 												/* Start = 0 */
	send_data(0x3F);												/* End = 63 */

	send_data(0x81); 												/* Set Contrast Control (1) */
	send_data(0x66); 												/* 0 ~ 127 */

	send_data(0x86); 												/* Set Current Range 84h:Quarter, 85h:Half, 86h:Full*/

	send_data(0xA0); 											    /* Set Re-map */
	send_data(0x41); 											    /* [0]:MX, [1]:Nibble, [2]:H/V address [4]:MY, [6]:Com Split Odd/Even "1000010"*/

	send_data(0xA1); 											    /* Set Display Start Line */
	send_data(0x00);											    /* Top */

	send_data(0xA2);											    /* Set Display Offset */
	send_data(0x44);											    /* Offset 76 rows */

	send_data(0xA4);											    /* Set DisplaMode,A4:Normal, A5:All ON, A6: All OFF, A7:Inverse */

	send_data(0xA8); 											    /* Set Multiplex Ratio */
	send_data(0x3F); 											    /* 64 mux*/

	send_data(0xB1); 											    /* Set Phase Length */
	send_data(0x22); 												/* [3:0]:Phase 1 period of 1~16 clocks */
																    /* [7:4]:Phase 2 period of 1~16 clocks POR = 0111 0100 */

	send_data(0xB2); 											    /* Set Row Period */
	send_data(0x46); 											    /* [7:0]:18~255, K=P1+P2+GS15 (POR:4+7+29)*/

	send_data(0xB3); 											    /* Set Clock Divide (2) */
	send_data(0xF1); 											    /* [3:0]:1~16, [7:4]:0~16, 70Hz */


	send_data(0xBF); 											    /* Set VSL */
	send_data(0x0D); 											    /* [3:0]:VSL */

	send_data(0xBE); 											    /* Set VCOMH (3) */
	send_data(0x02); 											    /* [7:0]:VCOMH, (0.51 X Vref = 0.51 X 12.5 V = 6.375V)*/

	send_data(0xBC); 											    /* Set VP (4) */
	send_data(0x10); 											    /* [7:0]:VP, (0.67 X Vref = 0.67 X 12.5 V = 8.375V) */

	send_data(0xB8); 											    /* Set Gamma with next 8 bytes */
	send_data(0x01); 											    /* L1[2:1] */
	send_data(0x11); 											    /* L3[6:4], L2[2:0] 0001 0001 */
	send_data(0x22); 											    /* L5[6:4], L4[2:0] 0010 0010 */
	send_data(0x32); 											    /* L7[6:4], L6[2:0] 0011 1011 */
	send_data(0x43); 											    /* L9[6:4], L8[2:0] 0100 0100 */
	send_data(0x54); 											    /* LB[6:4], LA[2:0] 0101 0101 */
	send_data(0x65); 											    /* LD[6:4], LC[2:0] 0110 0110 */
	send_data(0x76); 											    /* LF[6:4], LE[2:0] 1000 0111 */

	send_data(0xAD); 											    /* Set DC-DC */
	send_data(0x02); 											    /* 03=ON, 02=Off */

	send_data(0xAF); 											    /* AF=ON, AE=Sleep Mode */

	for (a=0;a<(128*32);a++) send_char(0x00);						/* display loeschen */

	zeichen_big2 ('A',0,0,0,15);									/* 2 sehr grosse zeichen */
	zeichen_big2 ('B',4,0,0,15);

	zeichen_big ('A',0,4,0,15);									/* 10 grosse zeichen */
	zeichen_big ('B',2,4,0,15);
	zeichen_big ('C',4,4,0,15);
	zeichen_big ('D',6,4,0,15);
	zeichen_big ('E',8,4,0,15);
	zeichen_big ('X',0,6,0,15);
	zeichen_big ('Y',2,6,0,15);
	zeichen_big ('0',4,6,0,15);
	zeichen_big ('1',6,6,0,15);
	zeichen_big ('2',8,6,0,15);

	unsigned char w=0x40;											/* normale zeichen ausgeben */
      unsigned char u=0,v=0;
      for(v=0;v<8;v++)
	  {
		for(u=10;u<20;u++)
        {
		  zeichen (w++,u,v,0,15);
		  if(w==0x80)w=0x20;
		  delay(200);
		}
      }

    for (;;)
	{
	};
}

// zeichenausgabe an bestimmte displayposition - display hat 20 spalten/zeichen und 8 zeilen
// z=zeichen 0x20-0x7f ; spalte=0-19 ; zeile=0-7 ; back(hintergrundfaerbung)=0-15 ; color(zeichenfaerbung)=0-15 

void zeichen (unsigned char z, unsigned char spalte, unsigned char zeile, unsigned char back, unsigned char color)
{
  unsigned char a ,b ,c;
  unsigned int stelle;

  if((z<0x20)||(z>0x7f))z=0x20;
  stelle = 8*(z-0x20);
  
  send_data(0x15);
  send_data(3*spalte);
  send_data((3*spalte)+2);
  send_data(0x75);
  send_data(8*zeile);
  send_data((8*zeile)+7);
  
  for(c=0;c<8;c++)
  {
    b=(back&0x0f)+((back&0x0f)<<4);
    a = pgm_read_byte(&z_code[stelle]); 
    if(a&0x20)b = (b & 0x0f) + ((color&0x0f)<<4);
    if(a&0x10)b = (b & 0xf0) + (color&0x0f);
    send_char(b);
    b=(back&0x0f)+((back&0x0f)<<4);
    a = pgm_read_byte(&z_code[stelle]);
	if(a&0x08)b = (b & 0x0f) + ((color&0x0f)<<4);
    if(a&0x04)b = (b & 0xf0) + (color&0x0f);
    send_char(b);
    b=(back&0x0f)+((back&0x0f)<<4);
    a = pgm_read_byte(&z_code[stelle++]);
	if(a&0x02)b = (b & 0x0f) + ((color&0x0f)<<4);
    if(a&0x01)b = (b & 0xf0) + (color&0x0f);
    send_char(b);
  }
}

// doppelte zeichengroesse an bestimmte displayposition - display hat 20 spalten/zeichen und 8 zeilen
// durch die doppelte zeichengroesse nimmt das zeichen 2 spalten nebeneinander und 2 zeilen untereinander platz ein
// z=zeichen 0x20-0x7f ; spalte=0-19 ; zeile=0-7 ; back(hintergrundfaerbung)=0-15 ; color(zeichenfaerbung)=0-15 

void zeichen_big (unsigned char z, unsigned char spalte, unsigned char zeile, unsigned char back, unsigned char color)
{
  unsigned char a ,b ,c ,d , ba, co;
  unsigned int stelle;

  if((z<0x20)||(z>0x7f))z=0x20;
  stelle = 8*(z-0x20);
  ba=(back&0x0f)+((back&0x0f)<<4);
  co=(color&0x0f)+((color&0x0f)<<4);
  
  send_data(0x15);
  send_data(3*spalte);
  send_data((3*spalte)+5);
  send_data(0x75);
  send_data(8*zeile);
  send_data((8*zeile)+15);
  
  for(c=0;c<8;c++)
  {
    a = pgm_read_byte(&z_code[stelle]); 
	for(d=0;d<2;d++)
	{
      b=ba;
      if(a&0x20)b = co;
      send_char(b);
      b=ba;
      if(a&0x10)b = co;
      send_char(b);
      b=ba;
      if(a&0x08)b = co;
      send_char(b);
      b=ba;
      if(a&0x04)b = co;
      send_char(b);
      b=ba;
      if(a&0x02)b = co;
      send_char(b);
      b=ba;
      if(a&0x01)b = co;
      send_char(b);
    }
    stelle++;
  }
}

// vierfache zeichengroesse an bestimmte displayposition - display hat 20 spalten/zeichen und 8 zeilen
// durch die vierfache zeichengroesse nimmt das zeichen 4 spalten nebeneinander und 4 zeilen untereinander platz ein
// z=zeichen 0x20-0x7f ; spalte=0-19 ; zeile=0-7 ; back(hintergrundfaerbung)=0-15 ; color(zeichenfaerbung)=0-15 

void zeichen_big2 (unsigned char z, unsigned char spalte, unsigned char zeile, unsigned char back, unsigned char color)
{
  unsigned char a ,b ,c ,d , ba, co;
  unsigned int stelle;

  if((z<0x20)||(z>0x7f))z=0x20;
  stelle = 8*(z-0x20);
  ba=(back&0x0f)+((back&0x0f)<<4);
  co=(color&0x0f)+((color&0x0f)<<4);
  
  send_data(0x15);
  send_data(3*spalte);
  send_data((3*spalte)+11);
  send_data(0x75);
  send_data(8*zeile);
  send_data((8*zeile)+31);
  
  for(c=0;c<8;c++)
  {
    a = pgm_read_byte(&z_code[stelle]); 
	for(d=0;d<4;d++)
	{
      b=ba;
      if(a&0x20)b = co;
      send_char(b);
      send_char(b);
      b=ba;
      if(a&0x10)b = co;
      send_char(b);
      send_char(b);
      b=ba;
      if(a&0x08)b = co;
      send_char(b);
      send_char(b);
      b=ba;
      if(a&0x04)b = co;
      send_char(b);
      send_char(b);
      b=ba;
      if(a&0x02)b = co;
      send_char(b);
      send_char(b);
      b=ba;
      if(a&0x01)b = co;
      send_char(b);
      send_char(b);
    }
    stelle++;
  }
}

void send_char(unsigned char zeichen)
{
  PORTA |= (0x04);		
  senden_spi(zeichen);
}

void send_data(unsigned char zeichen)
{
  PORTA &= ~(0x04);	
  senden_spi(zeichen);
  PORTA |= (0x04);		
}

void senden_spi(unsigned char zeichen)
{
  unsigned char a=0, b=0b10000000,c ,d=0;
  PORTA &= ~(0x10);	
  PORTA |= (0x02);		

  for(a=0;a<8;a++)
  { 
    if(zeichen&b)PORTA |= (0x01);
    else PORTA &= ~(0x01);
	PORTA &= ~(0x02);												/* clock low  */
    PORTA |= (0x02);												/* clock high */
    b=b>>1;
  }
  PORTA |= (0x10);													/* cs high */
}

void delay(unsigned char d)										/* zeitschleife */
{
  unsigned char i, j;
  for (i=0; i<d; i++)
	for (j=0; j<255; j++);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线精品视频免费播放| 欧美成人一区二区三区在线观看| 国产三级三级三级精品8ⅰ区| 久久精品国产99国产| 精品久久国产字幕高潮| 国产麻豆视频精品| 中文字幕高清一区| 色婷婷亚洲精品| 天堂久久一区二区三区| 日韩午夜激情av| 国产精选一区二区三区| 免费成人av在线| 精品国产免费久久| 成人激情小说乱人伦| 亚洲激情自拍偷拍| 欧美日韩国产美| 激情五月婷婷综合网| 中文字幕五月欧美| 91精品黄色片免费大全| 国产一区福利在线| 成人欧美一区二区三区白人| 欧美精品在线观看一区二区| 国内偷窥港台综合视频在线播放| 国产精品久久综合| 欧美欧美欧美欧美| 懂色av一区二区夜夜嗨| 亚洲一级片在线观看| 精品处破学生在线二十三| 99国产欧美久久久精品| 日韩一区精品视频| 国产精品久久久久久妇女6080 | 91猫先生在线| 日本怡春院一区二区| 国产精品你懂的| 欧美一区二区三区在线| eeuss国产一区二区三区| 日韩av一区二| 亚洲欧洲性图库| 日韩一区二区在线观看| 91欧美一区二区| 国内精品视频一区二区三区八戒| 亚洲男人天堂一区| 26uuuu精品一区二区| 欧美日韩免费一区二区三区| 国产成人欧美日韩在线电影| 亚洲高清三级视频| 国产精品电影院| 久久欧美中文字幕| 7777精品伊人久久久大香线蕉 | 欧美日韩精品一区二区| 国产成a人无v码亚洲福利| 视频一区二区欧美| 一区二区三区四区中文字幕| 欧美国产激情一区二区三区蜜月| 欧美一区二区三区日韩| 欧美三片在线视频观看| 91色婷婷久久久久合中文| 国产**成人网毛片九色 | 精品国产99国产精品| 在线亚洲免费视频| 波多野结衣亚洲| 国产高清精品久久久久| 激情综合色播激情啊| 捆绑紧缚一区二区三区视频| 午夜成人免费电影| 亚洲第一激情av| 亚洲一区日韩精品中文字幕| 一区二区三区欧美激情| 亚洲人成7777| 亚洲美女免费视频| 亚洲品质自拍视频| 亚洲欧美电影一区二区| 中文字幕欧美一| 成人欧美一区二区三区| 国产精品久99| 一区二区三区在线高清| 亚洲精品水蜜桃| 亚洲一区在线视频观看| 一区二区三区四区激情| 亚洲一区在线免费观看| 亚洲午夜国产一区99re久久| 一区二区三区四区在线| 亚洲码国产岛国毛片在线| 亚洲激情自拍视频| 亚洲成人免费看| 日韩av不卡在线观看| 免费人成在线不卡| 国产一区二区三区高清播放| 国产成人免费高清| 99国内精品久久| 欧美日韩国产欧美日美国产精品| 欧美一区二区三区精品| 日韩精品中文字幕一区二区三区| 久久久久久免费| 日韩av午夜在线观看| 狠狠狠色丁香婷婷综合激情| 国产成人高清视频| av电影在线观看完整版一区二区 | 在线亚洲人成电影网站色www| 色综合网站在线| 欧美日韩视频在线一区二区| 日韩一区二区中文字幕| 国产无一区二区| 亚洲黄色免费电影| 免费精品视频在线| 国产成人精品三级麻豆| 色www精品视频在线观看| 7777精品伊人久久久大香线蕉 | 国产精品久久久久久久久免费樱桃| 中文字幕在线一区| 丝袜美腿亚洲色图| 国产精品一区久久久久| 色素色在线综合| 日韩片之四级片| 国产精品福利电影一区二区三区四区| 亚洲一卡二卡三卡四卡五卡| 国内久久精品视频| 在线观看一区二区视频| 精品美女被调教视频大全网站| 亚洲精品在线三区| 玉米视频成人免费看| 美女视频黄 久久| 99re热这里只有精品免费视频| 欧美日韩成人高清| 亚洲国产成人午夜在线一区| 亚洲成a人片综合在线| 国产精品白丝av| 欧美一区二区视频在线观看| 亚洲人被黑人高潮完整版| 亚洲成人动漫在线观看| 国产精品18久久久久久久久 | 亚洲超碰精品一区二区| 成年人国产精品| 欧美电影精品一区二区| 亚洲在线视频一区| 国产99精品在线观看| 国产精品萝li| 精品一区在线看| 欧美日本国产视频| 中文字幕一区av| 韩国精品一区二区| 在线不卡免费欧美| 亚洲乱码日产精品bd| 国产一区视频在线看| 欧美精品亚洲二区| 亚洲激情图片一区| www.亚洲激情.com| 久久精品亚洲精品国产欧美| 美腿丝袜亚洲综合| 欧美剧情片在线观看| 亚洲免费三区一区二区| 成人免费黄色大片| 国产欧美日产一区| 国产精品亚洲成人| www亚洲一区| 久久国产精品色| 欧美一区二区大片| 五月婷婷激情综合网| 日本高清不卡视频| 亚洲人成小说网站色在线| 成人动漫中文字幕| 国产精品第五页| 成人免费看视频| 中文字幕一区二区不卡| 99国产精品久久久久久久久久久| 久久久久久久av麻豆果冻| 麻豆精品在线观看| 欧美一级欧美三级在线观看| 日韩高清国产一区在线| 91精品国产综合久久精品麻豆 | 亚洲私人黄色宅男| 99综合影院在线| 亚洲乱码国产乱码精品精可以看| 色婷婷激情综合| 亚洲国产欧美一区二区三区丁香婷| 在线这里只有精品| 亚洲第一综合色| 91麻豆精品91久久久久同性| 老司机免费视频一区二区| www成人在线观看| 国产精品自拍av| 国产精品入口麻豆九色| 9久草视频在线视频精品| 一区二区三区不卡视频在线观看| 在线观看av一区二区| 亚洲午夜精品在线| 欧美成人午夜电影| 国产毛片精品国产一区二区三区| 国产精品国产三级国产aⅴ原创| 99精品视频一区| 婷婷综合另类小说色区| 亚洲精品欧美二区三区中文字幕| 欧美私人免费视频| 美女视频免费一区| 国产精品女同一区二区三区| 色一情一乱一乱一91av| 日本视频免费一区| 国产亚洲一区二区在线观看| 色综合一个色综合| 久久99精品久久久久久动态图|