導航:首頁 > 操作系統 > 單片機按下1控制數碼管顯示1

單片機按下1控制數碼管顯示1

發布時間:2022-11-16 12:06:57

單片機按鍵控制數碼管顯示

你有原理圖沒?
設置三個標志位,全局變數,需要在倒計時中斷里改變狀態的。
程序流程是:
主程序流程:
上電初始化(設置LED狀態,設置定時器相關寄存器參數,設置三個標志位狀態)--->
死循環(判斷標志位是否容許按鍵有效,然後判斷是否有按鍵按下,轉入響應的子程序處理段)
定時器中斷任務:
判斷是否到15秒,到了就置位標志位。

Ⅱ 51單片機怎麼用按鍵控制一個數碼管,按一下顯示一個數字,順序顯示

1、首先,要把代碼寫好,點亮數碼管。

Ⅲ 能幫我編一個單片機第1個按鍵控制數碼管顯示1,第2個按鍵控制數碼管顯

參考一下這個模擬實例,16個按鍵,按鍵1 顯示1,---按鍵9顯示9,等等

下載 附件 模擬試試。

Ⅳ 匯編語言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


Ⅳ 51單片機怎樣用鍵盤控制數碼管顯示

51單片機怎樣用鍵盤控制數碼管顯示的方法。

如下參考:

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

Ⅵ 單片機按鍵控制數碼管顯示

實現方法有挺多種的,下面介紹一種:
1、按鍵子程序:
實現按第一個鍵使鍵值keyvalue=1,第二個鍵使鍵值keyvalue=2,第三個鍵使鍵值keyvalue=3
2、顯示子程序
定義3個位元組的顯示緩存,如dispbuf1,dispbuf2,dispbuf3
使dispbuf1的數字顯示在第一個數碼管上,dispbuf2的數字顯示在第2個數碼管上,dispbuf3的數字顯示在第3個數碼管上
3、主程序:
初始化按鍵次數keycount為0
檢測按鍵,任意一個鍵(比如說是第2個鍵)被按後,keycount
加1,並將keyvalue值(2)送給dispbuf1(則第一個數碼管將會顯示2),再有任意一個按鍵按下後,keycount
加1,並將keyvalue值送給dispbuf2,再有任意一個按鍵按下後,keycount
加1,並將keyvalue值送給dispbuf3

Ⅶ 單片機 按鍵(採用獨立式按鍵)按下一次,讓液晶第一位顯示的數碼加1,顯示範圍0~9

程序清單如下:

#include < reg51.h >// 51單片機頭文件

#define uchar unsigned char // 宏定義,用uchar替代無符號字元型

#define uint unsigned int // 宏定義,用uint 替代無符號整數型

sbit Key = P2 ^ 7;

uchar Count = 0;

uchar code DataChar[10] = // 定義數碼管的段碼 '0'~'9'、'-'、' ' 'P'

{

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,

};//延時N毫秒

void DelayNms( uint N ) // 利用x、y作簡單的自減運算,消耗單片機指令周期,達到延時的目的

{

uint x,y;

for( x=N; x>0; x-- )

for( y=110; y>0; y-- );

}

//數碼管顯示 // 顯示方式為動態掃描,視覺暫留原理

void Display( uchar Num ) // *p指向Main函數中的數組ShowNum的首地址

{

P0 = DataChar[ Num ]; // 向P0賦段碼值

DelayNms(2); // 短暫的延時

P0 = 0x00; // 讓數碼管熄滅,否則會造成數字重疊

}

void main( void )

{

while(1)

{

if( Key == 0 )

{

DelayNms(30);

if( Key == 0 )

{

Count += 1;

Count = (Count>9)? 0 : Count;

}

while( !Key );

}

Display( Count );

}

}

Ⅷ 求救:c51單片機按鍵每按一次同時數碼管顯示數字加一

-
建立一個數組,用於存放 0-9的段碼。
int Shuzu[]={---------};
如果會用指針
int *P;
P=Shuzu; //指針指向數組!
用外部中斷,
每中斷一次,中斷服務程序將數組元素加一P0=Shuzu[ax++](或指針加一:P0=*P++)
以上假設P0口驅動數碼管!
至於數碼管使用的是共陽還是共陰,就把相對的數值存在數組中!
-
外部中斷0的中斷程序入口
void TI_0() interrupt 0
{
--------
}
都提示到這里了,下面自己該會吧?
如果是新手的新手---想要我幫你寫全部程序--
那至少你得把你單片機晶元型號說給我才能幫你!
還有數碼管是用單片機哪個IO口!
數碼管是怎麼連接的?(串/並)

Ⅸ 設計一個單片機輸入顯示系統,要求每按一下按鍵數碼管顯示數據加1(數碼管初始值為0,9加1 後顯示0)。

程序清單如下:

#include < reg51.h >// 51單片機頭文件

#define uchar unsigned char // 宏定義,用uchar替代無符號字元型

#define uint unsigned int // 宏定義,用uint 替代無符號整數型

sbit Key = P2 ^ 7;

