注册 登录
编程论坛 单片机编程

接收计算机发送数据(0-16),用数码管显示出来,超过10显示有问题

张珂珂 发布于 2020-05-09 20:31, 3427 次点击
0-9显示没问题,10-16我想让他显示A,b,C,d,E,F,可是总是显示乱的


程序代码:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int


unsigned char code duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

void main()
{
  uchar temp=0;
  SCON = 0x50;              //设置为工作方式1,方式1要确定波特率,设置定时器   01010000 方式一,10位异步收发器(8位数据) 第二个1是REN允许串行接收位
  TMOD = 0x20;            //8位重装载      00100000    0打开定时器
  PCON = 0x00;            //波特率不倍增

  TH1 = 0xFA;                //波特率4800
  TL1 = 0xFA;

  ES = 1;                    //打开通信中断
  EA = 1;                    //打开总中断
  TR1 = 1;                //打开计数器


  
  P2 = 0xa0;P0 = 0x00;P2 = 0;    //选中蜂鸣器,关闭蜂鸣器
  P2 = 0xE0;        //选中数码管              打开Y7

  P2=0XC0;P0=0X01;P2=0xFF;P0=0XFF; //一个数码管亮
  while(1)
  {
   
       temp=SBUF;         //SBUF是接收区
       P0=duan[temp];                        
       RI=0;             //清除接收中断标志位
}
}
3 回复
#2
张珂珂2020-05-09 20:37
51单片机,共阳数码管,CT107d板子,A-E的数组应该没写错,在另一个程序上验证过可以,这里不知道为什么不行
#3
r3169994432020-05-09 22:01
temp & 0x0f 清掉高4位看看 显示正常不

[此贴子已经被作者于2020-5-9 23:01编辑过]

#4
张珂珂2020-05-10 16:54
回复 3楼 r316999443
谢谢!可以啦,因为第一次使用串口,不知道应该发送16进制数到单片机,直接发送的10进制数
1