久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

單片機秒表課程設(shè)計

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2007年06月28日   【字體:

一、實驗題目
秒表系統(tǒng)設(shè)計——用AT89C51設(shè)計一個2位LED數(shù)碼顯示“秒表”,顯示時間為00~99秒,每秒自動加一。另設(shè)計一個“開始”按鍵和一個“復(fù)位”按鍵。
二、增加功能
增加一個“暫停”按鍵和一個“快加”按鍵(每10ms快速加一)
三、實驗內(nèi)容提要
    本實驗利用單片機的定時器/計數(shù)器定時和記數(shù)的原理,結(jié)合dvcc實驗箱上的集成電路芯片8032、LED數(shù)碼管以及實驗箱上的按鍵來設(shè)計計時器。將軟、硬件有機地結(jié)合起來,使得系統(tǒng)能夠正確地進行計時,數(shù)碼管能夠正確地顯示時間。其中本實驗設(shè)計了四個開關(guān)按鍵:其中一個按鍵按下去時以1秒加一開始計時,即秒表開始鍵(本實驗中當(dāng)開關(guān)從1變?yōu)?時開始計時),另一個按鍵按下去時暫停計時,使秒表停留在原先的計時(本實驗中當(dāng)相應(yīng)開關(guān)從1變?yōu)?時即停止計時),第三個按鍵按下去時清0(本實驗中當(dāng)相應(yīng)開關(guān)從1變?yōu)?時即停止計時),第四按鍵按下去則是以每10ms秒快速加一計時(本實驗中當(dāng)開關(guān)從1變?yōu)?時開始計時)。本實驗中開始時都要使各按鍵回到各初始位置,即都處于1狀態(tài)。
三、實驗?zāi)康?br />   1、 通過本次課程設(shè)計加深對單片機課程的全面認識復(fù)習(xí)和掌握,對單片機課程的應(yīng)用進一步的了解。
   2、 掌握定時器、外部中斷的設(shè)置和編程原理。
   3、 通過此次課程設(shè)計能夠?qū)纹瑱C軟硬件結(jié)合起來,對程序進行編輯,校驗。
四、意義
   該實驗通過單片機的定時器/計數(shù)器定時和計數(shù)原理,設(shè)計簡單的計時器系統(tǒng),擁有正確的計時、暫停、清零、快加功能,并同時可以用數(shù)碼管顯示,在現(xiàn)實生活中應(yīng)用廣泛,具有現(xiàn)實意義。
五、本人所做工作
根據(jù)相關(guān)的單片機材料,利用所學(xué)的單片機知識,結(jié)合DVCC系列單片機微機仿真實驗系統(tǒng)中的軟件和硬件(集成電路芯片8032,七段數(shù)碼管,開關(guān)電路及時鐘信號電路,按鍵等),編寫能夠?qū)崿F(xiàn)該項目的軟件程序,最后將軟、硬件有機的結(jié)合起來,進行有效的調(diào)試,達到完成該實驗課程設(shè)計的目的要求。
六、實驗內(nèi)容
用AT89C51設(shè)計一個2位LED數(shù)碼顯示“秒表”,顯示時間為00~99秒,每秒自動加一。另設(shè)計一個“開始”按鍵和一個“復(fù)位”按鍵。再增加一個“暫停”按鍵和一個“快加”按鍵(每10ms快速加一)。
按鍵說明:按“開始”按鍵,開始計數(shù),數(shù)碼管顯示從00開始每秒自動加一;按“復(fù)位”按鍵,系統(tǒng)清零,數(shù)碼管顯示00;按“暫停”按鍵,系統(tǒng)暫停計數(shù),數(shù)碼管顯示當(dāng)時的計數(shù);按“快加”按鍵,系統(tǒng)每10ms快速加一,即數(shù)碼顯示管在原先的計數(shù)上快速加一。
七、設(shè)計思路及描述
該實驗要求進行計時并在數(shù)碼管上顯示時間,則可利用DVCC系列單片機微機仿真實驗系統(tǒng)中的芯片8032(芯片的功能類似于芯片AT89C51,其管腳功能也和AT89C51的管腳功能類似)中的P3.2管腳做為外部中斷0的入口地址,并實現(xiàn)“開始”按鍵的功能;將P3.3做為外部中斷1的入口地址,并實現(xiàn)“清零”按鍵的功能;將P3.0做為數(shù)據(jù)信號DATA輸入的入口地址;將P3.1做為時鐘信號CLK輸入的入口地址。定時器T0作為每秒加一的定時器;定時器T1作為“快加”鍵的定時器。其中“開始”按鍵當(dāng)開關(guān)由1撥向0(由上向下?lián)埽⿻r開始計時;“清零”按鍵當(dāng)開關(guān)由1撥向0(由上向下?lián)埽⿻r數(shù)碼管清零,此時若再撥“開始”按鍵則又可重新開始計時。
八、原理圖
 

 

 

 

 

