网站导航: 首页 > 设计参考 > 正文 文章搜索
74HC595 应用实例之IO口扩展驱动LED
 
文章编号:
100817213348
文章分类: 电路 电子元件
点 击:
...
关 键 词: 74HC595
文章来源:
伟纳电子,作者:gguoqing
摘 要:
用74HC595扩展IO口驱八个LED作流水灯实例的应用实例...

74HC595 的实际应用与编程

74HC595具有一个8位串行输入并行输出的移位寄存器和一个8位输出锁存器。

应用电路图:

自制实验电路板:

使用一根40线的硬盘连接线将自制电路板与ME300的仿真接口连接即可进行实验。 

 

C语言版源代码:
 

 

 

 

 

 

 

 
  1. ;================================================  
  2. ;74HC595 走马灯演示程序  
  3.   
  4. ;创作日期:2006/01/02  
  5. ;创作者:  gguoqing  
  6. ;================================================  
  7.   
  8.          SDATA_595  EQU  P1.0   ;串行数据输入  
  9.          SCLK_595   EQU  P1.1   ;移位时钟脉冲  
  10.          RCK_595    EQU  P1.2   ;输出锁存器控制脉冲  
  11.             
  12. ;================================================  
  13.   
  14.                ORG  0000H  
  15.                LJMP  MAIN   
  16.                ORG  0030H  
  17.   
  18. ;================================================  
  19.   MAIN:   
  20.                 MOV  SP,#60H  
  21.                 MOV  R0,#0FEH  
  22.   MAIN1:   
  23.                 CALL OUT_595   
  24.                 CALL  DELAY   
  25.                 MOV  A,R0  
  26.                 RL  A  
  27.                 MOV  R0,A  
  28.                 JMP  MAIN1   
  29. ;---------------------------------------------------------------  
  30. ;输出锁存器输出数据子程序  
  31. ;---------------------------------------------------------------  
  32. OUT_595:   
  33.                 LCALL WR_595   
  34.                 CLR  RCK_595   
  35.                 NOP  
  36.                 NOP  
  37.                 SETB RCK_595      ;上升沿将数据送到输出锁存器  
  38.                 NOP  
  39.                 NOP  
  40.                 NOP  
  41.                 CLR  RCK_595   
  42.                 RET  
  43. ;--------------------------------------------------------------  
  44. ;移位寄存器接收数据子程序  
  45. ;--------------------------------------------------------------  
  46. WR_595:            
  47.                 MOV R4,#08H            
  48.                 MOV A,R0  
  49. WR_LOOP:           
  50.                 RLC A  
  51.                 MOV SDATA_595,C   
  52.                 SETB SCLK_595       ;上升沿发生移位  
  53.                 NOP  
  54.                 NOP  
  55.                 CLR SCLK_595   
  56.                 DJNZ R4,WR_LOOP   
  57.                 RET  
  58. ;--------------------------------------------------------------  
  59. ;延时子程序  
  60. ;--------------------------------------------------------------  
  61. DELAY:             
  62.                 MOV  R5,#03H  
  63.  DEL0:            
  64.                 MOV  R6,#0FFH  
  65.  DEL1:             
  66.                 MOV  R7,#0FFH  
  67.                 DJNZ  R7,$   
  68.                 DJNZ  R6,DEL1   
  69.                 DJNZ  R5,DEL0   
  70.                 RET  
  71. ;---------------------------------------------------------------  
  72.                 END  
  73.   
 

 

汇编版源代码:      

 
  1. /******************************************************************  
  2. /* *  
  3. /* 74HC595 走马灯演示程序 *  
  4. /* 作者: gguoqing *  
  5. /* 时间: 2006/02/26 *  
  6. /* *  
  7. /*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *  
  8. /* *  
  9. /******************************************************************/  
  10.   
  11. #include < ;reg51.h> //51芯片管脚定义头文件   
  12. #include < ;intrins.h> //内部包含延时函数 _nop_() ;   
  13.   
  14. #define uchar unsigned char   
  15. #define uint unsigned int   
  16.   
  17. uchar code DAT[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f} ;   
  18.   
  19. sbit SDATA_595=P1^0 ; //串行数据输入   
  20. sbit SCLK_595 =P1^1 ; //移位时钟脉冲   
  21. sbit RCK_595 =P1^2 ; //输出锁存器控制脉冲   
  22.   
  23. uchar temp ;    
  24.   
  25. /********************************************************/  
  26. /* */  
  27. /* 延时子程序 */  
  28. /* */  
  29. /********************************************************/  
  30.   
  31. void delay(int ms)   
  32. {    
  33.     int k ;   
  34.     while(ms--)   
  35.     {   
  36.         for(k=0 ; k< ;250 ; k++)   
  37.         {   
  38.             _nop_() ;   
  39.             _nop_() ;   
  40.             _nop_() ;   
  41.             _nop_() ;   
  42.         }   
  43.     }   
  44. }   
  45.   
  46. /********************************************************/  
  47. /* */  
  48. /*将显示数据送入74HC595内部移位寄存器 */  
  49. /* */  
  50. /********************************************************/  
  51.   
  52. void WR_595(void)   
  53. {   
  54.     uchar j ;   
  55.     for (j=0 ;j< ;8 ;j++)   
  56.     {   
  57.         temp=temp< ;< ;1 ;    
  58.         SDATA_595=CY ;   
  59.         SCLK_595=1 ; //上升沿发生移位   
  60.         _nop_() ;   
  61.         _nop_() ;   
  62.         SCLK_595=0 ;   
  63.     }    
  64. }   
  65.   
  66. /********************************************************/  
  67. /* */  
  68. /*将移位寄存器内的数据锁存到输出寄存器并显示 */  
  69. /* */  
  70. /********************************************************/  
  71.   
  72. void OUT_595(void)   
  73. {   
  74.     RCK_595=0 ;    
  75.     _nop_() ;   
  76.     _nop_() ;   
  77.     RCK_595=1 ; //上升沿将数据送到输出锁存器   
  78.     _nop_() ;   
  79.     _nop_() ;    
  80.     _nop_() ;   
  81.     RCK_595=0 ;   
  82. }   
  83.   
  84. /********************************************************  
  85. * *  
  86. * 主程序 *  
  87. * *  
  88. *********************************************************/  
  89.   
  90. main()   
  91. {    
  92.     SCLK_595=0 ;   
  93.     RCK_595=1 ;   
  94.        
  95.     while(1)    
  96.     {   
  97.         uchar i ;   
  98.         for (i=0 ; i< ;8 ; i++)   
  99.         {   
  100.             temp=DAT[ i ] ; //取显示数据   
  101.             WR_595() ;   
  102.             OUT_595() ;   
  103.             delay(100) ;   
  104.         }   
  105.     }   
  106. }   
  107.   

 

 
相关文章:

 
最新开源项目
 
 
  查看更多...  
 
本站相关产品   淘宝网店
 




 
  查看更多...  

 

本站程序由百合电子工作室开发和维护
Copyright @ baihe electric studio
渝ICP备09006681号-4