① 51單片機,1602動態顯示時鍾,有獨立按鍵(3個k1,k2,k3)分別控制選擇,加1,減一
你好,
我這又一個參考程序,是用郭天祥的TX-1C開發板寫的,有3個按鍵,調節游標,時間加,時間減。引腳方便可以根據自己的開發板更改,其他程序內容不變。
希望我的回答能幫助到你。
② 51單片機如何用定時器中斷,實現按鍵計數加減,兩位數碼管,C語言,謝謝
用一個單元,存放計數值,每隔1秒加一,然後進行十進制調整,之後向P2輸出即可。
③ 單片機按鍵加一、減一
利用外部中斷實現按鍵按一下數碼管數字加1,實現00-99的循環,另一個按鍵實現清零,不管數碼管數字是多少,該按鍵按下數碼管顯示00
④ 單片機中定義了開關和按鈕,三個按鈕可以分別加一、減一、清零,
你有兩個外部中斷
方案一:
你可以用eint0做開始計數和停止計數的功能,用一個標志位區分。
把eint1留出來做清零功能。
方案二:
eint1中再加一個功能就是清零,這時候可以檢測eint1按鍵的時間。實例代碼:
void
ex1()
interrupt
2
//外部中斷1
{
delay_ms();
//延時一段時間
if(p1^2==0)
//檢測外部中斷引腳的電平,我不確定是哪個引腳了,你看看電路圖。
{
//清零
}
else
{
tr0=0;
//停止計數
}
}
⑤ 匯編語言51單片機怎麼實現用KEY 1控制數碼管上顯示的數字加1 KEY2控制數碼管上顯示數字減1
原有key1為P3.4,添加個key2鍵為P3.5;
1、按你顯示程序的邏輯,對TAB修改如下:
TAB:DB 00H,3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H
即數據的首尾為0(這是個標記而已),中間才是七段碼 0--F 的顯示數據;
2、對CK1、CK2鍵盤按下及松開程序做了修改;
3、顯示程序也進行了修改,唯獨延時程序不用修改;
代碼如下:
MAIN:
MOV DPTR,#TAB
MOV R4,#00H
MOV R5,#01H
CLR A
LCALL DISPLAY
LOOP:
LCALL KEYDOWN
LCALL DISPLAY
SJMP LOOP
KEYDOWN:
JB P3.4,CK11 ;key1沒有按下則轉到key2
LCALL DS1MS ;P3.4=0表示Key1按下
JB P3.4,CK11 ;key1還不能松開
MOV R5,#01H
INC R4;key1按下為加
RET
CK11:
JB P3.5,KEYDOWN ;key2沒有按下則轉到key1
LCALL DS1MS ;P3.5=0表示Key2按下
JB P3.4,KEYDOWN ;key2還不能松開
MOV R5,#10H
DEC R4;key2按下為減
RET
D1::
MOV R4,R5
DISPLAY:
MOV A,R4
MOVC A,@A+DPTR
JZ D1 //累加器(A)=0轉
MOV P0,A
SETB P2.6
CLR P2.6
MOV P0,#0FEH
SETB P2.7
CLR P2.7
LCALL DS1MS ;延時
LCALL KEYUP
RET
KEYUP:
JNB P3.4,KEYUP ;P3.4=0轉
JNB P3.5,KEYUP ;等待松開按鍵
LCALL DS1MS
JNB P3.4,KEYUP
JNB P3.5,KEYUP
RET
TAB:DB 00H,3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H