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



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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值