找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机控制两个级联74HC595驱动数码管的消影问题

查看数: 7851 | 评论数: 11 | 收藏 2
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-1-30 17:18

正文摘要:

新手用单片机开发板上的2个74HC595级联的芯片驱动数码管。目的是显示0~7.代码写好后结果成了这样: 数码管不断地闪烁,但依稀可见数字。 自己也放慢观察过乱码的现象,觉得是当第一次段选位选都输出后, ...

回复

ID:417194 发表于 2019-2-25 14:48
找到问题了,是板子的问题。板子上的控制寄存器的P34P35被短接了,拔掉短接片就OK了
ID:417194 发表于 2019-2-25 14:47
tusanyou 发表于 2019-2-12 01:04
595的问题!八个输出之间纯在击穿!595特别容易静电击穿!做了一个全彩光立方!开始采用的595!换的头痛 ...

哈哈,595是不好用。不过我终于找到问题了,问题出在我的板子上。我的板子P3.4,P3.5管脚被短接了,把短接片拔掉就ok了。自己太粗心了哈哈
ID:475798 发表于 2019-2-12 01:04
Nimaby 发表于 2019-1-31 16:40
我也觉得是我硬件的问题。

595的问题!八个输出之间纯在击穿!595特别容易静电击穿!做了一个全彩光立方!开始采用的595!换的头痛!就放弃595了!
ID:417194 发表于 2019-1-31 16:40
wsxujn 发表于 2019-1-31 11:52
和硬件电路有关,做一个产品,595做列驱动鬼影严重,换成138好了

我也觉得是我硬件的问题。
ID:186249 发表于 2019-1-31 11:52
和硬件电路有关,做一个产品,595做列驱动鬼影严重,换成138好了
ID:417194 发表于 2019-1-31 10:58
ssk7793 发表于 2019-1-31 10:37
调整延时时间试试

试过了,没用
ID:424598 发表于 2019-1-31 10:37
调整延时时间试试
ID:417194 发表于 2019-1-31 10:14
HC6800-ES-V2.0 发表于 2019-1-31 08:58
下面的程序,是你这个板子的资料,你看看吧!
程序一:不用译码器的
/********************************* ...

谢谢,这种我是晓得的。但是我的目的是要用的是板子上2个级联的595来驱动数码管。你第一个程序的消影方法我把他在我的程序里试过,没有效果,所以发论坛来了。
ID:164602 发表于 2019-1-31 08:58
下面的程序,是你这个板子的资料,你看看吧!
程序一:不用译码器的
/*******************************************************************************
*                 
*                                        普中科技
--------------------------------------------------------------------------------
* 实 验 名                 : 动态数码管显示试验
* 实验说明       : 8位数码管显示0~7
* 连接方式       : 见连接图
* 注    意                 :
*******************************************************************************/

#include<reg51.h>

//--定义使用的IO口--//
#define GPIO_DIG   P0        //段选
#define GPIO_PLACE P1        //位选

//--定义全局变量--//
unsigned char code DIG_PLACE[8] = {
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位选控制   查表的方法控制
unsigned char code DIG_CODE[17] = {
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码
unsigned char DisplayData[8];
//用来存放要显示的8位数的值

//--声明全局函数--//
void DigDisplay(); //动态显示函数

/*******************************************************************************
* 函 数 名         : main
* 函数功能                   : 主函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/

void main(void)
{
        unsigned char i;

        for(i=0; i<8; i++)
        {
                DisplayData[i] = DIG_CODE[i];       
        }
        while(1)
        {
                DigDisplay();
        }                               
}

/*******************************************************************************
* 函 数 名         : DigDisplay
* 函数功能                   : 使用数码管显示
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/

void DigDisplay()
{
        unsigned char i;
        unsigned int j;

        for(i=0; i<8; i++)
        {
                GPIO_PLACE = DIG_PLACE[i];         //发送位选
                GPIO_DIG = DisplayData[i];     //发送段码
                j = 10;                                                 //扫描间隔时间设定
                while(j--);       
                GPIO_DIG = 0x00;//消隐
        }
}
程序二:用译码器的
/*******************************************************************************
*                 
*                                        普中科技
--------------------------------------------------------------------------------
* 实 验 名                 : 动态数码管显示试验
* 实验说明       : 8位数码管显示0~7
* 连接方式       : 见连接图
* 注    意                 :
*******************************************************************************/

#include<reg51.h>

//--定义使用的IO--//
#define GPIO_DIG P0

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

//--定义全局变量--//
unsigned char code DIG_CODE[17]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码
unsigned char DisplayData[8];
//用来存放要显示的8位数的值

//--声明全局函数--//
void DigDisplay(); //动态显示函数
/*******************************************************************************
* 函 数 名         : main
* 函数功能                   : 主函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void main(void)
{
        unsigned char i;
        for(i=0;i<8;i++)
        {
                DisplayData[i]=DIG_CODE[i];       
        }
        while(1)
        {
                DigDisplay();
        }                               
}
/*******************************************************************************
* 函 数 名         : DigDisplay
* 函数功能                   : 使用数码管显示
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void DigDisplay()
{
        unsigned char i;
        unsigned int j;
        for(i=0;i<8;i++)
        {
                switch(i)         //位选,选择点亮的数码管,
                {
                        case(0):
                                LSA=0;LSB=0;LSC=0; break;//显示第0位
                        case(1):
                                LSA=1;LSB=0;LSC=0; break;//显示第1位
                        case(2):
                                LSA=0;LSB=1;LSC=0; break;//显示第2位
                        case(3):
                                LSA=1;LSB=1;LSC=0; break;//显示第3位
                        case(4):
                                LSA=0;LSB=0;LSC=1; break;//显示第4位
                        case(5):
                                LSA=1;LSB=0;LSC=1; break;//显示第5位
                        case(6):
                                LSA=0;LSB=1;LSC=1; break;//显示第6位
                        case(7):
                                LSA=1;LSB=1;LSC=1; break;//显示第7位       
                }
                GPIO_DIG=DisplayData[i];//发送段码
                j=10;                                                 //扫描间隔时间设定
                while(j--);       
                GPIO_DIG=0x00;//消隐
        }
}
ID:123289 发表于 2019-1-31 08:04
在切换扫描数据数据时,做到先关,再改数据,再开,就可以了。
ID:454000 发表于 2019-1-30 19:52
来学习下,大家踊跃发言咯!

评分

参与人数 3黑币 +60 收起 理由
站着说话不腰疼 + 15
shuisheng60 + 10
jinsheng7533967 + 35 赞一个!

查看全部评分

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

Powered by 单片机教程网

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