打印
[51单片机]

以16进制发送一个0-65536之间的任一数,当单片机收到后在...

[复制链接]
1668|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mqzhou2006|  楼主 | 2016-4-2 20:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
unsigned long num;
uint a1,a2;
uchar num1,flag;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,    //显示数据编码
                                   0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delayms(uint xms);
void display(unsigned long int value);
void init();

void main()
{
        init();
        while(1)
        {
                display(num);
        }
}
void init()
{
        TMOD=0x20; //定义定时器1为方式2工作
        TH1=0xfd; //给T1高位赋初值,设置串口波特率为9600bps.
        TL1=0xfd; //给T1低位赋初值,设置串口波特率为9600bps.
        TR1=1;         //定时器1运行控制位置1,运行T1定时器
        SCON=0x50; //定义串口为方式1工作,并开串口允许串行接收位(REN=1)
        EA=1;        //开总中断
        ES=1;  //开串口中断
}
void serial() interrupt 4
{
        num1++; //设置循环num1
        if(num1==1)
        {
                a1=SBUF; //将第一次的数据给temp
                 RI=0;        //置RI为0以便接收下一个数据
        }
        if(num1==2)
        {
                a2=SBUF; //将第二次的数据给temp
                num=(a1<<8|a2);//a1的低位数据向左移变成num的高位,低位空出,通过或运算将a2的储存在num的最低位。
                 RI=0;//置RI为0以便接收下一个数据
                num1=0;
        }
}

void display(unsigned long int value)
{
        uchar N1,N2,N3,N4,N5,N6;
        N1=value/100000;
        N2=value%100000/10000;
        N3=value%100000%10000/1000;
        N4=value%100000%10000%1000/100;
        N5=value%100000%10000%1000%100/10;
        N6=value%10;

/*        dula=1;
        P0=table[N1];
        dula=0;
        P0=0xff;
        wela=1;
        P0=0xfe;
        wela=0;
        P0=0xff;
        delayms(1);        */

        dula=1;
        P0=table[N2];
        dula=0;
        P0=0xff;
        wela=1;
        P0=0xfd;
        wela=0;
        P0=0xff;
        delayms(1);

        dula=1;
        P0=table[N3];
        dula=0;
        P0=0xff;
        wela=1;
        P0=0xfb;
        wela=0;
        P0=0xff;
        delayms(1);

        dula=1;
        P0=table[N4];
        dula=0;
        P0=0xff;
        wela=1;
        P0=0xf7;
        wela=0;
        P0=0xff;
        delayms(1);

        dula=1;
        P0=table[N5];
        dula=0;
        P0=0xff;
        wela=1;
        P0=0xef;
        wela=0;
        P0=0xff;
        delayms(1);

        dula=1;
        P0=table[N6];
        dula=0;
        P0=0xff;
        wela=1;
        P0=0xdf;
        wela=0;
        P0=0xff;
        delayms(1);
}

void delayms(uint xms)
{
        uint x,y;
        for(x=xms;x>0;x--)
                for(y=110;y>0;y--);
}

相关帖子

沙发
望断云山| | 2016-4-2 22:22 | 只看该作者
标题不全,正文一个字没有 ,你想表达什么

使用特权

评论回复
板凳
dirtwillfly| | 2016-4-3 10:03 | 只看该作者
楼主有什么问题?

使用特权

评论回复
地板
singleMCU| | 2016-4-3 16:45 | 只看该作者
DREAMER开发板

使用特权

评论回复
5
mqzhou2006|  楼主 | 2016-4-4 12:25 | 只看该作者
分享下我写的程序

使用特权

评论回复
6
ningling_21| | 2016-4-4 12:36 | 只看该作者
mqzhou2006 发表于 2016-4-4 12:25
分享下我写的程序

什么功能的程序?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

3

帖子

0

粉丝