一種用AT89C2051制作的新穎汽車(chē)尾燈指示器

發(fā)布時(shí)間:2011-11-5 21:04    發(fā)布者:z_lzdq
關(guān)鍵詞: AT89C2051 , 尾燈
本文介紹一種新穎的汽車(chē)尾燈指示器,指示器由特制的發(fā)光二極管點(diǎn)陣組成,共有八組,每組同時(shí)點(diǎn)亮由九個(gè)發(fā)光二極管,置于汽車(chē)后玻璃窗上,共有五種顯示狀態(tài),當有停車(chē)或剎車(chē)信號時(shí),八組發(fā)光管點(diǎn)陣全點(diǎn),有后退信號時(shí),發(fā)光二極管點(diǎn)陣閃亮,當有危險信號時(shí),八組發(fā)光二極管分為左右兩組交替閃亮,有右轉彎信號時(shí),右邊四組發(fā)光二極管從中間向右邊依次點(diǎn)亮,有左轉彎信號時(shí),左邊四組發(fā)光二極管從中間向左邊依次點(diǎn)亮,在轉彎信號未消失時(shí)不斷重復,此指示器新穎別致,給人以賞新悅目的感覺(jué)。
本裝置采用的AT89C2051芯片是Atmel公司生產(chǎn)的自帶2KB可編程Flash存儲器的與MSC-51兼容的高性能處理器。它與常規的51芯片有相同的核心和相近的結構功能如RAM、定時(shí)/記數器、中斷結構、串行口、振蕩器和時(shí)鐘電路等;有最高達24MHz的振蕩頻率,有較少的精簡(jiǎn)I/O端口,因此體積很小,非常適用做小型應用系統的處理器。

匯編程序及詳細注釋如下:
STOP          BIT 32H    ;剎車(chē)標志
DANGE         BIT 33H    ;危險標志
BACK          BIT 34H    ;倒車(chē)標志
RIGHT         BIT 35H    ;右轉標志
LEFT          BIT 36H    ;左轉標志
FLASH         BIT 37H    ;閃爍標志
LRSET         BIT 38H    ;依次點(diǎn)亮標志
COUNT         EQU 32H    ;依次亮點(diǎn)計數器

        ORG   0000H
        AJMP  MAIN    ;跳轉主程序
        ORG   0030H
        AJMP  MAIN
MAIN:   NOP
        MOV   R0,#20H      ;20H至60H單元清零
        MOV   A,#0
RES:    MOV   @R0,A
        INC   R0
        CJNE  R0,#60H,RES

        MOV   SP,#60H      ;設置堆棧指針為60H
        MOV   COUNT,#0     ;清依次顯示循環(huán)計數器
        CLR   TIME_OUT     ;清定時(shí)時(shí)間到標志
        CLR   EA
        CLR   RIGHT        ;清右轉標志
        CLR   STOP         ;清剎車(chē)標志
        CLR   DANGE        ;清危險標志
        CLR   BACK         ;清倒車(chē)標志
        CLR   LEFT         ;清左轉標志
        CLR   LRSET        ;清依次點(diǎn)亮標志

LOP:    ACALL  DL1          ;調用延時(shí)子程序
        ACALL  DL1          ;調用延時(shí)子程序


        CPL   FLASH       ;閃爍標志取反
        JNB   LRSET,LOP1  ;無(wú)依次點(diǎn)亮標志轉LOP1
        INC   COUNT       ;依次點(diǎn)亮計數器加1
        MOV   A,COUNT
        CJNE  A,#5,LOP1
        MOV   COUNT,#0    ;計數計到5清零
LOP1:   ACALL CL          ;調用過(guò)程處理子程序
LOPA:   ACALL KEY         ;調用按鍵處理子程序
        AJMP  LOP         ;返回主循環(huán)

DL1 :     MOV   R6,#200  ;延時(shí)子程序
DL11:     MOV   R5,#250
          DJNZ  R5,$
          DJNZ  R6,DL11
          RET

