u8glib 예제

Postato il 2 Ago 2019 in Senza categoria

이러한 디스플레이 페이지 뒤에 추론에 조금 더 깊이 탐구, 그들은 디스플레이 사용의 메모리 (RAM) 풋 프린트를 줄이기 위해 제공 됩니다. 디스플레이를 직접 또는 쉽게 기록할 수 없으므로 디스플레이 콘텐츠(픽셀)를 메모리에 캐시해야 합니다. 그러나 디스플레이 크기로 인해 전체 디스플레이 콘텐츠를 메모리에 캐시하는 것이 항상 가능한 것은 아닙니다. 예를 들어 일반적인 128×64 원더에는 1KB 메모리에 값을 저장할 수 있는 8K 픽셀이 있습니다. 마이크로 프로세서가 2KB의 RAM만 말할 수있는 액세스 권한이있는 경우 디스플레이는 절반 이상을 강탈합니다. 따라서 디스플레이 캐시 페이징 아이디어. 디스플레이 캐시는 이미 제한된 양의 RAM을 너무 많이 사용하지 않도록 하기 위해 (128 × 64 디스플레이의 기본값은 각각 128 바이트가있는 8 페이지)가 작아지습니다. nextPage()에 대한 호출이 이루어질 때마다 캐시는 페이지 ID와 함께 디스플레이로(I2C 또는 SPI와 같은 선택한 프로토콜을 통해) 전송되고 디스플레이의 해당 부분이 그려집니다. 예를 들어 기본 128×64 디스플레이의 경우 디스플레이의 8개 섹션을 모두 새로 고치려면 nextPage() 8번 호출해야 합니다. 또한 메모리에 캐시된 페이지는 한 번에 한 페이지에 대해서만 픽셀을 보유할 수 있으므로 연속적인 nextPage() 호출에 대한 데이터로 다시 채워야 합니다. 표시 라이브러리의 드로잉 루틴은 디스플레이에 무언가를 그리도록 호출될 때 다음에 디스플레이로 전송될 활성 페이지에만 픽셀을 투영하도록 합니다. 드로잉 루틴을 여러 번 실행해야 하는 작업입니다.

페이지의 일부인 픽셀은 표시 페이지 캐시에 저장되고 다른 픽셀은 무시됩니다. 그것은 마스크 / 템플릿을 통해 그리기 같은 느낌. 템플릿으로 스프레이 페인팅 표지판을 거의 비슷하게 합니다. 따라서이 라이브러리는 엄청난 메모리 절감을 허용하지만 비용없이 제공되지는 않습니다. 메모리는 코드 크기와 물론 실행 속도를 희생하여 저장됩니다. 고급 프로그래머는 이 표시 페이지 표시를 활용하고 코드(및 라이브러리 코드)를 수정하여 도면 속도를 향상시킬 수 있어야 합니다. 건배. 그림 루프의 각 반복은 새 화면을 만듭니다. 예를 들어 첫 번째 그림 루프에 상자를 그린 다음 다른 그림의 원을 그리며 동일한 디스플레이에 표시될 것으로 예상할 수 없습니다.