十、實驗程序
;******************************************************************
; 設(shè)計選題:實驗五-----秒表系統(tǒng)設(shè)計
; 描述:    2位LED數(shù)碼顯示"秒表",顯示時間為00~99秒,每秒自動加1,
;         一個"開始"鍵,一個"復(fù)位"鍵,一個"暫停"鍵,一個“快加”鍵。
; 調(diào)用子程序:暫停鍵子程序,計時鍵子程序,清0鍵子程序,加一子程序
;            顯示子程序,定時子程序
;所用特殊寄存器:寄存器A,寄存器C
;所用中斷:外部中斷INT0、INT1,定時器T0、T1
; 實驗作者:  吳呤--2號,方曉瑛--10號
;***************************************************************************
    org 0000h
    ajmp main          ;主程序入口地址
    org 0003h
    ajmp zhongduan0    ;中斷0入口地址
    org 000bh
    ajmp yanshi        ;定時器T0入口地址
    org 0013h
    ajmp zhongduan1    ;中斷1入口地址
    org 001bh
   ajmp dingshi1       ;定時器T1入口地址
    org 0030h
;***********************************************************
;   主程序
;***********************************************************
main: mov tcon,#05h     ;主程序開始 外部中斷跳變模式
       mov tmod,#11h     ;定時器0,1模式1
       mov ie,#8fh       ;開總中斷,中斷0,1,定時器0,1
       mov dptr,#tab
       mov r1,#00h
       mov r2,#00h
       mov r3,#40          ;循環(huán)次數(shù)40
       mov tl0,#2Ch         ;置初值,定時25MS
       mov th0,#0CFh
       mov tl1,#78h         ;置初值,定時10MS
       mov th1,#0ech
       clr tr0              ;關(guān)定時器
       clr tr1
;***********************************************************
;    暫停鍵K3,快加鍵K4程序
;***********************************************************
here:jb p1.0,here
show:clr tr1
     clr tr0
     acall xianshi
kuaijia:jb p1.2,kuaijia  ;等待P1.2為0 快加
        clr tr0
        setb tr1
here3:jnb p1.2,here3
     ajmp  here
;***********************************************************
;   外部中斷INT0子程序-----計時按鍵K1子程序
;***********************************************************
zhongduan0: setb tr0        ;計時按鍵
      reti
;***********************************************************
;   外部中斷INT1子程序----復(fù)位按鍵K2子程序
;***********************************************************
zhongduan1:clr tr0          ;復(fù)位按鍵
      clr tr1
      mov 12h,#00h
      mov 11h,#00h
      acall xianshi          ;調(diào)用顯示子程序
      mov r1,#00h
      mov r2,#00h
      reti
;***********************************************************
;   加一子程序
;***********************************************************
jia1: inc  r1                ;加1子程序
      cjne r1,#0ah ,loop     ;判斷是否到表尾
      mov  r1,#00h
      inc  r2
      cjne r2,#0ah,loop
      mov  r2,#00h
