|
(二)設(shè)計(jì)要求
1.隨機(jī)產(chǎn)生抽獎(jiǎng)號(hào)碼。
2.可以隨時(shí)啟動(dòng)和停止抽獎(jiǎng)
3.實(shí)時(shí)顯示抽獎(jiǎng)結(jié)果
(三)設(shè)計(jì)方法
本設(shè)計(jì)由三部分組成:CPU處理模塊,按鍵抽獎(jiǎng)控制模塊,抽獎(jiǎng)信息顯示模塊。其中CPU處理模塊控制所有的電路,當(dāng)抽獎(jiǎng)啟動(dòng)鍵按下后,CPU識(shí)別到按鍵按下,開始持續(xù)產(chǎn)生隨機(jī)數(shù)(抽獎(jiǎng)號(hào)碼),當(dāng)抽獎(jiǎng)停止鍵按下后,CPU識(shí)別到按鍵按下,立刻停止隨機(jī)數(shù)的產(chǎn)生,并在顯示模塊顯示出當(dāng)前隨機(jī)數(shù)(抽獎(jiǎng)號(hào)碼)。
二 硬件設(shè)計(jì)
(一)硬件設(shè)計(jì)方案
本設(shè)計(jì)使用AT89C51芯片作為主芯片,使用兩個(gè)獨(dú)立按鍵作為抽獎(jiǎng)的啟動(dòng)鍵和停止鍵,以及四位共陰數(shù)碼管作為抽獎(jiǎng)號(hào)碼的顯示模塊。硬件設(shè)計(jì)結(jié)構(gòu)簡(jiǎn)單可靠,不需要額外的電路部分節(jié)省了制造生產(chǎn)成本。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
(三)按鍵電路設(shè)計(jì)
本設(shè)計(jì)按鍵部分使用兩個(gè)獨(dú)立按鍵,一個(gè)作為抽獎(jiǎng)的啟動(dòng)鍵,一端與接芯片P1.0口相接,一端與地線相接。一個(gè)作為抽獎(jiǎng)的停止鍵,一端與接芯片的P1.4口相接,一端與地線相接。按鍵按下即可送出低電平信號(hào)。如圖三所示。
圖三(按鍵電路)
(四)數(shù)碼管顯示部分
本設(shè)計(jì)的顯示部分采用7SEG-MPX4-CC,即四位共陰極數(shù)碼管,該數(shù)碼管剛好可以滿足稍復(fù)雜的4位抽獎(jiǎng)號(hào),既確保了有足夠的抽獎(jiǎng)號(hào)數(shù)量同時(shí)又方便記錄和查看。數(shù)碼管的A,B,C,D,E,F,G,DP分別與芯片的P2.0至P2.7相連,以控制數(shù)碼管所顯示的內(nèi)容,而數(shù)碼管的1,2,3,4分別與芯片的P3.0至P3.3相連,用于控制數(shù)碼管所顯示數(shù)字的位置。如圖四所示。
程序開始后,進(jìn)入while循環(huán)等待按鍵K1的按下,待K1按下后定時(shí)器開始計(jì)時(shí),將TL0,TH0的值分別賦給sum1和sum2,sum1和sum2進(jìn)行除以10取余10和直接取余10后得到不同的個(gè)位數(shù),再以此為數(shù)組下標(biāo)分別從數(shù)組led[ ]中取數(shù)碼管的數(shù)值顯示,在條件循環(huán)while(counter==1)里循環(huán)等待按鍵K2的按下,若K2按下,則跳出while(counter==1)循環(huán),停止隨機(jī)數(shù)的產(chǎn)生,將當(dāng)前隨機(jī)數(shù)一直顯示在數(shù)碼管上,完成一次抽獎(jiǎng)。
(二)各部分代碼分析
1.主函數(shù)
void main()
{
TMOD=0x01;
TH0=0x00;
TL0=0x00;
EA=1;
ET0=1;
TR0=1;
key();
}
主函數(shù),設(shè)定了定時(shí)器的工作方式,定時(shí)器初值,調(diào)用了key函數(shù)。
2.按鍵邏輯函數(shù)
void key()
{
while(1)
{
if(k1==0)
{
counter=1;
while(counter==1)
{
sum1=TL0;
sum2=TH0;
display();
delay(35);
TR0=1;
if(k2==0)
{break;}
}
}
if(k2==0)
{
P2=0x00;
P3=0x00;
sum1=TL0;
sum2=TH0;
TR0=0;
if(k1==0)
{break;}
}
display();
}
}
按鍵函數(shù)中設(shè)定了按鍵控制隨機(jī)數(shù)的產(chǎn)生和顯示邏輯,只有K1按下后才會(huì)產(chǎn)生隨機(jī)數(shù),K2按下后會(huì)停止并顯示當(dāng)前隨機(jī)數(shù)。
3.顯示函數(shù)
void display()
{
P2=led[sum1%10];
P3=0xfe;
delay(2);
P3=0xff;
P2=led[sum1/10%10];
P3=0xfd;
delay(2);
P3=0xff;
P2=led[sum2%10];
P3=0xfb;
delay(2);
P3=0xff;
P2=led[sum2/10%10];
P3=0xf7;
delay(2);
P3=0xff;
}
顯示函數(shù)通過對(duì)sum1和sum2的運(yùn)算得到個(gè)位數(shù),并以此為下標(biāo)在數(shù)組內(nèi)找到對(duì)應(yīng)數(shù)字從P3口送出。
全部資料51hei下載地址(Proteus仿真+源程序):
基于51單片機(jī)的電子抽獎(jiǎng).zip
(64.41 KB, 下載次數(shù): 52)
2020-7-12 10:42 上傳
點(diǎn)擊文件名下載附件
|
評(píng)分
-
查看全部評(píng)分
|