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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9214|回復: 5
收起左側

用STC15W104單片機制作電子骰子電路圖和程序

[復制鏈接]
ID:59884 發表于 2019-6-14 15:18 | 顯示全部樓層 |閱讀模式
和孩子玩飛行棋,骰子找不到了。就想起做個電子骰子。主控用了一塊8腳的單片機STC15W104。考慮單片機直接驅動LED發光管,怕單片機電流吃不起,所以使用了一塊74HC573當作輸出驅動。為了顯示盡量接近骰子,LED發光管采用了7個。之前用按鈕,玩了一下,感覺不完美,改用離心開關后,甩動的形式來擲骰子有意思多了。電路見附件,加上一塊鋰電和充電保護板就行。因為待機2分鐘后自動關閉顯示。關閉顯示后,待機電流6mA左右,也不必加裝電源開關了。程序不長,與大家分享!

電路原理圖如下:

電路圖

電路圖


單片機源程序如下:
  1. #include<stc15w.h>

  2. sbit a1 = P3^0;                 
  3. sbit a2 = P3^1;                 
  4. sbit a3 = P3^2;                 
  5. sbit a4 = P3^3;               
  6. //sbit beei = P3^4;         
  7. sbit k1 = P3^5;

  8. unsigned char i,m,r1;
  9. unsigned int u;

  10. void Delay50ms(unsigned char n)                //12.000MHz延時
  11. {
  12.         unsigned char i, j, k;

  13.         i = n;                                                        //3;
  14.         j = 72;
  15.         k = 161;
  16.         do
  17.         {
  18.                 do
  19.                 {
  20.                         while (--k);
  21.                 }
  22.                 while (--j);
  23.         }
  24.         while (--i);
  25. }
  26. void Timer0Init() interrupt 1                //50毫秒@12.000MHz
  27. {
  28.         TL0 = 0xB0;                //設置定時初值
  29.         TH0 = 0x3C;                //設置定時初值
  30.         r1++;                        //0~5滾動數值
  31.         if(r1 >= 6)
  32.                 r1 = 0;
  33.         if(u > 0)                //延時2分鐘關閉顯示
  34.                 u--;
  35.         else
  36.                 u = 0;
  37.         if(k1 == 0)                //離心開關接通時,重新計時
  38.                 u = 2400;                
  39. }

  40. void main()
  41. {
  42.     unsigned char s = 0;
  43.         P3 = 0xff;
  44.         m = 15;

  45.         TMOD = 0x01;                    //設置定時器為模式1
  46.     TL0 = 0xB0;                                                //設置定時初值
  47.         TH0 = 0x3C;                                                //設置定時初值
  48.     TR0 = 1;                        //定時器0開始計時
  49.     ET0 = 1;                        //使能定時器0中斷
  50.     EA = 1;
  51.         while(1)
  52.         {
  53.                 while(u>0)                                        //離心開關接通后,2分鐘以內
  54.                 {
  55.                         if(k1 == 0)                                //離心開關接通
  56.                         {
  57.                                 u = 2400;
  58.                         //        i++;
  59.                         //        if(m >= 3)
  60.                         //                m--;
  61.                                 m = 2;
  62.                 //                Delay50ms(2);
  63.                         //        if(i >= 6)
  64.                                         i = r1;                        //搖中的初值
  65.                         }
  66.                         else
  67.                         {                                                //骰子慣性效果
  68.                                 if(m == 2)                       
  69.                                 {
  70.                                            s++;
  71.                                         i++;
  72.                                         Delay50ms(m);
  73.                                         if(i >= 6)
  74.                                                 i = 0;
  75.                                         if(s >= 50)
  76.                                                 m++;
  77.                                 }
  78.                                 else if(m < 15)
  79.                                 {
  80.                                         i++;
  81.                                         m++;                               
  82.                                         Delay50ms(m);
  83.                                         if(i >= 6)
  84.                                                 i = 0;
  85.                                 }
  86.                                 else
  87.                                         s = 0;
  88.                         }                                                //最終值顯示
  89.                         if(i == 0)
  90.                         {
  91.                                 a1 = 0;
  92.                                 a2 = 0;
  93.                                 a3 = 0;
  94.                                 a4 = 1;         
  95.                         }
  96.                         else if(i == 1)
  97.                         {
  98.                                 a4 = 0;
  99.                                 a1 = 1;
  100.                                 a2 = 1;
  101.                                 a3 = 1;
  102.                         }
  103.                         else if(i == 2)
  104.                         {
  105.                                 a3 = 0;
  106.                                 a1 = 1;
  107.                                 a2 = 1;
  108.                                 a4 = 1;
  109.                         }
  110.                         else if(i == 3)
  111.                         {
  112.                                 a2 = 0;
  113.                                 a4 = 0;
  114.                                 a1 = 1;
  115.                                 a3 = 1;
  116.                         }
  117.                         else if(i == 4)
  118.                         {
  119.                                 a1 = 0;
  120.                                 a2 = 0;
  121.                                 a3 = 1;
  122.                                 a4 = 1;
  123.                         }
  124.                         else if(i == 5)
  125.                         {
  126.                                 a1 = 0;
  127.                                 a2 = 0;
  128.                                 a4 = 0;
  129.                                 a3 = 1;
  130.                         }

  131.                 }                                            //延時到,關閉顯示后,電路電流6mA左右,用鋰電加充電保護板不用開關。
  132.                 a1 = 1;
  133.                 a2 = 1;
  134.                 a3 = 1;
  135.                 a4 = 1;
  136.         }
  137. }
