【文章內(nèi)容簡介】
端,為電路功能的擴展提供方便。 譯碼器 74LS138 的管腳及其功能如表 所示 。 表 譯碼器 74LS138 管腳功能 管腳 功能 VCC 電源正 GND 地 E1 選通端 E2 /E3 選通端(低電平有效) A0~ A3 地址輸入端 Y0~ Y7: 輸出端(低電平有效) 74LS138 譯碼器的工作原理為: 當(dāng)一個選通端( E1)為高電平,另兩個選通端 (E2)和 (E3)為低電平時,可將地址端( A0、 A A2)的 二進制編碼 在 對應(yīng)的輸出端以低電平譯出 。 74LS138 的引腳圖如圖 。 圖 74LS138 的引腳圖 74LS138 的功能真值表如表 。 乒乓游戲機設(shè)計 13 表 74LS138 功能真值表 輸 入 輸 出 E3 E2 E1 A2 A1 A0 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 X H X X X X H H H H H H H H X X H X X X H H H H H H H H L X X X X X H H H H H H H H H L L L L L L H H H H H H H H L L L L H H L H H H H H H H L L L H L H H L H H H H H H L L L H H H H H L H H H H H L L H L L H H H H L H H H H L L H L H H H H H H L H H H L L H H L H H H H H H L H H L L H H H H H H H H H H L 發(fā)光二極管簡介 發(fā)光二極管簡稱為 LED,是一種能發(fā)光的半導(dǎo)體電子元件。這種電子元件在 1962年出現(xiàn), 由鎵( Ga)與砷( As)、磷( P)的化合物組成的二極管,電子與空穴復(fù)合時能輻射出可見光。其中,磷砷化鎵二極管發(fā)紅光,磷化鎵二極管發(fā)綠光,碳化硅二極管發(fā)黃光。發(fā)光二極管具有單向?qū)ㄐ?,即發(fā)光二極管只能往一個方向通電,這種特性叫做正向偏置(正向偏壓)。 發(fā)光二極管的基本結(jié)構(gòu)是一塊電致發(fā)光的半導(dǎo)體材料,置于一個有引線的架子上,然后用環(huán)氧樹脂密封,起到保護內(nèi)部芯片線的作用。發(fā)光二極管的核心部分是由P 型半導(dǎo)體和 N 型半導(dǎo) 體組成的晶片,在 P型半導(dǎo)體和 N型半導(dǎo)體之間有一個過渡層,稱為 PN 結(jié)。在某些半導(dǎo)體材料的 PN 結(jié)中,注入少數(shù)載流子與多數(shù)數(shù)載流子復(fù)合時把多余的能量以光的形式釋放出來,從而把電能轉(zhuǎn)換成光能。發(fā)光二極管的兩根引線較長的一根是 正極 ,需接電源正極。發(fā)光二極管及其構(gòu)造如圖 所示 。 西南石油大學(xué)本科畢業(yè)設(shè)計(論文) 14 圖 發(fā)光二極管及其構(gòu)造 模擬球拍電路的設(shè)計 單片機 ~ 控制兩個譯碼器的 A,B,C 端, 和 分別控制兩個譯碼器的 E1 端,且 E E3 兩個端口接地。單片機 P2口輸出信號,從而達(dá)到控制發(fā)光二極管的熄 滅與點亮。 其電路圖如圖 。 圖 顯示電路 的 設(shè)計 乒乓游戲機 的數(shù)據(jù) 較為 簡單,只需要顯示比分和最終勝利的狀態(tài),因此 選用只顯示字符和數(shù)字的 LCD1602 顯示屏。 乒乓游戲機設(shè)計 15 LCD1602 簡介 乒乓游戲機 顯示電路設(shè)計采用 LCD1602 顯示屏。 LCD1602 為工業(yè)字符型液晶,能夠同時顯示 32個字符。它是專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。由若干個 5*7 或 5*11 等點陣字符位組成。每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起 到了字符間距和行間距的作用。 LCD采用標(biāo)準(zhǔn)的 16腳接口,其管腳功能如表 所示。 表 LCD1602 的管腳功能表 管腳 功能 VSS 電源地 VCC 接 5V電源電極 V0(VEE) 液晶顯示器對比度調(diào)整端,接正電源對比度最弱,接地電源最高 RS 寄存器選擇。高電平時選擇數(shù)據(jù)寄存器,低電平時選擇指令寄存器 RW 讀寫信號線。高電平時讀取信息,低電平時進行寫操作 E(EN) 使能端。高電平時讀取信息,負(fù)跳變時執(zhí)行指令 D0~ D7 8 位雙向數(shù)據(jù)端 BLA 背光正極 BLK 背光負(fù)極 LCD1602 的特性: 或 5V工作電壓,對比度可調(diào);內(nèi)含復(fù)位電路,提供各種控制命令;有 80 字節(jié)顯示數(shù)據(jù)存儲器 DDRAM;內(nèi)建有 192個 5*7 點陣的字型的字符發(fā)生器 CGROM; 8個可由用戶自定義的 5*7 的字符發(fā)生器 CGRAM; LCD1602 及其引腳圖如圖 所示。 圖 LCD1602 及其引腳圖 西南石油大學(xué)本科畢業(yè)設(shè)計(論文) 16 顯示電路 的設(shè)計 此設(shè)計中的顯示模塊采用 LCD 來顯示 乒乓游戲機 的 AB 隊 比分。 LCD1602 的 DD D D7 分別 與 單片機中的 、 、 、 相連 ,用于數(shù)據(jù) 和地址的傳輸 。 LCD1602 的 RS、 RW、 E分別 與 單片機中的 、 、 相連 ,用于寫入控制 。 其電路設(shè)計圖如圖 。 圖 顯示電路設(shè)計圖 乒乓游戲機 總電路 的 設(shè)計 本設(shè)計采用 Proteus 繪制電路設(shè)計仿真圖, 乒乓游戲機 的硬件設(shè)計包括單片機電路、譯碼電路、發(fā)光二極管電路、按鍵電路、顯示電路等電路的設(shè)計。其仿真圖如圖。 圖 總電路設(shè)計圖 乒乓游戲機設(shè)計 17 乒乓游戲機 的硬件包括單片機電路、譯碼電路、發(fā)光二極管電路、按鍵電路、顯示電路等電路。其中單片機電路包括 :晶振電路,復(fù)位電 路; 由譯碼器接 P2的 5個I/O 口控制 16個模擬乒乓球臺桌 LED 燈; 由單片機的 P0口接上拉電阻,感應(yīng)按鍵電路的輸入; 有 到 給 LCD進行數(shù)據(jù)的輸入, 給 LCD 進行寫入控制。 西南石油大學(xué)本科畢業(yè)設(shè)計(論文) 18 4 乒乓游戲機 的軟件設(shè)計 及編程 本系統(tǒng)的軟件主要采用模塊化結(jié)構(gòu)設(shè)計,具體的程序有主程序 、按鍵組程序 (球拍模擬和暫停 /開始子程序) 、 發(fā)球程序、 線路程序 (包括 線路選擇和 LED 點陣子程序) 、 回球程序 、 LCD 顯示程序 。 系統(tǒng)流程圖如圖 所示。 圖 系統(tǒng)流程圖 開 始 主程序 是 B 發(fā)球 初始化 發(fā)球指示燈 是否點亮 否 A發(fā)球 AB 回球是否成功 A失敗 B加 1分 B失敗 A加 1分 得分 11 結(jié) 束 是 否 顯示 程序 回球程序 線路程序 否 是 否 乒乓游戲機設(shè)計 19 通過程序?qū)崿F(xiàn)的功能為:在主程序進入初始化, LCD 屏的清零,及初始化顯示設(shè)置;然后進入發(fā)球程序,綠色指示燈亮起時, B得到球權(quán),否則 A得到球權(quán);當(dāng)發(fā)球成功 后,進入線路模塊,在不同的情況進入相應(yīng)的線路,依據(jù)線路的選擇依次點亮線路所包含的 LED 燈;而后進入回球程序,回球成功繼續(xù)進入線路程序,回球失敗,對手分?jǐn)?shù)加 1,并進入 LCD 顯示程序;當(dāng) AB 隊 任 一隊 11 分后進入相應(yīng) win 子程序。暫停 /開始程序在定時掃描,當(dāng)暫停鍵按下時,游戲暫停,在游戲暫停時當(dāng)開始按下游戲繼續(xù)。 主程序 的設(shè)計及功能實現(xiàn) 主程序的功能是進行初始化工作,并控制“乒乓球”游戲的開始。 LED 燈組接單片機的 P2 口上,按鍵組接單片機 P0 口上, LCD 顯示屏由單片機控制。游戲開始時,程序控制顯示上行 A:0。下行 B:0。 void main() { write_(0x01)。//顯示器清屏 P2=0。//LED 點陣全部熄滅 fuwei()。//數(shù)據(jù)初始化 EA=1。 EX0=1。 EX1=1。 ET0=1。 IT0=1。 IT1=1。 TMOD=0X01。 TH0=(6553650000)/256。 TL0=(6553650000)%256。 TR0=1。//定式掃描初始化設(shè)置 qiuquan()。 //跳轉(zhuǎn)到發(fā)球程序 while(1)//循環(huán)掃描并點亮相應(yīng) LED { int t=1000+w*1000。 P2=q[n]。 delay_1(t)。//延時處理程序 xianlu()。//線路控制程序 } } 按鍵組 的設(shè)計及功能實現(xiàn) 此程序貫穿了整個 系統(tǒng)框圖中,包括球拍模擬子程序和暫停 /開始子程序。 西南石油大學(xué)本科畢業(yè)設(shè)計(論文) 20 球拍模擬 子 程序 單片機 P0口在相應(yīng)時間段內(nèi)感應(yīng)來自由按鍵組傳來的數(shù)據(jù),如果 在 delay_1(t)中作出正確的選擇,進入回球程序,否則對方加 1分。 圖 按鍵組流程圖 暫停 /開始 子 程序 當(dāng)暫停鍵被按下后,程序進入中斷,暫停燈亮起,當(dāng)按下開始按鍵時,程序繼續(xù)。其流程圖如圖 所示。 圖 暫停 /開始 程序流程圖 發(fā)球 程序 的設(shè)計及功能實現(xiàn) 綠色指示燈亮起時, B得到發(fā)球球權(quán),否則 A 得到發(fā)球球權(quán)。 void qiuquan(void) { w=1。//球速控制變量 按下按鍵 回球程序 對方分?jǐn)?shù)加 1 是 是否成功 否 是否暫停 繼續(xù)游戲 繼續(xù)暫停 是否解除 暫停 回到游戲 否 否 是 是 定時程序 乒乓游戲機設(shè)計 21 v=0。//發(fā)球控制變量 if(f=3)//球權(quán)控制變量 03循環(huán)。 f=0。 else f++。 if(f2)//當(dāng) f小于 2 時 A 得到球權(quán) Ajiqiu()。 else//當(dāng) f大于 2時 B得到球權(quán) Bjiqiu()。 } 線路程序 的設(shè)計及功能實現(xiàn) 線路程序包括線路選擇子程序和 LED 點陣子程 序。 線路 選擇子 程序 游戲發(fā)球有 8個線路選擇, AB 分別 4個線路選擇, 發(fā)球的 4 個選擇由線路 b[16]和初始點亮燈一起組成。 回球總的線路有 16 個,存在數(shù)組 b[16]中。 void xianlu(void)//線路程序按順序給 LED 點陣輸入相應(yīng)數(shù)據(jù) { if(m256)//m 取自 b[]中得數(shù)據(jù) {n=m/256。m=m%256。} else if(m16) {n=m/16。m=m%16。} else if(m16amp。amp。m=0) {n=m。m=1。} else if(m0)//當(dāng) m取完數(shù)據(jù)時,按鍵都沒做出正確輸入時,表明 A 或 B 回球失敗。 { P2=0。 if(n8) chang3()。 else if(n=8) chang1()。 qiuquan()。 } } LED點陣 子 程序 由單片機線路和 delay_1(t)控制 74LS138 譯碼器, 74LS138 譯碼器譯碼控制 LED點陣得點亮順序和相應(yīng)點亮?xí)r間。 q[16]寄存數(shù)組,列如 P2=q[0]時點亮 A 邊的第一個燈,單片機將數(shù)據(jù)傳輸給 74LS138 進行譯碼點亮相應(yīng)的 LED 實現(xiàn)乒乓球 的移動。 西南石油大學(xué)本科畢業(yè)設(shè)計(論文) 22 回球程序 的設(shè)計及功能實現(xiàn) 當(dāng)球在 A邊時, A可在相應(yīng) delay_1(t)中感應(yīng) A按鍵組的數(shù)據(jù)并作出相應(yīng)處理;當(dāng)球在 B 邊時,同理。 這里需要對 16個燈( D2D17)進行處理。下面對其中一個燈進行解釋。 w=P0_3。//A 的 P0_3 控制游戲的速度 //D2 if(n==0)//n==0 時 D2燈點亮 { if(x==13amp。amp。!P0_0)//當(dāng)線路為 13時且 P0_0 按下時按以下處理。 { if(!w) x=3。 else x=0。 while(!P0_0) 。 m=b[x]。 } if(x==8)//當(dāng)線路為 8 時只能按以下處理 { if(!P0_0) { x=3。 while(!P0_0)。 m=b[x]。} else if(!P0_1) { x=0。 while(!P0_1)。 m=b[x]。} } } 乒乓游戲機設(shè)計 23 LCD顯示程序 設(shè)計及功能實現(xiàn) LCD1602 與單片機 P1 口相連,程序控制顯示上行 A:0。下行 B:0。當(dāng) A 或 B 到達(dá)11 分時進入相應(yīng) win 子程序。 write_(0x80+2)。//第一行隔兩位寫入以下字符‘ A’‘ :’‘ ’ ‘ 0’