打印

怎么发两个数据,数码管显示两个数据???帮忙解答下吧。

[复制链接]
1339|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
haochangxu|  楼主 | 2013-9-14 21:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
haochangxu|  楼主 | 2013-9-14 21:15 | 只看该作者
#include <REG52.H>
#include <intrins.h>
#define  NOP() _nop_()  /* 定义空指令 */
sbit LS138A = P2^2;          //定义138译码器的输入A脚由P2.2控制
sbit LS138B = P2^3;            //定义138译码器的输入脚B由P2.3控制
sbit LS138C = P2^4;         //定义138译码器的输入脚C由P2.4控制
bit bdata bitflag;

void delay(unsigned int i);      //函数声名

//此表为 LED 的字模, 共阴数码管 0-9  -
unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
bit Flag;
unsigned int ReData,SenData;
unsigned int LedOut[10];
unsigned int count=0;

void shumaguanjia()         //数码管加
{
      
      
                   
                            EA=0;                 
                                 LedOut[0]=Disp_Tab[ReData%10000/1000];
                             LedOut[1]=Disp_Tab[ReData%1000/100];
                             LedOut[2]=Disp_Tab[ReData%100/10];
                             LedOut[3]=Disp_Tab[ReData%10];
                       
                                EA=1;
                                       
                                        }

使用特权

评论回复
板凳
haochangxu|  楼主 | 2013-9-14 21:15 | 只看该作者
void main (void)
{
        unsigned int i;  
                SCON = 0x50;      //REN=1允许串行接受状态,串口工作模式1               
                     TMOD = 0x20;      //定时器工作方式2                    
                          PCON = 0x80;                                                         
                          TH1  = 0xFD;     //baud*2  /* reload value 19200、数据位8、停止位1。效验位无 (11.0592)
                          //TH1 = 0xF3;     // //baud*2  /*  波特率4800、数据位8、停止位1。效验位无 (12M)
                        TL1 = 0xF3;         
                        TR1  = 1;                                                                          
                        ES   = 1;        //开串口中断                  
                        EA   = 1;        // 开总中断
        while(1)
        {          
                shumaguanjia();
                                           
                for( i=0; i<4; i++)  //实现8位动态扫描循环 一直扫描
                {         
                        P0 = LedOut[i];  //将字模送到P0口显示
                                                 
                        switch(i)          //使用switch 语句控制位选  也可以是用查表的方式 学员可以试着自己修改                                  
                        {            
                                case 0:LS138A=0; LS138B=0; LS138C=0;  break;         
                            case 1:LS138A=1; LS138B=0; LS138C=0;  break;                    
                            case 2:LS138A=0; LS138B=1; LS138C=0;  break;
                            case 3:LS138A=1; LS138B=1; LS138C=0;  break;
//                                case 4:LS138A=0; LS138B=0; LS138C=1;  break;
//                                case 5:LS138A=1; LS138B=0; LS138C=1;  break;
//                                case 6:LS138A=0; LS138B=1; LS138C=1;  break;
//                                case 7:LS138A=1; LS138B=1; LS138C=1;  break;
                                default :break;
                        }
                        delay(100);       
                }
               
       
        }               
}

使用特权

评论回复
地板
haochangxu|  楼主 | 2013-9-14 21:16 | 只看该作者
/****************************************************
               串口中断程序
//******************************************************/

void ser_int (void) interrupt 4 using 1
        {
                if(RI == 1)        //RI接受中断标志
                {
                 
                        count = SBUF-0x30;  //SUBF接受/发送缓冲器
                        if(ReData<99)
                        {
                                ReData=count;
                                RI = 0;      //清除RI接受中断标志       
                                Flag=1;       
                        }
                       
                                     
                }
        }

          void delay(unsigned int i)
{
    char j;
    for(i; i > 0; i--)
        for(j = 200; j > 0; j--);
}

使用特权

评论回复
5
airwill| | 2013-9-16 10:46 | 只看该作者
串口从发一个字符到多个字符.
就是要增加个数据包的识别, 要设计一个 通信协议了

使用特权

评论回复
6
haochangxu|  楼主 | 2013-9-16 16:39 | 只看该作者
airwill 发表于 2013-9-16 10:46
串口从发一个字符到多个字符.
就是要增加个数据包的识别, 要设计一个 通信协议了 ...

这个不会,没有看过怎么写的。你能帮我改改吗??

使用特权

评论回复
7
haochangxu|  楼主 | 2013-9-21 15:11 | 只看该作者
已经自己解决!!!!!!!!!!!!!

使用特权

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

本版积分规则

11

主题

38

帖子

1

粉丝