| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3247 人关注过本帖
标题:接收计算机发送数据(0-16),用数码管显示出来,超过10显示有问题
只看楼主 加入收藏
张珂珂
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:60
专家分:30
注 册:2019-11-3
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
接收计算机发送数据(0-16),用数码管显示出来,超过10显示有问题
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;             //清除接收中断标志位
 }
}
搜索更多相关主题的帖子: 数码管 打开 显示 接收 temp 
2020-05-09 20:31
张珂珂
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:60
专家分:30
注 册:2019-11-3
收藏
得分:0 
51单片机,共阳数码管,CT107d板子,A-E的数组应该没写错,在另一个程序上验证过可以,这里不知道为什么不行

长风吹过
2020-05-09 20:37
r316999443
Rank: 7Rank: 7Rank: 7
来 自:星城长沙
等 级:黑侠
威 望:1
帖 子:597
专家分:501
注 册:2006-11-7
收藏
得分:20 
temp & 0x0f 清掉高4位看看 显示正常不

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

2020-05-09 22:01
张珂珂
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:60
专家分:30
注 册:2019-11-3
收藏
得分:0 
回复 3楼 r316999443
谢谢!可以啦,因为第一次使用串口,不知道应该发送16进制数到单片机,直接发送的10进制数

长风吹过
2020-05-10 16:54
快速回复:接收计算机发送数据(0-16),用数码管显示出来,超过10显示有问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018137 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved