打印

51单片机和74hc595级联驱动数码管静态显示,高手帮帮忙!!

[复制链接]
5950|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tiger_0315|  楼主 | 2012-5-1 22:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
#define uint unsigned  int
#define uchar unsigned char
uchar code table[]={0x05,0xcf,0x26,0x86,0xcc,0x94,0x14,0xc5,0x04,0x84};
sbit  SHcp=P2^2;
sbit  STcp=P2^1;
sbit  DS=P2^0;
uchar cont;
uchar shu;
void  delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void input (uchar aa)
{
        uchar i;
        STcp=0;
        for(i=0;i<8;i++)
        {
                DS=aa&0x80;
                SHcp=0;
                delay(1);
                SHcp=1;
                aa<<=1;
        }
        STcp=1;
        delay(1);
        STcp=0;               
}
void zj()
{
        uchar i,j;
        for(i=0;i<10;i++)
                {
                        for(j=0;j<5;j++)
                                input(table[i]);       
                        delay(1000);
                }       
}
void main()
{
      zj();                               
}
这个程序能正常显示, 因为是静态显示,数码管的位都连在一起,该怎么选位呢,比如我要让高三位不显示就显示低两位,或者就叫它显示最高位和最低位,中间三位不显示 分别需要怎么写呢, 还有如何能使其每位显示不同的数字后停住, 比如显示12345,就停在那里, 我能让其每位显示不同的数字但是停不下来,比如显示12345,我写出来就会是12345,23451,34512,45123,54321.我不需要他滚动,如何叫它停在那里!  谢谢了!!!

R3M9LSY5X(7]1YXC~BTI9GS.jpg (118.26 KB )

R3M9LSY5X(7]1YXC~BTI9GS.jpg

相关帖子

沙发
tiger_0315|  楼主 | 2012-5-1 22:44 | 只看该作者
没有人帮小弟我吗:'(

使用特权

评论回复
板凳
ai大海ai| | 2012-5-1 22:58 | 只看该作者
我也才学单片机,我这就是两个寄存器就够了啊。哪里用的了五个,浪费了吧。。。

使用特权

评论回复
地板
tiger_0315|  楼主 | 2012-5-1 23:07 | 只看该作者
用两个的话只能是动态扫描吧!  这样接上是静态扫描, 动态扫描的话数码管没静态的亮

使用特权

评论回复
5
kongkongmonk| | 2012-5-1 23:30 | 只看该作者
这么简单的问题,还是用C编写的!你去看看郭天祥的十天征服单片机吧,入门非常快!
建议楼主好好学下C语言和了解单片机的结构吧!以及动态显示的原理!!!!

使用特权

评论回复
6
yangxiaolongqq| | 2012-5-1 23:52 | 只看该作者
LZ,你自己想一下,其实很容易的,好多种方法都能实现,只有在不断尝试的过程中自己才可以提高。:)

使用特权

评论回复
7
NE5532| | 2012-5-2 08:06 | 只看该作者
提示楼主,控制数码管的公共端,另外建议不要仿真,上实物。

使用特权

评论回复
8
lyn0103| | 2012-5-2 09:20 | 只看该作者
LZ還是自己好好想想吧。。。按照這樣的電路也就只能做lz的東西了。。。做不了片選、、

使用特权

评论回复
9
lufeijian| | 2012-5-2 10:28 | 只看该作者
楼主,先定义一个5个元素的无符号数组变量,每个元素代表一个数码管,把要显示的数据放到对应的元素中,然后一次输出整个数组的所有元素,整整5个,不能多也不能少,这样就不会滚动了

使用特权

评论回复
10
lufeijian| | 2012-5-2 10:29 | 只看该作者
在输出完所有数据之后,再输出并行加载时钟.

使用特权

评论回复
11
NE5532| | 2012-5-2 14:37 | 只看该作者
发现昨天把帖子看错了,楼主是级联的,这个显示犯不着做动态扫描,也没办法做吧。

使用特权

评论回复
12
wangwang3008| | 2012-5-2 15:19 | 只看该作者
先用数组 把五个段码存好  分别给五个595锁存   然后一起开位选  就OK了

使用特权

评论回复
13
tiger_0315|  楼主 | 2012-5-3 13:41 | 只看该作者
发现昨天把帖子看错了,楼主是级联的,这个显示犯不着做动态扫描,也没办法做吧。
NE5532 发表于 2012-5-2 14:37
我本来就不是动态的,我问的是静态怎么写! 你没看清楚!!

使用特权

评论回复
14
tiger_0315|  楼主 | 2012-5-3 14:20 | 只看该作者
10# lufeijian 非常感谢!!!弄好了:loveliness:

使用特权

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

本版积分规则

0

主题

5

帖子

0

粉丝