CLRBIT: CLR SCLK ; 寄存器时钟拉低 CLR C ; 寄存器清零 MOV SDA , C ; 送入74HC595 SETB SCLK ; 时钟的上升沿送入寄存器 DJNZ R2 , CLRBIT ; 送完24 位 RET ; 子程序返回 显示子程序: DISPLAY: CLR SLCK ; 锁存器时钟拉低 MOV R3 , # 3 ; 三个数码管 MOV R0 , # DISP3 ; 从第三个开始送 DISP1 : MOV A , @R0 ; 送8 位数到74HC595 MOV R2 , # 8 DISP2 : CLR SCLK RLC A MOV SDA , C SETB SCLK DJNZ R2 , DISP2 ; 送完一个字节 DEC R0 ; 送下一个数码管的显示数据 DJNZ R3 , DISP1 ; 送完三个字节 SETB SLCK ; 时钟的上升沿寄存器数据送 入锁存器 RET ; 子程序返回 从以上例子可以看出, 用74HC595 设计LED 驱动电路, 硬件和软件的设计都不存在复杂的技术问题, 特别是软件设计。另外, 74HC595 不仅可以用来驱动LED 显示器, 而且能够用来驱动发光二极管,每个74HC595 可以同时驱动8 个发光二极管。在I/ O口线较为紧张的情况下, 这不失为一种解决方案。在对产品的体积要求不高、并且希望降低成本时, 采用这种方案较为理想。 |