概述
正点原子4.3寸LCD屏幕和7寸MCU8080的屏幕动辄便宜的一两百,贵的四五百,这里提供了一种省钱的方案,使用0.96寸OLED屏幕替换掉LCD屏幕。
OLED 屏幕配置
无线通信模块24lo1
iic协议
spi配置
以上可以使用正点原子的源码,也可自行配置。我这里使用了spi2使能,OLED 屏幕gpio端口配置到了atk上面,所以能插在ATK上面,如果不需要改动,使用原例程代码就可。
主屏显示
发送等待
发送成功
接收模式
主函数改动较大,直接放上面了,有需要自己用,其他一般改动比较小。
#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寸屏幕,进行无线通信实验。所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复