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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5995|回復: 10
打印 上一主題 下一主題
收起左側

求個595控制8X8點陣的匯編程序參考,麻煩能帶上說明?

[復制鏈接]
跳轉到指定樓層
樓主
ID:64047 發表于 2014-8-11 22:01 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
目前只會用匯編,自己寫了一個程序達不到效果,想求一個匯編的做做參考
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:7485 發表于 2014-8-12 11:54 | 只看該作者
現在不在手邊。回去后幫你找找。大概是16位數碼管的。

評分

參與人數 1威望 +6 收起 理由
liuz + 6 贊一個!

查看全部評分

回復

使用道具 舉報

板凳
ID:64047 發表于 2014-8-12 13:17 | 只看該作者
ahshmj 發表于 2014-8-12 11:54
現在不在手邊。回去后幫你找找。大概是16位數碼管的。

記得給我幫我找個參考哈,先謝謝你了
回復

使用道具 舉報

地板
ID:1 發表于 2014-8-12 13:24 | 只看該作者
74hc595的使用方法:http://www.zg4o1577.cn/chip/1799.html
回復

使用道具 舉報

5#
ID:50962 發表于 2014-8-12 13:30 | 只看該作者
74hc595+點陣的  原理圖和程序: http://www.zg4o1577.cn/mcu/2068.html
回復

使用道具 舉報

6#
ID:64047 發表于 2014-8-12 16:08 | 只看該作者
liuz 發表于 2014-8-12 13:30
74hc595+點陣的  原理圖和程序: http://www.zg4o1577.cn/mcu/2068.html

你這是單色點陣
回復

使用道具 舉報

7#
ID:7485 發表于 2014-8-12 16:08 | 只看該作者
以下是595顯示子程序,段輸出使用一個595,位輸出使用2個級聯,共16位。硬件接線你應該沒問題吧?
;------串口595顯示子程序---------------------------
;74HC595二級聯輸出位碼和段碼
;輸出鎖存器輸出數據子程序
;如果是驅動數碼管,2個74HC595級聯,一個位驅動,一個段驅動
;入口:R0作為顯示緩存的地址指針。先送位碼,后送段碼
;前面的程序里面,顯示緩存從5FH開始向下,5FH對應最左邊的數碼管依次向下,數碼管向右。
;5位數碼管加1位指示燈,位碼通過ULN2003驅動,高有效,最高位數碼管對應595的QE端
;代碼為00010000B,或10H,然后是08H、04H、02H、01H,(或者是 RR  ACC ),
;Q0; QE是數碼管(Q0是個位,QE是萬位),QF是指示燈
;顯示緩存(8秒鐘變換一次,時間、溫度)
;3個顯示緩沖區,1.按鍵正在設置的數據顯示,2.時鐘顯示, 3.溫度測量值顯示
;===================================================================
DISP:
            PUSH  ACC                  ;保護現場ACC入棧
            PUSH  00H                  ;R0入棧
            JB    BZ_ANJ, DIS_BZ1      ;如果,按鍵設置中,BZ_ANJ 被置位,轉顯示正在設置的信息
            MOV   A,   SEC             ;如果不是按鍵調整中,秒計數器,SEC.3置位與否相隔8秒,
            JB    ACC.3,  DIS_BZ2      ;8秒間隔,輪換顯示時間和溫度(因為就5個數碼管)
            MOV   R0,  #WENDU_HC     ;溫度顯緩首址送R0,+1是空位(指示燈)
            JMP   DIS_BZ0              ;
DIS_BZ2:                               ;顯示時間
            MOV   R0,   #SHIJ_HC     ;BZ_ANJ沒有置位,時間顯緩首址送R0
            JMP   DIS_BZ0              ;
DIS_BZ1:                               ;以上是:如設置中,顯示鍵設置。否則,分時顯示時間、溫度
            JB    BZ_INFO, KKLL        ;顯示的是錯誤提示,則不需預處理,BZ_INFO是錯誤標志
            CALL  YU_DISP              ;按鍵設置中的  時間  或  溫度  值先預處理
KKLL:
            MOV   R0,   #AN_J_HC     ;按鍵正在調整的數據的顯緩首址送R0,顯示"error"
