74HC164应用实例.docx

上传人:b****3 文档编号:5458427 上传时间:2023-05-08 格式:DOCX 页数:8 大小:84.99KB
下载 相关 举报
74HC164应用实例.docx_第1页
第1页 / 共8页
74HC164应用实例.docx_第2页
第2页 / 共8页
74HC164应用实例.docx_第3页
第3页 / 共8页
74HC164应用实例.docx_第4页
第4页 / 共8页
74HC164应用实例.docx_第5页
第5页 / 共8页
74HC164应用实例.docx_第6页
第6页 / 共8页
74HC164应用实例.docx_第7页
第7页 / 共8页
74HC164应用实例.docx_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

74HC164应用实例.docx

《74HC164应用实例.docx》由会员分享,可在线阅读,更多相关《74HC164应用实例.docx(8页珍藏版)》请在冰点文库上搜索。

74HC164应用实例.docx

74HC164应用实例

74HC164应用实例

实例1

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

1.首先先了解他的引脚功能和逻辑图,如下图:

图1 引脚名称和用途

 

图2真值表

通过真值表我们可以了解到,A,B两个输入端是互锁的,CLK上升沿时数据移入移位寄存器中,CLEAR为清零用的,接低电平时所有端口都输出低电平,了解了真值表之后开始运用了,先给出如下原理图:

 

图3原理图

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

注意了哦,通过查看164的规格书发现,164输出高电平电流比输出低电平电流要小,亦称灌电流大,扇出电流弱,所以适合选用共阳数码管,如图,本人偷懒没有画出那个数码管的8字

该介绍的介绍的差不多了,废话少说,该开始干活了,任务是:

 显示0-9每秒+1,到9后又返回0,一直循环显示,根据任务得到如下流程图:

1. 显示部分:

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

2.中断部分:

 

 进入中断==>保存现场(以备调查取证,送你入狱^_^)==>重置TCC==>够1秒钟将需要显示的数据+1,并重置,不够就退出;

根据以上要求就开始写代码调试了,要注意一点,数据移位时一定要记得高位在前哦,否则显示错误别怪我没有说清楚,我当年实验时就因为这个数据移位方向反了排查了半天,甚至以为是时钟频率不对,又以为时许不对.....搞了半天,NND后来重看DATASHEET才发现,原来是低级错误啊,呜呼哀哉.......,希望你不要重蹈我覆辙,哎哟!

!

谁!

谁!

谁扔砖头上来?

 啥?

你扔的?

我废话太多.........,那俺少来两句,继续上菜,咦好像没啥可说的了,上源程序吧

 

1.;中断部分:

 

2.  

3.;;;;;;;;;;中断;;;;;;;; 

4.INTPUT:

  

5. MOV TEMPA, A; 

6. MOV  A,@130; 

7.  MOV TCC,A;255-130=125 

8.  CLR RF; 

9.  ;;;;;此处填写250Us处理程序 

10.  BS WKREG,T500US  

11.;;;;;;;;;;;;;;;;;;;;;;;;; 

12.  DJZ R1MS  

13.  JMP INTEXT; 

14.   MOV A,@4  

15.  MOV R1MS,A;重置 

16.  BS WKREG,T1MS  

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

18.    

19. ;;;;;;;;;;;;;;;;;;;;;;;;;; 

20.  DJZ R20MS  

21.  JMP INTEXT; 

22.   MOV A,@20  

23.   MOV R20MS,A;重置 

24.  ;;;此处填写1秒处理程序 

25. BS WKREG,T20MS  

26. ;;;;;;;;;;;;;; 

27.  DJZ R1S  

28.  JMP INTEXT; 

29.  MOV A,@50  

30.  MOV R1S,A; 

31.  ;;;;;;;;; 

32.  INC NUMBER  

33.  MOV A,NUMBER  

34.  SUB A,@10  

35.  JBS SR,2  

36.  JMP INTEXT  

37.  MOV A,@0  

38.  MOV NUMBER,A  

39.  

40.    

41. INTEXT:

  

42.  MOV A,TEMPA; 

43.  RETI;;;;;;;;;;;;;;;;;;;;; 

44.  

45.   

46.  

47.   

48.  

49.;显示部分:

 

50.  

51.;==============TXDATA============== 

52.TXDATA:

  

53. BS P5,CC1  

54. MOV A,@8  

55. MOV DATALOP,A; 

56.TXLOP:

   

57. BC WKREG,T500US  

58. BS P5,CLK;clk=高 

59. NOP; 

60. NOP  

61. JBS DATA_BUF,7  

62. JMP $+3  

63. BS P5,DATA; 

64. JMP $+2  

65. BC P5,DATA  

66.DD1MS:

  JBS WKREG,T500US  

67. JMP $-1  

68. BC P5,CLK  

69. BC WKREG,T500US  

70. JBS WKREG,T500US  

71. JMP $-1; 

72. RLC DATA_BUF  

73. DJZ DATALOP  

74. JMP TXLOP  

75. ;;;;;;;;;; 

76. BC WKREG,T500US  

77. BS P5,CLK;clk=高 

78. BC WKREG,T500US  

79. JBS WKREG,T500US  

80. JMP $-1; 

81. BC P5,CLK   

82. ;;;;;;;; 

83. BC P5,CC1  

84.   

85. RET;;;;;;; 

86.  

87.;数据查表 

88.;===============DSPTBL============ 

89.DSPTBL:

 ADD PC,A  

90. RETL @0B01000000;0 

91. RETL @0B01111001;1 

92. RETL @0B00100100;2 

93. RETL @0B00110000;3 

94. RETL @0B00011001;4 

95. RETL @0B00010010;5 

96. RETL @0B00000010;6 

97. RETL @0B01111000;7 

98. RETL @0B00000000;8 

99. RETL @0B00010000;9 

100.   

101.  

102.;循环体部分; 

103.  

104.;;;;;;;;;;主程序;;;;;;;;;;;  

105.MLOOP:

   

106. MOV A,NUMBER  

107. CALL DSPTBL  

108. MOV DATA_BUF,A  

109. CALL TXDATA  

110. BC WKREG,T1MS  

111. JBS WKREG,T1MS  

112. JMP $-1  

113. NOP; 

114.          

115.JMP MLOOP;;;;;;;;;;;;;;;;;;;; 

实例2

  在实际应用中驱动数码管常用的方式分动态扫描和静态驱动。

动态扫描方式需要x+y个IO(x*y个数码管的情况,一般x=8,y=位数)这种方法很浪费MPU的IO端口对于2051等20脚的芯片就很难实现。

静态显示驱动法,即是指每一个LED灯分别对应一个独立的IO驱动口,这种方法适用较少LED的驱动,不适合数码管驱动。

 

    还有一种利用74HC164来驱动的方法。

74HC164是比较典型的移位寄存器,该移位寄存器有一个数据输入端口、一个时钟信号端口和八个输出端口。

这种方法只需要2个MPU的IO端口,而且在锁存器件这2个端口还可以干别的事情。

   74HC164驱动共阴、共阳数码管都很方便。

驱动要点:

 1、上升沿写入串行数据:

   CLK=0; 

    DAT=num&0x01;

   CLK=1;

 2、写入数据的数码管编码(指代码中的tab[])

    串行数据是FIFO先进先出,也就是先写高位,移位放入。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 实习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2