找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5791|回复: 7
收起左侧

彩色mini摇摇棒制作(双色)

  [复制链接]
ID:76190 发表于 2015-4-5 16:42 | 显示全部楼层 |阅读模式
本帖最后由 xiashan 于 2015-4-5 16:43 编辑

电池部分 ,还弄了个自锁开关,电源 是 3.7V 的锂电池,从小的MP3上拆下的 。
拍摄视频:





使用的 P1 和 P3 口,有个复位的 引脚 去掉,没有复位部分没什么 问题,单片机 能正常工作,把P3口 的引脚 朝 P1 口那边扭弯点。有两排贴片(0805封装)的LED 灯 1和2,1那一排 LED 左为负极,右为正极。2那一排 LED 右为负极,左为正极。
      这样 就行了,但是 亮度较低,最好 分别加个 470~1K 的上拉电阻,那样 就比较亮,但单片机 可能 会有点 微热,不过 没事 的 ,没那么容易 坏 。
      最好 能 用 12C5A 系列 的 ,它的IO 口 有个 强上拉 达20 mA,那驱动就 足够 了,,,唉 ,只是 我做的 时候 手头没有。









//                  mini LED摇摇棒
//                  显示64*16像素(x*15)
  1. #include <AT89X52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int   

  4. sbit KeyChoose=P0^3;
  5. sbit KeyLeft=P2^7;
  6. sbit KeyRight=P2^6;
  7. sbit Zero=P2^0;

  8. uchar Color;


  9. uchar code LEDDriverTable[]=
  10. {
  11. 0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00, // 1~ 8
  12. 0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff // 9~15


  13. };


  14. /////////////////////////////////////////////////////////////////////////
  15. // 汉字字模表                                                          //
  16. // 纵向取模下高位,数据排列:从上到下从左到右                            //
  17. /////////////////////////////////////////////////////////////////////////
  18. uchar code GB16wo[] =          // 数据表
  19. {

  20. //"你",
  21.       0x40,0x00,0x20,0x00,0xF8,0xFF,0x07,0x00,
  22.       0x40,0x00,0x20,0x08,0x18,0x04,0x0F,0x43,
  23.       0x08,0x80,0xC8,0x7F,0x08,0x00,0x08,0x01,
  24.       0x28,0x06,0x18,0x0C,0x00,0x00,0x00,0x00,
  25. //"爱",
  26.       0x40,0x00,0xB0,0x00,0x92,0x40,0x96,0x30,
  27.       0x9A,0x8C,0x92,0x83,0xF2,0x46,0x9E,0x2A,
  28.       0x92,0x12,0x91,0x2A,0x99,0x26,0x95,0x42,
  29.       0x91,0xC0,0x50,0x40,0x30,0x00,0x00,0x00,
  30. //"我",
  31.       0x20,0x00,0x24,0x08,0x24,0x48,0x24,0x84,
  32.       0xFE,0x7F,0x23,0x02,0x22,0x21,0x20,0x10,
  33.       0xFF,0x09,0x20,0x06,0x22,0x1A,0xAC,0x61,
  34.       0x20,0x80,0x30,0xE0,0x20,0x00,0x00,0x00,
  35. //"吗",
  36.       0x00,0x00,0xFC,0x1F,0x04,0x08,0x04,0x08,
  37.       0xFE,0x1F,0x04,0x08,0x02,0x08,0xFA,0x09,
  38.       0x02,0x09,0x02,0x09,0x02,0x0D,0xFF,0x49,
  39.       0x02,0x81,0x80,0x7F,0x00,0x01,0x00,0x00,

  40. //"?",
  41.       0x00,0x00,0x00,0x00,0x30,0x00,0x38,0x00,
  42.       0x28,0x00,0x04,0x00,0x04,0x20,0x04,0x70,
  43.       0x84,0x73,0x84,0x21,0xC4,0x00,0x4C,0x00,
  44.       0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00
  45. };










  46. /*****n(us)延时子程序*****/
  47. void Delay(uint N)
  48. {
  49. uint x,y;
  50. for(x=0; x<=N;x++)
  51. for(y=0;y<=2;y++);
  52. }

  53. void DisplayPoint(uchar LEDChoose, uchar Color)//bit Color)?//,uint DisplayTime)   //15(×2)LED    //LEDChoose(Up 1~15 Down),Color(0:Green;1:Blue),DisplayTime ()
  54. {// uchar t;

  55. //t=(LEDChoose-1)+Color*8;
  56. if(LEDChoose>=1&LEDChoose<=8)
  57. {
  58. P1=LEDDriverTable[(LEDChoose-1)+Color*8];
  59. P3=(!Color)*0xff;            //!or~
  60. }     
  61. else if(LEDChoose>=9&LEDChoose<=15)
  62. {
  63. P3=LEDDriverTable[(LEDChoose-1-8)+(Color*8)];
  64. P1=(Color)*0xff;
  65. }   
  66. else
  67. {
  68. P1=0xff;
  69. P3=0xff;
  70. }
  71. //Delay(DisplayTime);    //

  72. }


  73. void YScanDisplay(uchar YDisplay,uint DisplayTime,uchar UorD)    //YScanDisplayData(8bit) ;
  74. {
  75. //bit PointTable[8];
  76. // uchar PointTable[8];    //! LEDChoose is (Up 1~15 Down)
  77. uchar i=0;

  78. for(i=1;i<=8;i++)
  79. //{
  80. // while(YDisplay!=0)
  81. {   
  82. // PointTable[i]=(bit)(YDisplay&0x01);   
  83.      if((bit)(YDisplay&0x01)!=0)                       //target:  (共阴~取反~共阳)
  84. {
  85. DisplayPoint(i+UorD*8,Color);           //Color
  86. Delay(DisplayTime);
  87. }
  88. YDisplay>>=1;

  89. //   i++;
  90.    
  91. }

  92. //}


  93. // for(i=0;i<=7;i++)
  94. //while(PointTable[i]!='\0')
  95. // {      

  96. // i++;
  97. // }




  98. }


  99. void XScanDisplay()
  100. {


  101. }




  102. /*****主函数*****/
  103. void main(void)
  104. {
  105. uchar tt,ccc=1;
  106. bit cc=0;
  107. Zero = 0;
  108. while(520)

  109. // if(KeyRight=0)
  110. {
  111. if(KeyChoose=0)cc=!cc;
  112. while(KeyLeft);
  113. Delay(1400);
  114. for(tt=1;tt<=160;tt++)
  115. {

  116. YScanDisplay(GB16wo[tt],2,tt%2);
  117. if(++ccc==32){
  118. Color=!Color;
  119. ccc=0;}
  120. }
  121. P1=0xff;
  122. P3=0xff;

  123. while(KeyRight);
  124. Delay(1400);
  125. for(tt=160;tt>=1;tt--)
  126. {

  127. YScanDisplay(GB16wo[tt],2,tt%2);
  128. if(++ccc==32){
  129. Color=!Color;
  130. ccc=0;}
  131. }
  132. P1=0xff;
  133. P3=0xff;
  134. };
  135. //////////////////////以下为最开始 的硬件测试程序,用来检测LED 有没有焊接好,有没有焊接烧坏等///////////////////////////

  136. //效果是 :首先是第一排亮,然后是第二排亮,最后 全亮,当然这只是看起来全亮,但是 LED 不可能真正同时亮,实际上,某一时刻,只有一个被点亮
  137. /*
  138. // P1=0x80;
  139. // P3=0x80;

  140. for(tt=0;tt<=15;tt++)
  141. {
  142. DisplayPoint(tt,1);
  143. Delay(10000);
  144. }

  145. for(tt=0;tt<=15;tt++)
  146. {
  147. DisplayPoint(tt,0);
  148. Delay(10000);
  149. }

  150. while(520){
  151. for(tt=0;tt<=15;tt++)
  152. {
  153. DisplayPoint(tt,1);
  154. Delay(350);
  155. DisplayPoint(tt,0);
  156. Delay(700);
  157. }}


  158. while(520);



  159. // while(1)  
  160. // {
  161.    //-----------忧伤的分割线-----------//
  162. P1=0xfe;    //0b
  163. delay(100);
  164. P1=0x01;    //0r
  165. delay(100);

  166. P1=0xfc;    //1b
  167. delay(100);
  168. P1=0x03;    //1r
  169. delay(100);

  170. P1=0xf8;    //2b
  171. delay(100);   
  172. P1=0x07;
  173. delay(100);    //2r

  174. P1=0x;        //b
  175. delay(100);
  176. P1=0x;        //r
  177. delay(100);

  178. while(1);

  179. // }
  180. */

  181. }

  182. /*****END*****/  
复制代码






回复

使用道具 举报

ID:68477 发表于 2015-4-12 14:56 | 显示全部楼层
不错。
回复

使用道具 举报

ID:142860 发表于 2016-10-15 19:17 | 显示全部楼层
不错               
回复

使用道具 举报

ID:169534 发表于 2020-10-1 14:29 | 显示全部楼层
仿杜洋 shook16?
回复

使用道具 举报

ID:405102 发表于 2020-10-8 20:56 | 显示全部楼层
不错,有创意。
回复

使用道具 举报

ID:828768 发表于 2020-10-18 12:11 | 显示全部楼层
上一版本的一些注释代码没有必要出现在这版里,有点影响阅读哈。不过还是要感谢分享
回复

使用道具 举报

ID:835670 发表于 2020-10-28 15:28 | 显示全部楼层
视频加载不出来啊
回复

使用道具 举报

ID:976767 发表于 2021-12-15 19:55 | 显示全部楼层
这东西没有水银开关?
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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