久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4302|回復: 5
打印 上一主題 下一主題
收起左側

自制搖搖棒

[復制鏈接]
跳轉到指定樓層
樓主
嘿嘿,自我感覺不錯。就是這個用手搖晃的東西有點累。
補充下,這個慣性開關 就是把單片機的兩個引腳引出來,然后在負極上接上一根彈性導線,搖動的時候這個彈性導線會向兩邊擺動而觸動到兩個引腳(為了增加慣性,我得彈性導線很長,并且在頂端彎了幾個圈增加慣性)。為了防止擺動出來,我在兩個引腳上加了一段帶皮導線,這樣就能隨便亂晃,不至于導線出來
正面,上面一排是發光二極管。右下角的是慣性開關



關燈后的效果(視頻截圖,相機拍不到)



STC12C5a60S2單片機




原理圖,上面少了外震蕩電路和上電復位電路。其實這個單片機在寫入程序后可設置為內部晶振,然后晶振和復位 ...



源程序:
  1. #include  //單片機頭文件


  2. #define DY_DELAY                5 //設置每一個點顯示的時間長度(1~20)

  3. sbit KEY1 = P1 ^ 2; //搖動慣性開關
  4. sbit KEY2 = P1 ^ 3;


  5. sbit LED1 = P0 ^ 3; //LED燈定義,低電平時亮(自上到下)
  6. sbit LED2 = P0 ^ 4;
  7. sbit LED3 = P0 ^ 5;
  8. sbit LED4 = P0 ^ 6;
  9. sbit LED5 = P0 ^ 7;
  10. sbit LED6 = P4 ^ 6;
  11. sbit LED7 = P4 ^ 5;
  12. sbit LED8 = P4 ^ 4;
  13. sbit LED9 = P2 ^ 7;
  14. sbit LED10 = P2 ^ 6;
  15. sbit LED11 = P2 ^ 5;
  16. sbit LED12 = P2 ^ 4;
  17. sbit LED13 = P2 ^ 3;
  18. sbit LED14 = P2 ^ 2;
  19. sbit LED15 = P2 ^ 1;
  20. sbit LED16 = P2 ^ 0;

  21. /*********************************************************************************************/
  22. unsigned char code logo[] =  {            // (取碼:從上到下從左到右,縱向8位下高位)
  23. //"老",
  24. 0x40,0x40,0x40,0x20,0x48,0x10,0x48,0x08,
  25.       0x48,0x04,0x48,0x7E,0x7F,0x91,0xC8,0x90,
  26.       0x4C,0x88,0x68,0x88,0x50,0x84,0x48,0x86,
  27.       0x4C,0x80,0x60,0xE0,0x40,0x00,0x00,0x00,

  28. //"婆",
  29. 0x00,0x04,0x84,0x04,0xC9,0x87,0x22,0x84,
  30.       0x06,0x4D,0x80,0x54,0x7E,0x26,0x12,0x24,
  31.       0x32,0x26,0x52,0x55,0x9F,0x4C,0x52,0x85,
  32.       0x32,0x06,0x0A,0x06,0x06,0x04,0x00,0x00,

  33. //"我",
  34. 0x20,0x00,0x24,0x08,0x24,0x48,0x24,0x84,
  35.       0xFE,0x7F,0x23,0x02,0x22,0x21,0x20,0x10,
  36.       0xFF,0x09,0x20,0x06,0x22,0x1A,0xAC,0x61,
  37.       0x20,0x80,0x30,0xE0,0x20,0x00,0x00,0x00,

  38. //"愛",
  39. 0x40,0x00,0xB0,0x00,0x92,0x40,0x96,0x30,
  40.       0x9A,0x8C,0x92,0x83,0xF2,0x46,0x9E,0x2A,
  41.       0x92,0x12,0x91,0x2A,0x99,0x26,0x95,0x42,
  42.       0x91,0xC0,0x50,0x40,0x30,0x00,0x00,0x00,

  43. //"你",
  44. 0x40,0x00,0x20,0x00,0xF8,0xFF,0x07,0x00,
  45.       0x40,0x00,0x20,0x08,0x18,0x04,0x0F,0x43,
  46.       0x08,0x80,0xC8,0x7F,0x08,0x00,0x08,0x01,
  47.       0x28,0x06,0x18,0x0C,0x00,0x00,0x00,0x00

  48. }

  49. void delay (unsigned int a){ // 用于點掃描的延時
  50.         unsigned int i;
  51.         while( --a != 0){
  52.                 for(i = 0; i < 1; i++);
  53.         }                                      
  54. }

  55. void DELAY_MS (unsigned int a){
  56.         unsigned int i;
  57.         while( --a != 0){
  58.                 for(i = 0; i < 600; i++);
  59.         }
  60. }
  61. /*********************************************************************************************/



  62. void DISPLAY_OFF (void){
  63.         delay(DY_DELAY);//顯示停留
  64.         P0 = 0xff;
  65.         P2 = 0xff;
  66.         P4 = 0xff;
  67. }
  68. /**********************************************************************************************/


  69. void DISPLAY_PIN (unsigned char d,unsigned char e){ //第1列橫向顯示程序
  70.         unsigned char i;
  71.         i = d & 0x01;
  72.         if(i == 0x01){LED1 = 0;}DISPLAY_OFF();
  73.         i = d & 0x02;
  74.         if(i == 0x02){LED2 = 0;}DISPLAY_OFF();
  75.         i = d & 0x04;
  76.         if(i == 0x04){LED3 = 0;}DISPLAY_OFF();
  77.         i = d & 0x08;
  78.         if(i == 0x08){LED4 = 0;}DISPLAY_OFF();
  79.         i = d & 0x10;
  80.         if(i == 0x10){LED5 = 0;}DISPLAY_OFF();
  81.         i = d & 0x20;
  82.         if(i == 0x20){LED6 = 0;}DISPLAY_OFF();
  83.         i = d & 0x40;
  84.         if(i == 0x40){LED7 = 0;}DISPLAY_OFF();
  85.         i = d & 0x80;
  86.         if(i == 0x80){LED8 = 0;}DISPLAY_OFF();

  87.         i = e & 0x01;
  88.         if(i == 0x01){LED9 = 0;}DISPLAY_OFF();
  89.         i = e & 0x02;
  90.         if(i == 0x02){LED10 = 0;}DISPLAY_OFF();
  91.         i = e & 0x04;
  92.         if(i == 0x04){LED11 = 0;}DISPLAY_OFF();
  93.         i = e & 0x08;
  94.         if(i == 0x08){LED12 = 0;}DISPLAY_OFF();
  95.         i = e & 0x10;
  96.         if(i == 0x10){LED13 = 0;}DISPLAY_OFF();
  97.         i = e & 0x20;
  98.         if(i == 0x20){LED14 = 0;}DISPLAY_OFF();
  99.         i = e & 0x40;
  100.         if(i == 0x40){LED15 = 0;}DISPLAY_OFF();
  101.         i = e & 0x80;
  102.         if(i == 0x80){LED16 = 0;}DISPLAY_OFF();
  103. }

  104. void init (void){
  105.         P4SW = 0xff; //啟動P4接口
  106.         P0M0 = 0xff; //接口設置為強推
  107.         P2M0 = 0xff;
  108.         P4M0 = 0xff;
  109.         P1 = 0xff; //初始IO接口狀態
  110.         P0 = 0xff;
  111.         P2 = 0xff;
  112.         P4 = 0xff;
  113. }
  114. /**********************************************************************************************/


  115. void main (void)
  116.    {
  117.         unsigned char a,c;
  118.         init();//初始程序
  119.         while(1)
  120.          {
  121.                
  122.         
  123.                          if(KEY2 == 0)
  124.                         {
  125.                                 DELAY_MS(20);
  126.                                 while(KEY2 == 0);
  127.                                 c = 0;
  128.                                 for(a=1;a<80;a++)
  129.                                 { //這里的“80”是這個字幕需要掃描的列數,修改字幕時必須修改此參數。
  130.                                         DISPLAY_PIN (logo[c],logo[c+1]); //“LOGO”是第一個字幕的數據表名
  131.                                         c=c+2;//產生顯示行移位
  132.                                 }
  133.                         }
  134.                         if(KEY1 == 0)
  135.                         {
  136.                                 DELAY_MS(20);
  137.                                 while(KEY1 == 0);
  138.                                 c = 158;
  139.                                 for(a=1;a<80;a++)
  140.                                 {
  141.                                         DISPLAY_PIN (logo[c],logo[c+1]);
  142.                                         c=c-2;//產生顯示行移位
  143.                                 }
  144.                         }
  145.                         }
  146.                         }