DIS_BZ0:
            CALL  DISPLAY
            POP   00H                  ;R0出棧
            POP   ACC                  ;ACC出棧
            RET
;-------------------------------------------------------------------------------------
DISPLAY:
            PUSH  ACC                  ;保護現場ACC入棧
            PUSH  00H                  ;R0入棧
            PUSH  01H                  ;R1入棧
            PUSH  02H
            PUSH  DPH                  ;地址指針高位入棧
            PUSH  DPL                  ;地址指針低位入棧
            PUSH  B                    ;B入棧
            MOV   R1,   #ZIXING-1        ;統一取出段碼,放在10H~1FH
            MOV   R2,   #06H           ;6位數碼管顯示的數,包括指示燈
            MOV   DPTR, #DTAB          ;字形碼(段碼)表首址
DISP0:
            MOV   A,   @R0             ;讀取段碼放放在10H~1FH
            MOVC  A,  @A+DPTR
            MOV   @R1, A
            DEC   R0
            DEC   R1
            DJNZ  R2,  DISP0
            MOV   R0,  #ZIXING-5       ;從右至左顯示,最后是指示燈
            MOV   B,   #01             ;從最右數碼管開始,最后是"分"個位
            MOV   R1,  #6H             ;最后一位是指示燈
DISP1:
            MOV   A,   B               ;取位碼
            CALL  WR_595               ;先向595移位寄存器寫入位碼
            MOV   A,   @R0             ;取段碼
            CALL  WR_595               ;再向595移位寄存器寫入段碼
            CLR   RCK_595              ;復位時鐘線
            SETB  RCK_595              ;上升沿將數據從595移位寄存器送到595輸出鎖存器
            CLR   RCK_595              ;復位時鐘線
            MOV   A,  B                ;以下3行,指向下一位數碼管
            RL    A                    ;從右至左(00000001B)開始顯示,最后是指示燈
            MOV   B,  A
            INC   R0                   ;從右至左(00000001B)開始顯示,最后是指示燈
            DJNZ  R1,  DISP1           ;6位數送完了嗎?
            POP   B                    ;B出棧
            POP   DPL                  ;
            POP   DPH                  ;
            POP   02H
            POP   01H                  ;
            POP   00H                  ;R0出棧
            POP   ACC                  ;ACC出棧
            RET
;--------------------------------------
;寫595移位寄存器子程序
;--------------------------------------
WR_595:
            PUSH  04H
            MOV  R4,  #08H
WR_LOOP:
            RLC  A                     ;左移,高位在先
            MOV  SDATA_595, C          ;數據送到總線上
            SETB  SCLK_595             ;上升沿發生移位,接收1位數據
            CLR  SCLK_595              ;復位
            DJNZ R4, WR_LOOP           ;送完8位了嗎?
            POP   04H
            RET

評分

參與人數 1黑幣 +21 收起 理由
liuz + 21 很給力!

查看全部評分

回復

使用道具 舉報

8#
ID:64047 發表于 2014-8-12 16:23 | 只看該作者
ahshmj 發表于 2014-8-12 16:08
以下是595顯示子程序,段輸出使用一個595,位輸出使用2個級聯,共16位。硬件接線你應該沒問題吧?
;------ ...

我寫了個程序你看看,沒注釋不過你應該能看懂,達不到亮的要求
因為是雙色點陣,所以在行送數值時,送了2字節一次。
                   SC1  BIT P1.2        //hang
                   CLK1 BIT P1.1
                   SEN1 BIT P1.0
                   SC2  BIT P2.2 //lie
                   CLK2 BIT P2.1
                   SEN2 BIT P2.0                  
                  
                   ORG 0000H
                   AJMP START
                   NOP

                   ORG 0030H
MAIN:      MOV R0,#00H
           MOV R1,#08H
                   MOV R2,#80H        ;第一行地址
           MOV R3,#08H        ;移八次
                   MOV R4,#00H       
                   MOV R5,#00H
START:     LCALL LIE
                   LCALL HANG
                   LCALL DIS
                   DJNZ R1,CL                             
                   MOV R1,#08H
                   MOV R0,#00H
                   MOV R2,#80H
                   AJMP START
CL:                   MOV A,R2
                   RR A
                   MOV R2,A
                   INC R0       
                   AJMP START

LIE:           MOV 30H,R2
               CLR C