uchar Count = 0;

uchar code DataChar[10] = // 定義數碼管的段碼 '0'~'9'、'-'、' ' 'P'

{

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,

};//延時N毫秒

void DelayNms( uint N ) // 利用x、y作簡單的自減運算,消耗單片機指令周期,達到延時的目的

{

uint x,y;

for( x=N; x>0; x-- )

for( y=110; y>0; y-- );

}

//數碼管顯示 // 顯示方式為動態掃描,視覺暫留原理

void Display( uchar Num ) // *p指向Main函數中的數組ShowNum的首地址

{

P0 = DataChar[ Num ]; // 向P0賦段碼值

DelayNms(2); // 短暫的延時

P0 = 0x00; // 讓數碼管熄滅,否則會造成數字重疊

}

void main( void )

{

while(1)

{

if( Key == 0 )

{

DelayNms(30);

if( Key == 0 )

{

Count += 1;

Count = (Count>9)? 0 : Count;

}

while( !Key );

}

Display( Count );

}

}

(9)單片機按下1控制數碼管顯示1擴展閱讀

8051單片機具有如下功能:

8位CPU·4kbytes程序存儲器(ROM) (52為8K)

128bytes的數據存儲器(RAM) (52有256bytes的RAM)

32條I/O口線·111條指令,大部分為單位元組指令

21個專用寄存器

2個可編程定時/計數器·5個中斷源,2個優先順序(52有6個)

一個全雙工串列通信口

外部數據存儲器定址空間為64kB

外部程序存儲器定址空間為64kB

邏輯操作位定址功能·雙列直插40PinDIP封裝

單一+5V電源供電

CPU:由運算和控制邏輯組成,同時還包括中斷系統和部分外部特殊功能寄存器;

RAM:用以存放可以讀寫的數據,如運算的中間結果、最終結果以及欲顯示的數據;

ROM:用以存放程序、一些原始數據和表格;

I/O口:四個8位並行I/O口,既可用作輸入,也可用作輸出

T/C:兩個定時/記數器,既可以工作在定時模式,也可以工作在記數模式;

五個中斷源的中斷控制系統;

一個全雙工UART(通用非同步接收發送器)的串列I/O口,用於實現單片機之間或單片機與微機之間的串列通信;

片內振盪器和時鍾產生電路,石英晶體和微調電容需要外接。最佳振盪頻率為6M—12M。

Ⅹ 求51單片機的C程序,就是鍵盤控制這個一位七段數碼管,按鍵按1按下數碼管上能夠顯示1,按2就能從1變到2。

51單片機的C程序,4*4鍵盤控制這個八位七段數碼管。可以參考一下

#include<reg51.h>

#define uchar unsigned char

uchar temp;

int key1,key,disbuf;// 此表為 LED 的字模 0 1 2 3 4 5 6 7 8 9 a b c d e f

unsigned char code LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};

unsigned char ledx[8];

bit s0,s1;

void delay(uchar z)

{

uchar i,j;

for(i=0;i<120;i++)

for(j=0;j<z;j++);

}

void scan() //要是按鍵了,掃描鍵盤編碼值

{

P1=0xF0;

delay(1);

temp=P1;

switch(temp)

{

case 0xe0: key1=0;

break;

case 0xd0: key1=1;

break;

case 0xb0: key1=2;

break;

case 0x70: key1=3;

break;

}

P1=0x0f;

delay(1);

temp=P1;

switch(temp)

{

case 0x0E: key=key1+0;

break;

case 0x0D: key=key1+4;

break;

case 0x0B: key=key1+8;

break;

case 0x07: key=key1+12;

break;

default : key=-1;

}

if((key1+1)&&(key+1)) disbuf=key;

}

void ejjc() //判斷是否按鍵

{

P1=0xF0;

if(P1!=0xF0) { scan();s0=1;}

else { s0=0; s1=1;}

}

void main()

{

uchar i;

while(1)

{

ejjc();

if(s0==1 && s1==1)

{

s0=0;s1=0;

for(i=0;i<8;i++)

{ ledx[i]=ledx[i+1]; ledx[8]=disbuf; }

}

P0=0xff;

P2=LED7Code[ledx[0]];

P0=0xfe;

delay(5);

P0=0xff;

P2=LED7Code[ledx[1]];

P0=0xfd;

delay(5);

P0=0xff;

P2=LED7Code[ledx[2]];

P0=0xfb;

delay(5);

P0=0xff;

P2=LED7Code[ledx[3]];

P0=0xf7;

delay(5);

P0=0xff;

P2=LED7Code[ledx[4]];

P0=0xef;

delay(5);

P0=0xff;

P2=LED7Code[ledx[5]];

P0=0xdf;

delay(5);

P0=0xff;

P2=LED7Code[ledx[6]];

P0=0xbf;

delay(5);

P0=0xff;

P2=LED7Code[ledx[7]];

P0=0x7f;

delay(5);

}

}

閱讀全文

與單片機按下1控制數碼管顯示1相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:485
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:382
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163