找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2581|回復(fù): 2
收起左側(cè)

單片機(jī)+ch452數(shù)碼管顯示程序

[復(fù)制鏈接]
ID:577707 發(fā)表于 2019-7-4 11:07 | 顯示全部樓層 |閱讀模式
H451_DCLK    BIT   P2.4         ;串行數(shù)據(jù)時(shí)鐘,上升沿激活
CH451_DIN     BIT   P2.5            ;串行數(shù)據(jù)輸出,接 CH451 的數(shù)據(jù)輸入
CH451_LOAD    BIT   P2.6            ;串行命令加載,上升沿激活
CH451_DOUT    BIT   P2.7           ;INT0,鍵盤中斷和鍵值數(shù)據(jù)輸入,接 CH451 的數(shù)
ORG 0000H
START:
ACALL CH451_INIT      ;調(diào)用初始化程序
MOV A,#0D5H
MOV B,#0CH
ACALL CH451_WRITE
MOV A,#0BDH
MOV B,#0DH
ACALL CH451_WRITE
MOV A,#18H
MOV B,#0EH
ACALL CH451_WRITE
MOV A,#0F9H
MOV B,#0FH
ACALL CH451_WRITE
MOV R6,#00H
MOV R5,#00H
MOV R4,#00H
MOV R3,#00H
MOV R1,#30H
ACALL SCAN1



; 初始化子程序
CH451_INIT:        
CLR   CH451_DIN        ;先低后高,輸出上升沿通知 CH451 選擇 4 線串行接口      
SETB  CH451_DCLK       ;置為默認(rèn)的高電平      
SETB  CH451_DIN      
SETB  CH451_LOAD      
SETB  CH451_DOUT       ;置為輸入      
CLR   IT0              ;置外部信號(hào)為低電平觸發(fā)      
SETB  PX0              ;置高優(yōu)先級(jí)或者低優(yōu)先級(jí)      
CLR   IE0              ;清中斷標(biāo)志      
SETB  EX0              ;允許鍵盤中斷           
MOV B,#04H             ;設(shè)置為鍵盤與顯示開     
MOV A,#03H     
ACALL CH451_WRITE         
RET
;串口通信讀出寫入程序
CH451_WRITE:      
        CLR   EX0              ;禁止鍵盤中斷      
        CLR   CH451_LOAD       ;命令開始,此命令可以放在后面      
        MOV   R7,#08H          ;將 ACC 中 8 位送出
CH451_WRITE_8:  
        RRC   A                ;低位在前,高位在后      
        CLR   CH451_DCLK      
        MOV   CH451_DIN,C      ;送出一位數(shù)據(jù)      
        SETB  CH451_DCLK       ;產(chǎn)生時(shí)鐘上升沿通知 CH451 輸入位數(shù)據(jù)      
        DJNZ  R7,CH451_WRITE_8 ;位數(shù)據(jù)未完繼續(xù)      
        MOV   A,B      
        MOV   R7,#04H          ;將 B 中 4 位送出
        CH451_WRITE_4:  
        RRC   A                ;低位在前,高位在后      
        CLR   CH451_DCLK      
        MOV   CH451_DIN,C      ;送出一位數(shù)據(jù)      
        SETB  CH451_DCLK       ;產(chǎn)生時(shí)鐘上升沿通知 CH451 輸入位數(shù)據(jù)      
        DJNZ  R7,CH451_WRITE_4 ;位數(shù)據(jù)未完繼續(xù)      
        SETB  CH451_LOAD       ;產(chǎn)生加載上升沿通知 CH451 處理命令數(shù)據(jù)      
        SETB  EX0              ;允許鍵盤中斷      
        RET   
; ;輸入鍵值子程序

CH451_READ:  
CLR EX0
CLR CH451_LOAD
MOV A,#07H
MOV R7,#04H
   CH451_READ_4:
RRC A
CLR CH451_DCLK
MOV CH451_DIN, C
SETB CH451_DCLK
DJNZ R7,CH451_READ_4 ;位 數(shù)據(jù)未完繼續(xù)

SETB CH451_LOAD ;產(chǎn)生加載上升沿 通知CH451 處理命令數(shù)據(jù)
CLR  A  ;先清除鍵值單元以便移位
MOV  R7,#07H   ;讀入7位鍵值
CH451_READ_7:

MOV  C,CH451_DOUT  ;讀入- ~位數(shù)據(jù)

CLR  CH451_DCLK  ;產(chǎn)生時(shí)鐘上升沿 通知CH451輸出下一位
RLC  A  ;數(shù)據(jù)移入ACC,高位在前,低位在后
SETB CH451_DCLK

DJNZ R7,CH451_READ_7 ;位 數(shù)據(jù)未完繼續(xù)

CLR IE0 ;清中斷標(biāo)志,讀操作過程中有低電平脈沖
SETB  EX0  ;允許鍵盤中斷;
RET

SCAN1: MOV C,CH451_DOUT;鍵盤掃描
JC SCAN1
ACALL CH451_READ
MOV R2, A
C0: CJNE R2, #44H,C1
ACALL K1
ACALL TES
C1: CJNE R2, #45H,C2
ACALL K2
ACALL TES
C2: CJNE R2,#46H,C3
ACALL K3
ACALL TES
c3: CJNE R2,#47H,C4
ACALL K4
ACALL TES
C4: CJNE R2,#4CH,C5
ACALL K5
ACALL TES
C5: CJNE R2,#4DH,C6
ACALL K6
ACALL TES
C6: CJNE R2,#4EH,C7
ACALL K7
ACALL TES
C7: CJNE R2,#4FH,SCAN1
ACALL K8
ACALL TES

RET
TES:SETB C
RET


K1:
MOV DPTR,#TAP
INC R3

MOV A,R3
MOVC A,@A+DPTR
MOV B,#0CH
ACALL CH451_WRITE

RET
K2:MOV DPTR,#TAP
INC R4

MOV A,R4
MOVC A,@A+DPTR
MOV B,#0DH
ACALL CH451_WRITE

RET
K3:MOV DPTR,#TAP
INC R5

MOV A,R5
MOVC A,@A+DPTR
MOV B,#0EH
ACALL CH451_WRITE
RET
K4:MOV DPTR,#TAP
INC R6

MOV A,R6
MOVC A,@A+DPTR
MOV B,#0FH
ACALL CH451_WRITE
RET
K5:
RET
K6:
RET
K7:
RET
k8:
RET



TAP:
DB 0BDH;0
DB 018H;1
DB 0D5H;2
DB 0D9H;3
DB 078H;4
DB 0E9H;5
DB 0EDH;6
DB 098H;7
DB 0FDH;8
DB 0F9H;9

YY:MOV R3,#00H
MOV R4,#09H
RET

END

回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2019-7-4 19:37 | 顯示全部樓層
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報(bào)

ID:829807 發(fā)表于 2020-10-17 08:45 | 顯示全部樓層
你好,有沒有c語言的
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表