LIE1:           MOV R4,30H
           MOV A,R4
                   RLC A
                   MOV R4,A
                   MOV SEN2,C
                   CLR CLK2
                   NOP
                   SETB CLK2
                   DJNZ R3,LIE1
                   MOV R4,#00H
                   MOV R3,#10H
                   RET

HANG:      CLR C
           MOV DPTR,#TAB
           MOV A,@R0
                   MOVC A,@A+DPTR  
                   MOV R5,A
HANG1:           MOV A,R5
           RLC A
                   MOV R5,A
                   MOV SEN1,C
                   CLR CLK1
                   NOP
                   SETB CLK1
                   CJNE R3,#08H,HANG2
                   INC R0
HANG2:           DJNZ R3,HANG1
                   MOV R5,#00H
                   MOV R3,#08H                  
                   RET

DIS:       CLR SC2
                   NOP
           SETB SC2
                   CLR SC1
                   NOP
                   SETB SC1
                   LCALL DEL
                   RET

DEL:       MOV R7,#10
DEL1:           MOV R6,#100
                   DJNZ R6,$
                   DJNZ R7,DEL1
                   RET
                    
TAB:  DB  00H,00H,00H,6CH,00H,92H,00H,82H,00H,44H,00H,28H,00H,10H


                  END
回復

使用道具 舉報

9#
ID:19715 發表于 2014-8-13 16:13 | 只看該作者
編寫了一個程序,簡練代碼,變量也用的很少,
編譯通過,沒有電路板測試。可能有多少錯誤,自己調整吧
;----------移八次把行地址移入595中鎖存
OUTCLK1 MACRO           ;移八次把行地址移入595中鎖存
              SETB CLK1   ;移八次把行地址移入595中鎖存
                NOP
             CLR CLK1      
            ENDM
;----------;移八次把L列數據移入595中鎖存
OUTCLK2 MACRO                ;移八次把L列數據移入595中鎖存
              SETB CLK2  
                NOP
             CLR CLK2      
            ENDM  
;---------------輸出行
H_OUT  MACRO
        SETB SC1
                NOP
                CLR SC1       
              ENDM
;---------------輸出列
L_OUT         MACRO
                SETB SC2
                NOP
                CLR SC2       
              ENDM         
                                                     
                   SC1  BIT P1.2   //鎖存
           CLK1 BIT P1.1   //時鐘脈沖
           SEN1 BIT P1.0   //數據輸入
           SC2  BIT P2.2   //鎖存
           CLK2 BIT P2.1   //時鐘脈沖
           SEN2 BIT P2.0   //數據輸入                                   
          ORG 0000H
          AJMP MAIN
          ORG 0030H
MAIN:     LCALL DEL          
          LCALL DEL         
MAIN1:    MOV DPTR,#TAB
          MOV R3,#08
LOOP:           LCALL LLB       
                  INC  DPTR
          LCALL LLR
          L_OUT//輸出列
                  LCALL HHH
                  DJNZ R3,LOOP
                  AJMP MAIN1
;------掃描輸出8行
HHH:    SETB SEN1        //輸出第一個1
          OUTCLK1    ;移八次把行地址移入595中鎖存
          H_OUT//輸出行               
          MOV R2,#08H  ;移八次
        HH1:
        LCALL DEL         ;每一行停留一下
             CLR  SEN1         //連續輸出8個0 .最后一個是關閉行
        OUTCLK1    ;移八次把行地址移入595中鎖存
        H_OUT//輸出行
            DJNZ R2,HH1
        RET
;------輸出綠列
LLB:    CLR         A
          MOVC A,@A+DPTR
          LCALL  LL
          RET
;------輸出紅列
LLR:    MOV A,#0FFH
                LCALL  LL
            RET                           
;------輸出列的一個字節
LL:          MOV R2,#08H  
    LL1:MOV C,ACC.7
               MOV SEN2,C
                  OUTCLK2        ;移八次把L列數據移入595中鎖存
                   RL A
               DJNZ R2,LL1                                
        RET
;------延時子程序
DEL:    MOV R7,#10
  DEL1: MOV R6,#10
        DJNZ R6,$
        DJNZ R7,DEL1
               RET                    
  TAB:  DB  ~00H,~6CH,~92H,~82H,~44H,~28H,~10H,~00H
        END
