📄 series_65535.c
字号:
//16进制发送一个0-65536之间的任一数,
//当单片机收到后在数码管上动态显示出来,
//波特率9600
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
code unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};
uchar flag,k;
uint receive[2]={0,0};
uint a;
uchar wan,bai,qian,ge,shi;
uchar num=0;
void delay(uint z);
void disp_num(uint num);
void seg7_disp(uchar aa);
void main()
{
TMOD=0x20;//定时1工作方式2
TH1=0Xd0;
TH1=0Xd0;//波特率设置 600
TR1=1;
EA=1;//开总中断
ES=1; //开串口中断
REN=1;//允许接收
SM0=0;
SM1=1;//设置串口工作方式1
while(1)
{
if(flag==1)
{
while(1)
{
disp_num(a);
flag=0;
}
}
}
}
//中断函数
void seri() interrupt 4
{
while(RI==1)
{
if(k==2){k=0;}
receive[k]=SBUF;//数据缓存
RI=0;
k++;
}
a=(256*receive[1])+receive[0];//receive[1]数据高8位 receive[0]//数据低8位;
flag=1;
}
void delay(uint z)//延时1ms
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void disp_num(uint num) //数据显示
{
wan=num/10000;
qian=num/1000%10;
bai=num/100%10;
shi=num/10%10;
ge=num%10;
P1=0x03;
seg7_disp(wan);
delay(1);
P1=0x04;
seg7_disp(qian);
delay(1);
P1=0x05;
seg7_disp(bai);
delay(1);
P1=0x06;
seg7_disp(shi);
delay(1);
P1=0x07;
seg7_disp(ge);
delay(1);
}
void seg7_disp(uchar aa)
{
switch(aa)
{
case 0:P2=table[aa];break;
case 1:P2=table[aa];break;
case 2:P2=table[aa];break;
case 3:P2=table[aa];break;
case 4:P2=table[aa];break;
case 5:P2=table[aa];break;
case 6:P2=table[aa];break;
case 7:P2=table[aa];break;
case 8:P2=table[aa];break;
case 9:P2=table[aa];break;
default:P2=table[aa];
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -