使用組合語言,如何實現鍵盤控制數碼管顯示程式?如何對應鍵盤值在數碼管輸出相應的數值

時間 2022-02-09 09:20:15

1樓:匿名使用者

line equ 30h

row equ 31h

val equ 32h

org 00h

start: mov dptr,#table ;段碼錶首地址mov p2,#00h ;數碼管顯示初始化lscan: mov p3,#0f0h ;列線置高電平,行線置高電平

l1: jnb p3.0,l2 ;逐行掃描lcall delay

jnb p3.0,l2

mov line,#00h ;存行號

ljmp rscan

l2: jnb p3.1,l3

lcall delay

jnb p3.1,l3

mov line,#01h ;存行號

ljmp rscan

l3: jnb p3.2,l4

lcall delay

jnb p3.2,l4

mov line,#02h ;存行號

ljmp rscan

l4: jnb p3.3,l1

lcall delay

jnb p3.3,l1

mov line,#03h ;存行號

rscan: mov p3,#0fh ;行線列線電平互換c1: jnb p3.4,c2 ;逐列掃描mov row,#00h ;存列號

ljmp calcu

c2: jnb p3.5,c3

mov row,#01h ;存列號

ljmp calcu

c3: jnb p3.6,c4

mov row,#02h ;存列號

ljmp calcu

c4: jnb p3.7,c1

mov row,#03h ;存列號

calcu: mov a,line ;根據行號和列號計算鍵值mov b,#04h

mul ab

add a,row

mov val,a ;存鍵值

movc a,@a+dptr ;要據鍵值查段碼mov p2,a ;輸出段碼顯示

ljmp lscan

delay: mov r6,#20

d1: mov r7,#250

djnz r7,$

djnz r6,d1

rettable: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h

db 7fh,6fh,77h,7ch,39h,5eh,79h,71h

end我也是看的別人的

2樓:海邊數浪

處理中斷。

用int 21h中斷功能呼叫。

3樓:匿名使用者

很遺憾,c語言中沒有對應的語句,只能使用匯編。 **用微控制器控制步進速度值要求在數碼管上顯示出來。 1.要求分析 按上面的分析,改變轉速,只要

組合語言矩陣鍵盤輸入數碼管顯示如何使兩個數碼管分別顯示,或者說我怎麼通過鍵盤輸入兩個不同的數

用組合語言實現3*3鍵盤(1-9),當相應鍵按下時,led上顯示相應數值

4樓:匿名使用者

下列程式已經調好,按鍵顯示電路可見:

//微控制器:使用51系列相容的即可;

//4×4矩陣鍵盤:接在p1口;

//兩位數碼顯示器: p0口輸出七段碼,p2口輸出位選碼。

/****************************************

//c語言程式如下。

* 檔名: key_led.c

* 功能 : 對4×4矩陣鍵盤進行輸出,在數碼管後兩位顯示按鍵值。

#include

#include

#define uint unsigned int

#define uchar unsigned char

uchar code table[10] = ;

uchar sec, t_50ms;

* 名稱 : delay_1ms()

* 功能 : 延時子程式,延時時間為 1ms * x

* 輸入 : x (延時一毫秒的個數)

* 輸出 : 無

void delay_1ms(uint x)

* 名稱: display(uchar k)

* 功能: 將引數分成十位、個位分別顯示

* 輸入: k (鍵盤數值)

* 輸出: p0口輸出七段碼,p2口輸出位選碼

void display(uchar k)

* 名稱: keyscan()

* 功能: p1外接4×4按鍵, 按照掃描法讀出鍵值

* 輸出: 按鍵值0~15/如無鍵按下, 返回16

uchar keyscan(void)

}return 16; //判斷結束,沒有鍵按下,返回16

} //呵呵,實質性的語句不過8行,就是這麼簡練!

* 名稱: getkey()

* 功能: 讀出按鍵、消抖、等待按鍵釋放

* 輸出: 按鍵值0~15/如無鍵按下, 返回16

uchar getkey(void)

* 名稱 : main()

* 功能 : 主函式

void main(void)

if (key_value == 10) tr0 = 1;

} } }

* 名稱 : t0_int()

* 功能 : t0中斷函式

void t0_int() interrupt 1

51微控制器怎樣用鍵盤控制數碼管顯示

5樓:海天盛

51微控制器怎樣用鍵盤控制數碼管顯示的方法。

如下參考:

1.首先,編寫**並點亮數碼管。

2.在編寫源**之後,確保原始**是正確的。

3.確認**正確後,進入下一步,就是在這一行**(箭頭所指)中,刪除這四個單詞。

4.然後如圖所示,四個單詞已被刪除,只要修改相應的**編號即可。

5.表示數字0的**在這裡進行了更改,如圖所示。

6、最後寫**,將生成的十六進位制檔案寫進微控制器應答,數碼管顯示的數字變為0。

6樓:笑呵呵雜貨鋪

這個如果你不懂 建議你學習一下基礎 這東西不難

用組合語言實現3 3鍵盤(1 9),當相應鍵按下時,LED上

下列程式已經調好,按鍵顯示電路可見 微控制器 使用51系列相容的即可 4 4矩陣鍵盤 接在p1口 兩位數碼顯示器 p0口輸出七段碼,p2口輸出位選碼。c語言程式如下。檔名 key led.c 功能 對4 4矩陣鍵盤進行輸出,在數碼管後兩位顯示按鍵值。include include define ui...

用組合語言編寫程式段,實現從鍵盤輸入一位10進位制數後累加

code segment assume cs code org 100h start jmp bbb lfcr db 13,10,bbb push cs pop ds call inputnum mov ah,9 lea dx,lfcr int 21h lea si,array mov ch,0 m...

怎樣用組合語言實現求「1 2 3100」的和啊

冠月朗 dseg segment result dw 存放和 dseg ends cseg segment assume cs cseg,ds dsegstart mov ax,dseg mov ds,ax mov ax,1 從1開始加 mov result,0 和的初值賦0 mov cx,100 ...