loop: mov 12h,r1             ;重新賦值
      mov 11h,r2
      ret
;***********************************************************
;   顯示子程序
;***********************************************************
xianshi:mov r7,#02h          ;2個數(shù)碼管顯示子程序
     mov r0,#12h
loop5: mov r6,#08h            ;8位2進制數(shù)
       mov a,@r0
       movc a,@a+dptr
loop6:rlc a                   ;循環(huán)左移
       clr p3.1
      mov p3.0,c
      setb p3.1
      djnz r6,loop6
      dec r0
      djnz r7,loop5
      ret
;***********************************************************
;   定時器T0子程序
;***********************************************************
yanshi: mov tl0,#2Ch           ;定時子程序
       mov th0,#0CFh
       djnz r3,loop7
       acall jia1              ;調(diào)用加1子程序
       acall xianshi           ;調(diào)用顯示子程序
       mov r3,#40
loop7: reti
;***********************************************************
;定時器T1子程序
;***********************************************************
 dingshi1:mov tl1,#78h         ;置初值,定時10MS
     mov th1,#0ech
     clr tr0
     setb tr1
     mov 12h,r1
     mov 11h,r2
     jnb p1.0,show
     acall jia1
     acall xianshi
lop7:reti
;***********************************************************
tab:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
   end
 
十一、課程設(shè)計心得體會
1、 認真審題,看懂題目的要求!選擇適當(dāng)?shù)恼n題,不益太簡單或者太難。做到既能把課題完成又能鍛煉自己的能力!
2、 根據(jù)課題要求,復(fù)習(xí)相關(guān)的知識,查詢相關(guān)的資料。
3、 根據(jù)實驗條件,找到適合的方案,找到需要的元器件及工具,準(zhǔn)備實驗。
4、 根據(jù)課程設(shè)計的要求和自己所要增加的功能寫好程序流程圖,在程序流程圖的基礎(chǔ)上,根據(jù)芯片的功能寫出相應(yīng)的程序。然后再進行程序調(diào)試和相應(yīng)的修改,以達到能夠?qū)崿F(xiàn)所要求的功能的目的。
5、 還要根據(jù)實驗的實際情況,添加些額外程序來使系統(tǒng)更加的穩(wěn)定,如開關(guān)的消震蕩(采用延遲)。
6、 程序要盡量做到由各個子程序組成,在有些程序后面最好加注釋,這樣在程序出錯的檢查過程中可以更容易查找的到,也更簡潔,更明白易懂。
7、 該實驗的程序可以參考DVCC系列單片機微機仿真實驗系統(tǒng)實驗指導(dǎo)書中的串并轉(zhuǎn)換實驗,也可自己根據(jù)自己熟悉的方法來編程。
8、 在設(shè)計控制開關(guān)時,注意2個中斷的打開和關(guān)閉的先后順序,否則就會出錯。
9、 這次的單片機課程設(shè)計重點是理論與實際的相結(jié)合。不再只讀書了。
10、 該設(shè)計從頭到尾都要自己參與,熟悉了對整個設(shè)計的過程,更系統(tǒng)的鍛煉了自己。

此設(shè)計完畢!!

-------------------------------------------------------
下面提供一個程序(供參考的)
;開機初始化
      MOV P3,#0FFH;對P3口初始化,設(shè)置為高電平,用于按鍵輸入
      MOV P0,#0FFH;使顯示時間數(shù)碼管熄滅
      CLR F0
CLR F1
MOV DPTR,#NUMTAB ;指定查表啟始地址
;等待按鍵輸入
;根據(jù)按鍵的輸入判斷執(zhí)行什么功能

;按鍵1按下則執(zhí)行功能1
MOV P3,#0FFH;對P3口初始化,設(shè)置為高電平,用于按鍵輸入
        MOV P0,#0FFH;使顯示時間數(shù)碼管熄滅
