74HC164应用实例驱动数码管两例电路图和源程序Word文档下载推荐.docx

上传人:b****1 文档编号:1136982 上传时间:2023-04-30 格式:DOCX 页数:14 大小:183.99KB
下载 相关 举报
74HC164应用实例驱动数码管两例电路图和源程序Word文档下载推荐.docx_第1页
第1页 / 共14页
74HC164应用实例驱动数码管两例电路图和源程序Word文档下载推荐.docx_第2页
第2页 / 共14页
74HC164应用实例驱动数码管两例电路图和源程序Word文档下载推荐.docx_第3页
第3页 / 共14页
74HC164应用实例驱动数码管两例电路图和源程序Word文档下载推荐.docx_第4页
第4页 / 共14页
74HC164应用实例驱动数码管两例电路图和源程序Word文档下载推荐.docx_第5页
第5页 / 共14页
74HC164应用实例驱动数码管两例电路图和源程序Word文档下载推荐.docx_第6页
第6页 / 共14页
74HC164应用实例驱动数码管两例电路图和源程序Word文档下载推荐.docx_第7页
第7页 / 共14页
74HC164应用实例驱动数码管两例电路图和源程序Word文档下载推荐.docx_第8页
第8页 / 共14页
74HC164应用实例驱动数码管两例电路图和源程序Word文档下载推荐.docx_第9页
第9页 / 共14页
74HC164应用实例驱动数码管两例电路图和源程序Word文档下载推荐.docx_第10页
第10页 / 共14页
74HC164应用实例驱动数码管两例电路图和源程序Word文档下载推荐.docx_第11页
第11页 / 共14页
74HC164应用实例驱动数码管两例电路图和源程序Word文档下载推荐.docx_第12页
第12页 / 共14页
74HC164应用实例驱动数码管两例电路图和源程序Word文档下载推荐.docx_第13页
第13页 / 共14页
74HC164应用实例驱动数码管两例电路图和源程序Word文档下载推荐.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

74HC164应用实例驱动数码管两例电路图和源程序Word文档下载推荐.docx

《74HC164应用实例驱动数码管两例电路图和源程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《74HC164应用实例驱动数码管两例电路图和源程序Word文档下载推荐.docx(14页珍藏版)》请在冰点文库上搜索。

74HC164应用实例驱动数码管两例电路图和源程序Word文档下载推荐.docx

8位移完后点亮数码管==>

延时==>

返回第一步执行

2.中断部分:

进入中断==>

保存现场(以备调查取证,送你入狱^_^)==>

重置TCC==>

够1秒钟将需要显示的数据+1,并重置,不够就退出;

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

!

谁!

谁扔砖头上来?

啥?

你扔的?

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

1.;

中断部分:

2. 

3.;

;

中断;

4.INTPUT:

 

5. 

MOV 

TEMPA, 

A;

6. 

A,@130;

7. 

TCC,A;

255-130=125 

8. 

CLR 

RF;

9. 

此处填写250Us处理程序 

10. 

BS 

WKREG,T500US 

11.;

12. 

DJZ 

R1MS 

13. 

JMP 

INTEXT;

14. 

A,@4 

15. 

R1MS,A;

重置 

16. 

WKREG,T1MS 

17. 

此处填写1ms处理程序 

18. 

19. 

20. 

R20MS 

21. 

22. 

A,@20 

23. 

R20MS,A;

24. 

此处填写1秒处理程序 

25. 

WKREG,T20MS 

26. 

27. 

R1S 

28. 

29. 

A,@50 

30. 

R1S,A;

31. 

32. 

INC 

NUMBER 

33. 

A,NUMBER 

34. 

SUB 

A,@10 

35. 

JBS 

SR,2 

36. 

INTEXT 

37. 

A,@0 

38. 

NUMBER,A 

39. 

40. 

41. 

INTEXT:

42. 

A,TEMPA;

43. 

RETI;

44. 

45. 

46. 

47. 

48. 

49.;

显示部分:

50. 

51.;

==============TXDATA============== 

52.TXDATA:

53. 

P5,CC1 

54. 

A,@8 

55. 

DATALOP,A;

56.TXLOP:

57. 

BC 

58. 

P5,CLK;

clk=高 

59. 

NOP;

60. 

NOP 

61. 

DATA_BUF,7 

62. 

$+3 

63. 

P5,DATA;

64. 

$+2 

65. 

P5,DATA 

66.DD1MS:

67. 

$-1 

68. 

P5,CLK 

69. 

70. 

71. 

$-1;

72. 

RLC 

DATA_BUF 

73. 

DATALOP 

74. 

TXLOP 

75. 

76. 

77. 

78. 

79. 

80. 

81. 

P5,CLK 

82. 

83. 

84. 

85. 

RET;

86. 

87.;

数据查表 

88.;

===============DSPTBL============ 

89.DSPTBL:

ADD 

PC,A 

90. 

RETL 

@0B01000000;

91. 

@0B01111001;

92. 

@0B00100100;

93. 

@0B00110000;

94. 

@0B00011001;

95. 

@0B00010010;

96. 

@0B00000010;

97. 

@0B01111000;

98. 

@0B00000000;

99. 

@0B00010000;

100. 

101. 

102.;

循环体部分;

103. 

104.;

主程序;

105.MLOOP:

106. 

107. 

CALL 

DSPTBL 

108. 

DATA_BUF,A 

109. 

TXDATA 

110. 

111. 

112. 

113. 

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先进先出,也就是先写高位,移位放入。

电路如图:

3、 

程序源代码:

1.//共阴数码管74HC164串行驱动 

3.#include<

AT892051.H>

4. 

5.#define 

uint 

unsigned 

int 

7.#define 

uchar 

char 

9.sbit 

DAT=P3^7;

//模拟串口数据发送端 

11.sbit 

CLK=P3^4;

//模拟时钟控制端 

15.uchar 

code 

tab[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xff,0xf6};

//0-9,-,全灭 

19.void 

sendbyte(uchar 

byte) 

21.{ 

/

num,c;

num=tab[byte];

for(c=0;

c<

8;

c++) 

num>

>

=1;

47.} 

49. 

51. 

52. 

53.void 

delay_50ms(unsigned 

t) 

55.{ 

56. 

57.unsigned 

j;

59.for(;

t>

0;

t--) 

for(j=6245;

j>

j--) 

63.{;

65.} 

66. 

69.main() 

71.{ 

77.unsigned 

h;

while

(1){ 

for(h=0;

h<

10;

h++){ 

delay_50ms

(1);

sendbyte(h);

87. 

88. 

89. 

delay_50ms(4);

h=0;

101.} 

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

当前位置:首页 > 经管营销 > 经济市场

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

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