|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe |
請問:用51編8279 |
| 作者:bjjtyl 欄目:單片機 |
各位大蝦: 小弟現(xiàn)在有個問題請教,我用51接8279,用一片74LS154顯示14位,在編寫程序時,寫進的顯示內容,用不用每次必須清顯示RAM,如果不用,那我怎樣才能知道顯示的哪一位。 |
| 2樓: | >>參與討論 |
| 作者: sby_1027 于 2005/5/2 20:34:00 發(fā)布:
清一次即可,用字位控制。 KEYCOM XDATA 0E601H KEYDAT XDATA 0E600H KEYCAM EQU 30H ;定義存放按鍵值RAM起始地址 ;********************************************* ;* 8279 初始化 * ;* KEYCOM為8279命令口 KEYDAT為8279數據口 * ;********************************************* START: MOV R0,#10 MOV DPTR,#KEYCOM ;命令口地址 MOV A, #10H ;鍵盤/顯示方式命令字8字符顯示左入口,編碼鍵盤,雙鍵鎖定 MOVX @DPTR,A MOV A,#34H ;程序時鐘命令 26分頻對外部輸入時鐘 MOVX @DPTR,A MOV A,#0DFH ;清除顯示緩沖區(qū)命令 MOVX @DPTR,A BUSY1: MOVX A,@DPTR JB ACC.7,BUSY1 MOV IE,#81H MOV DPTR,#KEYDAT MOV A,#0C8H MOVX @DPTR,A ;字型送入8279 INC DPTR MOV A,#90H MOVX @DPTR,A ;字位送入8279(顯示P) HA7S2: MOV 30H,#80H MOV 31H,#40H HA7S3: MOV DPTR,#KEYCOM MOVX A ,@DPTR ANL A,#07H CJNE A,#00H ,HA7S4; AJMP HA7S3 HA7S4: MOV DPTR ,#KEYDAT MOVX A,@DPTR MOV B,A ;取鍵值 MOV R1,#00H MOV DPTR ,#KEYTAB ;數字鍵鍵值表 HA7S5: MOV A , #00H MOVC A,@A+DPTR CJNE A , B ,HA7S6;查鍵值表是否相同 AJMP HA7SA; 轉數字鍵處理程序 HA7S6: INC DPTR ;鍵值表地址加1 INC R1 ;查找次數加1 MOV A,R1 JB ACC.4 ,HA7S7 ;是功能鍵嗎? AJMP HA7S5 ; 繼續(xù)查找 HA7S7: MOV R1,#00H MOV DPTR ,#KEYTAB1 ;功能鍵表地址 HA7S8: MOV A,#00H MOVC A,@A+DPTR ;取出功能鍵鍵值 CJNE A,B,HA7S9 ;鍵值相同嗎? AJMP HA7SC ;轉功能鍵處理子程序 HA7S9: INC DPTR INC R1 MOV A,R1 JNB ACC.2,HA7S8 ;繼續(xù)查找 LJMP START ;;; AJMP HA7SD ;無按鍵返回 HA7SD: LJMP START HA7SA: MOV A ,30H MOV DPTR ,#0FE01H MOVX @DPTR ,A; 字位送入8279 MOV A,R1 MOV R0,31H MOV @R0,A INC 31H MOV DPTR ,#CDATA MOVC A,@A+DPTR;取字型代碼 MOV DPTR,#KEYDAT MOVX @DPTR,A ;送8279顯示 INC 30H MOV A,30H ;字位加1 CJNE A,#88H,HA7SB ; LJMP HA7S2 HA7SB: AJMP HA7S3 HA7SC: MOV DPTR ,#KJPADDR MOV A,R1 RL A ;; ADD A,R1 ADD A,#00H JMP @A+DPTR ; KJPADDR:LJMP LOOP0 LJMP LOOP1 LJMP LOOP2 KEYTAB: DB 0C1H,0C8H,0C9H,0D0H,0D8H,0E0H,0C2H,0CAH,0D1H,0D9H DB 0DAH,0C3H,0CBH,0D2H,0D3H,0DBH KEYTAB1:DB 0E3H,0E2H,0E1H CDATA: DB 0CH,9FH,4AH,0BH,99H,29H,28H,8FH,08H,09H,88H,38H,6CH,1AH,68H,0E8H LOOP0:MOV R5,#0CH ;0 LJMP DISPC LOOP1:MOV R5,#9FH ;1 LJMP DISPC LOOP2:MOV R5,#0BH ;2 DISPC: MOV R6,#80H DISPC1: MOV DPTR ,#KEYCOM MOVX @DPTR,A ;字位送8279 MOV A ,R5 MOV DPTR ,#KEYDAT ;字形送8279 MOVX @DPTR ,A LCALL DELAY1 ; MOV A ,#0FFH ; MOVX @DPTR ,A ;關顯示 ; INC R6 ; ; CJNE R6,#88H,DISPC1 ; AJMP DISPC; LJMP HA7S2 AAA: NOP NOP RETI DELAY1:MOV R1,#0FAH DELAY2:NOP NOP DJNZ R1,DELAY2 DJNZ R0,DELAY1 RET END |
|
| 3樓: | >>參與討論 |
| 作者: ptj_wing 于 2005/5/3 16:42:00 發(fā)布:
問一下 現(xiàn)在的8279這么貴(二十幾元一塊)還有多少人用啊 |
|
| 4樓: | >>參與討論 |
| 作者: bbstom 于 2005/5/3 18:37:00 發(fā)布:
不僅貴! 不僅貴! 而且是NEC的(日貨)!!! 建議用ZLG7289代替. 或用動態(tài)掃描法(74LS164+ ...). |
|
| 5樓: | >>參與討論 |
| 作者: xjycug 于 2005/5/4 0:27:00 發(fā)布:
RE 建議MAX7219,非常好用,我有源代碼。 你可試試。 #include<intrins.h> #include<reg52.h> #define N 8 sbit bytesend_din=P1^2; sbit byteclk_clk=P1^3; sbit byteload_load=P1^4; //unsigned CHAR num_show[N]={0,1,2,3,4,5,6,7}; void sendbyte(unsigned CHAR VALUE_send) { unsigned CHAR cycal=0x80; while(cycal>=0x01) { byteclk_clk=0; if((VALUE_send&cycal)==0x00) bytesend_din=0; else bytesend_din=1; _nop_(); _nop_(); _nop_(); byteclk_clk=1; _nop_(); cycal=cycal>>1; } } void VALUEsend(unsigned CHAR address,unsigned CHAR VALUE) { sendbyte(address); sendbyte(VALUE); byteload_load=0; _nop_(); _nop_(); _nop_(); byteload_load=1; } void initial7219() { VALUEsend(0x0b,0x06); VALUEsend(0x0a,0x05); VALUEsend(0x09,0xff); VALUEsend(0x0c,0x01); } void disp7219() { unsigned CHAR i; for(i=0x0;i<0x06;i++) //VALUEsend(i+1,num_show[i]); VALUEsend(i+1,i); } void main() { initial7219(); do { disp7219(); }while(1); } |
|
| 6樓: | >>參與討論 |
| 作者: bjjtyl 于 2006/11/10 15:11:00 發(fā)布:
8279鍵值如何讀出來,如何計算? 我用8279做鍵盤接口,但不知如何讀出鍵值,如何計算鍵值,有知道的朋友能否指點小弟,最好給我一些編好的MCS-51的匯編程序。(小弟對C語言不大懂) 謝謝。 |
|
| 7樓: | >>參與討論 |
| 作者: 混混 于 2008/4/17 10:32:16 發(fā)布:
樓主:有是請教您,能不能加我qq:378230855 |
|
|
|
| 免費注冊為維庫電子開發(fā)網會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |