在道生物联推出的产品中有一款TKB-620开发板,其配有OLED屏和按键等资源,更便于功能测试和应用。那在TKB-620开发板的基础上能否通过添加相应的硬件来达到其相近的性能呢?
答案当然是肯定的,这里是通过与-SENSOR开发板的配合,外加OLED显示屏来实现,整体构成如图1所示。

图1 整体构成
其实现的功能为工作模式选取与切换、指令选取与发送及接收内容显示,其界面的内容如图2和图3所示。

图2 功能选择界面

图3 发送指令选择界面
功能选择的处理程序为:
OLED_Init();
OLED_Clear();
OLED_ShowCHinese(10,0,4);
OLED_ShowCHinese(26,0,5);
OLED_ShowCHinese(42,0,2);
OLED_ShowCHinese(58,0,3);
OLED_ShowString(10,2,"AT",16);
OLED_ShowCHinese(26,2,0);
OLED_ShowCHinese(42,2,1);
OLED_ShowCHinese(58,2,2);
OLED_ShowCHinese(74,2,3);
OLED_ShowCHinese(10,4,6);
OLED_ShowCHinese(26,4,7);
OLED_ShowCHinese(10,6,8);
OLED_ShowCHinese(26,6,9);
jm: j=1;
k=0;
OLED_ShowChar(0,0,'>',16);
while(j)
{
if(R_BSP_PinRead(BSP_IO_PORT_01_PIN_12)==BSP_IO_LEVEL_LOW)
{
if(k>0)
{
OLED_ShowChar(0,k*2,' ',16);
k=k-1;
}
}
if(R_BSP_PinRead(BSP_IO_PORT_00_PIN_13)==BSP_IO_LEVEL_LOW)
{
if(k<3)
{
OLED_ShowChar(0,k*2,' ',16);
k=k+1;
}
}
if(R_BSP_PinRead(BSP_IO_PORT_01_PIN_11)==BSP_IO_LEVEL_LOW)
{
j=0;
}
OLED_ShowChar(0,k*2,'>',16);
R_BSP_SoftwareDelay (200, BSP_DELAY_UNITS_MILLISECONDS);
}
切换工作模式的程序为:
if(k==0)
{
printf("AT+WORKMODE=81\r\n");
goto jm;
}
if(k==1)
{
printf("AT+WORKMODE=82\r\n");
goto jm;
}
发送内容选择及发送的程序为:
if(k==2)
{
cd: OLED_ShowChar(0,0,'>',16);
OLED_ShowCHinese(10,0,12);
OLED_ShowCHinese(26,0,13);
OLED_ShowCHinese(10,2,14);
OLED_ShowCHinese(26,2,15);
OLED_ShowCHinese(10,4,16);
j=1;
k=0;
while(j)
{
if(R_BSP_PinRead(BSP_IO_PORT_01_PIN_12)==BSP_IO_LEVEL_LOW)
{
if(k>0)
{
OLED_ShowChar(0,k*2,' ',16);
k=k-1;
}
}
if(R_BSP_PinRead(BSP_IO_PORT_00_PIN_13)==BSP_IO_LEVEL_LOW)
{
if(k<2)
{
OLED_ShowChar(0,k*2,' ',16);
k=k+1;
}
}
if(R_BSP_PinRead(BSP_IO_PORT_01_PIN_11)==BSP_IO_LEVEL_LOW)
{
j=0;
}
OLED_ShowChar(0,k*2,'>',16);
R_BSP_SoftwareDelay (200, BSP_DELAY_UNITS_MILLISECONDS);
}
}
if(k==0)
{
printf("vibrate 150 0.5 1000 0.5 0.5\r\n");
R_BSP_SoftwareDelay (2000, BSP_DELAY_UNITS_MILLISECONDS);
OLED_ShowChar(0,0,' ',16);
goto cd;
}
if(k==1)
{
printf("pulse 0.5 50 0.5\r\n");
R_BSP_SoftwareDelay (2000, BSP_DELAY_UNITS_MILLISECONDS);
OLED_ShowChar(0,2,' ',16);
goto cd;
}
if(k==2)
{
printf("tick 0.5 50 1.0\r\n");
R_BSP_SoftwareDelay (2000, BSP_DELAY_UNITS_MILLISECONDS);
OLED_ShowChar(0,4,' ',16);
goto cd;
}
实现接收及内容显示的程序为:
if(k==3)
{
loop: OLED_ShowCHinese(10,0,10);
OLED_ShowCHinese(26,0,11);
if(uart_receive_complete_flag)
{
uart_receive_complete_flag = false;
OLED_ShowChar(10,2,uart_rx_buffer[0] ,16);
OLED_ShowChar(20,2,uart_rx_buffer[1],16);
OLED_ShowChar(30,2,uart_rx_buffer[2],16);
R_BSP_SoftwareDelay(2000, BSP_DELAY_UNITS_MILLISECONDS);
OLED_Clear();
err = R_SCI_UART_Read(&g_uart0_ctrl, uart_rx_buffer, 3);
assert(FSP_SUCCESS == err);
}
goto loop;
}
经运行测试,对输出的测试如图4所示,显示接收内容的测试如图5所示。

图4 输出测试

图5 接收内容的显示