


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、師學院電子時鐘及抽獎機姓 名:學 號:系 別: 物理與電子信息工程系專 業:電子科學與技術年 級:09級指導教師:白炳良2012年5月目錄1摘要:32關鍵字:33設計任務33.1兩種抽獎方式33.2擴展功能34設計方案34.1設計思路34.2方案比較與論證34.3系統結構框圖45各功能模塊設計45.1顯示模塊原理45.2參數計算55.3獨立式按鍵模塊55.4總系統原理圖66軟件設計76.1 I/O 口分配 76.2隨機數算法86.3秒產生算法86.4按鍵掃描86.5顯示掃描87流程圖888程序清單129調試要點279.1硬件調試279.2軟件調試279.3結果分析及設計工作總結2710參考文獻
2、及附件2710.1參考文獻2810.2元器件清單2811PCB版 圖 28281摘要:本設計由單片機AT89S52芯片和LED共陽數碼管為核心,輔以必要的電路,構成了一個由單片機控制的四位顯示設計,設計制作同步和單步抽獎機,在模式鍵、啟動鍵,停止鍵的控制下 實現設計集成了時鐘、秒表、四位抽獎三種功能于一體。2關鍵字:AT89S52動態顯示四位抽獎按鍵掃描隨機數秒表3設計任務3.1兩種抽獎方式按抽獎啟動鍵時,四位數碼管以不同的隨機數快速滾動顯示,按抽獎停止鍵時,四位隨機數停止滾動顯示在數碼管上。3.1.2按抽獎啟動鍵時,個位數碼管以隨機數快速滾動顯示,按抽獎停止鍵時,個位隨機數停止滾動顯示在數碼
3、管上; 用同樣的方 法來確定十位、百位、千位的隨機數。3.2擴展功能電子時鐘:電子鐘以99時59分59秒為一個計數周期,在顯示分秒, 時分模塊化之間切換。4設計方案4.1 設計思路本設計需要實現兩種方式的抽獎(即四位同時抽和逐位抽獎),因此重點在于由軟件產生隨機數;而硬件則需由數碼管來顯示中獎結果以及按鍵來控制抽獎模式和啟動、停止抽獎。系統以AT89S52為核心,主要有顯示模塊、按鍵模塊和單片機軟件控制模塊構成。4.2 方案比較與論證數碼管顯示模塊:方案一:單片機輸出數據經譯碼芯片CD4511進行譯碼后直接驅動數 碼管,數碼管公共端接9012三極管擴流,并通過單片機I/O 口控制三極 管的選通
4、,實現動態顯示。方案二:有單片機的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顯示模塊原理由單片機(AT89S52)的引腳P1 口
5、輸出中獎、時間等數據信息,通過片選信號 P2.0、P2.1、P2.2、P2.4就可在相應的數碼管進行顯示。當位選信號P2.0為低電平時,P1 口送出數據也為低電平就點亮數碼管,電流灌進單片機。多位LED顯示,為了簡化電路,降低成本,將所有位的段選線并聯在一起,由一個 8位 I/O 口控制。而共陽極公共端分別接一個9012,由相應的I/O 口線控制9012,實現各位數碼管的分時選通。段選碼,位選碼每送入一次后延時10MS因人的視覺暫留時間為0.1S( 100MS,所以每位顯示的時間不能超過 20MS并保持延 時一段時間,以造成視覺暫留效果,給人看上去每個數碼管總在亮。 這種方式稱 為軟件掃描方式
6、。電路如(圖3-1 )所示。由于采用的是共陽極數碼管,所以要讓段碼點亮需把 I/O 口置0,例如:段 碼a到g對應的I/O 口是P1.0到P1.6,則要讓數碼管顯示0到6對應的16進 值如圖所示圖3-1顯示電路P1.6P1.5P1.4P1.3P1.2P1.1P1.016進制010000000C0H111110010F9H201001000A4H301100000B0H4001100199H5001001092H6000001082H圖3-2碼表1 2. /P2.4Xi 2.1下-R1r-|R2rRES2RES2RES2IR3R4RES22+5VSEG1LE D8SEG2LE D8SEG3LE
7、D8SEG4LE D8P2.0h0日日日日h0WWW14ES5.2 參數計算由于I/O 口高電平約等于5V,使用灌電流的方式驅動數碼管,故選用 PNP型 三極管9012;數碼管能正常工作的段電流為 3mA-10 mA,壓降為1.7V,三極 管發射極和集電極的壓降為0.3V,因此限流電阻的壓降為3.0V,5VR 5V 500所以選用限流電阻的阻值 R=470歐.10mA5.3 獨立式按鍵模塊獨立式按鍵是直接用 I/O 口線構成的單個按鍵電路,其特點是每個按鍵單獨占用一根I/O 口線,每個按鍵的工作不會影響其它 I/O 口線的狀態。獨立式按鍵的典型應用如 (圖3-3) 所示。獨立式按鍵電路配置靈活
8、,軟件結構簡單,但每個按鍵必須占用一根I/O 口線,因此,在按鍵較多時,I/O 口線浪費較大,但本設計只用到三個按鍵,顧采用獨立式按鍵電路。圖3-3獨立式按鍵電路5.4總系統原理圖單片機(AT89S52)9腳為復位輸入端。上電復位,只要 RST引腳上有大于二 個機器周期以上的高電平,單片機(AT89C2051)即復位。按鍵從單片機(AT89S52)的P2.0、P2.1、P2.2、P2.4 口接入,當按鍵被按下 時,相應的輸入口就會輸入低電平 0。單片機(AT89S52)的XTAL1腳、XTAL2腳接一個由12M晶振和10pf組成的振 蕩電路。為單片機提供相應的時序。14 ESU189s5247
9、0UFRESETC4220uF124673?912467edCabhgfedcab_ _C12 -104R22201 21L1iC1321+5V- MP n_ 51 4il3121pv/1Tl-TIS1XNKBi76 75 Ry141.OpF _L_10pF903L50 -彳lOn12M HZ4K7RwDK5p171RpT6|+5Vl-!6軟件設計主程序主要起到一個導向和決策功能,控制程序的走向。本系統在主程序 中運用模塊化結構,所有控制量集中處理,提高了處理效率,并在RAMS立各控 制量的映射,方便各功能模塊的編程及修改。運用散轉結構,可實現無擾動重入。 本設計主要有以下幾個模塊:時鐘模塊、
10、四位抽獎模塊、逐位抽獎模塊。操作說明:上電復位后進入數碼初顯示模塊;按SW0啟動,四位數碼管產生四位隨機數,按SW0四位隨機數停止(操作可重復);按SW1 一次進入抽獎2模 塊;按SW0啟動,四位數碼管最低位產生隨機數,按SW1最低位停止高位啟動 按4次SW1后四位數碼管均產生隨機數,按 SW0鍵停止抽獎(操作可重復); 按SW1 一次進入時間模塊(可循環)。按RET鍵單片機復位。6.1 I/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 隨機數算法在隨
11、機數模式下,調用庫函數 stdlib .h ,用 dis_bufi =dis_dmrand() %0返回隨機數值6.3 秒產生算法將定時器0定時5mS每計數200次為1S。6.4 按鍵掃描直接判斷按鍵的按下與放開,不采用標志位判斷。6.5 顯示掃描顯示掃描采用高、低兩位分開顯示;這樣,在進行時鐘顯示及秒表顯示時易于處7流程圖Msta=1 :四位同時抽獎Msta=2 :逐位產生隨機數:Msta=3Esw2=1?N據pointer轉模塊Poi nter=0EswO?Jc!=cjYYPoin ter=1Esw1?N.返回NCj=1?產生個位隨機數返回 Pointer=1EswO?YNCj=1?Poi
12、 nter=2YPoi nter=2Esw1?Y理F產生個位隨機數Jc!=cjNT返回NEswO?NCj=1?Jc!=cj產生個位隨機數YPoi nter=3Esw1?N返回/*名稱:四位抽獎機 編寫:小葉日期:平臺:AT89S52*/ #in clude#i ncludevi ntri ns.h#in clude#define uint unsigned int/ 宏定義#defi ne uchar un sig ned char/宏定義#defi ne nop _nop_()/*端口定義*/#defi ne disport P0/數據端口sbit cs0=P2A0;sbit cs 1= P
13、2A1;sbit cs2=P2A4;sbit sw0=P3A0;sbit cs3=P2A2;/獨立按鍵端口sbit sw1= P3八4;sbit sw2=P3A7;/*定義變量*/uchar data key;/定義鍵值寄存器uchar bdata ekey; uchar bdata lastkey; sbit esw0=ekeyA0; sbit esw1=ekeyA4; sbit esw2=ekeyA7;/定義鍵沿寄存器bit flaflag;bit f300flag;bit cj=1;/定義閃爍標志uchar f300t, f200t=200,f100t;uchar msta,ck=0;u
14、char flasta=5;uchar a,b,c,d,e,g,h;uchar/閃爍標志codedis_dm=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,Oxff,Oxfc,OxOO,OxfO,OxOf;顯示段碼值顯示緩沖uchar dis_buf=0xC0,0xC0,0xC0,0xC0,0xff;uchar dis_poi nter,poi nter;/定義顯示指針/*函數聲明*/void Disply();/ 顯示函數void Flaply();/閃爍函數void KeySca n();/讀鍵函數void In it_timer0()
15、;/ 定時器初始化void choujia ng_2();/ 抽獎方式2void dia nzishizho ng();/電子時鐘void dia nzishizho ngxiaoshi();/*主函數*/void mai n() uint i;TMOD=Ox11; /定時器0工作方式1SCON=OxOO;TH0=0xec;TL0=0x78;TR0=1;while(1)while(!TF0); /5ms?TF0=0;TH0=0xec; / 定時器初值重設TL0=0x78;KeySca n(); /調用鍵掃描函數,顯示函數Disply();Flaply();if(f300t+=100)f300t
16、=0;/ f300flag=!f300flag; if(f100t+=600) f100t=0;ck=1;switch(msta)case 0:dis_buf0=0x90;/數碼顯示初值dis_buf1=0xC0;dis_buf2=0xA4;dis_buf3=0xA4;if(eswO) msta=1;if(esw1) msta=2;if(esw2) msta=3;break;case 1:if(eswO)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)
17、g=0;dis_bufO=dis_dmc;dis_buf1=dis_dmd;dis_buf2=dis_dme;dis_buf3=dis_dmg; f200t=200;break;default:msta=O;/*I?i01 s.&病dM2爾應&病*/void choujiang20宀swifch(poinCDr)宀 casepif(eswo)cH-oj- if(cj)dislbufoHdisldmsnd()l 0ifoswk)poinorMbreakcase 1 -if(eswo) cH-oj- if(cj) dislbufulldisldmsnd()10k ifoswk) poinCDrHZ
18、 break-20、28case 2:if(eswO)cj=!cj;if(cj)dis_buf2=dis_dmra nd()%10;if(esw1)poin ter=3;break;case 3:if(esw0)cj=!cj;if(cj)dis_buf3=dis_dmra nd()%10;if(esw1)poin ter=0;break;defaultbreak;/*電子時鐘分秒*/void dia nzishizho ng()+a;if(a9)a=0;+b;if(b5)b=0;+c;if(c9)c=0;+d;if(d5)d=0;+e;dis_bufO=dis_dma;dis_buf1=dis
19、_dmb;dis_buf2=dis_dmc;dis_buf3=dis_dmd;/*定時器0初始化函數*/void Ini t_Timer0(void)TMOD = 0x11;/TH0=0xec;TL0=0x78;/TR0= 1;/定時器0工作在方式1定時器5ms初值開定時器0/讀獨立按建鍵有變化? key為電平,鍵有變,計數到?/放棄不穩定的鍵/*鍵掃描函數*/ void KeySca n()uchar kbuf,keyt;P2=0XFF;P3二P3|0X91;kbuf=P3;kbuf=(kbuf&0X91)A0X91;lastkey二kbuf;if(lastkey!二key)/lastkey
20、 為前沿if(keyt-!=0)/lastkey二key;elsekeyt=0X05;/重賦去抖值ekey=(keyastkey)&l astkey; /鍵前沿提取key=lastkey;/*顯示函數*/void Disply() disport=0xff;P2=0xff;switch(dis_poi nter)應顯示位case 0: cs0=0;disport二dis_bufO;dis_poi nter=1;if(flaflag)Flaply();break;/根據顯示指針,轉相/ 點亮第零位數碼管/ 點亮第一位數碼管case 1: cs1=0;點亮第二位數碼管/點亮第三位數碼disport
21、二dis_buf1;dis_po in ter=2;if(flaflag)Flaply();break;/case 2: cs2=0;disport二dis_buf2;dis_po in ter=3;if(flaflag)Flaply();break;case 3: cs3=0;disport二dis_buf3;dis_po in ter=0;if(flaflag)Flaply();break;defaultbreak;/ 300ms 至U,關顯示/ 300ms 至U,關顯示/*閃爍函數*/ void Flaply()switch(flasta)/據閃爍狀態轉相應位case 0: if(f300flag) cs0=1;break;case 1: if(f300flag) cs 1=1;break;case 2: if(f300flag) cs2=1;break;case 3: if(f300flag) cs3=1;break;case 4: if(f300flag) cs0=1;if(f300flag)cs 1=1;if(f300flag)cs2=1;if(f300flag)cs3=1;break;default:break;9調試要點9.1 硬件調試1、硬件完成后,檢查電路有無短路、斷路或虛焊;2、電路板檢查正常后
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年初級銀行從業資格之初級個人理財考前沖刺模擬試卷B卷含答案
- 社團活動精細化管理計劃
- 2025年公寓的標準租賃合同
- 2025合同管理的核心原則與實踐合同法
- 2025租房合同范本「正式版」
- 學習方式變革與推廣計劃
- 機車雙機重聯連接總風管得原因
- 貨車內循環和外循環的詳細說明
- 上門喂養寵物協議合同樣本
- 出國干活簽合同標準文本
- 華南理工大學自主招生個人陳述自薦信范文
- 《鄭人買履》課本劇劇本:別讓教條束縛了你的思維(6篇)
- T-SHXFXH002-2024集裝箱式柴油發電機組及油機平臺消防安全技術標準
- 幼兒園園長法律培訓
- 住建局條文解讀新規JGJT46-2024《施工現場臨時用電安全技術標準》
- 一例慢性心衰患者雙下肢重度水腫伴左下肢重度潰瘍的個案護理課件
- 男生穿搭技巧學習通超星期末考試答案章節答案2024年
- 飛機客艙保潔安全
- 《工程勘察設計收費標準》(2002年修訂本)-完整版-1
- 公路工程標準施工招標文件(2018年版)
- 高等數學(第五版)課件 3.1 微分中值定理與洛必達法則
評論
0/150
提交評論