<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 使用8051單片機(jī)的隨機(jī)數(shù)發(fā)生器

          使用8051單片機(jī)的隨機(jī)數(shù)發(fā)生器

          —— 使用8051的隨機(jī)數(shù)發(fā)生器
          作者: 時(shí)間:2023-03-27 來源:電子產(chǎn)品世界 收藏

          在這個(gè)項(xiàng)目中,我將解釋使用生成隨機(jī)數(shù)的電路和工作,即我將告訴你如何使用生成一個(gè)隨機(jī)數(shù)。

          本文引用地址:http://www.ex-cimer.com/article/202303/444919.htm

          這個(gè)項(xiàng)目在按下按鈕時(shí)產(chǎn)生一個(gè)0到100之間的隨機(jī)數(shù)。這是一個(gè)簡(jiǎn)單的項(xiàng)目,你可能在嵌入式項(xiàng)目中找不到任何嚴(yán)肅的應(yīng)用。該項(xiàng)目工作只是一個(gè)示范。

          如何編寫程序?

          代碼

          是一種物理設(shè)備,當(dāng)按下一個(gè)按鈕時(shí),在一定范圍內(nèi)隨機(jī)產(chǎn)生一個(gè)數(shù)字。在這個(gè)項(xiàng)目中,當(dāng)按下按鈕(連接P3.0)時(shí),LCD(液晶顯示器)會(huì)隨機(jī)顯示數(shù)字。

          在這個(gè)項(xiàng)目中,計(jì)數(shù)器以高速從0到99遞增。如果你按下按鈕,那么LCD就會(huì)顯示當(dāng)前的計(jì)數(shù)值。由于計(jì)數(shù)器高速遞增,在按下按鈕時(shí)選擇一個(gè)隨機(jī)數(shù)字。

          使用8051的電路圖

          Random Number Generator using 8051 Circuit Diagram

          所需元件

          AT89C51 (8051單片機(jī))

          8051編程器 

          編程電纜

          5V電源

          16×2字母數(shù)字LCD

          2個(gè)陶瓷電容 - 33pF

          11.0592MHz晶體

          按鍵 - 3

          電解電容 - 10μF, 16V

          10KΩ 電阻器(1/4瓦) - 2個(gè)

          330Ω 電阻器(1/4 瓦) - 2

          波特 - 10KΩ

          1KΩ X 8 電阻器包

          連接導(dǎo)線 

          使用8051的的電路設(shè)計(jì) 

          該電路使用8051微控制器,16×2字母數(shù)字液晶顯示器,按鈕和一些無源元件。這個(gè)電路的主要部件是AT89C51微控制器。

          在上述電路中,兩個(gè)按鈕被連接到P3.0和P3.1,其中一個(gè)按鈕(Random - P3.0)將產(chǎn)生隨機(jī)數(shù),而另一個(gè)按鈕(RST - P3.1)將重置計(jì)數(shù)。

          LCD的數(shù)據(jù)引腳連接到微控制器的PORT2,控制引腳RS、RW、En分別連接到P2.0、GND和P2.1。這里,LCD是以8位模式連接的,這就是為什么我們需要使用LCD的所有數(shù)據(jù)引腳。

          一個(gè)10KΩ電阻,一個(gè)10μF電容和一個(gè)按鈕將為8051微控制器提供復(fù)位電路。兩個(gè)33pF的電容和一個(gè)11.0592MHz的夸特晶體被用來為8051微控制器提供振蕩器。

          在這里,一個(gè)10KΩ的電位器被連接到LCD的VEE引腳,用來控制LCD的對(duì)比度。通過調(diào)整電位器的電阻,我們可以改變對(duì)比度或亮度。

          注意:如果你想減少LCD的數(shù)據(jù)線,你可以使用4位模式。

          Random Number Generator using 8051 Image 1

          Random Number Generator using 8051 Image 2

          Random Number Generator using 8051 Image 3

          如何編寫程序?

          現(xiàn)在讓我們看看如何使用8051單片機(jī)編寫隨機(jī)數(shù)發(fā)生器的程序。首先,取一個(gè)整數(shù)類型的計(jì)數(shù)變量并在8位模式下初始化LCD。現(xiàn)在用一個(gè)無限的while循環(huán)來永遠(yuǎn)重復(fù)程序。在這個(gè)無限的WHILE循環(huán)中,增加整數(shù)的值直到按鈕被按下(通過使用另一個(gè)while循環(huán))。

          遞增到99,當(dāng)計(jì)數(shù)達(dá)到100(上限)時(shí),使計(jì)數(shù)為0并重復(fù)這一過程。如果你想擴(kuò)大隨機(jī)數(shù)發(fā)生器的上限,可以在循環(huán)中改變數(shù)值。一旦按下按鈕,計(jì)數(shù)就會(huì)停止,并在LCD上顯示當(dāng)前的計(jì)數(shù)值。

          在這個(gè)程序中,如果你想擴(kuò)大隨機(jī)數(shù)發(fā)生器的上限,你可以在程序中做一些小小的改動(dòng)。由于我們使用的是LCD,所以有可能擴(kuò)展隨機(jī)數(shù)發(fā)生器的上限,而如果使用2個(gè)七段顯示器,則不可能擴(kuò)展上限(你也必須增加七段顯示器的數(shù)量)。

          代碼

          如何使用8051操作隨機(jī)數(shù)發(fā)生器電路?

          首先,在Keil μVision軟件中編寫隨機(jī)數(shù)發(fā)生器的程序,并生成hex文件。

          現(xiàn)在,在8051編程器的幫助下,將這個(gè)十六進(jìn)制文件刻錄到AT89C51微控制器上。

          按照電路圖的要求進(jìn)行連接。

          確保電路的電源是5V直流。

          現(xiàn)在打開電路的電源。

          你可以在LCD上看到 "Random Number Generator "字符串。

          然后,它將要求你按下按鈕來生成一個(gè)隨機(jī)數(shù)。

          按下按鈕,你可以在LCD上看到一個(gè)隨機(jī)數(shù)。這將一直顯示到你按下RST按鈕(連接到P3.1)。

          一旦你按下RST按鈕,將再次要求你按下按鈕生成一個(gè)隨機(jī)數(shù)。

          這個(gè)過程一直持續(xù)到你關(guān)閉電源。

          使用8051電路的隨機(jī)數(shù)發(fā)生器的應(yīng)用

          這個(gè)項(xiàng)目用于我們需要生成隨機(jī)數(shù)的應(yīng)用中

          用在噪聲發(fā)生器中

          在玩大富翁、蛇梯等游戲時(shí),項(xiàng)目被用作傳統(tǒng)骰子的替代品。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();