⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 AVR单片机控制nokia3510i nokia6100液晶显示屏的库文件及例程
💻 C
字号:
#include <inttypes.h>
#include "..\lfsr\lfsr.h"
#include "..\lib\glcd.h"

#ifdef USE_FONTS
#include "..\font\nums.h"
#include "..\font\eye.h"
#include "..\font\f8x11.h"
#endif

void testEye(void) {
  #ifdef eye_H
    uint8_t k = (lfsr(4) % 3) + 1;
    glcdSelectFont(eye, glcdFontRead);
    glcdSetColor(0, NONE);
    glcdSetColor(1, lfsr(8));
    glcdSetColor(2, lfsr(8));
    glcdSetColor(3, lfsr(8));
    glcdSetColor(1 + (k +1) % 3, NONE);
    for (uint8_t i = 0; i < 64; i++) {
      glcdSetColor(k, lfsr(8));
      glcdMoveTo((SCREEN_RIGHT - glcd_FontWidth) / 2, (SCREEN_BOTTOM - glcd_FontHeight) / 2);
      glcdDrawChar(0x20);
    }
  #endif
}

void testSymbols(uint8_t iteration) {

  #ifdef nums_H
    glcdSelectFont(nums, glcdFontRead);
    glcdSetBkColor(NONE);
    for (; iteration > 0; iteration--) {
      glcdClearScreen();
      for (uint8_t i = 0; i < 255; i++) {
        glcdSetColor(1, lfsr(8));
        glcdSetColor(2, lfsr(8));
        glcdSetColor(3, lfsr(8));
        glcdMoveTo(lfsr(7), lfsr(7));
        glcdDrawChar(lfsr(4) % 11 + 32);
      }
    }
  #endif
}

#ifdef USE_LINES
void testLines(uint8_t iteration) {

    glcdSelectFont(nums, glcdFontRead);
    for (uint8_t i = 0; i < iteration; i++) {
      glcdClearScreen();
      glcdSetColor(0, SCREEN_COLOR);
      glcdSetColor(1, BLACK);
      glcdSetColor(2, GOLD);
      glcdSetColor(3, RED);
      glcdMoveTo((SCREEN_RIGHT - glcd_FontWidth) / 2, (SCREEN_BOTTOM - glcd_FontHeight) / 2);
      glcdDrawChar(0x20 + i % 11);
      for (glcdCoord_t x = SCREEN_LEFT; x < SCREEN_WIDTH; x++) {
        glcdSetFgColor(YELLOW);
        glcdLine(x, SCREEN_TOP, x, SCREEN_BOTTOM);
        glcdSetFgColor(GREEN);
        glcdLine(SCREEN_WIDTH - x, SCREEN_TOP, SCREEN_WIDTH - x, SCREEN_BOTTOM);
        glcdSetFgColor(BLUE);
        glcdLine(SCREEN_LEFT, SCREEN_TOP, x, SCREEN_BOTTOM);
        glcdSetFgColor(RED);
        glcdLine(SCREEN_RIGHT, SCREEN_BOTTOM, SCREEN_WIDTH - x, SCREEN_TOP);
      }
    }
}

void testLines2(uint8_t iteration) {

    for (uint8_t i = 0; i < iteration; i++) {
      glcdClearScreen();
      for (uint8_t j = 0; j < 255; j++) {
        glcdSetFgColor(lfsr(8));
        glcdLine(lfsr(7) +2, lfsr(7) +2, lfsr(7) +2, lfsr(7) +2);
      }
    }
}
#endif

void testRects(uint8_t iteration) {

    for (; iteration > 0; iteration--) {
      glcdClearScreen();
      for (uint8_t i = 0; i < 255; i++) {
        glcdSetColors(lfsr(8), lfsr(8));
        glcdRectangle(lfsr(7) +2, lfsr(7) +2, lfsr(7) +2, lfsr(7) +2);
      }
    }
}

#ifdef USE_ELLIPSES
void testEllipses(uint8_t iteration) {

    for (; iteration > 0; iteration--) {
      glcdClearScreen();
      for (uint8_t i = 0; i < 255; i++) {
        glcdSetColors(lfsr(8), lfsr(8));
        glcdEllipse(lfsr(7) +2, lfsr(7) +2, lfsr(6), lfsr(6));
      }
    }
}
#endif


int main(void) {

#define COUNT  2

	glcdDisplayInit();
	glcdClearScreen();

    glcdSetOrientation(0);
    glcdSelectFont(f8x11, glcdFontRead);
    glcdSetBkColor(YELLOW);
    glcdFrame(0, 0, 97, 66);
    glcdSetRect(glcd_Window, 1, 1, 95, 64);
    glcdMoveTo(glcd_Window.X1, glcd_Window.Y1 +4);
    glcdPrint_P(PSTR("Nokia 3510i\nDisplay Test\nby\nBluemidi"));
    glcdWait(5000);

    while (1) {
      testRects(COUNT);
      testEye();
  #ifdef USE_LINES
      testLines(COUNT);
      testEye();
      testLines2(COUNT);
      testEye();
  #endif
  #ifdef USE_ELLIPSES
      testEllipses(COUNT);
      testEye();
  #endif
      testSymbols(COUNT);
      testEye();

  // setze Clipping zur點k auf vollen Screen
      glcdSetRect(glcd_Clip, SCREEN_LEFT, SCREEN_TOP, SCREEN_RIGHT, SCREEN_BOTTOM);
      glcdClearScreen();
  // 鋘dere Display Orientation zuf鋖lig
      glcdSetOrientation(lfsr(3));
      if (lfsr(3)) {
    // erzeuge neues zuf鋖liges Clipping in einem Rechteck mit schwarzem Rahmen
        glcdCoord_t x1,y1,x2,y2;
        while(1) {
          x1 = lfsr(5);
          y1 = lfsr(5);
          x2 = x1 + lfsr(7);
          y2 = y1 + lfsr(7);
          if ((x1 + 20 < x2) & (y1 + 20 < y2) & (x1 > 1) & (y1 > 1) & (x2 < SCREEN_RIGHT) & (y2 < SCREEN_BOTTOM)) break;
        }
    // nun Rechteck um das Clipping zeichnen
        glcdSetBkColor(NONE);
        glcdSetFgColor(BLACK);
        glcdRectangle(x1, y1, x2, y2);

    // die Clipping-Koordinaten m黶sen abh鋘gig von der Display Orientation angepasst werden !!
        if (glcd_MemCtrl && (1 << MEM_90) == 0) {
          glcdSwapCoord(x1, y1);
          glcdSwapCoord(x2, y2);
        }
        glcdSetRect(glcd_Clip, ++x1, ++y1, --x2, --y2);
      }
    }
	return(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -