4990|3

2781

帖子

417

TA的资源

五彩晶圆(中级)

楼主
 

MSP430全系列单片机 74HC595/74LS595 SPI总线驱动程序 [复制链接]

  1. /********************************************************
  2. *74HC595.c   for MSP430各个系列单片机
  3. * 可移植性好,只需修改宏定义和端口的初始化
  4. * by 追梦  2011-3-19
  5. ********************************************************/
  6. #define SHCLK_1 P1OUT |=BIT2  //P1.2 移位时钟信号
  7. #define SHCLK_0 P1OUT &=~BIT2
  8. #define STCLK_1 P1OUT |=BIT1  //P1.1 锁存输入信号
  9. #define STCLK_0 P1OUT &=~BIT1
  10. #define DataLine_1 P1OUT |= BIT0 //P1.0 数据输入
  11. #define DataLine_0 P1OUT &=~BIT0

  12. //共“阳”极数码管的码表         
  13. unsigned char LED7CA[] ={~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,
  14.                ~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};
  15. //共“阴”极数码管的码表         
  16. unsigned char LED7CC[] ={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,
  17.                0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
  18. //初始化74HC595的端口
  19. void HC595_Init()
  20. {
  21.   P1SEL = 0;
  22.   P1DIR |= BIT0+BIT1+BIT2; //使用P1.0 P1.1 P1.3
  23. }
  24. /********************************************************
  25. 名  称:HC595_SendData()
  26. 功  能:向74HC595 的SPI总线发送一字节数据
  27. 参  数:val:数码管的段码
  28. ********************************************************/
  29. void HC595_SendData(unsigned char val)
  30. {
  31.   unsigned int i;
  32.   for(i=0;i<8;i++)
  33.   {         //从最高位开始各个位依次发送
  34.     if((val<<i)&0x80)
  35.     {
  36.       DataLine_1;
  37.     }
  38.     else  DataLine_0;
  39.     SHCLK_0;
  40.     _NOP();
  41.     SHCLK_1;
  42.   }
  43.   STCLK_0;
  44.   _NOP();
  45.   STCLK_1; //锁存一个字节,数码管显示
  46. }




  47. //测试代码


  48. #include "msp430x44x.h"
  49. #include "MSP430_74HC595.c"

  50. void  main( void )
  51. {
  52.   unsigned char i,led;
  53.   // Stop watchdog timer to prevent time out reset
  54.   WDTCTL = WDTPW + WDTHOLD;
  55.   FLL_CTL0 |= XCAP18PF;
  56.   
  57.   HC595_Init();
  58.   STCLK_0;
  59.   led=0xfe;
  60.   
  61.   while(1)
  62.   {
  63.    
  64.    
  65.     HC595_SendData(led);
  66.     __delay_cycles(200000);//0.2s
  67.     led <<= 1;
  68.     led |= BIT0;
  69.     if(led==0xff)led=0xfe;
  70.    
  71.     /*
  72.    for(i=0;i<16;i++)
  73.    {
  74.       HC595_SendData(LED7CA[i]);
  75.       __delay_cycles(500000);
  76.    }  */
  77.   }
  78. }
复制代码
MSP430全系列单片机 74HC165/74LS165驱动程序
  1. /********************************************************
  2. *HC74165.c  74HC165 for MSP430各系列单片机
  3. *74HC165:8位并入串出移位寄存器,可以接8个按键
  4. *by 追梦  2011-3-19
  5. *P1.0 QH输出;P1.1 SHIFT/LOAD;P1.2 CLOCK & CLOCK INHIBIT
  6. ********************************************************/
  7. #define QH BIT0
  8. #define SHIFT BIT1
  9. #define CLOCK BIT2
  10. #define HC165SEL P1SEL
  11. #define HC165DIR P1DIR
  12. #define HC165OUT P1OUT
  13. #define HC165IN  P1IN
  14. //74HC165与单片机的连接端口初始设置
  15. void HC74165_Init()
  16. {
  17.   HC165SEL &= ~(QH+SHIFT+CLOCK);
  18.   HC165DIR |= SHIFT + CLOCK;
  19.   HC165DIR &= ~QH;
  20. }
  21. /********************************************************
  22. *名  称:GetHC74165()
  23. *功  能:锁存74HC165的8位输入,并逐位读出
  24. *出  口:读取的8位状态数据,放在整型数据的低八位
  25. ********************************************************/
  26. unsigned int GetHC74165(void)
  27. {
  28.   unsigned char i;
  29.   unsigned int indata=0;
  30.   HC165OUT &= ~SHIFT;
  31.   _NOP();
  32.   HC165OUT |= SHIFT;
  33.   _NOP();
  34.   _NOP();
  35.   for(i=0;i<8;i++)
  36.   {
  37.     indata <<= 1;
  38.     if(HC165IN & QH) indata += 1;
  39.     HC165OUT |= CLOCK;
  40.     _NOP();
  41.     HC165OUT &= ~CLOCK;
  42.   }
  43.   return indata;
  44. }



  45. //测试代码


  46. #include "msp430x44x.h"
  47. #include "HC74165.c"

  48. void main( void )
  49. {
  50.   unsigned int key;
  51.   // Stop watchdog timer to prevent time out reset
  52.   WDTCTL = WDTPW + WDTHOLD;
  53.   FLL_CTL0 |= XCAP18PF;
  54.   
  55.   HC74165_Init();
  56.   P2DIR = 0xff;
  57.   P2OUT = 0xff;
  58.   
  59.   while(1)
  60.   {
  61.     if((key=GetHC74165())!=0xff)
  62.       P2OUT = key;
  63.   }

  64. }
复制代码




最新回复

应该我说谢谢才是吧  详情 回复 发表于 2014-2-21 14:46
 
点赞(1) 关注(1)
个人签名

回复
举报

603

帖子

1

TA的资源

纯净的硅(中级)

沙发
 
又收藏!……为啥要说又呢

点评

谢谢  详情 回复 发表于 2014-2-21 14:45
 
 

回复

2781

帖子

417

TA的资源

五彩晶圆(中级)

板凳
 
sjtitr 发表于 2014-2-21 06:44
又收藏!……为啥要说又呢

谢谢

点评

应该我说谢谢才是吧  详情 回复 发表于 2014-2-21 14:46
 
个人签名
 
 

回复

603

帖子

1

TA的资源

纯净的硅(中级)

4
 

应该我说谢谢才是吧
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表