START:JB P3.6,START1;循環(huán)判斷開始按鈕K1是否按下?
      ACALL DELAY10;延時10毫秒觸點消抖
      JB P3.6,START;如果是干擾就返回
      JNB P3.6,$;等待按鍵松開
      LJMP GN1     

;按鍵2按下則執(zhí)行功能2

START1: JB P3.7,START;循環(huán)判斷開始按鈕K2是否按下? 
        ACALL DELAY10;延時10毫秒觸點消抖
        JB P3.7,START1;如果是干擾就返回
        JNB P3.7,$
        LJMP GN2

;數(shù)碼管顯示秒表時間的程序
GN1:    ;先初始化
    S1:MOV A,#0
        MOV TEMP,A 
GOON1:  MOV R2,#2
JS1:     MOV R3,#250
TIME1:  MOV A,TEMP ;將TEMP中的十六進制數(shù)轉(zhuǎn)換成10進制
        MOV B,#10 ;10進制/10=10進制
        DIV AB
        MOV B_BIT,A ;十位在A
        MOV A_BIT,B ;個位在B

       LCALL DPLOP1

        ;插入一段判斷定時過程中是否有按鍵輸入的程序段
C1:     JB P3.6,B1
        ACALL DELAY10;延時10毫秒消抖
        JB P3.6,C1
        JNB P3.6,$;等待按鍵松開
        CPL F0
ZT1:   ; MOV P3,#0FFH;對P3口初始化,設(shè)置為高電平,用于按鍵輸入
        JB P3.6,$;循環(huán)判斷開始按鈕K1是否按下?
        ACALL DELAY10;延時10毫秒觸點消抖
        JB P3.6,ZT1;如果是干擾就返回
        JNB P3.6,$;等待按鍵松開
        LCALL DPLOP1
             
B1:     JB P3.7,LOOP1
ACALL DELAY10;延時10毫秒消抖
JB P3.7,B1
JNB P3.7,$;等待按鍵松開
AJMP OVER

LOOP1:   DJNZ R3,TIME1 ;2毫秒循環(huán)執(zhí)行250次,時間約0.5秒
DJNZ R2,JS1       ;循環(huán)執(zhí)行2次,時間為1 秒鐘

INC TEMP;滿一秒鐘對時間加1
MOV A,TEMP
CLR C
SUBB A,#60
JNZ GOON1;判斷TEMP的數(shù)值是否為60?不為60循環(huán)
ACALL OVER
RET


GN2:     MOV A,#14H ; 設(shè)定倒計時的時間20S
         MOV TEMP,A

;數(shù)碼管顯示倒計時時間的程序
  ;初始化
        MOV P3,#0FFH;對P3口初始化,設(shè)置為高電平,用于按鍵輸入
        MOV P0,#14H;使顯示時間為設(shè)定的倒計時時間

GOON2:  MOV R2,#2
JS2:      MOV R3,#250
TIME2:   MOV A,TEMP ;將TEMP中的十六進制數(shù)轉(zhuǎn)換成10進制
         MOV B,#10 ;10進制/10=10進制
         DIV AB
         MOV B_BIT,A ;十位在A
         MOV A_BIT,B ;個位在B

        MOV DPTR,#NUMTAB ;指定查表啟始地址
DPLOP2: MOV A,A_BIT ;取個位數(shù)
        MOVC A,@A+DPTR ;查個位數(shù)的7段代碼
        MOV P0,A ;送出個位的7段代碼
        
        CLR P2.5 ;開個位顯示
        ACALL   DELY1;顯示1毫秒
        SETB P2.5;關(guān)閉個位顯示,防止鬼影
        MOV A,B_BIT ;取十位數(shù)
        MOVC A,@A+DPTR ;查十位數(shù)的7段代碼                                       
        MOV P0,A ;送出十位的7段代碼                                                                                                                                                             
        CLR P2.6 ;開十位顯示
        ACALL DELY1;顯示1毫秒
        SETB P2.6;關(guān)閉十位顯示,防止鬼影

        ;插入一段判斷定時過程中是否有按鍵輸入的程序段
