3968|11

360

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

LaunchPad + 74595 io extender 實作 [复制链接]


74595 很常用在輸出擴充上,當mcu腳位不足時,尤其對430G2231這種LOW PIN COUNT的MCU,很方便因為他是串列介面,MCU和74595之間只用了3支腳位連接,價位上也很便宜"國產的更便宜",再這實例裡74595輸出是接LED,也可接七節管等其他元件    呵呵 總算在時間內發三帖了 期待下次的團購
程序如下 (此程序是從51移植來的)

//2012-5-4 74595 串聯擴充3個,程序由keil_c 51移植成的
#include  <msp430g2231.h>

#define uchar unsigned char
#define uint  unsigned int


#define set_SDATA_595   P1OUT |= 0x08
#define set_SCLK_595    P1OUT |= 0x10
#define set_RCK_595     P1OUT |= 0x20

#define clr_SDATA_595   P1OUT &= 0xf7
#define clr_SCLK_595    P1OUT &= 0xef
#define clr_RCK_595     P1OUT &= 0xdf

void WR_DATA_595(unsigned char dat1,unsigned char dat2,unsigned char dat3);
void delay(int ms)
{                         
   int k;
   while(ms--)
   {
     for(k=0; k<250; k++)
     {

     }
   }
}

void WR_595(unsigned char datx)
{
     uchar j;
      for (j=0;j<8;j++)
     {
     // datx=datx<<1 ;
                       //  SDATA_595=CY;
            if ( (datx&0x80) == 0x80 ) set_SDATA_595 ;
             else clr_SDATA_595 ;    
             
      datx=datx<<1 ;
     // SCLK_595=1;         //write data to 595
       set_SCLK_595;
     // SCLK_595=0;
       clr_SCLK_595;
     }      
}



void OUT_595(void)
{
    // RCK_595=0;
     clr_RCK_595;
    // RCK_595=1;   //data out to buffer
     set_RCK_595;
    // RCK_595=0;
     clr_RCK_595;    
}

void WR_DATA_595(unsigned char dat1,unsigned char dat2,unsigned char dat3)
{
     WR_595 (dat1) ;
     WR_595 (dat2) ;
     WR_595 (dat3) ;  
     OUT_595();        
}

step_step(void)
{
      WR_DATA_595(0xff,0xff,0x7f);
      delay(20); 
      WR_DATA_595(0xff,0xff,0xbf);
      delay(20); 
      WR_DATA_595(0xff,0xff,0xdf);
      delay(20); 
      WR_DATA_595(0xff,0xff,0xef);
      delay(20); 
      WR_DATA_595(0xff,0xff,0xf7);
      delay(20); 
      WR_DATA_595(0xff,0xff,0xfb);
      delay(20); 
      WR_DATA_595(0xff,0xff,0xfd);
      delay(20); 
      WR_DATA_595(0xff,0xff,0xfe);
      delay(20); 

/////
      WR_DATA_595(0xff,0x7f,0xff);
      delay(20); 
      WR_DATA_595(0xff,0xbf,0xff);
      delay(20); 
      WR_DATA_595(0xff,0xdf,0xff);
      delay(20); 
      WR_DATA_595(0xff,0xef,0xff);
      delay(20); 
      WR_DATA_595(0xff,0xf7,0xff);
      delay(20); 
      WR_DATA_595(0xff,0xfb,0xff);
      delay(20); 
      WR_DATA_595(0xff,0xfd,0xff);
      delay(20); 
      WR_DATA_595(0xff,0xfe,0xff);
      delay(20);
    
//
      WR_DATA_595(0x7f,0xff,0xff);
      delay(20); 
      WR_DATA_595(0xbf,0xff,0xff);
      delay(20); 
      WR_DATA_595(0xdf,0xff,0xff);
      delay(20); 
      WR_DATA_595(0xef,0xff,0xff);
      delay(20); 
      WR_DATA_595(0xf7,0xff,0xff);
      delay(20); 
      WR_DATA_595(0xfb,0xff,0xff);
      delay(20); 
      WR_DATA_595(0xfd,0xff,0xff);
      delay(20); 
      WR_DATA_595(0xfe,0xff,0xff);
      delay(20);
//---------------------------------------
      WR_DATA_595(0xfe,0xff,0xff);
      delay(20);  
      WR_DATA_595(0xfd,0xff,0xff);
      delay(20);
      WR_DATA_595(0xfb,0xff,0xff);
      delay(20);
      WR_DATA_595(0xf7,0xff,0xff);
      delay(20); 
      WR_DATA_595(0xef,0xff,0xff);
      delay(20);
      WR_DATA_595(0xdf,0xff,0xff);
      delay(20);
      WR_DATA_595(0xbf,0xff,0xff);
      delay(20); 
      WR_DATA_595(0x7f,0xff,0xff);
      delay(20);  
     
      WR_DATA_595(0xff,0xfe,0xff);
      delay(20);  
      WR_DATA_595(0xff,0xfd,0xff);
      delay(20);
      WR_DATA_595(0xff,0xfb,0xff);
      delay(20);
      WR_DATA_595(0xff,0xf7,0xff);
      delay(20); 
      WR_DATA_595(0xff,0xef,0xff);
      delay(20);
      WR_DATA_595(0xff,0xdf,0xff);
      delay(20);
      WR_DATA_595(0xff,0xbf,0xff);
      delay(20); 
      WR_DATA_595(0xff,0x7f,0xff);
      delay(20);
     
      WR_DATA_595(0xff,0xff,0xfe);
      delay(20);  
      WR_DATA_595(0xff,0xff,0xfd);
      delay(20);
      WR_DATA_595(0xff,0xff,0xfb);
      delay(20);
      WR_DATA_595(0xff,0xff,0xf7);
      delay(20); 
      WR_DATA_595(0xff,0xff,0xef);
      delay(20);
      WR_DATA_595(0xff,0xff,0xdf);
      delay(20);
      WR_DATA_595(0xff,0xff,0xbf);
      delay(20); 
      WR_DATA_595(0xff,0xff,0x7f);
      delay(20);               
}
   
