/****接受一个数组如果首为0c尾为0f则显示数组中间三个且反馈给计算机,否则显示eeeeeee且反馈给计算机******/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar i,j,add; //
uchar temp[15]; //控制显示数形
uchar temp1[5]; //暂存接收数据
uchar code position[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //数码管位置数组
uchar code figure[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
0x00}; //数形
void Init() ; //初始化函数
void Check(); //核实接受的数据
void Divide(); //将接收数据进行分解
void Display(); //显示接收到的数字
void Send(); //发送数据
void main()
{
Init();
while(1)
{
if(add==4)
{
Send();
add=0;
Check();
}
}
}
/****************下面为被调用的子函数**********************/
/*******初始化函数**********/
void Init()
{
TMOD=0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率
TH1=0xFD; // 波特率9600
TL1=0xFD;
SCON=0x50; // 设定串行口工作方式
PCON&=0xef; // 波特率不倍增
TR1=1; // 启动定时器1
EA=1; //开总中断
ES=1; //串行中断允许
P0=0x3f;
P2=0x00;
i=0;
j=0;
add=0;
}
/*******核实接收的数据*********/
void Check()
{
Divide();
if(temp1[0]==12&&temp1[4]==15)
{
while(!add)
{Display();}
}
else
{
P2=0x00;
P0=0x79;
}
}
/********将接收数据进行分解*********/
void Divide()
{
for(j=0;j<5;j++)
{
temp[3*j]=temp1[j]/16;
temp[3*j+1]=temp1[j]%16;
temp[3*j+2]=0x10;
}
}
/********显示接收到的数字********/
void Display()
{
for(i=0;i<3;i++)
{
for(j=(3*i);j<(3*i+3)&&j<8;j++)
{
P0=0x00;
P2=position[j];
P0=figure[temp[j+3]];
}
}
}
/*****发送数据*******/
void Send()
{
for(i=0;i<5;i++)
{
SBUF=temp1[i];
while(!TI);
TI=0;
}
}
/*********中断服务函数**********/
void serial () interrupt 4 using 3 //串口中断
{
temp1[add]=SBUF;
if(RI)
{
RI=0;
add++;
}
}
llmzaq
- 粉丝: 7
- 资源: 170
最新资源
- 个人原创STM32F1 BOOTLOADER,主控芯片为STM32F103VET6
- Alpaca 交易 API 的 Python 客户端.zip
- 基于Django与讯飞开放平台的ACGN文化交流平台源码
- 中国象棋(自行初步设计)
- 微信小程序实现找不同游戏
- 100_Numpy_exercises.ipynb
- 2023-04-06-项目笔记 - 第三百二十六阶段 - 4.4.2.324全局变量的作用域-324 -2025.11.23
- 一个简单的模板,开始用 Python 编写你自己的个性化 Discord 机器人.zip
- TP-Link 智能家居产品的 Python API.zip
- 一个需要十一个字才能i激活的神奇代码-OLP
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0