![單片機四位抽獎機[優選材料]_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-10/4/5cc43b2a-5c93-4c42-8fa7-8598ed3f70e1/5cc43b2a-5c93-4c42-8fa7-8598ed3f70e11.gif)
![單片機四位抽獎機[優選材料]_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-10/4/5cc43b2a-5c93-4c42-8fa7-8598ed3f70e1/5cc43b2a-5c93-4c42-8fa7-8598ed3f70e12.gif)
![單片機四位抽獎機[優選材料]_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-10/4/5cc43b2a-5c93-4c42-8fa7-8598ed3f70e1/5cc43b2a-5c93-4c42-8fa7-8598ed3f70e13.gif)
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、二類優質# 漳州師范學院漳州師范學院 電子時鐘及抽獎機 姓 名: 學 號: 系 別: 物理與電子信息工程系 專 業: 電子科學與技術 年 級: 09 級 指導教師: 白炳良 2012 年 5 月 二類優質# 目錄目錄 1摘要摘要: 4 2關鍵字關鍵字: 5 3設計任務設計任務 5 3.1兩種抽獎方式.5 3.2擴展功能擴展功能.5 4設計方案設計方案 5 4.1設計思路設計思路.5 4.2方案比較與論證方案比較與論證.5 4.3系統結構框圖系統結構框圖.6 5各功能模塊設計6 5.1顯示模塊原理顯示模塊原理.6 5.2參數計算參數計算.7 5.3獨立式按鍵模塊獨立式按鍵模塊.7 5.4總系統原
2、理圖總系統原理圖.8 6軟件設計 9 6.1I/OI/O 口分配口分配.9 6.2隨機數算法隨機數算法.10 6.3秒產生算法秒產生算法.10 6.4按鍵掃描按鍵掃描.10 6.5顯示掃描顯示掃描.10 7流程圖流程圖 10 .10 8程序清單程序清單 14 9調試要點 29 9.1硬件調試.29 9.2軟件調試.29 9.3結果分析及設計工作總結.29 10參考文獻及附件參考文獻及附件30 10.1參考文獻.30 10.2元器件清單.30 11PCBPCB 版圖版圖 30 .31 二類優質# 1摘要摘要: 本設計由單片機 AT89S52 芯片和 LED 共陽數碼管為核心, 輔以必要的電路,構
3、成了一個由單片機控制的四位顯示設計, 設計制作同步和單步抽獎機,在模式鍵、啟動鍵,停止鍵的控制 下實現設計集成了時鐘、秒表、四位抽獎三種功能于一體。 2關鍵字關鍵字: AT89S52 動態顯示 四位抽獎 按鍵掃描 隨機數 秒表 3設計任務設計任務 3.1兩種抽獎方式 3.1.1按抽獎啟動鍵時,四位數碼管以不同的隨機數快速滾動顯示, 按抽獎停止鍵時,四位隨機數停止滾動顯示在數碼管上。 3.1.2按抽獎啟動鍵時,個位數碼管以隨機數快速滾動顯示,按 抽獎停止鍵時,個位隨機數停止滾動顯示在數碼管上;用同樣 的方法來確定十位、百位、千位的隨機數。 3.2擴展功能擴展功能 電子時鐘:電子鐘以 99 時 5
4、9 分 59 秒為一個計數周期,在顯示分秒, 時分模塊化之間切換。 4設計方案設計方案 4.1設計思路設計思路 本設計需要實現兩種方式的抽獎(即四位同時抽和逐位抽獎) ,因此重點在于由軟件產 生隨機數;而硬件則需由數碼管來顯示中獎結果以及按鍵來控制抽獎模式和啟動、停止抽 獎。系統以AT89S52為核心,主要有顯示模塊、按鍵模塊和單片機軟件控制模塊構成。 4.2方案比較與論證方案比較與論證 數碼管顯示模塊: 二類優質# 方案一:單片機輸出數據經譯碼芯片 CD4511 進行譯碼后直接驅動 數碼管,數碼管公共端接 9012 三極管擴流,并通過單片機 I/O 口控制三 極管的選通,實現動態顯示。 方案
5、二:有單片機的 I/O 口直接驅動數碼管的段碼,數碼管的公共端 接 9012 三極管,通過灌電流的方式點亮數碼管,也需通過單片機 I/O 口 控制三極管的選通,實現動態顯示。 由于所需 I/O 口由 AT98S52 可直接提供,無須因為 I/O 口不夠而用 CD4511 來節省 I/O 口,方案二又較方案一更容易實惠,所以,我選擇方案二。 4.3 系統結構框圖系統結構框圖 AT89S52 單片機在模式鍵、啟動鍵和停止鍵的控制下,由 P1 口輸出數據, 通過 P2.0 、P2.1、P2.2、P2.4 進行選通,有數碼管顯示信息。 系統框圖: 圖 2-3 系統總框圖 5各功能模塊設計 5.1顯示模
6、塊顯示模塊原理原理 由單片機(AT89S52)的引腳 P1 口輸出中獎號碼、時間等數據信息,通過片 選信號 P2.0 、P2.1、P2.2、P2.4 就可在相應的數碼管進行顯示。當位選信號 P2.0 為低電平時,P1 口送出數據也為低電平就點亮數碼管,電流灌進單片機。 多位 LED 顯示,為了簡化電路,降低成本,將所有位的段選線并聯在一起,由 一個 8 位 I/O 口控制。而共陽極公共端分別接一個 9012,由相應的 I/O 口線控 制 9012,實現各位數碼管的分時選通。段選碼,位選碼每送入一次后延時 10MS,因人的視覺暫留時間為 0.1S(100MS) ,所以每位顯示的時間不能超過 20
7、MS,并保持延時一段時間,以造成視覺暫留效果,給人看上去每個數碼管總 在亮。這種方式稱為軟件掃描方式。電路如(圖 3-1)所示。 由于采用的是共陽極數碼管,所以要讓段碼點亮需把 I/O 口置 0,例如: 段碼 a 到 g 對應的 I/O 口是 P1.0 到 P1.6,則要讓數碼管顯示 0 到 6 對應的 16 進值如圖所示 二類優質# a 7 b 6 c 4 d 2 e 1 f 9 g 10 dt 5 com 3 com 8 SEG 3 LE D8 a 7 b 6 c 4 d 2 e 1 f 9 g 10 dt 5 com 3 com 8 SEG 1 LE D8 a 7 b 6 c 4 d 2
8、 e 1 f 9 g 10 dt 5 com 3 com 8 SEG 2 LE D8 T1 901 2 T2 901 2 T3 901 2 T4 901 2 a 7 b 6 c 4 d 2 e 1 f 9 g 10 dt 5 com 3 com 8 SEG 4 LE D8 R1 RE S2 R2 RE S2 R3 RE S2 R4 RE S2 +5V+5V+5V+5V h g f e d c b a d g f e d c a b h g f e d c a b h g f e d c a b a b c d e f g h P2.0P2.1P2.4P2.7 R14 RE S R13 RE S
9、 R12 RE S R11 RE S R10 RE S R9 RE S R8 RE S R7 RE S 圖 3-1 顯示電路 圖 3-2 碼表 5.2參數計算參數計算 由于I/O 口高電平約等于 5V,使用灌電流的方式驅動數碼管,故選用 PNP 型 三極管 9012;數碼管能正常工作的段電流為 3mA-10 mA,壓降為 1.7V,三極 管發射極和集電極的壓降為 0.3V,因此限流電阻的壓降為 3.0V, 所以選用限流電阻的阻值 R=470 歐.500 10 5 mA V R 5.3獨立式按鍵模塊獨立式按鍵模塊 獨立式按鍵是直接用 I/O 口線構成的單個按鍵電路,其特點是每個按鍵單獨占用一根
10、I/O 口線,每個按鍵的工作不會影響其它 I/O 口線的狀態。獨立式按鍵的典型應用如(圖 3-3)所示。 P1.6P1.5P1.4P1.3P1.2P1.1P1.016 進 制 010000000C0H 111110010F9H 201001000A4H 301100000B0H 4001100199H 5001001092H 6000001082H 二類優質# 獨立式按鍵電路配置靈活,軟件結構簡單,但每個按鍵必須占用一根 I/O 口線,因此, 在按鍵較多時,I/O 口線浪費較大,但本設計只用到三個按鍵,顧采用獨立式按鍵電路。 S2 S3 S4 P3 .4 P3 .0 P3 .7 圖 3-3 獨
11、立式按鍵電路 5.4總系統原理圖總系統原理圖 單片機(AT89S52)9 腳為復位輸入端。上電復位,只要 RST 引腳上有大于二 個機器周期以上的高電平,單片機(AT89C2051)即復位。 按鍵從單片機(AT89S52)的 P2.0、P2.1、P2.2、P2.4 口接入,當按鍵被按 下時,相應的輸入口就會輸入低電平 0。 單片機(AT89S52)的 XTAL1 腳、XTAL2 腳接一個由 12M 晶振和 10pf 組成的振 蕩電路。為單片機提供相應的時序。 二類優質# 10p F C10 10p F C11 XT 1 12M HZ a 7 b 6 c 4 d 2 e 1 f 9 g 10 d
12、t 5 com 3 com 8 SEG 3 LE D8 a 7 b 6 c 4 d 2 e 1 f 9 g 10 dt 5 com 3 com 8 SEG 1 LE D8 a 7 b 6 c 4 d 2 e 1 f 9 g 10 dt 5 com 3 com 8 SEG 2 LE D8 S2 S1 RE SET S3 S4 T1 901 2 T2 901 2 T3 901 2 T4 901 2 a 7 b 6 c 4 d 2 e 1 f 9 g 10 dt 5 com 3 com 8 SEG 4 LE D8 R1 RE S2 R23 4K 7 R2 RE S2 R3 RE S2 R4 RE S
13、2 R22 +5V+5V+5V+5V C12 104 +5V h g f e d c b a P3.4 P3.0 P3.7 d g f e d c a b h g f e d c a b h g f e d c a b a b c d e f g h P2.0P2.1P2.4P2.7 a b c d c g P07 C2 104 D2 D4 D3 D1 13 2 IC1 780 5 C1 470 uF C4 220 uF C3 104 ISP1 P1.5 RST P1.6 P1.7 +5V +5V +5v EA/VP 31 X1 19 X2 18 RESET 9 RD 17 WR 16 INT
14、0 12 INT1 13 T0 14 T1 15 P10/T 1 P11/T 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8 P00 39 P01 38 P02 37 P03 36 P04 35 P05 34 P06 33 P07 32 P20 21 P21 22 P22 23 P23 24 P24 25 P25 26 P26 27 P27 28 PSEN 29 ALE/P 30 TXD 11 RXD 10 U1 89s 52 f RST RST P1.5 P1.6 P1.7 P2.0 P2.1 P2.4 P2.7 R14 RE S R13 RE S R12 RE
15、S R11 RE S R10 RE S R9 RE S R8 RE S R7 RE S Port Port 220 5 6軟件設計 主程序主要起到一個導向和決策功能,控制程序的走向。本系統在主程 序中運用模塊化結構,所有控制量集中處理,提高了處理效率,并在 RAM 建立 各控制量的映射,方便各功能模塊的編程及修改。運用散轉結構,可實現無擾 動重入。本設計主要有以下幾個模塊:時鐘模塊、四位抽獎模塊、逐位抽獎模 塊。 操作說明:上電復位后進入數碼初顯示模塊;按 SW0 啟動,四位數碼管產生四 位隨機數,按 SW0 四位隨機數停止(操作可重復) ;按 SW1 一次進入抽獎 2 模 塊;按 SW0 啟
16、動,四位數碼管最低位產生隨機數,按 SW1 最低位停止高位啟 動按 4 次 SW1 后四位數碼管均產生隨機數,按 SW0 鍵停止抽獎(操作可重 復) ;按 SW1 一次進入時間模塊(可循環) 。按 RET 鍵單片機復位。 二類優質# 6.1I/OI/O 口分配口分配 1、P2.0、P2.1、P2.2、P2.4 作為個位、十位、百位、千位數碼管片選。 2、P3.0、P3.4、P3.7 作為按鍵接口。 3、P1.0 到 P1.6 作為段碼 a 到 g 的輸出口。 6.2隨機數算法隨機數算法 在隨機數模式下,調用庫函數 stdlib.h ,用 dis_bufi =dis_dmrand()%10 返回
17、隨機數值 6.3秒產生算法秒產生算法 將定時器 0 定時 5mS,每計數 200 次為 1S。 6.4按鍵掃描按鍵掃描 直接判斷按鍵的按下與放開,不采用標志位判斷。 6.5顯示掃描顯示掃描 顯示掃描采用高、低兩位分開顯示;這樣,在進行時鐘顯示及秒表顯示時易于處 7流程圖流程圖 二類優質# 5ms 到? 重新對計數器賦值 調用按鍵掃描程序 調用顯示子程序 調用閃爍子程序 500ms 到? F300cnt=0 取反閃爍標志位 根據 msta 的值進行散轉 數碼顯示初值 四位數同時抽獎 四位數逐位抽獎 時鐘顯示分秒 時鐘顯示時分 Msta=1 Msta=2 Msta=3 Msta=0 Y YN Ms
18、ta=0初始化 N 二類優質# 數碼顯示初值數碼顯示初值 Esw9? Esw0? Esw9? Msta=1 Msta=2 Msta=3 返回 Msta=1:四位同時抽獎 Esw0? cj!=cj Cj=1? 據 rand()產生隨機 數 Esw1? ESW2?四位數碼管閃爍 返回 Msta=2 Y Y Y Y N N N N Y Y Y N N N Msta=0: 二類優質# Msta=2:逐位產生隨機數: Esw2=1? Msta=3 據 pointer 轉模塊 Pointer=0 Esw0?Jc!=cjCj=1? 產生個位隨機數Esw1?Pointer=1 Y Y Y 返回 N N N 返
19、回 N Y Pointer=1 Esw0? Jc!=cjCj=1? 產生個位隨機數 Esw1? Pointer=2 Y Y Y N N N 返回 Pointer=2 Esw0? Jc!=cjCj=1? 產生個位隨機數 Esw1? Pointer=3 Y Y Y N N 返回 N 二類優質# N 返回 Pointer=3 Esw0?Jc!=cj Cj=1? 產生個位隨機數 Esw1? Pointer=3 Y Y Y N N 返回 1s 到? F200cnt=200 F200cnt- Msta=3: +a 秒個位 a 送顯 a9? 10s 到? a=0, +b N Y N 秒十位 b 送顯 b5?
20、 1 分到? b=0, +c N Y 分個位 d 送顯 c9? 10 分到? N Y c=0, +d 分十位 d 送顯 d5? 1 時到? N Y d=0, +e 時個位 e 送顯 e9? 10 時到? N Y e=0, +g 時十位 g 送顯 g9? 99 時到? N Y g=0 Y esw1? Msta=0 按下 esw0,轉到 msta=4,顯示小時、分鐘 二類優質# 8程序清單程序清單 /*- 名稱:四位抽獎機 編寫:張小葉 日期:2012.5.4 平臺:AT89S52 -*/ #include #include #include #define uint unsigned int/宏
21、定義 #define uchar unsigned char/宏定義 #define nop _nop_() /*- 端口定義 -*/ #define disport P0 / 數據端口 sbit cs0=P20; sbit cs1=P21; sbit cs2=P24; sbit cs3=P22; 二類優質# sbit sw0=P30;/獨立按鍵端口 sbit sw1=P34; sbit sw2=P37; /*- 定義變量 -*/ uchar data key; / 定義鍵值寄存器 uchar bdata ekey; / 定義鍵沿寄存器 uchar bdata lastkey; sbit es
22、w0=ekey0; sbit esw1=ekey4; sbit esw2=ekey7; bit flaflag; / 定義閃爍標志 bit f300flag; bit cj=1; uchar f300cnt, f200cnt=200,f100cnt; / 閃爍標 志 uchar msta,ck=0; uchar flasta=5; uchar a,b,c,d,e,g,h; uchar code 二類優質# dis_dm=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90,0 xff,0 xfc,0 x00,0 xf0,0 x0
23、f;/顯示段碼值 uchar dis_buf=0 xC0,0 xC0,0 xC0,0 xC0,0 xff;/顯示緩沖 uchar dis_pointer,pointer;/定義顯示指針 /*- 函數聲明 -*/ void Disply(); / 顯示函數 void Flaply(); /閃爍函數 void KeyScan(); /讀鍵函數 void Init_timer0(); / 定時器初始化 void choujiang_2(); /抽獎方式 2 void dianzishizhong(); /電子時鐘 void dianzishizhongxiaoshi(); /*- 主函數 -*/ v
24、oid main() uint i; 二類優質# TMOD=0 x11;/定時器 0 工作方式 1 SCON=0 x00; TH0=0 xec; TL0=0 x78; TR0=1; while(1) while(!TF0); /5ms? TF0=0; TH0=0 xec; /定時器初值重設 TL0=0 x78; KeyScan(); /調用鍵掃描函數,顯示函數 Disply(); Flaply(); /if(f300cnt+=100) /f300cnt=0; / f300flag=!f300flag; if(f100cnt+=600) f100cnt=0; ck=1; 二類優質# switch
25、(msta) case 0: dis_buf0=0 x90;/數碼顯示初值 dis_buf1=0 xC0; dis_buf2=0 xA4; dis_buf3=0 xA4; if(esw0) msta=1; if(esw1) msta=2; if(esw2) msta=3; break; case 1: if(esw0) cj=!cj; if(cj) for(i=0;i9) a=0;+b; if(b5) b=0;+c; if(c9) c=0;+d; if(d5) d=0;+e; if(e9) e=0;+g; if(g9) g=0; dis_buf0=dis_dmc; dis_buf1=dis_d
26、md; dis_buf2=dis_dme; dis_buf3=dis_dmg; f200cnt=200; break; 二類優質# default:msta=0; /*- 抽獎方式 2 逐位抽獎 -*/ void choujiang_2() switch(pointer) case 0: if(esw0) cj=!cj; if(cj) dis_buf0=dis_dmrand()%10; if(esw1) 二類優質# pointer=1; break; case 1: if(esw0) cj=!cj; if(cj) dis_buf1=dis_dmrand()%10; if(esw1) point
27、er=2; break; case 2: if(esw0) cj=!cj; if(cj) dis_buf2=dis_dmrand()%10; if(esw1) pointer=3; break; case 3: if(esw0) 二類優質# cj=!cj; if(cj) dis_buf3=dis_dmrand()%10; if(esw1) pointer=0; break; default:break; /*- 電子時鐘 分秒 -*/ void dianzishizhong() +a; if(a9) a=0;+b; if(b5) b=0;+c; if(c9) c=0;+d; 二類優質# if(
28、d5) d=0;+e; dis_buf0=dis_dma; dis_buf1=dis_dmb; dis_buf2=dis_dmc; dis_buf3=dis_dmd; /*- 定時器 0 初始化函數 -*/ void Init_Timer0(void) TMOD = 0 x11; /定時器 0 工作在方式 1 TH0=0 xec; TL0=0 x78; /定時器 5ms 初值 TR0= 1; /開定時器 0 /*- 鍵掃描函數 -*/ void KeyScan() 二類優質# uchar kbuf,keycnt; P2=0XFF; P3=P3|0X91; / 讀獨立按建 kbuf=P3; kb
29、uf=(kbuf lastkey=kbuf; if(lastkey!=key) / 鍵有變化?key 為電平, lastkey 為前沿 if(keycnt-!=0) /鍵有變,計數到? lastkey=key; /放棄不穩定的鍵 else keycnt=0X05; / 重賦去抖值 ekey=(keylastkey) /鍵前沿提取 key=lastkey; /*- 顯示函數 二類優質# -*/ void Disply() disport=0 xff; P2=0 xff; switch(dis_pointer) / 根據顯示指針,轉 相應顯示位 case 0: cs0=0; / 點亮第零位數碼管
30、disport=dis_buf0; dis_pointer=1; if(flaflag) Flaply(); break; / 點亮第一位數碼管 case 1: cs1=0; disport=dis_buf1; dis_pointer=2; if(flaflag) Flaply(); break; / 點亮第二位數碼管 case 2: cs2=0; disport=dis_buf2; 二類優質# dis_pointer=3; if(flaflag) Flaply(); break; case 3: cs3=0; / 點亮第三位數碼 管 disport=dis_buf3; dis_pointer=0; if(flaflag) Flaply(); break; default:break; /*- 閃爍函數 -*/ void Flaply() switch(flasta)/ 據閃爍狀態轉相應位 二類優質# case 0: if(f300flag) / 300ms 到,關顯示 cs0=1; break; case 1: if(f300flag) cs1=1; break;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 紡織機械的數字化技術發展趨勢考核試卷
- 統編版語文六年級下冊《語文園地一》精美課件
- 紙張耐高溫性能考核試卷
- 纖維板生產過程中的質量管理與控制考核試卷
- 糧油商品知識與實踐考核試卷
- 河南省駐馬店市平輿縣2023-2024學年七年級下學期6月期末考試數學試卷(含答案)
- 筆的行業競爭現狀考核試卷
- 合成材料在個人防護裝備中的應用考核試卷
- 家禽飼養業產學研深度融合與成果轉化機制優化考核試卷
- 二年級下冊成語
- 《義務教育語文課程標準》2022年修訂版原版
- 廣播劇編劇合同范本
- 辦公場地托管合同模板
- 酒精性肝病護理
- GB 30254-2024高壓三相籠型異步電動機能效限定值及能效等級
- 2024年天津市中考歷史試卷真題(含答案逐題解析)
- 2024-2030年下一代測序(NGS)行業市場現狀供需分析及重點企業投資評估規劃分析研究分析報告
- DB23T 1727-2016 地理標志產品 克東天然蘇打水
- 2017年注冊會計師《審計》考試真題及參考答案(考生回憶版)
- 2023四川雅安市名山區考試招聘社區專職工作者14人筆試歷年典型考題及考點剖析附答案帶詳解
- 新疆大地構造基本特征(屈訊)
評論
0/150
提交評論