找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4173|回复: 10
打印 上一主题 下一主题
收起左侧

三极管驱动数码管程序,动态扫描不对,显示不出123456

[复制链接]
跳转到指定楼层
楼主
初学者,请各位多多指教,程序也在下边,显示的三种情况如下:




#include<reg51.h>
#include<intrins.h>
#define duan P2
#define wei P3

void disp();
void delay1ms(unsigned char d);

unsigned char code duans[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF};   //段选
unsigned char code weis[]={0xfe,0xfd,0xfb,0xf7};                                  //位选
unsigned int buffer[4];                                                                  //
//unsigned int dian[3];                                                                   //   
unsigned int i;

void main()
{
        while(1)
        {       
        for(i=0;i<500;i++)
        {
            buffer[0]=duans[10];                                                          //  全灭
            buffer[1]=duans[10];
            buffer[2]=duans[10];
            buffer[3]=duans[10];
            disp();
        }
        for(i=0;i<500;i++)
        {
            buffer[0]=duans[8]&~0x80;                                                  // 显示8   
            buffer[1]=duans[8]&~0x80;
            buffer[2]=duans[8]&~0x80;
            buffer[3]=duans[8]&~0x80;
            disp();
        }
        for(i=0;i<500;i++)
        {
            buffer[0]=duans[0];                                                         
            buffer[1]=duans[1];
            buffer[2]=duans[2];
            buffer[3]=duans[3];
            disp();

       
     }
        for(i=0;i<500;i++)
        {
            buffer[0]=duans[5];                                                          
            buffer[1]=duans[6];
            buffer[2]=duans[7];
            buffer[3]=duans[8];
            disp();
        }
        }
}


void disp()
{
        unsigned int i;

        for(i=0;i<4;i++)
        {       
                P3=weis;
                P2=buffer;               
                delay1ms(1);
        }
}


void delay1ms(unsigned char d)   
{
    unsigned char a,b,c;
    for(c=1*d;c>0;c--)                                                                //  ?   
        for(b=142;b>0;b--)
            for(a=2;a>0;a--);
}

求大神!!!!!




BAE60CA7DF9F03DD22E309A425843954.jpg (63.33 KB, 下载次数: 61)

BAE60CA7DF9F03DD22E309A425843954.jpg

EA1FCD8724AC565BEBA3AD76B8F113CA.jpg (61.47 KB, 下载次数: 60)

全灭

全灭

评分

参与人数 1黑币 +5 收起 理由
6ruirui + 5 赞一个!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2017-7-14 00:51 | 只看该作者
先弄清显示原理吧。
回复

使用道具 举报

板凳
ID:213173 发表于 2017-7-14 06:55 | 只看该作者
先搞清楚数码管是共阳还是共阴,你程序中用的是共阳数组,共阴数组是其反码。
回复

使用道具 举报

地板
ID:151348 发表于 2017-7-14 17:27 | 只看该作者
先检查你的数码管引脚连接和段选、位选是否匹配
回复

使用道具 举报

5#
ID:213277 发表于 2017-8-2 18:31 | 只看该作者
wulin 发表于 2017-7-14 06:55
先搞清楚数码管是共阳还是共阴,你程序中用的是共阳数组,共阴数组是其反码。

数码管共阳的
回复

使用道具 举报

6#
ID:198388 发表于 2017-8-2 19:11 | 只看该作者
挺好的
回复

使用道具 举报

7#
ID:224203 发表于 2017-8-2 20:18 | 只看该作者
检查下接线,要不先简单测试看看
回复

使用道具 举报

8#
ID:149565 发表于 2017-8-2 20:37 | 只看该作者
先写驱动层,再写应用层代码。
回复

使用道具 举报

9#
ID:111634 发表于 2017-8-3 12:33 | 只看该作者
本帖最后由 zl2168 于 2017-8-3 12:34 编辑

实例56  PNP晶体管选通3位共阳LED数码管动态显示
实例56 PNP晶体管选通3位LED动态显示.rar (47.41 KB, 下载次数: 26)

Proteus仿真一下,确认有效。以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行书中电路和程序设计有详细说明,程序语句条条有注解。仿真电路和Hex文件能在清华出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。
回复

使用道具 举报

10#
ID:162972 发表于 2017-8-3 13:53 | 只看该作者
动态扫描原理你先看看,实在不行可以加我QQ2856833259,无偿辅助您完成显示
回复

使用道具 举报

11#
ID:213277 发表于 2017-8-4 08:54 | 只看该作者
zl2168 发表于 2017-8-3 12:33
实例56  PNP晶体管选通3位共阳LED数码管动态显示

好的,谢谢帮助
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表