找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2478|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

stm32用spi方式控制oled

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
  1. SPI.h
復(fù)制代碼
  1. SPI.c
  2. /*函數(shù)功能: GPIO模擬SPI端口初始化                                         */
  3. /*************************************************************************/
  4. void OLED_SPI_Init(void)
  5. {
  6.         GPIO_InitTypeDef GPIO_InitStructure;
  7.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ,ENABLE);//使能PA端口時(shí)鐘
  8.         GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4; //端口配置
  9.         GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽輸出
  10.         GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//IO口速度為50MHz
  11.         GPIO_Init(GPIOA,&GPIO_InitStructure);//根據(jù)設(shè)定參數(shù)初始化GPIOA
  12. }

  13. /*************************************************************************/
  14. /*函數(shù)功能: 通過(guò)SPIO軟件模擬SPI通信協(xié)議,向模塊(SSD1306)寫(xiě)入一個(gè)字節(jié)                                  */
  15. /*入口參數(shù):                                                                                                                                                                                                                                                         */       
  16. /*                                                data:要寫(xiě)入的數(shù)據(jù)/命令                                                                                                                                                 */                               
  17. /*                                                cmd :數(shù)據(jù)/命令標(biāo)志 0,表示命令;1,表示數(shù)據(jù);                   */
  18. /*************************************************************************/
  19. void SPI_WriteByte(unsigned char data,unsigned char cmd)
  20. {
  21.         unsigned char i=0;
  22.         OLED_DC =cmd;
  23.         OLED_CLK=0;
  24.         for(i=0;i<8;i++)
  25.         {
  26.                 OLED_CLK=0;
  27.                 if(data&0x80)OLED_MOSI=1; //從高位到低位
  28.                 else OLED_MOSI=0;
  29.                 OLED_CLK=1;
  30.                 data<<=1;
  31.         }
  32.         OLED_CLK=1;
  33.         OLED_DC=1;
  34. }
  35. /*************************************************************************/
  36. /*函數(shù)功能: 寫(xiě)命令                                                        */
  37. /*************************************************************************/
  38. void WriteCmd(unsigned char cmd)
  39. {
  40.         SPI_WriteByte(cmd,OLED_CMD);
  41. }
  42. /*************************************************************************/
  43. /*函數(shù)功能: 寫(xiě)數(shù)據(jù)                                                        */
  44. /*************************************************************************/
  45. void WriteData(unsigned char data)
  46. {
  47.         SPI_WriteByte(data,OLED_DATA);
  48. }
復(fù)制代碼



20170607180030742.jpg (42.1 KB, 下載次數(shù): 119)

20170607180030742.jpg

OLED.rar

9.34 KB, 下載次數(shù): 14, 下載積分: 黑幣 -5

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:573864 發(fā)表于 2019-7-24 10:41 | 只看該作者
Spi.h
#define OLED_CMD 0   //命令聲明
#define OLED_DATA 1 //數(shù)據(jù)聲明

#define OLED_CLK         PAout(4)        // CLK時(shí)鐘         d0
#define OLED_MOSI         PAout(3)        // MOSI                d1
#define OLED_RST         PAout(2)        // RET復(fù)位        ret
#define OLED_DC          PAout(1)        // 命令|數(shù)據(jù)        dc        (0表傳輸命令1表傳輸數(shù)據(jù))

void OLED_SPI_Init(void); //配置MCU的SPI
void SPI_WriteByte(uint8_t addr,uint8_t data); //向寄存器地址寫(xiě)一個(gè)byte的數(shù)據(jù)
void WriteCmd(unsigned char cmd); //寫(xiě)命令
void WriteDat(unsigned char data); //寫(xiě)數(shù)據(jù)

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表