回復

使用道具 舉報

10#
ID:19715 發表于 2014-8-13 18:55 | 只看該作者
的確很多錯誤;修改好了
回復

使用道具 舉報

11#
ID:19715 發表于 2014-8-13 18:55 | 只看該作者
;----------移八次把行地址移入595中鎖存
OUTCLK1 MACRO           ;移八次把行地址移入595中鎖存
              SETB CLK1   ;移八次把行地址移入595中鎖存
                NOP
             CLR CLK1      
            ENDM
;----------;移八次把L列數據移入595中鎖存
OUTCLK2 MACRO                ;移八次把L列數據移入595中鎖存
              SETB CLK2  
                NOP
             CLR CLK2      
            ENDM  
;---------------輸出行
H_OUT  MACRO
        SETB SC1
                NOP
                CLR SC1       
              ENDM
;---------------輸出列
L_OUT         MACRO
                SETB SC2
                NOP
                CLR SC2       
              ENDM         
                                     
                   SC1  BIT P1.2   //鎖存
           CLK1 BIT P1.1   //時鐘脈沖
           SEN1 BIT P1.0   //數據輸入
           SC2  BIT P2.2   //鎖存
           CLK2 BIT P2.1   //時鐘脈沖
           SEN2 BIT P2.0   //數據輸入                                 
          ORG 0000H
          AJMP MAIN
          ORG 0030H
MAIN:     LCALL DEL          
          LCALL DEL         
MAIN1:    MOV DPTR,#TAB
                  MOV R4,#80H      ;打開第一行顯示的控制位,取最高位
                  MOV R3,#08       ;一共有8行
LOOP:           
          LCALL LLR
          LCALL LLB       
                  INC  DPTR
          L_OUT//輸出列
                  LCALL HHH
                  MOV A,R4
                  RL A
                 MOV R4,A
                  DJNZ R3,LOOP
                  AJMP MAIN1
;------打開某一行
HHH:    MOV A,R4
        MOV C,ACC.7
               MOV SEN1,C
                OUTCLK1            ;移八次把行地址移入595中鎖存
                H_OUT                ;輸出行               
                LCALL DEL        ;每一行停留一下
        RET
;------輸出綠列一行
LLB:    CLR         A
                MOVC A,@A+DPTR
                LCALL  LL
            RET
;------輸出紅列一行
LLR:    MOV A,#0FFH
                LCALL  LL
            RET                           
;------輸出行的一個字節
LL:          MOV R2,#08H  
    LL1:MOV C,ACC.7
               MOV SEN2,C
                  OUTCLK2        ;移八次把L列數據移入595中鎖存
                   RL A
               DJNZ R2,LL1                                
        RET
;------延時子程序
DEL:    MOV R7,#10
  DEL1: MOV R6,#10
        DJNZ R6,$
        DJNZ R7,DEL1
               RET                    
  TAB:  DB  00H,6CH,92H,82H,44H,28H,10H,00H          
        END

評分

參與人數 1黑幣 +10 收起 理由
admin + 10 很給力!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美成人aaa级毛片在线视频 | 精品视频一区二区 | 亚洲免费观看视频网站 | 黄色中文字幕 | 亚洲精品久久久一区二区三区 | 国产精品一区久久久 | 亚洲第一天堂 | 青青草视频免费观看 | 亚洲免费在线观看 | 日韩色视频 | 羞羞视频免费观 | 一级毛片在线看 | 毛片一区| 国产精品高潮呻吟久久 | 成人精品国产一区二区4080 | 国产免费av在线 | 国外激情av | 成人久久视频 | 日韩性在线 | 日本视频在线播放 | 国产精品久久久久久久一区探花 | 国产精品视频久久 | 免费看a | 超碰日本 | 精品视频一区二区三区在线观看 | 久久999 | 人妖一区 | 狠狠干美女 | 国产精品免费大片 | 国产成人综合网 | 91在线资源 | 天天干天天操天天看 | 在线午夜 | aaa综合国产 | 国产日韩欧美精品一区二区 | 亚洲电影在线播放 | 四色永久| 欧美一级二级在线观看 | 久在线 | 亚洲黄色成人网 | 精品国产免费一区二区三区五区 |