切换到宽版
  • 1259阅读
  • 8回复

刚画的0.56数码管用595静态驱动。 [复制链接]

上一主题 下一主题
离线zhuls
 

发帖
1135
M币
2703
专家
3
粉丝
23
刚画的0.56数码管用595静态驱动,可级联、可兼容共阴共阳,有需要的拿去用吧。





本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共1条打赏M币+8
离线widjrerpfnvd

发帖
849
M币
1271
专家
5
粉丝
24
只看该作者 1楼 发表于: 01-13
这个东西挺好,特别对于单个级连很好。如果有代码示例更好

内容来自Android手机客户端

离线zhuls

发帖
1135
M币
2703
专家
3
粉丝
23
只看该作者 2楼 发表于: 01-13
我的板去打样了,估计下周2会到,有时间垒一下码测试一下传上来。
离线zhuls

发帖
1135
M币
2703
专家
3
粉丝
23
只看该作者 3楼 发表于: 02-13
//代码来了,段码并不是按顺序连接的,是以方便 PCB走线为准,不过并不影响显示,只是改了一下段码表。


#include <STC15F2K60S2.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <INTRINS.h>


sbit key1 = P4^7;
sbit key2 = P4^6;
sbit key3 = P4^5;
sbit key4 = P4^4;


sbit hc595_sda=P3^7;   //数据输入--------------74HC595 14#
sbit hc595_sck=P3^6;   //移位时钟,上升沿有效--74HC595 11#
sbit hc595_rck=P3^5;   //锁存时钟,上升沿有效--74HC595 12#
sbit hc595_oe =P3^5;   //输出使能,低电平有效--74HC595 13# 配套的PCB上,595的12、13脚已连在一起、


char code dis_seg[]={0x81,0xe7,0x92,0xc2,0xe4,0xc8,0x88,0xe3,0x80,0xc0};     //数字段码,共阳管,焊码管时错了方向,转了180度;
                  //    0    1     2   3    4    5     6    7   8     9
char code seg[]={0xfb,0xf7,0xef,0xdf,0xbf,0xfd,0xfe,0x7f};      //单段测试
               //   A    B    C    D    E    F    G    H

void Send_595(unsigned char dat);


//===============================
void Delay10us()        //@11.0592MHz
{
    unsigned char i;

    _nop_();
    i = 25;
    while (--i);
}
//======================================
void Delay0_5ms(unsigned int tt)        //0.5mS @ 11.0592MHz & 1T for stc15f2k60s2
{
    unsigned int i;
    for (;tt>0;tt--)
    for (i=423;i>0;i--);
}
//=============================
//595送出串行数据
void send_595(char dat)        //595发送1字节数据
{
    char count1;               //位计数器,单字节为8位
    for (count1=8;count1>0;count1--)
      {    
        hc595_sda=dat & 0x01;  //取最低位数据做为串行数据位,低位先发,若高位先发,则dat & 0x80
        hc595_sck=0;           //置SCK为低
        Delay10us();           //延时
        hc595_sck=1;           //置SCK为高
        Delay10us();           //延时,输出一个位的数据
        dat>>=1;               //数据右移,下一个位的数据,若高位先发则dat<<=1
      }
}

//======================================================================

main()
{
long  count;  //计数器    ,从0-99999
   for (count=0;count<8;count++)   //单段测试
       {
       send_595(seg[count]);
       send_595(seg[count]);
       send_595(seg[count]);
       send_595(seg[count]);
       send_595(seg[count]);
       hc595_rck=0;
       hc595_rck=1;     //数据已发完,锁存595的数据
       hc595_oe=0;      //数据已锁存,使能595的输出
       Delay0_5ms(200);
       }

while(1)              
     {
        send_595(dis_seg[count/10000]);    //万位数     除10000求商整数
        send_595(dis_seg[count/1000%10]);  //千位数     除1000求商后再除10求余数
        send_595(dis_seg[count/100%10]);   //百位数     除100求商后再除10求余数
        send_595(dis_seg[count/10%10]);    //十位数  除10求商后再除10求余数
        send_595(dis_seg[count%10]);       //个位数     除10后求余数

        hc595_rck=0;
        hc595_rck=1;     //数据已发完,锁存595的数据
        hc595_oe=0;      //数据已锁存,使能595的输出
        Delay0_5ms(40);
        count++;
        if (count>=100000)
            count=0;
        
        //while(key4==1);      //按键陷井,key4未按下则原地循环
        //while(key4==0);      //按键陷井,key4未放开则原地循环
                              //以上两行注释掉,则自动计数;保留则按一下计数加一次
    }

}
[ 此帖被zhuls在2018-02-13 17:03重新编辑 ]
本帖最近打赏记录:共1条打赏M币+9
离线zhxzhx

发帖
252
M币
73
专家
2
粉丝
5
只看该作者 4楼 发表于: 02-14
驱动数码,用4094单面就能画下。
离线ztrdiy

发帖
3218
M币
537
专家
3
粉丝
53
只看该作者 5楼 发表于: 02-16
挺好,收藏很有用!谢谢分享!
离线qq7284

发帖
136
M币
1863
专家
2
粉丝
15
只看该作者 6楼 发表于: 02-22
1个HC595 驱动一个数码管有点浪费;
楼主,有办法3个HC595级联驱动16位数码管吗?
本帖最近打赏记录:共1条打赏M币+1
离线zhuls

发帖
1135
M币
2703
专家
3
粉丝
23
只看该作者 7楼 发表于: 02-22
回 qq7284 的帖子
qq7284:1个HC595 驱动一个数码管有点浪费;
楼主,有办法3个HC595级联驱动16位数码管吗? (2018-02-22 18:25) 回 qq7284 的帖子

1个HC595 驱动一个数码管是用积木式,因为是级连,可以任意组合,而硬件不变,只要改软件就OK了,
3个595驱动16位数码管完全没问题,采用扫描方式,一个595驱动8段,另2个595驱动16个位。采用级连方式 。
离线qq7284

发帖
136
M币
1863
专家
2
粉丝
15
只看该作者 8楼 发表于: 02-22
回 zhuls 的帖子
zhuls:1个HC595 驱动一个数码管是用积木式,因为是级连,可以任意组合,而硬件不变,只要改软件就OK了,
3个595驱动16位数码管完全没问题,采用扫描方式,一个595驱动8段,另2个595驱动16个位。采用级连方式 。 (2018-02-22 18:31) 回 zhuls 的帖子

我现在就遇到一个问题,仿真可以 就差一步,不知你可否解答?
我发了一个帖子,你看一下。、

1个HC595驱动段,2个驱动位选
快速回复
限80 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个