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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機的隨機抽獎器。十萬火急! 求幫助

[復制鏈接]
跳轉到指定樓層
樓主
ID:276259 發表于 2018-3-28 18:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
人工方式,按下開始按鈕,能輸出3~8個的隨機數(隨機數需要兩位數的),并顯示出來。例如:我選定中獎人數是3人,數字范圍是50,按下抽獎鍵后,你的顯示應該是諸如25 36 17 之類的三個數字,一共6位數。求大神幫忙,真的急。。。!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:123289 發表于 2018-3-28 21:59 | 只看該作者
做一個1-50的計數器,永遠一直循環,
設置一個緩沖區放8個數據
當有鍵按下是,取出計數器的的數放入緩沖區,事先多敲幾次鍵,讓緩沖區中充滿這樣的數,這些數字可以認為的隨機的。注意每次放不同的位置。
現在開始:按下后,從緩沖區中取出你所要的數據即可,同事再被補入一個。
這只是較方便的一種。你可以想像出許多種隨機的方式。

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:248705 發表于 2018-3-28 23:58 | 只看該作者
送給樓主,剛寫的,我也是初學,可能有些不太完善的地方,但是你說的功能都實現了,數碼管為共陰,位選使用了138
  1. #include"reg52.h"
  2. #include"stdlib.h"                        //   //包含隨機數函數的頭文件

  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. #define max 50                   //max
  6. #define min 1                                //min
  7. uint a,c,d,e,f=0;
  8. uchar code smgduan[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
  9. DisplayData[8];
  10. bit gg;
  11. sbit LSA=P2^2;
  12. sbit LSB=P2^3;
  13. sbit LSC=P2^4;
  14. sbit k1=P3^0;                        //按鍵
  15. sbit k2=P3^1;       
  16. void inittimer()
  17. {
  18. TMOD|=0x11;                               
  19. TH0=(65535-1000)/256;
  20. TL0=(65535-1000)%256;
  21. EA=1;
  22. ET0=1;
  23. TR0=1;
  24. }
  25. void delay(uint x)
  26. {
  27. while(x--);
  28. }
  29. void DigDisplay()                        //138位選
  30. {
  31.         uchar i;
  32.         for(i=0;i<8;i++)
  33.         {
  34.                 switch(i)         
  35.                 {
  36.                         case(0):
  37.                                 LSA=0;LSB=0;LSC=0; break;
  38.                         case(1):
  39.                                 LSA=1;LSB=0;LSC=0; break;
  40.                         case(2):
  41.                                 LSA=0;LSB=1;LSC=0; break;
  42.                         case(3):
  43.                                 LSA=1;LSB=1;LSC=0; break;
  44.                         case(4):
  45.                                 LSA=0;LSB=0;LSC=1; break;
  46.                         case(5):
  47.                                 LSA=1;LSB=0;LSC=1; break;
  48.                         case(6):
  49.                                 LSA=0;LSB=1;LSC=1; break;
  50.                         case(7):
  51.                                 LSA=1;LSB=1;LSC=1; break;       
  52.                 }
  53.                 P0=DisplayData[7-i];
  54.                 if(c>=200){c=0;};

  55.                 P0=0x00;
  56.         }               
  57. }
  58. void datapros()          //段選
  59. {
  60.         DisplayData[0] = smgduan[a/10];                               
  61.         DisplayData[1] = smgduan[a%10];                                 
  62.         DisplayData[2] = 0x40;
  63.         DisplayData[3] = smgduan[d/10];                               
  64.         DisplayData[4] = smgduan[d%10];       
  65.         DisplayData[5] = 0x40;
  66.         DisplayData[6] = smgduan[e/10];                               
  67.         DisplayData[7] = smgduan[e%10];
  68. }
  69. void main()
  70. {       
  71.         double b;
  72.         inittimer();
  73.         haha:for(b=0;b<50000000;b++)
  74.                 {
  75.                         srand(b);
  76.                         a = rand()%49+1;
  77.                         srand(c);
  78.                         d = rand()%49+1;
  79.                         srand(b-c);
  80.                         e = rand()%49+1;
  81.                         datapros();
  82.                         if(k1==0)
  83.                         {
  84.                         delay(1000);if(k1==0)
  85.                         {
  86.                         TR0=0;;while(k2){DigDisplay();};TR0=1;
  87.                         }
  88.                         }
  89.                         delay(5500);                        //更改括號內數字來更改刷新速度
  90.                 }
  91.                 goto haha;
  92. }
  93. void init()interrupt 1
  94. {
  95. TH0=(65535-1000)/256;
  96. TL0=(65535-1000)%256;
  97. DigDisplay();
  98. c++;
  99. }
復制代碼


評分

參與人數 1黑幣 +60 收起 理由
admin + 60 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:248705 發表于 2018-3-29 00:38 | 只看該作者
祖國的花朵 發表于 2018-3-28 23:58
送給樓主,剛寫的,我也是初學,可能有些不太完善的地方,但是你說的功能都實現了,數碼管為共陰,位選使用 ...

數組里0x00那個是沒有用到的哈,上個程序留下的,沒注意到,不妨礙顯示
回復

使用道具 舉報

5#
ID:248705 發表于 2018-3-29 22:49 | 只看該作者
祖國的花朵 發表于 2018-3-29 00:38
數組里0x00那個是沒有用到的哈,上個程序留下的,沒注意到,不妨礙顯示

沒有考慮到相同情況。。。。
回復

使用道具 舉報

6#
ID:335855 發表于 2018-5-26 20:39 | 只看該作者
這個應該可以用

應用實例9 電子抽獎系統.rar

83.23 KB, 下載次數: 50

電子抽獎系統

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成在线人视频免费视频 | 欧美另类视频在线 | 91精品国产91久久久久久丝袜 | 五月婷婷在线播放 | 久久蜜桃av | 韩日精品一区 | 亚洲欧美视频 | 久操亚洲 | 三极网站 | 久久国产精品无码网站 | 日本久久黄色 | 中文字幕国产精品 | 欧美5区 | 精品国产一区久久 | 国产一区二区在线免费观看 | 国产精品久久国产精品 | 香蕉视频91 | 亚洲国产精品久久久久 | 天堂av资源| 免费激情av | 涩涩视频在线观看免费 | 色眯眯视频在线观看 | 亚洲欧美日韩激情 | 在线观看国产视频 | 一区二区三区中文字幕 | 成人av免费 | 日韩精品在线播放 | 久久99视频这里只有精品 | 日韩毛片在线观看 | 亚洲首页 | 中文在线亚洲 | 国产精品一区二区在线观看 | 一区二区三区国产精品 | 欧美久久久电影 | 亚洲区一 | 激情欧美一区二区三区中文字幕 | 日韩精品一区二区三区中文在线 | 色爱区综合| 精品不卡 | 日韩成人在线网站 | 免费观看www7722午夜电影 |