急求:關于CH451與8951的接口

小弟最近在做一個課程設計,我想用CH451(DIP28)來掃描4*4的鍵盤,但是用自己寫的代碼CH451始終無法動作

硬件上,我使用的引腳如下: D0至D3,S0至S3,9、10連接在一起后接地,VCC直接接電源(電源已配去耦電容,100+0.1)DOUT至INT0,LOAD至P2.4,DIN至P2.5,DCLK至P2.6

我使用的是匯編語言,代碼如下: 初始化函數(shù): ;1.INIT_CH451:初始化CH451鍵盤掃描模塊 INIT_CH451: PUSH PSW PUSH A ;Step 1:在DIN引腳上產(chǎn)生負脈沖,使能4線串行接口 CLR DIN SETB DCLK SETB LOAD SETB DOUT SETB DIN

;Step 2:設定系統(tǒng)參數(shù):使能鍵盤掃描 ; 低八位操作碼: 0000 0010 B CLR LOAD

MOV CH451_BUFF1,#08H MOV A,#03H

SEND_LOW: RRC A CLR DCLK MOV DIN,C NOP NOP SETB DCLK DJNZ CH451_BUFF1,SEND_LOW

; 高八位操作碼: 0000 0100 B MOV CH451_BUFF1,#04H MOV A,#00000100B

SEND_HIGH: RRC A CLR DCLK MOV DIN,C NOP NOP SETB DCLK DJNZ CH451_BUFF1,SEND_HIGH

; 發(fā)送執(zhí)行指令 SETB LOAD NOP NOP

;使能中斷,并設置為低電平觸發(fā): CLR IT0 CLR IE0 MOV IE,#10000001B

POP A POP PSW RET

2.讀取鍵值的函數(shù): ;2.RD_KEY:中斷產(chǎn)生后,讀取按鍵的值 RD_KEY: ;Step 1:發(fā)送讀按鍵指令 ; 八位指令: 0000 0111 B CLR LOAD

MOV CH451_BUFF1,#4 MOV A,#00000111B

SEND_RECEIVE: CLR DCLK RRC A MOV DIN,C NOP NOP SETB DCLK DJNZ CH451_BUFF1,SEND_RECEIVE

; 發(fā)送執(zhí)行指令 SETB LOAD NOP NOP

;Step 2:接收按鍵代碼: MOV CH451_BUFF1,#6 CLR A

RECEIVE: CLR DCLK MOV C,DOUT RLC A SETB DCLK DJNZ CH451_BUFF1,RECEIVE RET

按鍵處理采用中斷的方式,我中斷的部分為了測試,代碼如下: KEYIN: PUSH PSW PUSH A CLR EX0 ; CALL RD_KEY ;此功能暫不啟用 JMP $

我個人的想法如下:此時如按下鍵值,INTO引腳應能探測到低電平,可是卻一直是高電平

執(zhí)行程序后,引腳電平如下: S0至S3均為低電平,D0至D3均為高電平,DOUT恒為高電平

跪求達人幫忙!小弟昨天試了一晚上,始終無法讓它動作,感激不盡!??! [Emot]20[/Emot]

操作CH451其實很簡單,主要是注意以下兩點: (1).查看芯片上的小字批號。如果是2027開頭的就是新批號,否則是老批號,老批號的芯片在發(fā)命令之前,要操作一下DIN引腳,也就是給一個低電平脈沖,通知CH451選擇四線接口方式,然后再發(fā)其他的命令,如果是新批號的芯片,則無需此步; (2).設置系統(tǒng)參數(shù)的命令0x0403是很重要的,這條命令發(fā)送完后,在CH451的DIG引腳上,就會有脈沖,如果沒有,就說明發(fā)的命令有問題,你用示波器去查看DCLK,DIN引腳,看發(fā)送的數(shù)據(jù)是否正確,最終確定程序哪有問題。


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频