标题:
蓝牙输入,动态数码管显示的单片机程序问题
[打印本页]
作者:
lht154
时间:
2020-3-15 15:01
标题:
蓝牙输入,动态数码管显示的单片机程序问题
我希望用蓝牙输入8个数字,每输入一个数字,动态数码管点亮一位,显示该数字。可是数码管不管输入几都是全部点亮,包括小数点。
#include "reg51.h"
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
#define GPIO_DIG P0
u8 DisplayData[8]=0x00;
u8 a;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴
u8 tmp=0;
void delay(u16 i)
{
while(i--);
}
init()
{
TMOD|=0x20;
TL1=0xfd;
TH1=0xE6;
SCON=0x50;
PCON=0x00;
TR1=1;
ES=1;
EA=1; //定时器1开始工作,产生波特率
//发送标志位置0
TI=0; //接收标志位置0
RI=0;
}
void get(void) interrupt 4//串口中断服务程序
{
if(RI==1)
{
RI=0;//软件清除串口响应
a=SBUF;
DisplayData[tmp]=smgduan[a];
tmp++;
}
}
void digdisplay()
{
u8 i;
for(i=0;i<8;i++)
{
switch(i)
{
case (0):
LSA=0;LSB=0;LSC=0;break;
case (1):
LSA=1;LSB=0;LSC=0;break;
case (2):
LSA=0;LSB=1;LSC=0;break;
case (3):
LSA=1;LSB=1;LSC=0;break;
case (4):
LSA=0;LSB=0;LSC=1;break;
case (5):
LSA=1;LSB=0;LSC=1;break;
case (6):
LSA=0;LSB=1;LSC=1;break;
case (7):
LSA=1;LSB=1;LSC=1;break;
}
GPIO_DIG=DisplayData[i];
delay(500);
P0=0x00;
}
}
void main()
{
init();
while(1)
{
digdisplay();
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1