标题:
单片机串口通信,3X3矩阵按键,输入1,2,3,4,5,6,7,8,9依次点亮九个灯
[打印本页]
作者:
波峰辉月
时间:
2020-6-2 13:49
标题:
单片机串口通信,3X3矩阵按键,输入1,2,3,4,5,6,7,8,9依次点亮九个灯
俩个工程,一个发送 机,一个接收机。波特率设置为480。俩个单片机晶振频率不同,一个是11.0592MHZ,一个是2.768MHZ。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
串口通信.png
(91.47 KB, 下载次数: 52)
下载附件
2020-6-2 13:46 上传
单片机源程序如下:
#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
static char value;
uint flag_key=0;
void DelayMs(int z)// 1ms延时函数
{
int x,y;
for (x=z;x>0;x--)
for(y=110;y>0;y--);
}
/**********************按键扫描函数***************************************/
uchar KeyScan2() //键盘扫描函数,使用行列反转扫描法
{
unsigned char cord_h,cord_l;//行列值中间变量
P1=0x0f; //行线输出全为0
cord_h=P1&0x0f; //读入列线值
if(cord_h!=0x0f) //先检测有无按键按下
{
DelayMs(10); //去抖
if((P1&0x0f)!=0x0f)
{
cord_h=P1&0x0f; //读入列线值
P1=cord_h|0xf0; //输出当前列线值
cord_l=P1&0xf0; //读入行线值
while((P1&0xf0)!=0xf0);//等待松开并输出
return(cord_h+cord_l);//键盘最后组合码值
}
}
return(0xff); //返回该值
}
/**************根据扫描结果返回响应的值*************/
//读取该函数返回值,运行不同的程序,达到按键控制的效果
unsigned char KeyPro()
{
switch(KeyScan2())
{
case 0xee:flag_key=1;return 0xFE;break;//1 按下相应的键显示相对应的码值
case 0xde:flag_key=1;return 0xFD;break;//2
case 0xbe:flag_key=1;return 0xFB;break;//3
case 0xed:flag_key=1;return 0xF7;break;//4
case 0xdd:flag_key=1;return 0xEF;break;//5
case 0xbd:flag_key=1;return 0XDF;break;//6
case 0xeb:flag_key=1;return 0xBF;break;//7
case 0xdb:flag_key=1;return 0x7F;break;//8
case 0xbb:flag_key=1;return 0xff;break;//9
default:return 0xff;break;
}
}
//串口初始化函数
void UARTInit()
{
EA = 1; //打开总中断
ES = 1; //打开串口中断
SM0 = 0; SM1 = 1;//串口工作方式1,8位UART波特率可变
REN = 1;//串口允许接收
TR1 = 1;//启动定时器1
TMOD |= 0x20;//定时器1,工作模式2 8位自动重装
TH1 = 0xC4;
TL1 = 0xC4;//设置比特率480
}
void main()
{
UARTInit();//串口初始化
KeyScan2();
value=0xff;
while(1)
{
value = KeyPro();
if(flag_key==1)
{
SBUF = value;//写SBUF,把要发送的数据送给发送缓存器
while(!TI);
TI = 0;
flag_key=0;
}
}
}
复制代码
51hei.png
(6.99 KB, 下载次数: 36)
下载附件
2020-6-2 17:42 上传
所有资料51hei提供下载:
串口通信点灯.zip
(92.13 KB, 下载次数: 47)
2020-6-2 13:48 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
QDMLIT
时间:
2021-1-15 10:04
谢谢你的辛苦付出
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1