设为首页收藏本站

arduino 单片机机器人爱好者之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2408|回复: 1

光立方v1.0控制端口连接

[复制链接]

签到天数: 63 天

[LV.6]常住居民II

发表于 2013-11-18 14:51:53 | 显示全部楼层 |阅读模式

光立方驱动板v1.0,共需要8给控制端口来控制光立方端口的点亮。
打开光立方原理图,通过SER0、SCK0、RCK0信号来控制U8的输出,通过u8来控制ULN2803的输出端,当QA为1时,那O1将被允许灌入电流,光立方第一层被选通。这时需要给U4、U5、U6、U7、U10、U11、U12、U13、分别写数据,存储器锁存并行输出,例通过SER1、SCK1写0xFF,通过SER2、SCK2、RCK2,给U15写0x01,这时u4的RCK-1有一个上升沿,存储器锁存并输出0xFF,这时,第1束灯被全点亮;通过 SER1、SCK1写0xFE,通过 SER2、SCK2、RCK2,给U15写0x02,这时u5的RCK-2有一个上升沿,存储器锁存并输出0xFE,这时,第2束灯有7个灯被点亮;依次类推,通过这方法,将第一层的灯选择性的点亮。再通过SER0、SCK0、RCK0信号来控制U8的输出,循环控制这8层灯,这样灯就可以被控制了。



这里使用的是YFRobot-stm32核心板V1.0作为控制板。
  1. 打开led.h,可以看到如下内容
  2. //层控制端
  3. #define SER0   PBout(8)//串行数据输入                           PBout(8)为控制板PB的第8脚输出,通过SER0来控制PB8输出为1或0
  4. #define SCK0 PBout(9)  //输入到移位寄存器
  5. #define RCK0 PBout(10)  //上升沿是串行输入,并行输出并锁存


  6. //数据输出
  7. #define SER1 PBout(11)  //串行数据输入
  8. #define SCK1 PBout(12)  //输入到移位寄存器                     
  9.                        //端口上升沿是串行输入,并行输出并锁存
  10. //寄存器控制输出控制
  11. #define SER2 PBout(13)  //串行数据输入
  12. #define SCK2 PBout(14)  //输入到移位寄存器
  13. #define RCK2 PBout(15)  //上升沿串行输入,并行输出并锁存
  14. 帧控制函数
  15. void storey(u8 *a)//层填充函数,控制某层灯点亮方式               
  16. {
  17.         u8 i,j,num;
  18.         for(i=0;i<8;i++)
  19.         {
  20.                 num=a;                 //将数组中数输入寄存器
  21.                 for(j=0;j<8;j++) //串行数据输入
  22.                 {
  23.                         if(num&0x80)
  24.                                 SER1=1;          // SER串行输入端口
  25.                         else
  26.                                 SER1=0;
  27.                         SCK1=0;                  //上升沿,输入到移位寄存器
  28.                         delay_us(2);               
  29.                         SCK1=1;               
  30.                         num<<=1;
  31.                 }
  32.    //寄存器控制
  33.                 if(i==0)
  34.                         SER2=1;
  35.                 else
  36.                         SER2=0;
  37.                 SCK2=0;                //上升沿,输入到移位寄存器
  38.                 delay_us(2);               
  39.                 SCK2=1;                                       
  40.                 RCK2=0;                //上升沿,串行输出
  41.                 delay_us(2);        
  42.                 RCK2=1;               
  43.         }
  44. }
  45. void frame(u8 *a,u8 v)//一帧,a是一帧编码起始地址
  46.                       //一个画面,v表示一帧画面扫描的次数
  47.                                           // 可以看作这帧显示的时间
  48. {
  49.         s8 i,j,num;  //s8 有符号定义
  50.         while(v--)
  51.         {        
  52.                 for(i=0;i<8;i++) //层数层控制,选通某一层,
  53.                          //使得第1层到第8层,依次点亮
  54.                 {
  55.                         clc();         //大家可以尝试将此代码删除,运行代码dot(5);或UtoD_scan(90);
  56.                                        //试着比较一下,欢迎大家多提宝贵意见,共同解决这个问题。
  57.                         
  58.                         storey(a+i*8);//层填充函数,控制某层灯点亮方式
  59.                         num=0x01;
  60.                         num<<=i;
  61.                         for(j=0;j<8;j++) //串行数据输入
  62.                         {
  63.                                 if(num&0x80)
  64.                                 SER0=1;          // SER串行输入端口
  65.                                 else
  66.                                 SER0=0;
  67.                                 delay_us(1);
  68.                                 SCK0=0;                  //上升沿,输入到移位寄存器
  69.                                 delay_us(2);               
  70.                                 SCK0=1;               
  71.                                 num<<=1;
  72.                         }        
  73.                         RCK0=0;
  74.                         delay_us(2);
  75.                         RCK0=1;        
  76.                         delay_ms(2);//一层点亮时间   
  77.                 }
  78.         }        
  79. }
复制代码

签到天数: 62 天

[LV.6]常住居民II

发表于 2017-3-30 11:24:24 | 显示全部楼层
學習中, 謝謝分享
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|联系我们|YFRobot ( 苏ICP备13017135  

GMT+8, 2017-8-22 03:32 , Processed in 0.185029 second(s), 29 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表