我是靠谱客的博主 震动板栗,最近开发中收集的这篇文章主要介绍使用OLED 屏幕替换掉正点原子4.3寸屏幕,进行无线通信实验。,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

正点原子4.3寸LCD屏幕和7寸MCU8080的屏幕动辄便宜的一两百,贵的四五百,这里提供了一种省钱的方案,使用0.96寸OLED屏幕替换掉LCD屏幕。

OLED 屏幕配置

无线通信模块24lo1

iic协议

spi配置

以上可以使用正点原子的源码,也可自行配置。我这里使用了spi2使能,OLED 屏幕gpio端口配置到了atk上面,所以能插在ATK上面,如果不需要改动,使用原例程代码就可。

主屏显示

b7b33921403f4f30a8f7bed863692d4c.jpg

 发送等待80ded68acf404689bf74ab158773e984.jpg

 发送成功

342ef57ca5844a908260427d4ddf5730.jpg

 接收模式

60fb529962c745ecb63871060672887c.jpg

 主函数改动较大,直接放上面了,有需要自己用,其他一般改动比较小。

#include "led.h"

#include "delay.h"

#include "key.h"

#include "sys.h"

//#include "lcd.h"

#include "usart.h"  

#include "remote.h"

#include "beep.h"

#include "rs485.h"  

#include "oled.h"

#include "bmp.h"

#include "oled_key.h"

#include "24l01.h"     

 

 int main(void)

 {  

 u8 key,mode;

 u16 t=0;    

 u8 tmp_buf[33];      

 delay_init(); //延时函数初始化   

 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级

 uart_init(115200); //串口初始化为115200

  LED_Init(); //初始化与LED连接的硬件接口

 KEY_Init(); //初始化按键

 OLED_Init(); //初始化LCD  

  NRF24L01_Init(); //初始化NRF24L01 

 

  OLED_Clear();

 OLED_ShowString(0,0,"OLED on",12);

  OLED_Refresh();

 while(NRF24L01_Check())

 {

  OLED_ShowString(0,12,"NRF ERRROR",12);

  OLED_Refresh();

 

   delay_ms(200);

 }

  OLED_ShowString(0,12,"NRF OK!",12);   

  OLED_Refresh();

  while(1)

 { 

  key=KEY_Scan(0);

  if(key==KEY0_PRES)

  {

   mode=0;   

   break;

  }else if(key==KEY1_PRES)

  {

   mode=1;

   break;

  }

  t++;

  if(t==100)

     {

   OLED_ShowString(0,24,"KEY0:RX_Mode",12);

   OLED_ShowString(0,36,"KEY1:TX_Mode",12);

   OLED_Refresh();

     } 

   if(t==200)

  { 

  //OLED_Clear();

   t=0; 

  }

  delay_ms(5);   

 }     

 if(mode==0)//RX模式

 {

  OLED_Clear();

  OLED_ShowString(0,0,"RX_Mode",12);

  OLED_Refresh();

  NRF24L01_RX_Mode();    

  while(1)

  {                    

   if(NRF24L01_RxPacket(tmp_buf)==0)//一旦接收到信息,则显示出来.

   {

    tmp_buf[32]=0;//加入字符串结束符

    OLED_ShowString(0,12,tmp_buf,12);

    OLED_Refresh();    

   }else delay_us(100);    

   t++;

   if(t==10000)//大约1s钟改变一次状态

   {

    t=0;

    LED0=!LED0;

   }         

  }; 

 }else//TX模式

 {     

  OLED_Clear();

  OLED_ShowString(0,0,"TX_Mode",12);

  OLED_Refresh();   

  NRF24L01_TX_Mode();

  mode=' ';//从空格键开始  

  while(1)

  {             

   if(NRF24L01_TxPacket(tmp_buf)==TX_OK)

   {

    OLED_ShowString(0,12,"Sended DATA:",12); 

    OLED_ShowString(0,24,tmp_buf,12); 

    OLED_Refresh();

    key=mode;

    for(t=0;t<32;t++)

    {

     key++;

     if(key>('~'))key=' ';

     tmp_buf[t]=key; 

    }

    mode++; 

    if(mode>'~')mode=' ';     

    tmp_buf[32]=0;//加入结束符 

        OLED_ShowString(0,36,"send OK!",12);

    OLED_Refresh();

   }else

   {  

        OLED_ShowString(0,36,"send error!",12);

    OLED_Refresh();  

 

   };

   LED0=!LED0;

   delay_ms(1500);        

  };

 } 

}

 

最后

以上就是震动板栗为你收集整理的使用OLED 屏幕替换掉正点原子4.3寸屏幕,进行无线通信实验。的全部内容,希望文章能够帮你解决使用OLED 屏幕替换掉正点原子4.3寸屏幕,进行无线通信实验。所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(28)

评论列表共有 0 条评论

立即
投稿
返回
顶部