【文章內(nèi)容簡介】
端,為電路功能的擴(kuò)展提供方便。 譯碼器 74LS138 的管腳及其功能如表 所示 。 表 譯碼器 74LS138 管腳功能 管腳 功能 VCC 電源正 GND 地 E1 選通端 E2 /E3 選通端(低電平有效) A0~ A3 地址輸入端 Y0~ Y7: 輸出端(低電平有效) 74LS138 譯碼器的工作原理為: 當(dāng)一個選通端( E1)為高電平,另兩個選通端 (E2)和 (E3)為低電平時,可將地址端( A0、 A A2)的 二進(jìn)制編碼 在 對應(yīng)的輸出端以低電平譯出 。 74LS138 的引腳圖如圖 。 圖 74LS138 的引腳圖 74LS138 的功能真值表如表 。 乒乓游戲機(jī)設(shè)計(jì) 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)氧樹脂密封,起到保護(hù)內(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è)計(jì)(論文) 14 圖 發(fā)光二極管及其構(gòu)造 模擬球拍電路的設(shè)計(jì) 單片機(jī) ~ 控制兩個譯碼器的 A,B,C 端, 和 分別控制兩個譯碼器的 E1 端,且 E E3 兩個端口接地。單片機(jī) P2口輸出信號,從而達(dá)到控制發(fā)光二極管的熄 滅與點(diǎn)亮。 其電路圖如圖 。 圖 顯示電路 的 設(shè)計(jì) 乒乓游戲機(jī) 的數(shù)據(jù) 較為 簡單,只需要顯示比分和最終勝利的狀態(tài),因此 選用只顯示字符和數(shù)字的 LCD1602 顯示屏。 乒乓游戲機(jī)設(shè)計(jì) 15 LCD1602 簡介 乒乓游戲機(jī) 顯示電路設(shè)計(jì)采用 LCD1602 顯示屏。 LCD1602 為工業(yè)字符型液晶,能夠同時顯示 32個字符。它是專門用來顯示字母、數(shù)字、符號等的點(diǎn)陣型液晶模塊。由若干個 5*7 或 5*11 等點(diǎn)陣字符位組成。每個點(diǎn)陣字符位都可以顯示一個字符,每位之間有一個點(diǎn)距的間隔,每行之間也有間隔,起 到了字符間距和行間距的作用。 LCD采用標(biāo)準(zhǔn)的 16腳接口,其管腳功能如表 所示。 表 LCD1602 的管腳功能表 管腳 功能 VSS 電源地 VCC 接 5V電源電極 V0(VEE) 液晶顯示器對比度調(diào)整端,接正電源對比度最弱,接地電源最高 RS 寄存器選擇。高電平時選擇數(shù)據(jù)寄存器,低電平時選擇指令寄存器 RW 讀寫信號線。高電平時讀取信息,低電平時進(jìn)行寫操作 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 點(diǎn)陣的字型的字符發(fā)生器 CGROM; 8個可由用戶自定義的 5*7 的字符發(fā)生器 CGRAM; LCD1602 及其引腳圖如圖 所示。 圖 LCD1602 及其引腳圖 西南石油大學(xué)本科畢業(yè)設(shè)計(jì)(論文) 16 顯示電路 的設(shè)計(jì) 此設(shè)計(jì)中的顯示模塊采用 LCD 來顯示 乒乓游戲機(jī) 的 AB 隊(duì) 比分。 LCD1602 的 DD D D7 分別 與 單片機(jī)中的 、 、 、 相連 ,用于數(shù)據(jù) 和地址的傳輸 。 LCD1602 的 RS、 RW、 E分別 與 單片機(jī)中的 、 、 相連 ,用于寫入控制 。 其電路設(shè)計(jì)圖如圖 。 圖 顯示電路設(shè)計(jì)圖 乒乓游戲機(jī) 總電路 的 設(shè)計(jì) 本設(shè)計(jì)采用 Proteus 繪制電路設(shè)計(jì)仿真圖, 乒乓游戲機(jī) 的硬件設(shè)計(jì)包括單片機(jī)電路、譯碼電路、發(fā)光二極管電路、按鍵電路、顯示電路等電路的設(shè)計(jì)。其仿真圖如圖。 圖 總電路設(shè)計(jì)圖 乒乓游戲機(jī)設(shè)計(jì) 17 乒乓游戲機(jī) 的硬件包括單片機(jī)電路、譯碼電路、發(fā)光二極管電路、按鍵電路、顯示電路等電路。其中單片機(jī)電路包括 :晶振電路,復(fù)位電 路; 由譯碼器接 P2的 5個I/O 口控制 16個模擬乒乓球臺桌 LED 燈; 由單片機(jī)的 P0口接上拉電阻,感應(yīng)按鍵電路的輸入; 有 到 給 LCD進(jìn)行數(shù)據(jù)的輸入, 給 LCD 進(jìn)行寫入控制。 西南石油大學(xué)本科畢業(yè)設(shè)計(jì)(論文) 18 4 乒乓游戲機(jī) 的軟件設(shè)計(jì) 及編程 本系統(tǒng)的軟件主要采用模塊化結(jié)構(gòu)設(shè)計(jì),具體的程序有主程序 、按鍵組程序 (球拍模擬和暫停 /開始子程序) 、 發(fā)球程序、 線路程序 (包括 線路選擇和 LED 點(diǎn)陣子程序) 、 回球程序 、 LCD 顯示程序 。 系統(tǒng)流程圖如圖 所示。 圖 系統(tǒng)流程圖 開 始 主程序 是 B 發(fā)球 初始化 發(fā)球指示燈 是否點(diǎn)亮 否 A發(fā)球 AB 回球是否成功 A失敗 B加 1分 B失敗 A加 1分 得分 11 結(jié) 束 是 否 顯示 程序 回球程序 線路程序 否 是 否 乒乓游戲機(jī)設(shè)計(jì) 19 通過程序?qū)崿F(xiàn)的功能為:在主程序進(jìn)入初始化, LCD 屏的清零,及初始化顯示設(shè)置;然后進(jìn)入發(fā)球程序,綠色指示燈亮起時, B得到球權(quán),否則 A得到球權(quán);當(dāng)發(fā)球成功 后,進(jìn)入線路模塊,在不同的情況進(jìn)入相應(yīng)的線路,依據(jù)線路的選擇依次點(diǎn)亮線路所包含的 LED 燈;而后進(jìn)入回球程序,回球成功繼續(xù)進(jìn)入線路程序,回球失敗,對手分?jǐn)?shù)加 1,并進(jìn)入 LCD 顯示程序;當(dāng) AB 隊(duì) 任 一隊(duì) 11 分后進(jìn)入相應(yīng) win 子程序。暫停 /開始程序在定時掃描,當(dāng)暫停鍵按下時,游戲暫停,在游戲暫停時當(dāng)開始按下游戲繼續(xù)。 主程序 的設(shè)計(jì)及功能實(shí)現(xiàn) 主程序的功能是進(jìn)行初始化工作,并控制“乒乓球”游戲的開始。 LED 燈組接單片機(jī)的 P2 口上,按鍵組接單片機(jī) P0 口上, LCD 顯示屏由單片機(jī)控制。游戲開始時,程序控制顯示上行 A:0。下行 B:0。 void main() { write_(0x01)。//顯示器清屏 P2=0。//LED 點(diǎn)陣全部熄滅 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)掃描并點(diǎn)亮相應(yīng) LED { int t=1000+w*1000。 P2=q[n]。 delay_1(t)。//延時處理程序 xianlu()。//線路控制程序 } } 按鍵組 的設(shè)計(jì)及功能實(shí)現(xiàn) 此程序貫穿了整個 系統(tǒng)框圖中,包括球拍模擬子程序和暫停 /開始子程序。 西南石油大學(xué)本科畢業(yè)設(shè)計(jì)(論文) 20 球拍模擬 子 程序 單片機(jī) P0口在相應(yīng)時間段內(nèi)感應(yīng)來自由按鍵組傳來的數(shù)據(jù),如果 在 delay_1(t)中作出正確的選擇,進(jìn)入回球程序,否則對方加 1分。 圖 按鍵組流程圖 暫停 /開始 子 程序 當(dāng)暫停鍵被按下后,程序進(jìn)入中斷,暫停燈亮起,當(dāng)按下開始按鍵時,程序繼續(xù)。其流程圖如圖 所示。 圖 暫停 /開始 程序流程圖 發(fā)球 程序 的設(shè)計(jì)及功能實(shí)現(xiàn) 綠色指示燈亮起時, B得到發(fā)球球權(quán),否則 A 得到發(fā)球球權(quán)。 void qiuquan(void) { w=1。//球速控制變量 按下按鍵 回球程序 對方分?jǐn)?shù)加 1 是 是否成功 否 是否暫停 繼續(xù)游戲 繼續(xù)暫停 是否解除 暫停 回到游戲 否 否 是 是 定時程序 乒乓游戲機(jī)設(shè)計(jì) 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è)計(jì)及功能實(shí)現(xiàn) 線路程序包括線路選擇子程序和 LED 點(diǎn)陣子程 序。 線路 選擇子 程序 游戲發(fā)球有 8個線路選擇, AB 分別 4個線路選擇, 發(fā)球的 4 個選擇由線路 b[16]和初始點(diǎn)亮燈一起組成。 回球總的線路有 16 個,存在數(shù)組 b[16]中。 void xianlu(void)//線路程序按順序給 LED 點(diǎn)陣輸入相應(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點(diǎn)陣 子 程序 由單片機(jī)線路和 delay_1(t)控制 74LS138 譯碼器, 74LS138 譯碼器譯碼控制 LED點(diǎn)陣得點(diǎn)亮順序和相應(yīng)點(diǎn)亮?xí)r間。 q[16]寄存數(shù)組,列如 P2=q[0]時點(diǎn)亮 A 邊的第一個燈,單片機(jī)將數(shù)據(jù)傳輸給 74LS138 進(jìn)行譯碼點(diǎn)亮相應(yīng)的 LED 實(shí)現(xiàn)乒乓球 的移動。 西南石油大學(xué)本科畢業(yè)設(shè)計(jì)(論文) 22 回球程序 的設(shè)計(jì)及功能實(shí)現(xiàn) 當(dāng)球在 A邊時, A可在相應(yīng) delay_1(t)中感應(yīng) A按鍵組的數(shù)據(jù)并作出相應(yīng)處理;當(dāng)球在 B 邊時,同理。 這里需要對 16個燈( D2D17)進(jìn)行處理。下面對其中一個燈進(jìn)行解釋。 w=P0_3。//A 的 P0_3 控制游戲的速度 //D2 if(n==0)//n==0 時 D2燈點(diǎn)亮 { 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]。} } } 乒乓游戲機(jī)設(shè)計(jì) 23 LCD顯示程序 設(shè)計(jì)及功能實(shí)現(xiàn) LCD1602 與單片機(jī) P1 口相連,程序控制顯示上行 A:0。下行 B:0。當(dāng) A 或 B 到達(dá)11 分時進(jìn)入相應(yīng) win 子程序。 write_(0x80+2)。//第一行隔兩位寫入以下字符‘ A’‘ :’‘ ’ ‘ 0’