C2:     JB P3.6,B2
        ACALL DELAY10;延時10毫秒消抖
        JB P3.6,C2
        JNB P3.6,$;等待按鍵松開
       
ZT2:    MOV P3,#0FFH;對P3口初始化,設(shè)置為高電平,用于按鍵輸入
        JB P3.6,$;循環(huán)判斷開始按鈕K1是否按下?
        ACALL DELAY10;延時10毫秒觸點消抖
        JB P3.6,ZT2;如果是干擾就返回
        JNB P3.6,$;等待按鍵松開
             
B2:     JB P3.7,LOOP2
ACALL DELAY10;延時10毫秒消抖
JB P3.7,B1
JNB P3.7,$;等待按鍵松開
AJMP OVER

LOOP2:   DJNZ R3,TIME2 ;2毫秒循環(huán)執(zhí)行250次,時間約0.5秒
DJNZ R2,JS2      ;循環(huán)執(zhí)行2次,時間為1 秒鐘

DEC TEMP;滿一秒鐘對時間減1
MOV A,TEMP
JNZ GOON2;判斷TEMP的數(shù)值是否為0?不為0循環(huán)
ACALL OVER
RET
       

;結(jié)束定時
OVER:  AJMP START;退到開機初始化狀態(tài)

;1毫秒延時子程序
DELY1:  MOV R4,#2
D1:MOV R5,#248
DJNZ R5,$
DJNZ R4,D1
RET

;10毫秒延時子程序
DELAY10: MOV R4,#20
D2:MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
RET

;實驗板上的兩位一體的數(shù)碼管0~9各數(shù)字的顯示代碼
NUMTAB:  DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H
DPLOP1:  MOV A,A_BIT ;取個位數(shù)
        MOVC A,@A+DPTR ;查個位數(shù)的7段代碼
        MOV P0,A ;送出個位的7段代碼
       
        CLR P2.5 ;開個位顯示
        ACALL   DELY1;顯示1毫秒
        SETB P2.5;關(guān)閉個位顯示,防止鬼影
        MOV A,B_BIT ;取十位數(shù)
        MOVC A,@A+DPTR ;查十位數(shù)的7段代碼
        MOV P0,A ;送出十位的7段代碼
        CLR P2.6 ;開十位顯示
        ACALL DELY1;顯示1毫秒
        SETB P2.6;關(guān)閉十位顯示,防止鬼影
RET
END

關(guān)閉窗口
主站蜘蛛池模板: 久久国产一区二区三区 | 美女国内精品自产拍在线播放 | 日日干夜夜操 | 男人的天堂视频网站 | av网站在线看 | 久久久91 | 美女在线观看国产 | 国产午夜久久久 | av一区二区三区四区 | 免费看片在线播放 | 成人片免费看 | 亚洲精品视频在线看 | 91亚洲国产亚洲国产 | 伊人久久大香线 | 黄色一级大片在线免费看产 | 国产综合一区二区 | 久久久女女女女999久久 | 在线伊人 | 粉嫩国产精品一区二区在线观看 | 野狼在线社区2017入口 | 午夜欧美a级理论片915影院 | 亚洲国产精品精华素 | 久久曰视频 | 久久国| 男人天堂手机在线视频 | 精品乱码一区二区三四区视频 | 福利网站导航 | 看毛片的网站 | 亚洲欧美第一视频 | www.成人免费视频 | 亚洲成人在线视频播放 | 精品国产青草久久久久福利 | 中文字幕高清免费日韩视频在线 | 日韩免费一区二区 | 国产精品久久久久久一级毛片 | 婷婷在线视频 | 在线观看你懂的网站 | 午夜免费视频 | 国产国产精品 | 日本一区二区高清不卡 | 奇色影视 |