復制代碼

搖搖棒資料.rar

1.4 KB, 下載次數: 23, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:166768 發表于 2017-9-12 13:16 | 只看該作者
如果把單色二極管換成彩色二極管就更好了
回復

使用道具 舉報

板凳
ID:233215 發表于 2017-9-14 22:42 來自手機 | 只看該作者
用的是貼片嗎?
回復

使用道具 舉報

地板
ID:527278 發表于 2019-5-4 22:34 | 只看該作者
樓主您好。請問制作這個需要用到那些東西?
回復

使用道具 舉報

5#
ID:421308 發表于 2019-8-7 18:00 | 只看該作者
樓主您好。請問制作這個需要用到那些東西?
回復

使用道具 舉報

6#
ID:421308 發表于 2019-8-8 20:26 | 只看該作者
取模是怎么取的啊
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 野狼在线社区2017入口 | 国产日韩欧美一区二区 | 亚洲综合色丁香婷婷六月图片 | 日韩视频中文字幕 | 亚洲一区不卡在线 | 精品一区二区电影 | 久久精品| 国产一区二区三区高清 | 久久伊 | 国产免费拔擦拔擦8x高清 | 久久99国产精品 | 日韩午夜在线观看 | 国产在线一区观看 | 午夜影视免费片在线观看 | 欧美日韩国产高清 | 久久黄视频 | 国产乱码精品1区2区3区 | 亚洲视频一区二区三区四区 | 春色av| 天天天插 | 久久com| 亚洲精品久久久一区二区三区 | 国产偷自视频区视频 | 黄色日本片 | 成人免费精品 | 中文字幕在线观看 | 精品国产视频在线观看 | 亚洲国产精品一区二区三区 | 国产欧美一区二区精品忘忧草 | 国产视频中文字幕 | 日韩中文字幕在线播放 | 亚洲成人久久久 | 天天成人综合网 | 久久国产欧美日韩精品 | 国产综合久久 | 狠狠操天天干 | a级片在线观看 | 国产精品久久久久久久久久久新郎 | 一区二区三区在线 | 国产一区二区三区在线免费观看 | 美国一级黄色片 |