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

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

?? osram96x16.c

?? freertosV4.40 是一種small的嵌入式系統(tǒng)。利于嵌入式開好者入門學(xué)習(xí)嵌入式操作系統(tǒng)。通過對(duì)于源碼的學(xué)習(xí)可以很好的掌握freertos的運(yùn)行機(jī)制。
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
//*****************************************************************************
//
// osram96x16.c - Driver for the OSRAM 96x16 graphical OLED display.
//
// Copyright (c) 2006-2007 Luminary Micro, Inc.  All rights reserved.
//
// Software License Agreement
//
// Luminary Micro, Inc. (LMI) is supplying this software for use solely and
// exclusively on LMI's microcontroller products.
//
// The software is owned by LMI and/or its suppliers, and is protected under
// applicable copyright laws.  All rights are reserved.  Any use in violation
// of the foregoing restrictions may subject the user to criminal sanctions
// under applicable laws, as well as to civil liability for the breach of the
// terms and conditions of this license.
//
// THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED
// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
//
// This is part of revision 1049 of the Stellaris Driver Library.
//
//*****************************************************************************

//*****************************************************************************
//
//! \addtogroup ev_lm3s811_api
//! @{
//
//*****************************************************************************

#include "hw_i2c.h"
#include "hw_memmap.h"
#include "hw_sysctl.h"
#include "hw_types.h"
#include "debug.h"
#include "gpio.h"
#include "i2c.h"
#include "sysctl.h"
#include "osram96x16.h"

//*****************************************************************************
//
// The I2C slave address of the SSD0303 controller on the OLED display.
//
//*****************************************************************************
#define SSD0303_ADDR            0x3d

