标题: 三极管驱动数码管程序,动态扫描不对,显示不出123456 [打印本页]

作者: 不必@执着    时间: 2017-7-13 15:26
标题: 三极管驱动数码管程序,动态扫描不对,显示不出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, 下载次数: 65)

BAE60CA7DF9F03DD22E309A425843954.jpg

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

全灭

全灭

作者: yzwzfyz    时间: 2017-7-14 00:51
先弄清显示原理吧。
作者: wulin    时间: 2017-7-14 06:55
先搞清楚数码管是共阳还是共阴,你程序中用的是共阳数组,共阴数组是其反码。
作者: imxuheng    时间: 2017-7-14 17:27
先检查你的数码管引脚连接和段选、位选是否匹配
作者: 不必@执着    时间: 2017-8-2 18:31
wulin 发表于 2017-7-14 06:55
先搞清楚数码管是共阳还是共阴,你程序中用的是共阳数组,共阴数组是其反码。

数码管共阳的

作者: 6ruirui    时间: 2017-8-2 19:11
挺好的
作者: brucedii    时间: 2017-8-2 20:18
检查下接线,要不先简单测试看看
作者: 钟荣春    时间: 2017-8-2 20:37
先写驱动层,再写应用层代码。
作者: zl2168    时间: 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文件能在清华出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。

作者: bgy    时间: 2017-8-3 13:53
动态扫描原理你先看看,实在不行可以加我QQ2856833259,无偿辅助您完成显示
作者: 不必@执着    时间: 2017-8-4 08:54
zl2168 发表于 2017-8-3 12:33
实例56  PNP晶体管选通3位共阳LED数码管动态显示

好的,谢谢帮助




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1