74hc164驱动数码管及相应源程序

电子常识

2583人已加入

描述

  74hc164是串行输入,并行输出接口器件,可用在单向的并行输出/并行地址锁存等。 74hc164因为价格便宜,容易使用特别适合使用在在需要用到数码管显示IO口又比较紧张的电子产品中.

  使用方法:

驱动

  在实际应用中驱动数码管常用的方式分动态扫描和静态驱动。动态扫描方式需要x+y个IO(x*y个数码管的情况,一般x=8,y=位数)这种方法很浪费MPU的IO端口对于2051等20脚的芯片就很难实现。静态显示驱动法,即是指每一个LED灯分别对应一个独立的IO驱动口,这种方法适用较少LED的驱动,不适合数码管驱动。

  通过查看164的规格书发现,164输出高电平电流比输出低电平电流要小,亦称灌电流大,扇出电流弱,所以适合选用共阳数码管

  用义隆的EM78P153作为控制芯片,P50作为CLK时钟信号,注意平时数据不传输时,时钟信号是不发送的应一直保持低电平或者高电平,数据需要传输的时候才输出时钟信号^_^ ,继续P51作为移位数据输出端,接到74HC164的B端,A端接高电平,当然也可以AB端短路,然后连接到DATA移位数据端,P52作为数码管的选通信号(也可以叫消隐^_^), 作用是使数据传输过程暂时关闭显示,以免显示出不需要的数据,原因是应为164不带锁存功能,数据传输过程是一位一位的向高位移位输出的,所以要等数据全部移入后才打开始点亮数码管。

  任务是: 显示0-9 每秒+1 ,到9后又返回0,一直循环显示。

  流程图:

驱动

  1. 显示部分

  将需要显示的数值送入A ==》查表求得显示段码==》将段码逐位移入164==》8位移完后点亮数码管==》延时==》返回第一步执行

  2. 中断部分

  进入中断==》保存现场==》重置TCC==》够1秒钟将需要显示的数据+1,并重置,不够就退出;

  根据以上要求就开始写代码调试了,要注意一点,数据移位时一定要记得高位在前,否则会显示错误。  

  源程序:

  中断部分:

  ;;;;;;;;;;中断;;;;;;;;

  INTPUT:

  MOV TEMPA, A;

  var cpro_id = “u2845472”;

  MOV A,@130;

  MOV TCC,A;

255-130=125

  CLR RF;

  ;;;;;此处填写250Us处理程序BS WKREG,T500US;;;;;;;;;;;;;;;;;;;;;;;;;

  DJZ R1MS

  JMP INTEXT;

  MOV A,@4

  MOV R1MS,A;重置

  BS WKREG,T1MS

  ;;;;;;;此处填写1ms处理程序;;;;;;;;;;;;;;;;;;;;;;;;;;

  DJZ R20MS

  JMP INTEXT;

  MOV A,@20

  MOV R20MS,A;重置

  ;;;此处填写1秒处理程序BS WKREG,T20MS;;;;;;;;;;;;;;

  DJZ R1S

  JMP INTEXT;

  MOV A,@50

  MOV R1S,A;

  ;;;;;;;;;

  INC NUMBER

  MOV A,NUMBER

  SUB A,@10

  JBS SR,2

  JMP INTEXT

  MOV A,@0

  MOV NUMBER,A

  INTEXT:

  MOV A,TEMPA;

  RETI;;;;;;;;;;;;;;;;;;;;;

  显示部分:

  (window.cproArray = window.cproArray || []).push({ id: “u3054371” });

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分