bc6040的编程实现,stc8a8k单片机

/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);	
    }
}



在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lmf666/article/details/107205379
今日推荐