<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                >[success] **技術支持說明** > 1.**客服**提供簡單的技術支持,一般自主學習為主 > 2.可到官方問答社區中提問:[**去提問**](https://bbs.csdn.net/forums/nb-iot) > 3.工程師**會盡快**解答社區問題,但他們是一線開發,【**難以保證**】解答時效,解答辛苦,感謝理解! <br/> 本節課將講解使用SPI總線驅動OLED顯示屏來顯示字符。 <br/> ## **OLED 顯示技術簡介** OLED(Organic Light-Emitting Diode)顯示技術具有自發光、廣視角、幾乎無窮高的對比度、較低耗電、反應速度快等優點。 ### 開發套件中的0.96英寸OLED的實物圖如下圖所示,其分辨率是64×128像素,即縱向有64個像素點、橫向有128個像素點。 ![](https://img.kancloud.cn/a4/f8/a4f872aacfe164a898c649138846c200_404x360.png =300x) <br/> ## **SPI通信協議簡介** SPI的全稱是Serial Peripheral Interface,是一種高速的、全雙工、同步的通信總線。配套的OLED顯示屏便是使用SPI通信協議。 <br/> ## **字庫與圖庫** 為了使OLED屏幕能夠正常地顯示各種字符,還需要先準備好一套字庫,例如標準ASCII字庫等。 <br/> ## **顯示器 HAL API設計** 顯示器的相關的API設計較為復雜,其架構如下: ![](https://img.kancloud.cn/9f/7d/9f7d965156f86d4c14adef507314e80d_466x576.png =250x) ### 相關的文件如下圖所示。 ![](https://img.kancloud.cn/ba/80/ba80efe251415b273756bf50fca06a62_303x781.png =250x) ### 分別簡單介紹一下各個文件: * hal\_spi.h和hal\_spi.c **通用SPI驅動API**,適用于使用SPI通信的多種設備 ### * hal\_lcd\_spi.h和hal\_lcd\_spi.c 基于通用SPI驅動API(hal\_spi)適配出適用于顯示器的驅動API,此API還需要配置字庫文件font\_v\_8x16.h文件工作 ### * hal\_oled12864.h和hal\_oled12864.c 基于顯示器的驅動API封裝出方便開發者使用的API。一般地,**開發者只需要學習使用此API即可使用顯示器了**,因此下文將只講述此API。 <br/> **編寫代碼** 打開本節課配套的工程,筆者把上述的.c文件以及必要的標準庫文件添加進工程了,如圖所示。 ![](https://img.kancloud.cn/4e/c3/4ec3fd8e71aae60e5653b4f7eeebb24f_375x705.png =250x) <br/> 打開hal_oled12864.h文件,我們可以看到兩個重要的函數,代碼如下: ``` /** * 初始化顯示器 */ void halOLED12864Init(void); /** * 清除屏幕中的顯示內容 */ void halOLED12864ClearScreen(void); /** * @fn halOLED12864Show * * @brief 在屏幕上顯示字符串,支持的字符格式:8x16 ASCII字符 * * @param line - 參數值范圍:0 ~ 3 * @param column - 參數值范圍:0 ~ 127 * @param str - 待顯示的字符串 * */ void halOLED12864ShowX16(unsigned char line, unsigned char column, const unsigned char *str); ``` ### **halOLED12864ShowX16 使用詳解** 配套的OLED顯示屏的分辨率為64x128像素,可以把其理解為64行和128列的二維表格。halOLED12864ShowX16函數支持顯示8x16的標準ASCII字符,其中的8x16是指占據8行的16列的字體。因此可以理解為halOLED12864ShowX16函數支持顯示4行ASCII字符,于是參數line的取值范圍便是0~3,但是參數column仍是使用像素點來表示在第幾個像素的位置開始顯示字符,因此其取值范圍為0~127。 <br/> ## **使用顯示器 HAL API** 編寫好顯示器 HAL API后,顯示器的使用非常簡單。在配套工程的main.c文件中添加如下代碼: ``` int main(void) { halSystemInit();//系統初始化 halOLED12864Init();//OLED顯示器初始化 /* Infinite loop */ while (1) { /* Test1 - Show 8x16 Char */ halOLED12864ShowX16(0, 0, (uint8_t *)"0123456789"); halOLED12864ShowX16(1, 0, (uint8_t *)"abcdefghiABCDE"); halOLED12864ShowX16(2, 0, (uint8_t *)"{}[]()!@#$%"); halOLED12864ShowX16(3, 0, (uint8_t *)"==========>"); halSystemDelayUs(2000000);//延時2秒 /* Test2 - Clear screen */ halOLED12864ClearScreen();//清空屏幕內容 halSystemDelayUs(1000000);//延時1秒 } } ``` <br/> ## **測試** * 打開本課程配套的源代碼,編譯鏈接生成Hex文件 ### * 把OLED顯示器按如圖所示插入到開發板中 ![](https://img.kancloud.cn/05/2e/052e0fcb904938ddd881d51616ec73fb_2736x1427.png =350x) >[danger] 注意,開發板與顯示器是右邊對齊。 ### * 把Hex文件燒錄到開發板中 ### * 在通電的條件下,按下復位按鍵RESET,復位STM32開發板 ### * 可以看到如圖所示效果: ![](https://img.kancloud.cn/eb/e8/ebe89b0d8127536fc916535d8d0feb06_358x420.png =300x) <br/> <br/> ## **商務合作** 如有以下需求,可掃碼添加管理員好友,注明“**商務合作**” * 項目定制開發,技術范圍:**NB-IoT**、**CATn(4G)**、**WiFi**、**ZigBee**、**BLE Mesh**以及**STM32**、**嵌入式Linux**等; * 入駐平臺,成為講師; * 接項目賺外快; * 善學坊官網:[www.sxf-iot.com](https://www.sxf-iot.com/) ![](https://img.kancloud.cn/ca/73/ca739f92cab220a3059378642e3bd502_430x430.png =150x) (非商務合作**勿擾**,此處**非**技術支持)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看