打印
[51单片机]

数码管动态扫描显示乱码程序出啥问题了?

[复制链接]
2857|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
弹弓|  楼主 | 2014-2-18 18:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include
unsigned char table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char table2[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
sbit weixuan=P2^3;//位锁存
sbit duanxuan=P2^2;//段锁存
void delay(unsigned char a)
{
   while(a--);
}
void main()
{
   unsigned char i;
   while(1)
   {
   for(i=0;i<8;i++)
   {
           weixuan=1;
           P0=table2[i];
           weixuan=0;
           duanxuan=1;
           P0=table1[i];
           duanxuan=0;
           delay(200);
   }
   }
}

相关帖子

沙发
嵌入式云终端| | 2014-2-18 21:20 | 只看该作者
好多年没用动态扫描了,帮你顶替下,数码管显示和键盘管理的芯片也就3毛多,我们一般用天薇的芯片

使用特权

评论回复
板凳
弹弓|  楼主 | 2014-2-22 16:41 | 只看该作者
嵌入式云终端 发表于 2014-2-18 21:20
好多年没用动态扫描了,帮你顶替下,数码管显示和键盘管理的芯片也就3毛多,我们一般用天薇的芯片 ...

谢谢你。刚开始学单片机没多久。所以从最基本学起。

使用特权

评论回复
地板
youluo235| | 2014-2-22 17:16 | 只看该作者
显示不是之前设计好的?是不是数组部分没有对应好。另外最好自己检查。

使用特权

评论回复
5
ningling_21| | 2014-2-22 17:50 | 只看该作者
把例程下载进去看看有没有问题...

使用特权

评论回复
6
弹弓|  楼主 | 2014-2-22 18:46 | 只看该作者
youluo235 发表于 2014-2-22 17:16
显示不是之前设计好的?是不是数组部分没有对应好。另外最好自己检查。

这个是自己写的。因为我的板子是独立的。可以跳线。我后来把只把这些程序的位选和段选的引脚换了,以及把P0换为P1.就能准确显示了。我一开始以为自己跳线跳错了。试了很多次都一样。

使用特权

评论回复
7
弹弓|  楼主 | 2014-2-22 18:48 | 只看该作者
ningling_21 发表于 2014-2-22 17:50
把例程下载进去看看有没有问题...

试过,也是乱码。以前不是这样的。后来我又写过。端口换了,就能正确显示了。如下:
#include<reg52.h>
unsigned char table_d[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char table_w[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
sbit wei=P2^0;
sbit duan=P2^1;

void delay(unsigned int a)
{
        while(a--);
}

void main()
{
        unsigned char i;
    for(i=0;i<8;i++)
        {
                wei=1;
                P1=table_w;
                wei=0;
               
                duan=1;
                P1=table_d;
                duan=0;
                delay(300);       
        }
       
               
}

使用特权

评论回复
8
youluo235| | 2014-2-22 22:27 | 只看该作者
弹弓 发表于 2014-2-22 18:46
这个是自己写的。因为我的板子是独立的。可以跳线。我后来把只把这些程序的位选和段选的引脚换了,以及把 ...

把P0换为P1.就能准确显示了?这是不是和P0口需要上啦电阻有关系。是不是你的没上啦。因为51那个口需要上啦才能正常用的

使用特权

评论回复
9
弹弓|  楼主 | 2014-2-22 23:16 | 只看该作者
youluo235 发表于 2014-2-22 22:27
把P0换为P1.就能准确显示了?这是不是和P0口需要上啦电阻有关系。是不是你的没上啦。因为51那个口需要上 ...

板子已经有焊上上拉电阻了。它有显示,只不过是显示乱码。

使用特权

评论回复
10
ningling_21| | 2014-2-23 09:05 | 只看该作者
P1=table_d;

这样编译能通过吗?

使用特权

评论回复
11
youluo235| | 2014-2-23 09:21 | 只看该作者
弹弓 发表于 2014-2-22 23:16
板子已经有焊上上拉电阻了。它有显示,只不过是显示乱码。

P1就不乱码了。P0就是乱码,这什么逻辑。估计是你单片机的P0口换了。换个51插上去看看

使用特权

评论回复
12
zhimagod| | 2014-2-23 09:27 | 只看该作者
1、你的电路是怎么连接的?为什么可以使用同一个端口传输位信号和段信号?除了单片机还用了哪些芯片?比如595?
2、看看你的P0除了连接LED外还连接了什么?

使用特权

评论回复
13
51DPJLT| | 2014-2-23 10:09 | 只看该作者
总是感觉怪怪的,段选实现数码管的选择,位选实现数据传输,最好能将电路连接图画一下,你加了锁存器了吗????好事多磨,对你有好处,加油!!!!

使用特权

评论回复
14
弹弓|  楼主 | 2014-2-23 12:56 | 只看该作者
ningling_21 发表于 2014-2-23 09:05
P1=table_d;

这样编译能通过吗?

呃,看得很仔细。这个是我的失误,编译的时候是table_d的。可能是复制的时候不小心。谢谢你

使用特权

评论回复
15
弹弓|  楼主 | 2014-2-23 12:57 | 只看该作者
ningling_21 发表于 2014-2-23 09:05
P1=table_d;

这样编译能通过吗?

这里不能显示那个符号

使用特权

评论回复
16
申继鹏| | 2014-2-28 20:13 | 只看该作者
你的是八位数码管要显示1-9?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

62

帖子

0

粉丝