CL:     NOP              ;過(guò)程處理子程序
JNB   STOP,CL1
        MOV   A,#0FFH    ;有停車(chē)或剎車(chē)標志

        CPL   A          ; 顯示器全亮
        MOV   P1,A
        AJMP  CLE
CL1:    JNB   DANGE,CL2
        JB    FLASH,CL11     ;有危險標志

        MOV   A,#0FH         ;左右兩組顯示器交替閃爍
        MOV   P1,A
        AJMP  CLE
CL11:   MOV   A,#0F0H
        MOV   P1,A
        AJMP  CLE
CL2:    JNB   BACK,CL3         
        JB    FLASH,CL21    ;有倒車(chē)標志
        MOV   A,#0FFH       ;顯示器做全亮或全滅交替
        MOV   P1,A          ;顯示器全亮
        AJMP  CLE
CL21:   MOV   A,#00H
        MOV   P1,A          ;顯示器全滅
        AJMP  CLE
CL3:    JNB   RIGHT,CL4

        MOV   DPTR,#RIGHT_CHAR  ;有右轉標志
        MOV   A,COUNT ;右邊四個(gè)一組的發(fā)光陣列依次循環(huán)亮
        MOVC  A,@A+DPTR  ;取顯示值
        CPL   A
        MOV   P1,A
        AJMP  CLE
CL4:    JNB   LEFT,CL5
        MOV   DPTR,#LEFT_CHAR    ;有左轉標志
        MOV   A,COUNT ;左邊四個(gè)一組的發(fā)光陣列依次循環(huán)亮
        MOVC  A,@A+DPTR   ;取顯示值
        CPL   A
        MOV   P1,A
        AJMP  CLE
CL5:    MOV   A,#0   ;若無(wú)任何標志,關(guān)閉顯示器
        CPL   A
        MOV   P1,A
CLE:    RET

KEY:    NOP                ;  按鍵處理子程序
CLR   STOP         ;  清除停止標志  
        CLR   DANGE        ;  清除危險標志  
        CLR   BACK         ;  清除倒車(chē)標志  
        CLR   RIGHT        ;  清除右轉標志
        CLR   LEFT         ;  清除左轉標志
        JNB   P3.2,KEY1
        SETB  STOP         ;  P3.2有鍵按下,置停止標志
        AJMP  KEYE
KEY1:   JNB   P3.3,KEY11
        SETB  DANGE        ;  P3.3有鍵按下,置危險標志
KEY11:  MOV   A,P3
        CJNE  A,#22H,KEY2  


        SETB  DANGE    ;  P3.5 P3.1同時(shí)按下,置危險標志
        AJMP  KEYE
KEY2:   JNB   P3.4,KEY3
        SETB  BACK      ;P3.4有鍵按下,置倒車(chē)標志
        AJMP  KEYE
KEY3:   JNB   P3.5,KEY4
        SETB  RIGHT      ;P3.5有鍵按下,置右轉標志
        JB    LRSET,KEYE
        SETB  LRSET      ;設置左右轉循環(huán)顯示標志         
        MOV   COUNT,#0   ;循環(huán)顯示計數器清零
        AJMP  KEYE
KEY4:   JNB   P3.1,KEY5
        SETB  LEFT       ;P3.1有鍵按下,置左轉標志
        JB    LRSET,KEYE
        SETB  LRSET      ;設置左右轉循環(huán)顯示標志
        MOV   COUNT,#0   ;循環(huán)顯示計數器清零
        AJMP  KEYE
KEY5:   CLR   LRSET     ;清左右轉循環(huán)顯示標志
KEYE:   RET
LEFT_CHAR:   DB 00H,10H,30H,70H,0F0H   ;從右到左依次點(diǎn)亮值
RIGHT_CHAR:  DB 00H,08H,0CH,0EH,0FH  ;從左到右依次點(diǎn)亮值
    END
本文地址:http://selenalain.com/thread-78778-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页