機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
基于51單片機(jī)的帶時間顯示和緊急控制的交通燈的設(shè)計(jì)1
基于51單片機(jī)的帶時間顯示和緊急控制的交通燈的設(shè)計(jì)1
 更新時間:2008-7-27 14:02:02  點(diǎn)擊數(shù):3
【字體: 字體顏色

;特別說明,本程序僅供單片機(jī)愛好者自己學(xué)習(xí)使用,

;不得做為其它商業(yè)用途

;此程序在硬件上調(diào)試通
;晶振頻率為11.0592MHZ
;用定時器1延時,外部中斷0接緊急控制
;R0為100MS延時常數(shù),R2為狀態(tài)延時常數(shù)
;8279控制數(shù)碼管顯示時間
;用P1口控制雙色燈
;此程序?qū)懹?007-7-6,作者:徐學(xué)軍
Z8279                 EQU                 0FF82H                     ;8279 狀態(tài)/命令口地址
D8279                 EQU                 0FF80H                     ;8279 數(shù)據(jù)口地址
LEDMOD                EQU                 00H                        ;左邊輸入 八位字符顯示
                                         ;外部譯碼鍵掃描方式,雙鍵互鎖
LEDFEQ                EQU                 33H                        ;掃描速率
LEDCLS                EQU                 0C1H                       ;清除顯示 RAM
LEDWR0                EQU                 80H                        ;設(shè)定的將要寫入的顯示RAM地址
       
                      ORG                0000H
                      LJMP START
                      ORG                0003H                  ;INT 0 中斷入口地址
                      LJMP INT_0
                      ORG                001BH                    ;T1中斷入口地址
                      LJMP INT_T1
                      ORG                0040H
START:
                      MOV SP,#60H
                      MOV                TMOD,#10H                ;置T1為方式1                        
                      SETB EX0                    ;INT 0 中斷有效
                      SETB IT0
                      SETB EA      
                      MOV                TL1,#00H                 ;延時50mS常數(shù)
                      MOV                TH1,#4cH
                      MOV                R0,#2                   ;延時100mS常數(shù)
                      SETB TR1                      ;啟動T1
                      SETB ET1
                      setb                pt1                   ;必須設(shè)置定時器1的中斷優(yōu)先級高于外部中斷0
                       LCALL INIT8279                   ;初始化8279


                      LCALL STATUS0 ;初始狀態(tài)(都是紅燈)
CIRCLE:
                      LCALL STATUS1 ;南北綠燈,東西紅燈
                      LCALL STATUS2 ;南北綠燈閃轉(zhuǎn)黃燈,東西紅燈
                      LCALL STATUS3 ;南北紅燈,東西綠燈
                      LCALL STATUS4 ;南北紅燈,東西綠燈閃轉(zhuǎn)黃燈
                      LJMP CIRCLE
INT_0:
                      PUSH PSW                    ;保護(hù)現(xiàn)場
                      PUSH 2
                      PUSH 90H  
                      clr                ex0      
                      MOV P1,#0FH                  ;南北,東西都亮紅燈       
                      MOV R2,#100                 ;延時10秒
                      LCALL DELAY_DISPLAY
                      setb                ex0
                      POP 90H                     ;恢復(fù)現(xiàn)場       
                      POP 2
                      POP PSW
                      RETI
                INT_T1:
                      PUSH ACC
                      PUSH PSW
                      CLR                TR1
                      MOV                TL1,#00H                 ;延時 50mS 常數(shù)
                      MOV                TH1,#4CH        
                      SETB TR1
                      DJNZ R0,EXIT
                      MOV                R0,#2                   ;延時 100ms常數(shù)
                        DEC R2
                 EXIT:
                      POP                PSW
                      POP                ACC
                      RETI
      
STATUS0:                            ;南北紅燈,東西紅燈       
                      MOV P1,#0FH       
                      MOV R2,#10                  ;延時1秒
                      LCALL DELAY_DISPLAY
                      RET
STATUS1:                            ;南北綠燈,東西紅燈        
                      MOV P1,#96H                  ;南北綠燈,東西紅燈      
                      MOV R2,#200                 ;延時20秒
                      LCALL DELAY_DISPLAY
                      RET
STATUS2:                            ;南北綠燈閃轉(zhuǎn)黃燈,東西紅燈        
                      MOV R3,#03H                 ;綠燈閃3次
