|
1在鍵盤上輸入數字,可以在數碼管上循環左移顯示。 2直流電機控制:在鍵盤定義功能鍵,包括正轉鍵,反轉鍵,速度設定鍵,復位鍵。可以實現按下速度設定鍵,然后用數字鍵輸入速度,并在數碼管上顯示這一數字,然后按下正轉或者反轉鍵,直流電機開始按照這一速度正轉或者反轉,同時在數碼管上顯示目前運行時輸出的電壓。按下復位鍵,電機按照原運轉方向相反的方向倒轉回到原位。 (附件分別為兩個的匯編程序)
捕獲1.PNG (51.71 KB, 下載次數: 20)
下載附件
2019-1-6 16:46 上傳
捕獲.PNG (29.01 KB, 下載次數: 24)
下載附件
2019-1-6 16:46 上傳
單片機源程序如下:
- ;直流電機調速實驗
- ;實驗連線
- ;1) DA0832單元的CS連接端口地址300CS
- ;2) DA0832單元的AOUT連接直流電機INV
- CS0832 EQU 0300H
- CS8279C equ 0fff1h
- CS8279D equ 0fff0h
- DA0V EQU 000H
- DA2V5 EQU 07FH
- DA5V EQU 0fFH
- led0 equ 0fff0h
- led1 equ 0fff1h
- org 0
- mloop: ; mov dptr,#CS0832
- MOV SP,#40H
-
- ;------------------------
- ; 初態送顯示緩沖區
- ;------------------------
- xmos: mov r0,#30h
- mov a,#10h
- x35s: mov @r0,a
- inc r0
- cjne r0,#36h,x35s
- inc a
- mov @r0,a
- ;-----------------------------
- ; 掃描待令入口區
- ;-----------------------------
- xmon: mov r1,#30h
- call dikey ;調顯示鍵掃
- cjne a,#10h,next ;判數字鍵還是功能鍵
- next: cjne a,#20h,next1
- sjmp xmon
- next1: cjne r1,#10h,krds
- keep: jNb p1.0,L0
- jNb p1.1,L1
- jNb p1.2,L2
- krds: jnc krdy ;轉功能鍵處理
- ;----------------------------
- ; 功能鍵處理入口
- ;-----------------------------
- krdy: mov dptr,#CKEY
- anl a,#03h
- clr c
- rl a
- mov r2,a
- inc a
- movc a,@a+dptr
- push acc
- mov a,r2
- movc a,@a+dptr
- push acc
- ret
- ;-----------------------------
- ; 速度設置鍵入口
- ;------------------------------
- VSET: mov r1,#30h
- call dikey
- cjne a,#20h,ste1
- sjmp VS
- ste1: mov @r1,a
- call diled
- ljmp xmon
- ;----------------------------
- ; 反轉鍵處理入口
- ;----------------------------
- LEFT: mov dptr,#CS0832
- mov r1,#30h
- mov a,#DA0V
- cjne @r1,#10h,qia1
- sjmp qia2
- qia1: mov a,#0fh
- mov b,@r1
- mul ab
- qia2: movx @dptr,a
- acall disp0
- clr p1.0
- setb p1.1
- setb p1.2
- ljmp mloop
- ;----------------------------
- ; 正轉鍵處理入口
- ;----------------------------
-
-
- RIGHT: mov dptr,#CS0832
- mov r1,#30h
- mov a,#DA5V
- cjne @r1,#10h,qia3
- sjmp qia4
- qia3: mov a,#0fh
- mov b,@r1
- mul ab
- add a,#7fh
- qia4: movx @dptr,a
- clr p1.1
- setb p1.0
- setb p1.2
- acall disp1
- ljmp mloop
- ;----------------------------
- ; 停止鍵處理入口
- ;----------------------------
-
-
-
- STOP: mov dptr,#CS0832
- mov a,#DA2V5
- movx @dptr,a
- clr p1.2
- setb p1.1
- setb p1.0
- acall disp1
- ljmp mloop
-
- ;-----------------------
- ; 刷新顯示子程序
- ;-----------------------
- diled: mov r1,#35h ;從高位開始
- mov 38h,#80h
- dilex: mov dptr,#led1 ;送字位代碼
- mov a,38h
- movx @dptr,a
- mov dptr,#ZOE0 ;索字形代碼
- mov a,@r1
- movc a,@a+dptr
- mov dptr,#led0 ;送當前字形
- movx @dptr,a
- inc 38h
- dec r1
- cjne r1,#2fh,dilex ;末滿六位轉
- Ret
- ;-----------------------
- ; 鍵盤掃描子程序
- ;-----------------------
- dikey: mov r4,#00h ;設査鍵次數
- dikrd: mov dptr,#led1 ;指狀態端口
- movx a,@dptr ;索鍵盤標志
- anl a,#07h ;屏敝無效位
- jnz keys ;有鍵按下轉
- djnz r4,dikrd ;末完繼續査
- mov a,#20h ;定義無鍵碼
- ret ;返回
- keys: mov dptr,#led0 ;指鍵入端口
- movx a,@dptr ;讀當前鍵碼
- mov r2,a ;存當前鍵碼
- anl a,#03h ;保留低二位
- xch a,r2 ;取當前鍵碼
- anl a,#38h ;舍棄無效位
- rr a ;鍵碼的壓縮
- orl a,r2 ;與低二拼接
- mov dptr,#GOJZ ;指鍵碼表首
- movc a,@a+dptr ;索取鍵碼值
- ret ;返回
- ;------------------------
- ; 電壓顯示子程序
- ;------------------------
- disp0:
- xrl a,#0FFh
- clr c
- subb a,#7Fh
- mov r7,a
- mov r2,#85h
- mov r0,#11
- mov dptr,#CS8279C
- mov a,r2
- movx @dptr,a
- mov dptr,#ledmap ;指字形表首
- mov a,r0 ;取送顯數據
- movc a,@a+dptr ;索字形代碼
- mov dptr,#CS8279D ;指向字形口
- movx @dptr,a ;送當前字形
- mov b,#50
- mov a,r7
- div ab
- mov r0,a
- dec r2
- mov dptr,#CS8279C
- mov a,r2
- movx @dptr,a
- mov dptr,#ledmap ;指字形表首
- mov a,r0 ;取送顯數據
- movc a,@a+dptr ;索字形代碼
- mov dptr,#CS8279D ;指向字形口
- movx @dptr,a ;送當前字形
- dec r2
- mov r0,#10
- mov dptr,#CS8279C
- mov a,r2
- movx @dptr,a
- mov dptr,#ledmap ;指字形表首
- mov a,r0 ;取送顯數據
- movc a,@a+dptr ;索字形代碼
- mov dptr,#CS8279D ;指向字形口
- movx @dptr,a ;送當前字形
- dec r2
- mov a,#5
- xch a,b
- div ab
- mov r0,a
- mov dptr,#CS8279C
- mov a,r2
- movx @dptr,a
- mov dptr,#ledmap ;指字形表首
- mov a,r0 ;取送顯數據
- mov dptr,#CS8279D ;指向字形口
- movx @dptr,a ;送當前字形
- dec r2
- mov dptr,#CS8279C
- mov a,r2
- movx @dptr,a
- mov dptr,#ledmap ;指字形表首
- mov a,b ;取送顯數據
- movc a,@a+dptr ;索字形代碼
- mov dptr,#CS8279D ;指向字形口
- movx @dptr,a ;送當前字形
- ret
- disp1: clr c
- subb a,#7Fh
- mov r7,a
- mov r2,#85h
- mov r0,#0
- mov dptr,#CS8279C
- mov a,r2
- movx @dptr,a
- mov dptr,#ledmap ;指字形表首
- mov a,r0 ;取送顯數據
- movc a,@a+dptr ;索字形代碼
- mov dptr,#CS8279D ;指向字形口
- movx @dptr,a ;送當前字形
- mov b,#50
- mov a,r7
- div ab
- mov r0,a
- dec r2
- mov dptr,#CS8279C
- mov a,r2
- movx @dptr,a
- mov dptr,#ledmap ;指字形表首
- mov a,r0 ;取送顯數據
- movc a,@a+dptr ;索字形代碼
- mov dptr,#CS8279D ;指向字形口
- movx @dptr,a ;送當前字形
- dec r2
- mov r0,#10
- mov dptr,#CS8279C
- mov a,r2
- movx @dptr,a
- mov dptr,#ledmap ;指字形表首
- mov a,r0 ;取送顯數據
- movc a,@a+dptr ;索字形代碼
- mov dptr,#CS8279D ;指向字形口
- movx @dptr,a ;送當前字形
- dec r2
- mov a,#5
- xch a,b
- div ab
- mov r0,a
- mov dptr,#CS8279C
- mov a,r2
- movx @dptr,a
- mov dptr,#ledmap ;指字形表首
- mov a,r0 ;取送顯數據
- movc a,@a+dptr ;索字形代碼
- mov dptr,#CS8279D ;指向字形口
- movx @dptr,a ;送當前字形
- dec r2
- mov dptr,#CS8279C
- mov a,r2
- movx @dptr,a
- mov dptr,#ledmap ;指字形表首
- mov a,b ;取送顯數據
- movc a,@a+dptr ;索字形代碼
- mov dptr,#CS8279D ;指向字形口
- movx @dptr,a ;送當前字形
-
- ret
-
- ledmap: db 0ch,9fh,4ah,0bh,99h,29h,28h,8fh ;01234567
- db 08h,09h,0f7h,0fbh,6ch,1ah,68h,0e8h ;89ABCDEF
- ;------------------------
- ;-------功能鍵定義
- CKEY: dw LEFT,RIGHT,STOP,VS
- ;------字形代碼
- ZOE0: DB 0ch,9fh,4ah,0bh,99h,29h,28h,8fh,08h,09h,88h
- ; 0 1 2 3 4 5 6 7 8 9 a
- DB 38h,6ch,1ah,68h,0e8h,0ffh,0c0h
- ; b c d e f 關閉 p.
- ;------按鍵代碼(20h為溢出碼)
- GOJZ: db 13h,12h,11h,10h,0dh,0ch,0bh,0ah,0eh,03h ;0~9
- db 06h,09h,0fh,02h,05h,08h,00h,01h,04h,07h ;a~13
- db 20h,20h,20h,20h,20h,20h,20h,20h,20h,20h,20h,20h;
- END
復制代碼
所有資料51hei提供下載:
匯編程序.rar
(3.34 KB, 下載次數: 35)
2019-1-6 16:50 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|