74hc595驱动串行led显示

发布者:HarmoniousDream最新更新时间:2018-01-17 来源: eefocus关键字:74hc595驱动  串行led显示 手机看文章 扫描二维码
随时随地手机看文章

串行驱动LED显示 
   
//一个74hc595位移寄存器驱动三极管驱动led位 , 
//两个74hc595驱动led段,方式位5位x8段x2=10个数码管
//5分频,每次扫描时间位1.25ms


//定义特殊符号

#define nul 0xf

#define qc 0xc
#define qb 0xb
#define q_ 0xa
#define q__ 0xd
#define q___ 0xe
#define qp 0x10
#define qe 0x11
#define qj 0x12
#define qn 0x13
#define qf 0x14
#define qa 0x15
#define qr 0x16
#define qd 0x17
#define qu 0x18
#define ql 0x19
#define qh 0x1a
#define qwen 0x1b
#define qt 0x1c
#define qla 0x1d
#define qlb 0x1e
#define qlc 0x1f
#define qld 0x20
#define qle 0x21
#define qlf 0x22
#define qlg 0x23
#define qldp 0x24



//显示段信息,不同led排列组合的段信息只需更改8个数值即可。
//因此,该定义具有通用性。

// 显示 
//  -d 20
// |c 40 |e 10
//  - g  80  
// |b 2 |f 4
//  _a1 .dp 8
#define pa 1
#define pb 2
#define pc 0x40
#define pd 0x20
#define pe 0x10
#define pf 4 
#define pg 0x80
#define PDP 8

//--------------
#define l0 PDP+pg
#define l1 255-pf-pe
#define l2 PDP+pc+pf
#define l3 pdp+pc+pb
#define l4 pdp+pa+pb+pd
#define l5 pdp+pb+pe
#define l6 pdp+pe
#define l7 pdp+pc+pg+pb+pa
#define l8 pdp
#define l9 pdp+pb
#define la pdp+pa
#define lb pdp+pd+pe
#define lc pdp+pg+pe+pf
#define ld pdp+pc+pd
#define le pdp+pe+pf
#define lf pdp+pe+pf+pa
#define l_ 255-pg
#define lnul 255
#define ll pdp+pg+pd+pf+pe
#define lp pdp+pa+pf
#define lt pdp+pd+pe+pf
#define lr pdp+pe+pf+pg+pa
#define ln pdp+pg+pa
#define lh pdp+pd+pe+pa
#define ly pdp+pb+pd
#define lu pdp+pg+pd
#define l__ pdp+pg+pb+pc+pe+pf
#define l___ l__-pg
#define l_1 255-pa
#define l_2 255-pa-pg
#define lj 255-(pe+pf+pa)
#define lwen 255-(pd+pe+pg+pb)
#define lall 0


#define lla 255-pa
#define llb 255-pb
#define llc 255-pc
#define lld 255-pd
#define lle 255-pe
#define llf 255-pf
#define llg 255-pg
#define lldp 255-pdp


//串行送出的位信息,目前是10位led显示。
unsigned char code un_dig[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb};
//串行送出的短信息。
unsigned char code un_disp[]={l0,l1,l2,l3,l4,l5,l6,l7,l8,l9,l_,lb,lc,l__,l___,lnul,lp,le,lj,ln,lf,la,lr,ld,lu,
ll,lh,lwen,lt,lla,llb,llc,lld,lle,llf,llg,lldp, lnul };

 


sbit d_clk=P0^0;  //移位时钟
sbit d_dat=P0^1;  //移位数据
sbit d_st=P0^2;   //移位锁定


unsigned char dig;   //位扫描计数器
unsigned char d[10];       //显示缓冲

//送出8位串行数据
void out_disp(unsigned char dd) {
 unsigned char i;
 for (i=0;i<8;i++) {
  if (dd&1) d_dat=1; else d_dat=0;
  d_clk=0;
  dd>>=1;
  d_clk=1;
 }
}
//控制小数点和闪烁,显示数据|0x040表示有小数点;显示数据|0x80表示闪烁。
void out_displ(unsigned char dd) {
 if (dd>=0x80) {
  if (s001>flash_time) {out_disp(0xff);return;}
 }
 dd&=0x7f;
 if (dd>=0x40) {
  dd=un_disp[dd&0x3f]^pdp;
 } else dd=un_disp[dd];
 out_disp(dd);
}

 

 

unsigned int s001; //闪烁时间参考
void int_t0(void) interrupt 1 {
 unsigned char dd;
 TL0=TL0+30;TH0=0xfb; //800
 time++;
 if ((++s001)>=800) s001=0;
 // 显示 
 if ((++dig)>4) dig=0;
 d_st=0;
 dd=d[dig+5];
 out_displ(dd);
 dd=d[dig];
 out_displ(dd);
 out_disp(un_dig[dig]);
 d_st=1;
}
void main(void) {
 unsigned char i;
 TMOD=0x1;
 TR0=ET0=1;
 EA=1;
 for (i=0;i<10;i++) d[i]=i; //display test
 while (1) {}


关键字:74hc595驱动  串行led显示 引用地址:74hc595驱动串行led显示

上一篇:51多字节除法程序及使用
下一篇:89c51控制的16*16LED点阵显示

推荐阅读最新更新时间:2024-03-16 15:53

74hc595+4根IO口线驱动1602,带PWM调光
呵呵,不用我说你们也知道为什么只需要4根线:因为咱用了74hc595啊!因为74HC595最近我手里一抓一大把。但是STC的单片机IO口紧缺。就算使用4线驱动模式也要8个IO(还要算上背光PWM)。这一次我几乎做到了他的一半。如果不用PWM的话。大概只需要3个IO,如果需要PWM就四个罗。 MCU当然是老掉牙的死特惨89C52罗~ 也可以在595后面级联类似三极管开关 继电器之类的玩意。当然友情提醒,别超过4个595.否则速度会慢的可怕。我现在1个595.写1602都可以丢掉延时函数了。 这一次硬件设计的比较简单,但是IO全反了。所以需要占用额外的CPU时间修正,但是毕竟方便洞洞板嘛。还有大家别看到我给
[单片机]
<font color='red'>74hc595</font>+4根IO口线<font color='red'>驱动</font>1602,带PWM调光
51单片机利用74HC595驱动数码管
基于51单片机利用八个数码管花样显示如下: xxx11xxx→xx2222xx→x333333x→44444444→x555555x→xx6666xx→x777777x→88888888 每个状态各一秒,显示反复循环,其中x表示对应的数码管熄灭 问题补充:是共阳极的数码管,利用595芯片驱动的。采用C语言。 =================================================== 最佳答案:程序设计完毕,采用PROTEUS仿真截图如下。 程序如下: //============================================= #include reg52.h #define u
[单片机]
51单片机利用<font color='red'>74HC595</font><font color='red'>驱动</font>数码管
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved