微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 单片机串口通信 在数码管上显示传输的数据

单片机串口通信 在数码管上显示传输的数据

时间:10-02 整理:3721RD 点击:
#include<reg52.h>
#define uchar unsigned char
void delay(char x);
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit duan=P2^6;//数码管段选
sbit wei=P2^7;//数码管位选
void show(uchar k);
unsigned int flag,a,b,flag2;
void init();
main()
{
        init();
        while(1)
        {
        if(flag==1)
                {
                        //发送接受到的数据
                        ES=0;//关闭串口中断
                        flag=0;
                        SBUF=a;
                        while(!TI);
                        TI=0;
                        ES=1;
                }
       
        show(b);
        }
}
void init()
{
        TMOD=0x20;
        TH1=0xfa;
        TL1=0xfa;
        TR1=1;
        SM0=0;
        SM1=1;
        REN=1;
        EA=1;
        ES=1;
}
void serial() interrupt 4
{
        //接收中断,接数据
        RI=0;
        a=SBUF;
        b=a;
        flag=1;
}
void show(uchar k)
{
        duan=1;
        P0=table[k/100];
        duan=0;
        P0=0xff;
        wei=1;
        P0=0xfb;
        wei=0;
        delay(200);
        duan=1;
        P0=table[k%100/10];
        duan=0;
        P0=0xff;
        wei=1;
        P0=0xfd;
        wei=0;
        delay(200);
        duan=1;
        P0=table[k%10];
        duan=0;
        P0=0xff;
        wei=1;
        P0=0xfe;
        wei=0;
        delay(200);
}
void delay(char x)
{
        char i,j;
        for(i=x;i<0;i--)
                for(j=110;j<0;j--);
}
为什么这个程序数码管显示的数字与电脑输入的数字不一样。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top