//*****************************************************************************
//
// A 5x7 font (in a 6x8 cell, where the sixth column is omitted from this
// table) for displaying text on the OLED display.  The data is organized as
// bytes from the left column to the right column, with each byte containing
// the top row in the LSB and the bottom row in the MSB.
//
//*****************************************************************************
static const unsigned char g_pucFont[95][5] =
{
    { 0x00, 0x00, 0x00, 0x00, 0x00 }, // " "
    { 0x00, 0x00, 0x4f, 0x00, 0x00 }, // !
    { 0x00, 0x07, 0x00, 0x07, 0x00 }, // "
    { 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // #
    { 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $
    { 0x23, 0x13, 0x08, 0x64, 0x62 }, // %
    { 0x36, 0x49, 0x55, 0x22, 0x50 }, // &
    { 0x00, 0x05, 0x03, 0x00, 0x00 }, // '
    { 0x00, 0x1c, 0x22, 0x41, 0x00 }, // (
    { 0x00, 0x41, 0x22, 0x1c, 0x00 }, // )
    { 0x14, 0x08, 0x3e, 0x08, 0x14 }, // *
    { 0x08, 0x08, 0x3e, 0x08, 0x08 }, // +
    { 0x00, 0x50, 0x30, 0x00, 0x00 }, // ,
    { 0x08, 0x08, 0x08, 0x08, 0x08 }, // -
    { 0x00, 0x60, 0x60, 0x00, 0x00 }, // .
    { 0x20, 0x10, 0x08, 0x04, 0x02 }, // /
    { 0x3e, 0x51, 0x49, 0x45, 0x3e }, // 0
    { 0x00, 0x42, 0x7f, 0x40, 0x00 }, // 1
    { 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2
    { 0x21, 0x41, 0x45, 0x4b, 0x31 }, // 3
    { 0x18, 0x14, 0x12, 0x7f, 0x10 }, // 4
    { 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5
    { 0x3c, 0x4a, 0x49, 0x49, 0x30 }, // 6
    { 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7
    { 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8
    { 0x06, 0x49, 0x49, 0x29, 0x1e }, // 9
    { 0x00, 0x36, 0x36, 0x00, 0x00 }, // :
    { 0x00, 0x56, 0x36, 0x00, 0x00 }, // ;
    { 0x08, 0x14, 0x22, 0x41, 0x00 }, // <
    { 0x14, 0x14, 0x14, 0x14, 0x14 }, // =
    { 0x00, 0x41, 0x22, 0x14, 0x08 }, // >
    { 0x02, 0x01, 0x51, 0x09, 0x06 }, // ?
    { 0x32, 0x49, 0x79, 0x41, 0x3e }, // @
    { 0x7e, 0x11, 0x11, 0x11, 0x7e }, // A
    { 0x7f, 0x49, 0x49, 0x49, 0x36 }, // B
    { 0x3e, 0x41, 0x41, 0x41, 0x22 }, // C
    { 0x7f, 0x41, 0x41, 0x22, 0x1c }, // D
    { 0x7f, 0x49, 0x49, 0x49, 0x41 }, // E
    { 0x7f, 0x09, 0x09, 0x09, 0x01 }, // F
    { 0x3e, 0x41, 0x49, 0x49, 0x7a }, // G
    { 0x7f, 0x08, 0x08, 0x08, 0x7f }, // H
    { 0x00, 0x41, 0x7f, 0x41, 0x00 }, // I
    { 0x20, 0x40, 0x41, 0x3f, 0x01 }, // J
    { 0x7f, 0x08, 0x14, 0x22, 0x41 }, // K
    { 0x7f, 0x40, 0x40, 0x40, 0x40 }, // L
    { 0x7f, 0x02, 0x0c, 0x02, 0x7f }, // M
    { 0x7f, 0x04, 0x08, 0x10, 0x7f }, // N
    { 0x3e, 0x41, 0x41, 0x41, 0x3e }, // O
    { 0x7f, 0x09, 0x09, 0x09, 0x06 }, // P
    { 0x3e, 0x41, 0x51, 0x21, 0x5e }, // Q
    { 0x7f, 0x09, 0x19, 0x29, 0x46 }, // R
    { 0x46, 0x49, 0x49, 0x49, 0x31 }, // S
    { 0x01, 0x01, 0x7f, 0x01, 0x01 }, // T
    { 0x3f, 0x40, 0x40, 0x40, 0x3f }, // U
    { 0x1f, 0x20, 0x40, 0x20, 0x1f }, // V
    { 0x3f, 0x40, 0x38, 0x40, 0x3f }, // W
    { 0x63, 0x14, 0x08, 0x14, 0x63 }, // X
    { 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y
    { 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z
    { 0x00, 0x7f, 0x41, 0x41, 0x00 }, // [
    { 0x02, 0x04, 0x08, 0x10, 0x20 }, // "\"
    { 0x00, 0x41, 0x41, 0x7f, 0x00 }, // ]
    { 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^
    { 0x40, 0x40, 0x40, 0x40, 0x40 }, // _
    { 0x00, 0x01, 0x02, 0x04, 0x00 }, // `
    { 0x20, 0x54, 0x54, 0x54, 0x78 }, // a
    { 0x7f, 0x48, 0x44, 0x44, 0x38 }, // b
    { 0x38, 0x44, 0x44, 0x44, 0x20 }, // c
    { 0x38, 0x44, 0x44, 0x48, 0x7f }, // d
    { 0x38, 0x54, 0x54, 0x54, 0x18 }, // e
    { 0x08, 0x7e, 0x09, 0x01, 0x02 }, // f
    { 0x0c, 0x52, 0x52, 0x52, 0x3e }, // g
    { 0x7f, 0x08, 0x04, 0x04, 0x78 }, // h
    { 0x00, 0x44, 0x7d, 0x40, 0x00 }, // i
    { 0x20, 0x40, 0x44, 0x3d, 0x00 }, // j
    { 0x7f, 0x10, 0x28, 0x44, 0x00 }, // k
    { 0x00, 0x41, 0x7f, 0x40, 0x00 }, // l
    { 0x7c, 0x04, 0x18, 0x04, 0x78 }, // m
    { 0x7c, 0x08, 0x04, 0x04, 0x78 }, // n
    { 0x38, 0x44, 0x44, 0x44, 0x38 }, // o
    { 0x7c, 0x14, 0x14, 0x14, 0x08 }, // p
    { 0x08, 0x14, 0x14, 0x18, 0x7c }, // q
    { 0x7c, 0x08, 0x04, 0x04, 0x08 }, // r
    { 0x48, 0x54, 0x54, 0x54, 0x20 }, // s
    { 0x04, 0x3f, 0x44, 0x40, 0x20 }, // t
    { 0x3c, 0x40, 0x40, 0x20, 0x7c }, // u
    { 0x1c, 0x20, 0x40, 0x20, 0x1c }, // v
    { 0x3c, 0x40, 0x30, 0x40, 0x3c }, // w
    { 0x44, 0x28, 0x10, 0x28, 0x44 }, // x
    { 0x0c, 0x50, 0x50, 0x50, 0x3c }, // y
    { 0x44, 0x64, 0x54, 0x4c, 0x44 }, // z
    { 0x00, 0x08, 0x36, 0x41, 0x00 }, // {
    { 0x00, 0x00, 0x7f, 0x00, 0x00 }, // |
    { 0x00, 0x41, 0x36, 0x08, 0x00 }, // }
    { 0x02, 0x01, 0x02, 0x04, 0x02 }, // ~
};

//*****************************************************************************
//
// The sequence of commands used to initialize the SSD0303 controller.  Each
// command is described as follows:  there is a byte specifying the number of
// bytes in the I2C transfer, followed by that many bytes of command data.
//
//*****************************************************************************
static const unsigned char g_pucOSRAMInit[] =
{
    //
    // Turn off the panel
    //
    0x04, 0x80, 0xae, 0x80, 0xe3,

    //
    // Set lower column address
    //
    0x04, 0x80, 0x04, 0x80, 0xe3,

    //
    // Set higher column address
    //
    0x04, 0x80, 0x12, 0x80, 0xe3,

    //
    // Set contrast control register
    //
    0x06, 0x80, 0x81, 0x80, 0x2b, 0x80, 0xe3,

    //
    // Set segment re-map
    //
    0x04, 0x80, 0xa1, 0x80, 0xe3,

    //
    // Set display start line
    //
    0x04, 0x80, 0x40, 0x80, 0xe3,

    //
    // Set display offset
    //
    0x06, 0x80, 0xd3, 0x80, 0x00, 0x80, 0xe3,

    //
    // Set multiplex ratio
    //
    0x06, 0x80, 0xa8, 0x80, 0x0f, 0x80, 0xe3,

    //
    // Set the display to normal mode
    //
    0x04, 0x80, 0xa4, 0x80, 0xe3,

    //
    // Non-inverted display
    //
    0x04, 0x80, 0xa6, 0x80, 0xe3,

    //
    // Set the page address
    //
    0x04, 0x80, 0xb0, 0x80, 0xe3,

    //
    // Set COM output scan direction
    //
    0x04, 0x80, 0xc8, 0x80, 0xe3,

    //
    // Set display clock divide ratio/oscillator frequency
    //
    0x06, 0x80, 0xd5, 0x80, 0x72, 0x80, 0xe3,

    //
    // Enable mono mode
    //
    0x06, 0x80, 0xd8, 0x80, 0x00, 0x80, 0xe3,

    //
    // Set pre-charge period
    //
    0x06, 0x80, 0xd9, 0x80, 0x22, 0x80, 0xe3,

    //
    // Set COM pins hardware configuration
    //
    0x06, 0x80, 0xda, 0x80, 0x12, 0x80, 0xe3,

    //
    // Set VCOM deslect level
    //
    0x06, 0x80, 0xdb, 0x80, 0x0f, 0x80, 0xe3,

    //
    // Set DC-DC on
    //
    0x06, 0x80, 0xad, 0x80, 0x8b, 0x80, 0xe3,

    //
    // Turn on the panel
    //
    0x04, 0x80, 0xaf, 0x80, 0xe3,
};

//*****************************************************************************
//
// The inter-byte delay required by the SSD0303 OLED controller.
//
//*****************************************************************************
static unsigned long g_ulDelay;

//*****************************************************************************
//
//! \internal
//!
//! Provide a small delay.
//!
//! \param ulCount is the number of delay loop iterations to perform.
//!
//! Since the SSD0303 controller needs a delay between bytes written to it over
//! the I2C bus, this function provides a means of generating that delay.  It
//! is written in assembly to keep the delay consistent across tool chains,
//! avoiding the need to tune the delay based on the tool chain in use.
//!
//! \return None.
//
//*****************************************************************************
#if defined(ewarm)
static void
OSRAMDelay(unsigned long ulCount)
{
    __asm("    subs    r0, #1\n"
          "    bne     OSRAMDelay\n"
          "    bx      lr");
}
#endif
#if defined(gcc)
static void __attribute__((naked))
OSRAMDelay(unsigned long ulCount)
{
    __asm("    subs    r0, #1\n"
          "    bne     OSRAMDelay\n"
          "    bx      lr");
}
#endif
#if defined(rvmdk) || defined(__ARMCC_VERSION)
__asm void
OSRAMDelay(unsigned long ulCount)
{
    subs    r0, #1;
    bne     OSRAMDelay;
    bx      lr;
}
#endif

//*****************************************************************************
//
//! \internal
//!
//! Start a transfer to the SSD0303 controller.
//!
//! \param ucChar is the first byte to be written to the controller.
//!
//! This function will start a transfer to the SSD0303 controller via the I2C
//! bus.
//!
//! The data is written in a polled fashion; this function will not return

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
懂色av一区二区在线播放| 日韩欧美国产一二三区| 亚洲午夜激情网页| 欧美亚洲综合一区| 日本在线不卡一区| 久久久一区二区三区| 成人免费福利片| 亚洲黄一区二区三区| 欧美伦理影视网| 黑人巨大精品欧美一区| 欧美激情在线一区二区| 一本大道久久a久久精品综合| 一级日本不卡的影视| 91麻豆精品国产91久久久久久| 狠狠色2019综合网| 亚洲婷婷综合色高清在线| 欧美日韩一区二区三区四区五区| 蜜臀91精品一区二区三区| 欧美激情中文字幕| 欧美调教femdomvk| 国产综合久久久久影院| 亚洲天堂av一区| 91麻豆精品国产91久久久久 | 日韩在线一区二区| 亚洲精品一区二区三区在线观看 | 久久九九全国免费| 99热国产精品| 天堂成人免费av电影一区| 久久久无码精品亚洲日韩按摩| 97久久超碰国产精品电影| 香港成人在线视频| 久久精品夜色噜噜亚洲a∨| 在线视频你懂得一区| 久久精品99国产精品日本| 国产精品夫妻自拍| 欧美一区二区性放荡片| 粉嫩欧美一区二区三区高清影视| 亚洲一级电影视频| 久久精品亚洲精品国产欧美kt∨| 欧洲国内综合视频| 国产一区二区在线观看视频| 亚洲精品国产a久久久久久| 日韩一级二级三级| 色综合中文字幕国产| 午夜精品福利一区二区三区av| 久久婷婷国产综合精品青草| 在线一区二区三区四区| 国产伦精品一区二区三区视频青涩| 一区二区三区不卡在线观看| 久久一区二区三区国产精品| 欧美日韩午夜在线视频| 国产99久久久国产精品潘金网站| 无码av免费一区二区三区试看 | 成人av一区二区三区| 日本成人在线看| 日韩理论片在线| 久久久精品一品道一区| 欧美日韩aaaaa| 99久久免费精品| 国产一区二区视频在线| 五月天国产精品| 亚洲精品久久嫩草网站秘色| 国产喷白浆一区二区三区| 91精品国产91综合久久蜜臀| 色偷偷久久一区二区三区| 国产成人综合自拍| 久草在线在线精品观看| 午夜精品福利一区二区三区av | 欧美一区二区在线观看| 色综合久久中文综合久久牛| 国产精品影视在线| 日韩在线一区二区| 亚洲高清中文字幕| 亚洲人被黑人高潮完整版| 中文字幕久久午夜不卡| 欧美tickling挠脚心丨vk| 欧美男同性恋视频网站| 91啪亚洲精品| 成人精品免费视频| 国产一区在线精品| 久久av老司机精品网站导航| 天天射综合影视| 亚洲一区二区美女| 亚洲少妇最新在线视频| 国产精品视频九色porn| 久久精品人人做| 精品国产一二三| 日韩美女一区二区三区| 91精品国产综合久久蜜臀| 欧美日韩一区二区不卡| 欧洲亚洲精品在线| 91视频在线观看免费| 成人激情免费电影网址| 福利一区二区在线| 国产精品一二三| 国产在线精品一区二区夜色| 美国av一区二区| 久久不见久久见中文字幕免费| 日韩激情中文字幕| 午夜精品123| 五月婷婷综合在线| 亚瑟在线精品视频| 无码av中文一区二区三区桃花岛| 五月婷婷久久丁香| 午夜不卡av在线| 婷婷开心激情综合| 日本美女一区二区| 激情另类小说区图片区视频区| 经典三级在线一区| 国产精品一品二品| 国产成人精品亚洲日本在线桃色| 国产成人精品综合在线观看| 成人精品国产免费网站| www.欧美日韩| 91免费看视频| 欧美写真视频网站| 欧美高清视频www夜色资源网| 5566中文字幕一区二区电影| 日韩午夜激情免费电影| 精品国产自在久精品国产| 337p粉嫩大胆色噜噜噜噜亚洲 | 日韩精品午夜视频| 免费欧美在线视频| 寂寞少妇一区二区三区| 国产99精品视频| 91麻豆视频网站| 欧美三级欧美一级| 日韩欧美中文字幕公布| 久久精品视频免费观看| 亚洲欧美偷拍另类a∨色屁股| 亚洲一区二区三区在线| 日韩精品一二三四| 韩国av一区二区三区| 成人av在线一区二区| 91成人免费在线| 欧美电影免费观看高清完整版在| 国产日产欧美精品一区二区三区| 日产精品久久久久久久性色| 亚洲在线中文字幕| 国产麻豆精品视频| 狠狠色2019综合网| 99麻豆久久久国产精品免费| 欧美日韩一级二级| 精品人伦一区二区色婷婷| 国产精品蜜臀在线观看| 亚洲综合在线第一页| 日韩电影在线免费看| 国产iv一区二区三区| 欧美在线播放高清精品| 欧美va在线播放| 国产精品嫩草影院av蜜臀| 亚洲国产日日夜夜| 国产综合久久久久影院| 色婷婷综合久久久中文字幕| 欧美一级一级性生活免费录像| 国产视频一区二区三区在线观看| 亚洲制服欧美中文字幕中文字幕| 精品一区二区三区影院在线午夜| av在线不卡电影| 欧美一二三区精品| 国产精品福利影院| 日韩电影免费在线看| 粉嫩绯色av一区二区在线观看 | 欧美色涩在线第一页| 久久亚洲精品小早川怜子| 亚洲免费大片在线观看| 久久99久久99小草精品免视看| 97久久超碰国产精品| 精品久久国产老人久久综合| 亚洲色图制服诱惑 | 一区二区三区欧美视频| 久久99久久99精品免视看婷婷| 91蜜桃免费观看视频| 精品国产91久久久久久久妲己| 亚洲人成网站影音先锋播放| 紧缚奴在线一区二区三区| 日本高清不卡aⅴ免费网站| 久久综合色鬼综合色| 亚洲国产视频在线| 不卡的电视剧免费网站有什么| 91精品国产综合久久精品图片| 136国产福利精品导航| 久久国产精品99精品国产 | 91国偷自产一区二区开放时间| 精品成人私密视频| 亚洲国产日韩一级| 成人午夜视频福利| 日韩免费一区二区| 一区二区三区日韩| 成人精品视频.| www日韩大片| 日韩av一区二| 在线亚洲+欧美+日本专区| 国产性做久久久久久| 毛片一区二区三区| 欧美三级韩国三级日本三斤| 亚洲色图.com| 豆国产96在线|亚洲| 精品国产乱码久久久久久夜甘婷婷| 亚洲福利电影网|