zoukankan      html  css  js  c++  java
  • 串口通信数码管显示输入数字

    #include <reg52.h>

    sbit ADDR0=P1^0;
    sbit ADDR1=P1^1;
    sbit ADDR2=P1^2;
    sbit ADDR3=P1^3;
    sbit ENLED=P1^4;
    sbit PIN_PXD=P3^0;
    sbit PIN_TXD=P3^1;
    unsigned char LedChar[]={//数码管
        0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
        0x80, 0x90
    };
    unsigned char LedBuff[]={//
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
    };
    void  send_buf(unsigned char *ch)//输出函数
    {
       unsigned char i=0;
       for(i=0;i<10;i++)
       {
          SBUF=ch[i];//发送输出  输出完了为1
       while(~TI);//是否发送完成
         TI=0;//手动清零发送中断标志
       }
    }
    void Config(unsigned int baud)//串口通信配置函数,波特率
    {
       SCON = 0x50;//配置串口函数为模式一
       TMOD &= 0x0F;//清零T1的控制位
       TMOD |= 0x20;//T1设为模式2
       TH1=256-(11059200/12/32)/baud;计算T1的重值
       TL1=TH1;初值等于重载值
       ET1=0;//禁止T1中断
       ES=1;//启用UART中断
       TR1=1;//启用定时器T1
    }
    unsigned int chuin=0;
    void main()
    {
     static unsigned char i=0;
      EA=1;//使能总中断
      ADDR3=1;
      ENLED=0;

      Config(9600);
      while(1)
      {
           
          LedBuff[0]=LedChar[chuin%10];
        LedBuff[1]=LedChar[chuin/10%10];

       P0=0xFF;
       switch (i)
       {
         case 0 :   ADDR2=0;ADDR1=0;ADDR0=0;i++; P0=LedBuff[0];break;
      case 1 :   ADDR2=0;ADDR1=0;ADDR0=1;i=0; P0=LedBuff[1];break;

      default : break;
       }
      }
     
    }
    void inte() interrupt 4
    {
     
      if(RI)//接收到字节  收完了为1
      {    
        chuin=SBUF;//收到的值附值给chuin
     chuin=chuin%16+(chuin/16)*10;//把十六进制变为十进制
         RI=0;// 手动清零接受终端标志
     
    //    if(chuin)
    //   P0=0;
    // else if(SBUF=='2')
    //   P0=0xFF;

      }
       
    }

  • 相关阅读:
    [JSOI2008]巨额奖金(最小生成树计数)
    [HAOI2008] 糖果传递
    [SCOI2009]生日快乐
    BZOJ2821 作诗
    [HAOI2008]圆上的整点
    POJ1741
    AC自动机
    [JSOI2008]星球大战starwar
    二分图有关证明(感性版)
    初识Pentaho(一)
  • 原文地址:https://www.cnblogs.com/wangjinshan/p/7481971.html
Copyright © 2011-2022 走看看