復制代碼

所有資料51hei提供下載:
骰子.rar (20.73 KB, 下載次數: 54)
回復

使用道具 舉報

ID:561986 發表于 2019-6-15 11:05 | 顯示全部樓層
學習了,剛剛想用STC15W104做接收
回復

使用道具 舉報

ID:105826 發表于 2019-9-12 11:26 | 顯示全部樓層
雖然實用性不高,但很有創意,并且為兒子的興趣愛好做了一次親身教育!
回復

使用道具 舉報

ID:670808 發表于 2020-1-31 16:45 | 顯示全部樓層
p3和LED正極好像沒有接到單片機上
回復

使用道具 舉報

ID:1003999 發表于 2022-2-3 09:05 來自手機 | 顯示全部樓層
再加兩塊P10單元板,能制作飛行棋嗎?再加上撞飛機的音效,還做到落棋不悔了
回復

使用道具 舉報

ID:385830 發表于 2022-2-3 11:55 | 顯示全部樓層
做的不錯。就是 離心開關 不如用 震動開關,數據可采用 隨機數 來產生。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品久久久久中文字幕欢迎你 | 亚洲欧美日韩在线不卡 | 国产高清自拍视频在线观看 | 九九热九九 | 中文字幕欧美一区二区 | 久久久久久久一区 | 欧美成人精品一区二区男人看 | 欧美成人精品一区二区三区 | 日本超碰 | 久久99视频精品 | 日韩中文字幕在线免费 | 精品一区在线 | 激情91 | 91精产国品一二三区 | 国产综合视频 | 精品视频一区二区 | 中文字幕亚洲一区 | 成人一区二区三区在线观看 | 日韩免费看视频 | 黑人久久 | 免费亚洲视频 | 国产成人综合一区二区三区 | 国产免费一区二区三区 | 91久久久久 | 岛国毛片在线观看 | 久久久久久久久久久久亚洲 | 国产精品一区久久久 | 91av视频在线观看 | 色婷婷一区二区三区四区 | 天堂av影院 | 日韩在线 | 免费看淫片 | 九九精品影院 | 欧美一区日韩一区 | 精品一区二区在线看 | 欧日韩在线| 精品国产乱码久久久久久图片 | 成人h免费观看视频 | 国产精品国产精品国产专区不片 | 天天天天天操 | 黄色网址在线免费播放 |