flash(void)
{
      WR_DATA_595(0x55,0x55,0x55);
      delay(100); 
      WR_DATA_595(0xaa,0xaa,0xaa);
      delay(100);
      WR_DATA_595(0x55,0x55,0x55);
      delay(100); 
      WR_DATA_595(0xaa,0xaa,0xaa);
      delay(100);        
      WR_DATA_595(0x55,0x55,0x55);
      delay(100); 
      WR_DATA_595(0xaa,0xaa,0xaa);
      delay(100);
      WR_DATA_595(0x55,0x55,0x55);
      delay(100); 
      WR_DATA_595(0xaa,0xaa,0xaa);
      delay(100);           
      WR_DATA_595(0xff,0xff,0xff);
      delay(100);   
}
main(void)
{
      WDTCTL = WDTPW + WDTHOLD;    // Stop watchdog timer  
 
      P1DIR |= 0x38;    //P1.3 P1.4 P1.5 all are set output mode
     // SCLK_595 =0;
      clr_SCLK_595;    
      //RCK_595  =1;
       set_RCK_595;    
      WR_DATA_595(0xff,0xff,0xff); //off all led


 while(1)
  {
      flash();             
      step_step();
      step_step();
      step_step();                           
  }    



最新回复

其实我就做了一个!!  详情 回复 发表于 2012-5-5 14:11
 
点赞 关注

回复
举报

2453

帖子

19

TA的资源

五彩晶圆(中级)

沙发
 
能拓展IO,对launchpad很实用。但是繁体字看着累
 
 

回复

360

帖子

0

TA的资源

纯净的硅(初级)

板凳
 

回复 沙发 zca123 的帖子

沒辦法我的pc 是繁体版的,就請大家多多包含,簡体字我可以看得懂,也常看簡体書,繁(煩)体字不也是中國字,常看就適應了
 
 
 

回复

2002

帖子

24

TA的资源

五彩晶圆(高级)

4
 
不错,后面的F4是亮点
 
 
 

回复

360

帖子

0

TA的资源

纯净的硅(初级)

5
 

回复 4楼 shower.xu 的帖子

那是因為兩支手要拍攝還要固定板子,有些困難所以 用它當支架 呵呵
 
 
 

回复

2057

帖子

0

TA的资源

五彩晶圆(初级)

6
 
这个可以改成pov时钟
 
 
 

回复

2453

帖子

19

TA的资源

五彩晶圆(中级)

7
 
楼主是台湾的?
 
 
 

回复

360

帖子

0

TA的资源

纯净的硅(初级)

8
 

回复 7楼 zca123 的帖子

你好ㄚ 是的
 
 
 

回复

360

帖子

0

TA的资源

纯净的硅(初级)

9
 

回复 6楼 IC爬虫 的帖子

沒錯 當初這pcb就是為了pov作的,因為還要用馬達做機構,所以一直一直延宕

[ 本帖最后由 naga568 于 2012-5-5 14:01 编辑 ]
 
 
 

回复

360

帖子

0

TA的资源

纯净的硅(初级)

10
 

回复 6楼 IC爬虫 的帖子

抱歉  馬達=电机
 
 
 

回复

2057

帖子

0

TA的资源

五彩晶圆(初级)

11
 

回复 10楼 naga568 的帖子

其实我就做了一个!!
 
 
 

回复

360

帖子

0

TA的资源

纯净的硅(初级)

12
 

回复 11楼 IC爬虫 的帖子

呵呵 改天我也做個手搖的pov 試看看
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表