FLASH:
                      MOV P1,#9FH       
                      MOV R2,#03H
                      LCALL DELAY_DISPLAY
                      MOV P1,#96H       
                      MOV R2,#03H
                      LCALL DELAY_DISPLAY
                      DJNZ R3,FLASH
                      MOV P1,#06H                  ;南北黃燈,東西紅燈       
                      MOV R2,#10                  ;延時1秒
                      LCALL DELAY_DISPLAY
                      RET
STATUS3:                            ;南北紅燈,東西綠燈       
                      MOV P1,#69H       
                      MOV R2,#200                 ;延時20秒
                      LCALL DELAY_DISPLAY
                      RET
STATUS4:                            ;南北紅燈,東西綠燈閃轉(zhuǎn)黃燈       
                      MOV R3,#03H                 ;綠燈閃3次
FLASH1:
                      MOV P1,#6FH        
                      MOV R2,#03H
                      LCALL DELAY_DISPLAY
                      MOV P1,#69H       
                      MOV R2,#03H
                      LCALL DELAY_DISPLAY
                      DJNZ R3,FLASH1
                      MOV P1,#09H                 ;南北紅燈,東西黃燈       
                      MOV R2,#10                 ;延時1秒
                      LCALL DELAY_DISPLAY
                      NOP
                      RET
                   INIT8279:                                ;8279初始化子程序
                      PUSH                DPH                        ;保存現(xiàn)場
                      PUSH                DPL
                      PUSH                ACC
                      LCALL DELAY                      ;延時
                      MOV                 DPTR ,#Z8279
                      MOV                 A,#LEDMOD                  ;置8279工作方式
                      MOVX                @DPTR,A
                      MOV                 A,#LEDFEQ                  ;置鍵盤掃描速率
                      MOVX                @DPTR,A
                      MOV                 A,#LEDCLS                  ;清除 LED 顯示
                      MOVX                @DPTR,A
                      LCALL DELAY                      ;延時
                      POP                 ACC                        ;恢復(fù)現(xiàn)場
                      POP                 DPL
                      POP                 DPH
                      RET
                                         ;顯示字符子程序
                                         ;輸入: R4,位置 R5,值
DISLED:
                      PUSH                DPH                        ;保存現(xiàn)場
                      PUSH                DPL
                      PUSH                ACC
                      MOV                 A,#LEDWR0                  ;置顯示起始地址
                      ADD                 A,R4                       ;加位置偏移量
                      MOV                 DPTR,#Z8279
                      MOVX                @DPTR,A                    ;設(shè)定顯示位置
                      MOV                 DPTR,#LEDSEG ;置顯示常數(shù)表起始位置
                      MOV                 A,R5
                      MOVC                A,@A+DPTR                  ;查表
                      MOV                 DPTR,#D8279
                      MOVX                @DPTR,A                    ;顯示數(shù)據(jù)
                      POP                 ACC                        ;恢復(fù)現(xiàn)場
                      POP                 DPL
                      POP                 DPH
                      RET
DELAY:                                  ;延時子程序
                      PUSH                0                          ;保存現(xiàn)場
                      PUSH                1
                      MOV                 0,#0H
DELAY1:
                      MOV                 1,#0H
                      DJNZ                1,$
                      DJNZ                0,DELAY1
                      POP                 1                          ;恢復(fù)現(xiàn)場
                      POP                 0
                      RET
   
DELAY_DISPLAY:                              ;延時和顯示時間子程序       
                      PUSH 1
                      PUSH 0
                      push acc
loopwait: MOV b,#10
                      MOV a,2
                      div ab
                      MOV b,#10
                      div ab
                      MOV                r4,#1
                      MOV                r5,a
                      LCALL DISLED                     ;顯示秒高位
                      MOV                r4,#0
                      MOV                r5,b
                      LCALL DISLED                     ;顯示秒低位
                     MOV a,2
                     jnz                loopwait                     ;延時等待
                      pop                acc  
                      POP 0
                      POP 1       
                      RET
                LEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;'0,1,2,3,4,5,6,7'
                        DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;'8,9,A,B,C,D,E,F'
                    END

  • 上一篇: RS232技術(shù)詳解2
  • 下一篇: 基于單片機(jī)的頻率計(jì)的設(shè)計(jì)(C51語言)
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1