/1、实验目的
编程确认BC6040的芯片是否可行。
手头申请了几个样片,顺丰到付马上就发过来了,效率非常高。
到手后,又买了个晶振和电容,进行测试。
2、实验设备
自制stc8a8k开发板,OLED模块;
矩阵键盘模块;bc6040转接板(上面焊接晶振和电容)。
3、实验内容
利用单片机的P50,RXT3-2串口,接收来自BC6040的按键编码数值,在OLED上面显示出来。
步骤1
接线,将矩阵键盘的和BC6040进行接线。
编程。导入OLED显示函数,利用定时器2产生9600波特率,将串口3引脚切换到P50,P51引脚。然后接收来自串口3的数据。
测试。
编程完毕,进行测试。
程序代码如下:
#include <stc8a8k.h>
#include <oled.h>
//利用串口3,P50 R3-2,需要串口端口切换到P50引脚
#define FOSC 11059200UL
#define BRT (65536 - FOSC / 9600 / 4)
bit busy;
char wptr;
char rptr;
char buffer[16];
void Uart3Isr() interrupt 17 using 1
{
if (S3CON & 0x02)
{
S3CON &= ~0x02;
busy = 0;
}
if (S3CON & 0x01)
{
S3CON &= ~0x01;
buffer[0] = S3BUF;
//wptr &= 0x0f;
}
}
//定时器2做串口3的波特率发生器
void Uart3Init()
{
S3CON = 0x10;
T2L = BRT;
T2H = BRT >> 8;
AUXR = 0x14;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void main()
{
int i,j;
P_SW2 = 0x02; // RXD3_2/P5.0, TXD3_2/P5.1
Uart3Init();
OLED_Init();
IE2 = 0x08;
EA = 1;
for(i=0;i<200;i++)
for(j=0;j<200;j++);
while (1)
{
if(buffer[0]==0x00)
OLED_ShowChar(0,0,'0');
else if(buffer[0]==0x01)
OLED_ShowChar(0,0,'1');
else if(buffer[0]==0x02)
OLED_ShowChar(0,0,'2');
else if(buffer[0]==0x03)
OLED_ShowChar(0,0,'3');
else if(buffer[0]==0x04)a
OLED_ShowChar(0,0,'4');
else if(buffer[0]==0x05)
OLED_ShowChar(0,0,'5');
else if(buffer[0]==0x06)
OLED_ShowChar(0,0,'6');
else if(buffer[0]==0x07)
OLED_ShowChar(0,0,'7');
else if(buffer[0]==0x08)
OLED_ShowChar(0,0,'8');
else if(buffer[0]==0x09)
OLED_ShowChar(0,0,'9');
else if(buffer[0]==0x0a)
OLED_ShowChar(0,0,'a');
else if(buffer[0]==0x0b)
OLED_ShowChar(0,0,'b');
else if(buffer[0]==0x0c)
OLED_ShowChar(0,0,'c');
else if(buffer[0]==0x0d)
OLED_ShowChar(0,0,'d');
else if(buffer[0]==0x0e)
OLED_ShowChar(0,0,'e');
else if(buffer[0]==0x0f)
OLED_ShowChar(0,0,'f');
else if(buffer[0]==0x10)
OLED_ShowChar(0,0,'g');
else if(buffer[0]==0x11)
OLED_ShowChar(0,0,'h');
else if(buffer[0]==0x12)
OLED_ShowChar(0,0,'i');
// OLED_ShowString(0,0, buffer);
}
}