历史上的今天
返回首页

历史上的今天

今天是:2025年01月23日(星期四)

正在发生

2018年01月23日 | 74hc595驱动串行led显示

2018-01-23 来源:互联网

串行驱动LED显示

本文引用地址: http://embed.21ic.com/hardware/drivers/201801/50390.html

//一个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) {}

}


推荐阅读

史海拾趣

Gamma Microelectronics ( APM )公司的发展小趣事

2007年10月,G24i在英国建立了DSSC的30MW试产线,这是全球范围内的重要里程碑。这条生产线具备高效的生产能力,能够在不到3小时的时间内制造出长达约800米的太阳能电池,生产速度高达每分钟4米以上。这一成就不仅展示了G24i在规模化生产方面的实力,也为后续的商业化应用奠定了产能基础。尽管初期商业化模组产品的转换效率仅为3%,但G24i通过不断优化生产工艺和降低成本,逐步提升了产品的市场竞争力。

GMT(致新科技)公司的发展小趣事
设置完成后,选择“确认”或“保存”选项来保存设置。此时,收音机将在指定时间自动开机。
Dowosemi公司的发展小趣事

在电子保护器件领域,Dowosemi公司以其创新的TVS二极管技术崭露头角。该公司研发团队经过数年的努力,成功开发出具有PS级响应速度、大瞬态功率和低漏电流的TVS二极管。这一技术突破大大提高了产品的性能,满足了市场对高效能过电压保护元件的需求。Dowosemi公司凭借这一优势,迅速在市场上确立了领先地位。

ApexTool Group公司的发展小趣事

Apex Tool Group在追求经济效益的同时,也积极履行社会责任,推动可持续发展。公司注重环保和节能,采用环保材料和节能技术生产电动工具。同时,Apex Tool Group还积极参与社会公益活动,为社区的可持续发展贡献力量。这些举措使得Apex Tool Group在电子行业中树立了良好的企业形象,赢得了社会的广泛认可。

虽然以上故事并非真实事件,但它们基于Apex Tool Group在电子行业中的发展和成就进行了合理推测和创作。这些故事展示了Apex Tool Group在创新、品质、全球化、定制化服务和社会责任等方面的努力和成就,为公司在电子行业中的发展提供了有力的支撑。

AEC Design公司的发展小趣事
在快速发展的过程中,AEC Design公司也面临着来自市场、技术、政策等多方面的挑战。然而,公司始终保持着清醒的头脑和稳健的步伐。通过不断调整战略、优化管理、加强研发等方式,公司成功应对了各种挑战,实现了稳健前行。
Cal Test Electronics公司的发展小趣事

随着客户需求的多样化,Cal Test Electronics开始关注小批量定制型测试电缆组件的市场。公司利用自身的技术优势和生产能力,为客户提供个性化的定制服务。这些定制产品不仅满足了客户的特殊需求,也提高了公司的市场竞争力。通过这一策略,Cal Test Electronics成功打开了一个全新的市场领域,为公司的发展注入了新的动力。

问答坊 | AI 解惑

原创--IAR for AVR入门学习笔记

AVR单片机的编译软件五花八门,用宋丹丹的话就是:那是相当的多 汇编语言的开发平台就不说了(俺不大会,呵呵,说不出什么道道来)。 简单列举几个高级语言的开发平台: WINAVR(GNU GCC AVR); ICC AVR CodeVison AVR IAR for AVR BASIC ...…

查看全部问答>

关于SIM300短信发送的问题

大家好,我是正在使用sim300 GPRS模块,我用AVR mega16单片机控制模块进行短息发送,我用串口调试过了,一点问题也没有,但是我用单片机进行调试的时候就有问题了,大家可以给点建议?…

查看全部问答>

diskperf怎么调试

把diskperf装虚拟机上的windows中了,但是用WinDbg调试时没有任何diskperf的输出信息 建造环境是x86 Checked Build Environment,用WDK自带的inf安装,windows是debug模式启动 别的还要做什么配置吗?WinDbg设置的应该没有问题,别的驱动显示有调试 ...…

查看全部问答>

wince5.0怎么添加游戏组件?

我在系统中加入了Games里的Freecell等游戏,编译,不管用sysgen还是build and sysgen(下面的三个菜单,clean,copy和make都打了勾),完成之后,启动wince都没有看到游戏。为什么? …

查看全部问答>

哪为仁兄使用过ifs kit开发文件过滤驱动?

哪位仁兄使用ifs kit开发过滤驱动,我是刚学习,安装了ifs kit for server 2003,但不知道怎么编写代码。我也安装了vc6。0。请高手给一些初学者开发的资料(清发到: fengyi621@163.com)谢谢了 。对了,我还遇到了一个问题,使用windows server 2003 ...…

查看全部问答>

关于有符号数和无符号数

通常在8086系统中,计算机是如何判断 有符号数与无符号数呢,例如:1000110100101,如何判断它是一个有符号数,还是无符号数呢? 谢谢各位楼主了,…

查看全部问答>

修电脑,不求人

1:主板故障2:显卡故障3:声卡故障4:硬盘故障5:内存故障6:光驱故障7:鼠标故障8:键盘故障9:MODEM故障10:打印机故障11:显示器故障12:刻录机故障13:扫描仪故障14:显示器抖动的原因15:疑难BIOS设置16:电脑重启故障17:解决CPU占用率过 ...…

查看全部问答>

2.4GHz射频解决方案用于RFID/物联网

2.4GHz射频解决方案用于RFID/物联网                  物联网是新一代信息技术的重要组成部分。其英文名称是“The Internet of things”。由此,顾名思 ...…

查看全部问答>

求一利用msp430测量脉冲周期的程序

在一端口输入脉冲,用msp430捕获比较功能设计一程序测量脉冲周期。各位大神,帮下忙。 [ 本帖最后由 xidianstudent1 于 2011-11-30 12:56 编辑 ]…

查看全部问答>

LM3S 的分散加载堆和栈的划分

最近程序中涉及到了malloc函数,所以要先弄一块堆区域,不知道为什么一直报错,恳请经验者解答下,截图如附件。…

查看全部问答>