找回密码
 立即注册

QQ登录

只需一步,快速开始

帖子
查看: 1397|回复: 0
收起左侧

蓝牙输入,动态数码管显示的单片机程序问题

[复制链接]
ID:696117 发表于 2020-3-15 15:01 | 显示全部楼层 |阅读模式
我希望用蓝牙输入8个数字,每输入一个数字,动态数码管点亮一位,显示该数字。可是数码管不管输入几都是全部点亮,包括小数点。
  1. #include "reg51.h"
  2. #include "intrins.h"
  3. typedef unsigned char u8;
  4. typedef unsigned int u16;
  5. #define GPIO_DIG P0
  6. u8 DisplayData[8]=0x00;
  7. u8 a;
  8. sbit LSA=P2^2;
  9. sbit LSB=P2^3;
  10. sbit LSC=P2^4;
  11. u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴
  12. u8 tmp=0;
  13. void delay(u16 i)
  14. {
  15.         while(i--);
  16. }
  17. init()
  18. {
  19.         TMOD|=0x20;
  20.         TL1=0xfd;
  21.         TH1=0xE6;
  22.         SCON=0x50;
  23.         PCON=0x00;
  24.         TR1=1;
  25.         ES=1;
  26.         EA=1;                                                  //定时器1开始工作,产生波特率
  27.                                                                                           //发送标志位置0
  28.         TI=0;                                                                  //接收标志位置0
  29.          RI=0;


  30. }
  31. void get(void) interrupt 4//串口中断服务程序
  32.          {
  33.            
  34.            if(RI==1)
  35.            {
  36.                         RI=0;//软件清除串口响应
  37.                         a=SBUF;
  38.                           DisplayData[tmp]=smgduan[a];
  39.                         tmp++;
  40.                     
  41.                 }
  42.         
  43.   }

  44. void digdisplay()
  45. {
  46.          u8 i;
  47.         for(i=0;i<8;i++)
  48.         {
  49.                 switch(i)
  50.                 {
  51.                         case (0):
  52.                                 LSA=0;LSB=0;LSC=0;break;
  53.                         case (1):
  54.                                 LSA=1;LSB=0;LSC=0;break;
  55.                         case (2):
  56.                                 LSA=0;LSB=1;LSC=0;break;
  57.                         case (3):
  58.                                 LSA=1;LSB=1;LSC=0;break;
  59.                         case (4):
  60.                                 LSA=0;LSB=0;LSC=1;break;
  61.                         case (5):
  62.                                 LSA=1;LSB=0;LSC=1;break;
  63.                         case (6):
  64.                                  LSA=0;LSB=1;LSC=1;break;
  65.                         case (7):
  66.                                 LSA=1;LSB=1;LSC=1;break;
  67.                 }
  68.                 GPIO_DIG=DisplayData[i];
  69.                 delay(500);
  70.                 P0=0x00;

  71.         }
  72. }
  73. void main()
  74. {
  75.         init();
  76.         while(1)
  77.         {
  78.                 digdisplay();        
  79.         }
  80.         
  81. }
复制代码


回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表