多功能計時器 的設計.doc_第1頁
多功能計時器 的設計.doc_第2頁
多功能計時器 的設計.doc_第3頁
多功能計時器 的設計.doc_第4頁
多功能計時器 的設計.doc_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

一設計要求:(1) 任務設計并制作一個可以完成足球、籃球比賽及其他用處途的多用計時裝置。(2) 設計要求1) 基本要求 LED數(shù)碼管顯示計時結(jié)果; 適用于足球、籃球各種倒計時要求; 根據(jù)比賽要求設置相應的按鍵; 電源由外部提供,+5V; 計時時間到報警。2)發(fā)揮要求 改用LCD顯示; 增加其他計時功能; 由6V電池供電(穩(wěn)壓電源提供); 時間到樂曲報警; 整體電路效率60%; 計時精度1s/h。二系統(tǒng)實現(xiàn):本系統(tǒng)由軟件與硬件仿真電路兩部分組成,通過keil與protues聯(lián)調(diào)實現(xiàn)足球、籃球計時的各種要求。系統(tǒng)由LCD1602顯示,七個按鍵控制開始暫停選擇等功能。2.1硬件仿真電路圖2.2系統(tǒng)設計程序總流程圖 開始初始化籃球賽?足球賽?籃球賽計時界面開始?Y功能選擇界面HOU=1?LCD顯示上半場LCD顯示下半場開始?計時并顯示計時并顯示NYY24秒復位?EXT=24暫停?開始?24秒復位?EXT=24時間到?HOU+1時間到?HOU+1暫停開始?暫停開始?YYYY暫停?開始?YYYYYYYYNNNNNNNNNNNNNN三主要硬件部分設計與選型3.1 LCD1602顯示器 為了獲得更好的效果本設計并沒有采用常見的LED,而是采用了型號為LM016L的 LCD。LCD有LED數(shù)碼顯示更好的更的直觀效果,也更加經(jīng)久耐用。液晶顯示模塊體積小功耗低、顯示內(nèi)容豐富,現(xiàn)在字符型液晶顯示模塊已經(jīng)是單片機應用設計中最常用的信息顯示器件之一了。本LCD是2行16列液晶 可顯示2行16列英文字符,有8位數(shù)據(jù)總線D0-D7,RS,R/W,EN三個控制端口(共14線),工作電壓為5V。沒背光,和常用的1602B功能和引腳一樣(除了調(diào)背光的二個線腳). 該模塊也可以只用D4-D7作為四位數(shù)據(jù)分兩次傳送。這樣的話可以節(jié)省MCU的I/O口資源。引腳說明:VDD:電源正極,4.55.5V,通常使用5V電壓。VL:LCD對比度調(diào)節(jié)端,電壓調(diào)節(jié)范圍為05V。接正電源時對比度最弱,接地電源時對比度最高,但對比度過高時會產(chǎn)生“鬼影”,因此通常使用一個10K的電位器來調(diào)整對比度,或者直接串接一個電阻到地。RS:MCU寫入數(shù)據(jù)或者指令選擇端。MCU要寫入指令時,使RS為低電平;MCU要寫入數(shù)據(jù)時,使RS為高電平。R/W:讀寫控制端。R/W為高電平時,讀取數(shù)據(jù);R/W為低電平時,寫入數(shù)據(jù)。E:LCD模塊使能信號控制端。寫數(shù)據(jù)時,需要下降沿觸發(fā)模塊。D0D7:8位數(shù)據(jù)總線,三態(tài)雙向。如果MCU的I/O口資源緊張的話,該模塊也可以只使用4位數(shù)據(jù)線D4D7接口傳送數(shù)據(jù)。BLA: LED背光正極。需要背光時,BLA串接一個限流電阻接VDD,BLK接地,實測該模塊的背光電流為50mA左右。BLK: LED背光地端。1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表3.2所示:序號指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標返回000000001*3置輸入模式00000001I/DS4顯示開/關控制0000001DCB5光標或字符移位000001S/CR/L*6置功能00001DLNF*7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標志或地址01BF計數(shù)器地址10寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容表3.2:控制命令表1602液晶模塊的讀寫操作、屏幕和光標的操作都是通過指令編程來實現(xiàn)的。(說明:1為高電平、0為低電平) 指令1:清顯示,指令碼01H,光標復位到地址00H位置。指令2:光標復位,光標返回到地址00H。指令3:光標和顯示模式設置 I/D:光標移動方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。 指令4:顯示開關控制。 D:控制整體顯示的開與關,高電平表示開顯示,低電平表示關顯示 C:控制光標的開與關,高電平表示有光標,低電平表示無光標 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍。 指令5:光標或顯示移位 S/C:高電平時移動顯示的文字,低電平時移動光標。 指令6:功能設置命令 DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時雙行顯示 F: 低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。 指令7:字符發(fā)生器RAM地址設置。 指令8:DDRAM地址設置。 指令9:讀忙信號和光標地址 BF:為忙標志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。 指令10:寫數(shù)據(jù)。 指令11:讀數(shù)據(jù)。與HD44780相兼容的芯片時序表如下:讀狀態(tài)輸入RS=L,R/W=H,E=H輸出D0D7=狀態(tài)字寫指令輸入RS=L,R/W=L,D0D7=指令碼,E=高脈沖輸出無讀數(shù)據(jù)輸入RS=H,R/W=H,E=H輸出D0D7=數(shù)據(jù)寫數(shù)據(jù)輸入RS=H,R/W=L,D0D7=數(shù)據(jù),E=高脈沖輸出無表3.3:基本操作時序表對于溫度顯示模塊的編寫也要了解其時序圖,通過時序圖,編寫相關的驅(qū)動程序,實現(xiàn)其相關讀寫操作,此外,要想要讓其顯示正確的命令,還要注意其內(nèi)部相關控制指令。在本設計中主要用的是寫入指令的子程序。 LCD1602的讀寫時序圖四、主要功能模塊程序設計這里只介紹LCD1602顯示程序本系統(tǒng)使用LCD1602實現(xiàn)顯示,只要參照LCD1602的使用手冊進行初始化和程序編寫就可以顯示,即在程序編寫中添加LCD1602的驅(qū)動程序。這里的驅(qū)動程序主要包括:初始化函數(shù)、設置顯示坐標、寫字符函數(shù)及寫字符串函數(shù)。LCD1602的部分讀寫控制時序程序如下所示:(1) 寫命令函數(shù):向寄存器寫入控制字參數(shù):A-控制字W_CMD:ACALL WAIT; /側(cè)忙碌狀態(tài)CLR RW; /寫命令時,R/W為低電平CLR RS; /寫入指令。RS為低電平SETB E; /置高使能線 MOV LCD, A; / 接收命令字并送到數(shù)據(jù)總線上CLR E: /在使能線的下降沿寫入數(shù)據(jù)RET(2)寫數(shù)據(jù)函數(shù):向寄存器寫入數(shù)據(jù)參數(shù):A-待要顯示數(shù)據(jù)W_DATA: ACALL WAIT/側(cè)忙碌狀態(tài)SETB RS/寫數(shù)據(jù)時,RS為高電平CLR RW/寫入數(shù)據(jù)。RW為低電平SETB E/置高使能線MOV LCD, A/ 接收數(shù)據(jù)并送到數(shù)據(jù)總線上CLR E/在使能線的下降沿寫入數(shù)據(jù)RET五、功能演示1、開始界面,此時通過按鍵選擇功能,有籃球賽計時和足球賽計時2、選擇籃球賽后出現(xiàn)下面界面,籃球賽是倒計時。Period:01表示第一小節(jié),12:00表示本節(jié)剩余分秒時間,10表示24秒計時時間3、按下開始按鍵。開始倒計時,計時時可以隨時暫停,計時和暫停過程中都可以進行24秒復位。4、第一小節(jié)時間結(jié)束,時間停止,并且蜂鳴器發(fā)出報警聲音 5、再按下開始按鈕,則進行第二小節(jié)計時,第一行小節(jié)標志換為026、選擇足球賽計時功能后顯示下面界面,足球賽是正計時。第一行顯示比賽是上半場還是下半場,第二行比賽進行的時間,由于足球賽具有傷停補時時間,而且時間不確定,所以設計extra:0x。比賽工程中可用按鍵extra+extra-進行調(diào)節(jié)。7、按下開始鍵后開始計時。中間可以暫停開始8、加時0分鐘,45分鐘時自動暫停。加時1分鐘,46分鐘時自動暫停。并報警 9、按開始鍵進行下半場計時。第一行顯示Second half六、程序?qū)崿F(xiàn)RS EQU P3.0 ;寫入數(shù)據(jù)(1)或指令(0)選擇端RW EQU P3.1 ;讀(1)寫(0)控制E EQU P3.2; ;使能LCD EQU P2 ;LCD數(shù)據(jù)口BF EQU P2.7 ;忙標志BA_FO BIT 30H ;選擇功能標志位,1為籃球賽,0為足球賽EXT EQU 31H;加時賽儲存地址HOU EQU 34H ;節(jié)數(shù),上下半場儲存地址MIN EQU 35H;分鐘儲存地址SEC EQU 36H;秒儲存地址COUNT EQU 3CB0H ;T0初值COUNT1 EQU 20 ;20*50Ms=1SCOUNT2EQU37HDATA_1EQU38H ;寫數(shù)據(jù)數(shù)據(jù)首地址CMD_1EQU39H ;寫指令指令首地址SECCOUN EQU 10H ;存放20的地址LEDBUF EQU 40H ;顯示數(shù)據(jù)(數(shù)字)首地址LCDBUFEQU4AH ;顯示數(shù)據(jù)(字符)首地址 ORG 0000H LJMP MAIN ORG 000BH ;T0中斷入口 LJMP STIME ;調(diào)用定時器T0中斷服務子程序MAIN: MOVSP,#60H ;裝入固定點顯示字母或符號 MOVLCDBUF+0,#0 MOVLCDBUF+1,#1MOVLCDBUF+2,#2MOVLCDBUF+3,#3MOVLCDBUF+4,#4MOVLCDBUF+5,#5MOVLCDBUF+6,#6MOVLCDBUF+7,#7MOVLCDBUF+8,#8MOVLCDBUF+9,#9MOVLCDBUF+10,#10MOVLCDBUF+11,#11MOVLCDBUF+12,#12MOVLCDBUF+13,#13MOVLCDBUF+14,#14MOVLCDBUF+15,#15MOVP1,#0FFH ;P1口輸出至高電平SETBP3.5 ;蜂鳴器口 ;-LCD1602初始化- MOV A, #00000001B ;發(fā)送清屏操作指令; CALL W_CMD ;調(diào)寫入指令子程序 MOV A, #00001100B ;發(fā)送顯示開/關控制 ACALL W_CMD ;指令,無光標,無閃爍 MOV A, #00011100B ;發(fā)送光標移動指令 ACALL W_CMD ;光標和字一起移動,光標自動右移 MOV A, #00111100B ;發(fā)送功能設置指令 CALL W_CMD ;8位DB,雙行,5x7字符MOVA,HOU ;判斷第幾小節(jié)(上下半場 CJNEA,#01,LOP ;非01跳轉(zhuǎn)lop判斷hou為00還是別的LOP:JNCDINGSHI ;進位標志為1說明HOU1比賽小節(jié)結(jié)束,不顯示功能選擇界面MOV HOU,#01 ;進位標志為0說明HOU01,為00,比賽剛開始HOU=1并顯示功能選擇界面 ;-LCD1602初始化結(jié)束-HUAN:MOVDATA_1,#LCDBUF MOVCOUNT2,#16 ;顯示字符數(shù)為16個MOVCMD_1,#10000001B ; 顯示從第一行第一個開始MOV DPTR, #TAB1 ;裝入查表地址,LCALL DISPLAYLCD ;調(diào)用顯示子程序MOVDATA_1,#LCDBUFMOVCOUNT2,#16MOVCMD_1,#11000001BMOV DPTR, #TAB2 ;裝入查表地址LCALL DISPLAYLCD ;調(diào)用顯示子程序 CE:JNBP1.0,BA ;功能選擇判斷,P1.0按下為低電平,選擇籃球賽計時JNBP1.1,FO ;功能選擇判斷,P1.1按下為低電平,選擇足球計時SJMPCE BA:SETBBA_FO ;選擇的籃球賽標志位置1SJMPDINGSHI FO:CLRBA_FO ;選擇的足球賽標志位置0 ;-T0定時初始化-DINGSHI:MOV A, #00000001B ;清屏 CALL W_CMDMOVLEDBUF+5,#10 MOV TMOD,#01H ;設置T0定時,模式1 MOV TH0,#HIGH(COUNT) ;裝入高4位初始值 MOV TL0,#LOW(COUNT) ;裝入低4位初始值 SETB EA ;開中斷 SETB ET0 ;開T0中斷允許位,此時沒有啟動中斷, MOV SECCOUN,#COUNT1 ;把數(shù)值20放到10H單元中 ;-T0定時初始化結(jié)束- JNBBA_FO,FOOT ;查看標志位,選擇功能顯示BASKE: ;籃球賽計時顯示 MOV MIN,#12 ;初始化定時時間,分 MOV SEC,#00 ;秒MOVEXT,#24 ;24秒倒計時MOVDATA_1,#LCDBUF ;第一行顯示Period:(小節(jié)數(shù))MOVCOUNT2,#7 MOVCMD_1,#10000001BMOV DPTR, #TAB5 ;裝入查表地址LCALL DISPLAYLCD ;調(diào)用顯示子程序JMP2DIS:JBP1.4,JMP2DIS1 ;按鍵p1.4則進行24秒復位JNBP1.4,$MOVEXT,#24JMP2DIS1:LCALLMOVBUF1 ;數(shù)據(jù)處理MOVDATA_1,#LEDBUF ;第一行第八九個空顯示節(jié)數(shù)MOVCOUNT2,#2MOVCMD_1,#10001000BMOV DPTR, #TAB ;裝入查表地址LCALL DISPLAYLCD ;調(diào)用顯示子程序MOVDATA_1,#LEDBUF+3;第二行從第一個空開始顯示分秒數(shù)MOVCOUNT2,#5MOVCMD_1,#11000001BMOV DPTR, #TAB ;裝入查表地址LCALL DISPLAYLCD ;調(diào)用顯示子程序MOVDATA_1,#LEDBUF+8;第二行第十十一個空顯示24秒倒計時MOVCOUNT2,#2MOVCMD_1,#11001010BMOV DPTR, #TAB ;裝入查表地址LCALL DISPLAYLCD ;調(diào)用顯示子程序JBTR0,JMP2DIS ;計時已開始則返回循環(huán)顯示JBP1.3,$ ;計時開始按鍵等待LCALLBUZZERSETBTR0 ;啟動計時 LJMP JMP2DISFOOT: MOV MIN,#00 MOV SEC,#00MOVEXT,#00MOVA,HOU;判斷上下半場CJNEA,#1,XIAMOVDATA_1,#LCDBUF;是上半場則第一行顯示First halfMOVCOUNT2,#10MOVCMD_1,#10000001BMOV DPTR, #TAB6 ;裝入查表地址LCALL DISPLAYLCD ;調(diào)用顯示子程序AJMPextraXIA: MOVDATA_1,#LCDBUF;是下半場則第一行顯示Second halfMOVCOUNT2,#11MOVCMD_1,#10000001BMOV DPTR, #TAB7 ;裝入查表地址LCALL DISPLAYLCD ;調(diào)用顯示子程序 extra:MOVDATA_1,#LCDBUF;第二行第八個空開始顯示extra:(加時時間)MOVCOUNT2,#6MOVCMD_1,#11001000BMOV DPTR, #TAB8 ;裝入查表地址LCALL DISPLAYLCD ;調(diào)用顯示子程序FOOT1:JBP1.7,JIAN;加時時間設置,P1.6減1,P1.7加1JNBP1.7,$INCEXT JIAN:JBP1.6,FOOT2 JNBP1.6,$ DECEXTFOOT2:LCALLMOVBUF1;數(shù)據(jù)處理MOVDATA_1,#LEDBUF+3;顯示分秒計時MOVCOUNT2,#5MOVCMD_1,#11000001BMOV DPTR, #TAB ;裝入查表地址LCALL DISPLAYLCD ;調(diào)用顯示子程序MOVDATA_1,#LEDBUF+8;顯示24秒計時MOVCOUNT2,#2MOVCMD_1,#11001110BMOV DPTR, #TAB ;裝入查表地址LCALL DISPLAYLCD ;調(diào)用顯示子程序JBTR0,FOOT1JBP1.3,$ACALLBUZZERSETBTR0 ;啟動計時LJMPFOOT1BUZZER:CLRP3.5 ;蜂鳴器子程序LCALLT100MSDSETBP3.5RETMOVBUF1: ;數(shù)據(jù)處理子程序PUSHACC MOV A,HOU MOV B,#10DIV ABMOV LEDBUF,AMOV LEDBUF+1,B MOV A,MIN MOV B,#10DIV ABMOV LEDBUF+3,AMOV LEDBUF+4,B MOV A,SEC MOV B,#10DIV ABMOV LEDBUF+6,AMOV LEDBUF+7,BMOVA,EXTMOVB,#10DIVABMOVLEDBUF+8,AMOVLEDBUF+9,BPOPACCRET;-定時器T0中斷服務子程序-STIME: MOV TH0,#HIGH(COUNT) ;重新裝入高4位初始值 MOV TL0,#LOW(COUNT) ;重新裝入低4位初始值 DJNZ SECCOUN,TIMEEND3 ;判斷是否夠1秒(20*50us=1S) MOV SECCOUN,#COUNT1 ;重新裝入20 PUSH ACC ;堆棧JNB BA_FO,FOOTSECSEC1CHA:MOVA,EXTDECAMOVEXT,ACJNEA,#-1,SECCHAMOVEXT,#24SECCHA: MOV A,SEC ;秒處理 DECA MOV SEC,A CJNE A,#-1,TIMEEND2 ;判斷是否夠60秒 MOV SEC,#59 ;夠60秒后,秒位清0MINCHA: MOV A,MIN ;分處理 DECA MOV MIN,A CJNE A,#-1,TIMEEND2 HOUCHA: MOVA,HOUINCAMOVHOU,AAJMPSTOP0 ;節(jié)數(shù)有進位則表示一小節(jié)節(jié)數(shù),暫停。TIMEEND2:POP ACCTIMEEND3:JNBP1.2,STOP ;判斷是否按下P1.2,按下則暫停RETIFOOTSEC:INCSECMOVA,SEC CJNE A,#60,TIMEEND1 ;判斷是否夠60秒 MOV SEC,#00 ;夠60秒后,秒位清0FOOTMIN:INCMINMOVA,MIN CJNE A,#45,EXTR ;計時45+EXT分鐘MOVA,EXTCJNEA,#0,TIMEEND1SJMPFOOTHOUEXTR:JCTIMEEND1DECEXTCJNEA,#0,FOOTHOUSJMPTIMEEND1FOOTHOU:MOVA,HOU ;上半場結(jié)束,HOU加1,INCAMOVHOU,ALCALLMOVBUF1 ;顯示當前時間,否則時間停留在上一個顯示59秒,非00秒MOVDATA_1,#LEDBUF+3MOVCOUNT2,#5MOVCMD_1,#11000001BMOV DPTR, #TAB ;裝入查表地址LCALL DISPLAYLCD ;調(diào)用顯示子程序MOVMIN,#00AJMPSTOP0TIMEEND1:POP ACC ;彈出堆棧TIMEEND:JNBP1.2,STOP ;按下P1.2則暫停RETI;-計時停止子程序-STOP0:CLRTR0 LCALLBUZZERLCALLT500MSDLCALLBUZZERLCALLT500MSDLCALLBUZZERLCALLT500MSDSTOP:LCALLBUZZERSTOP1:JNBBA_FO,STOP2 ;足球賽,不執(zhí)行下面程序JBP1.4,STOP2 ;籃球賽復位24秒計時MOVEXT,#24 STOP2: JBP1.3,STOP1 ;P1.3按下則暫停結(jié)束,開始計時LCALLBUZZERRETI;-LCD1602顯示子程序-DISPLAYLCD: MOV R0,DATA_1 ;顯示首地址 MOV R1,COUNT2 MOV R2,CMD_1 ;發(fā)送第一行DDRAM地址設置指令 MOV A,R2 ACALL W_CMD LOOP1: MOV A, R0 MOVC A, A+DPTR ;查表 ACALL W_DATA ;調(diào)用LCD顯示字子程序 INC R0 ;顯示下一個字 JNB PSW.5,TG TG: DJNZ R1,LOOP1 CLR PSW.5 LOOP: MOV A, #00001100B ;發(fā)送顯示開/關控制 ACALL W_CMD ;指令,無光標,無閃爍 LJMP EXIT ;跳出LCD1602顯示子程序 WAIT: MOV LCD, #0FFH ;令P2作輸入口使用CLR RSSETB RWCLR ENOPSETB EJB BF, WAI

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論