導航:首頁 > 操作系統 > 單片機按鍵程序與顯示設計

單片機按鍵程序與顯示設計

發布時間:2022-08-02 03:44:30

1. 我用的是51單片機。要求設計一個按鍵顯示的程序。

暈,這么簡單的東西
大概跟你說下吧..
P1口做8個按鍵,P2口接數碼管,P3口接數碼管共陰極,分時復用,讓各數碼管分別顯示就行,再有就是蜂鳴器隨便加哪都行,檢測有按鍵按下就叫一聲...哦啦》。。

2. 給寫個89c52C語言程序 按鍵鍵位操作顯示設計 要求: 單片機上6個按鍵順序為1~6; 按鍵1-

求寫程序!我的是89C52單片機,想用兩個按鍵和一個LED來實現,按下按鍵1點亮LED,按下按鍵2熄滅LED,兩個按鍵另一端是接5V,LED另一端也是接5V。最好配上原理圖。感激不盡
提醒一下:兩個按鍵另一端接5V地!!!!!


  1. 電路參考如下:

  2. 代碼參考如下:



#include<reg52.h>

sbit LED = P2^7;

#define ON 0

#define OFF 1


void main()
{
unsigned char keyVal;
while(1)
{
keyVal=P3^0xFF;
if(keyVal)
{
if(keyVal==0x02) LED=ON;
else if(keyVal == 0x20) LED=OFF;
}
}
}



3.說明一下,此按鈕不需要去抖動,原因在於每個按鈕只負責燈的一種狀態,
如果一個按鈕要負責兩個狀態的切換,就需要去抖。
希望能幫上你!!!!!!!

3. 跪求用51單片機編按鍵顯示程序

樓主先要確定電路,然後才能編寫程序。

4. 51單片機鍵盤輸入及顯示程序

你的郵箱?發給你

5. 關於51單片機的按鍵和顯示的程序問題

#include <reg51.h>
#define uchar unsigned char
#define uinr unsigned int
#define DATA P2^0

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar idata temp[]={0xff,0xff,0xff}

sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;

sbit led1=P3^2;
sbit led2=P3^3;
sbit led3=P3^4;

void delay(uint t)
{
uint a;
while(t--)
{
for(a=0;a<75;a++)
{;}
}
}
void timer()
{
TMOD=0X01;
TH0=0XFC;
TL0=0X18;
TR0=1;
ET0=1;
EA=1;
}

void display() interrupt 1
{
TH0=0XFC;
TL0=0X18;
led1=1;led2=1;led3=1;
DATA=temp[0];
led1=0;led2=1;led3=1;
DATA=temp[1];
led1=1;led2=0;led3=1;
DATA=temp[2]&0x7f;
led1=1;led2=1;led3=0;
}

void main()
{
uchar number,ks;
timer();
while(1)
{
temp[0]=table[number%10];
temp[0]=table[number%100/10];
temp[0]=table[number%1000/100];
if(k1==0)ks=0;
if(k2==0)ks=1;
switch(ks)
{
case 0:
{
if(k2==0)
{
while(k2==1){;}
number++;
if(number==3)number=2;
}
if(k3==0)
{
while(k2==1){;}
if(number==0)number=1;
number--;
}

}break;
case 1:
{
if(k2==0)
{
while(k2==1){;}
number++;
if(number==19)number=18;
}
if(k3==0)
{
while(k2==1){;}
if(number==0)number=1;
number--;
}

}break;

}
}
}

/*呼,花了我十五分鍾,好久沒打程序了,注是就不打了,應該看得懂把,不懂再問我拉,我q:745748376 加點分貝,嘿嘿*/

6. 用51單片機設計一個由3個按鍵顯示兩位的程序分別是15,25,35。

sbit p1=p1^0;
sbit p2=p1^0;
void main()
{

aa=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1; //開總中斷
ET0=1; //開啟T0中斷
TR0=1; //啟動T0定時器 , 以上是用定時器0.
if(aa==216000) //10800*50=3個小時

TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1; //開總中斷
ET1=1; //開啟T1中斷
TR1=1; //啟動T2定時器
if (aa==72000) //1800*50=半小時
//以上是用定時器1.

}

void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}

void timer0() interrupt 3
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}
兄弟程序太大了,,我寫了 主函數。其他外圍你自己填寫就可以了。
另外:得用外接的「時間晶元」:1302。開機後,必須對1302進行初始化,然後等待操作者,對1302進行時間設定,然後等待2009-09-24 22:33時刻的到來。然後輸出要求的波形。輸出波形,也要用1302的時間進行控制
( 我只會前面。 1302 是網上一個朋友說的,我也寫出來了,希望對你有幫助。)

7. 設計一個單片機輸入顯示系統,要求每按一下按鍵數碼管顯示數據加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 );

}

}

(7)單片機按鍵程序與顯示設計擴展閱讀

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。

8. 51單片機 c語言 按鍵和數碼管顯示

#include<reg51.h>
unsignedcharled[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
voidled_display(unsignedcharnum);
unsignedcharkey_scan();
sbitled1=P2^0;
sbitled2=P2^1;
voidmain()
{
unsignedcharled_key;
P1=0;
while(1)
{
led_key=key_scan();
led_display(led_key);
}
}
voidled_display(unsignedcharnum)
{
unsignedcharten,single;
intdelay;
ten=num/10;
single=num%10;
delay=100;
for(delay=200;delay>0;delay--)
{
P0=led[ten];
led1=0;
led1=1;
P0=led[single];
led2=0;
led2=1;
}
}
/////////////////////////////////////////
unsignedcharkey_scan(void)
{
unsignedchartemp,key;
P1=0xfe;
temp=P1&0xf0;
if(temp!=0xf0)
{
switch(temp)
{
case0xe0:key=1;
break;
case0xd0:key=2;
break;
case0xb0:key=3;
break;
case0x70:key=4;
}
returnkey;
}
P1=0xfd;
temp=P1&0xf0;
if(temp!=0xf0)
{
switch(temp)
{
case0xe0:key=5;
break;
case0xd0:key=6;
break;
case0xb0:key=7;
break;
case0x70:key=8;
}
returnkey;
}

P1=0xfb;
temp=P1&0xf0;
if(temp!=0xf0)
{
switch(temp)
{
case0xe0:key=9;
break;
case0xd0:key=10;
break;
case0xb0:key=11;
break;
case0x70:key=12;
}
returnkey;
}
P1=0xf7;
temp=P1&0xf0;
if(temp!=0xf0)
{
switch(temp)
{
case0xe0:key=13;
break;
case0xd0:key=14;
break;
case0xb0:key=15;
break;
case0x70:key=16;
}
returnkey;
}
}

你好!很高興為您解答!我有歡迎採納!!以上傳附件!!

9. 求關於單片機按鍵的程序

void _Key(void)
{
if(!Key) //有按鍵按下
{
Delay(500); 延時
if(!Key) //還是按下狀態,即長擊
{
Disp("2");
}
else //否則就是短擊
{
Disp("1");
}
}
else //沒有按鍵按下
{
Disp("3");
}
}
大概思路是這樣,延遲函數自己掌握,一般還要加消抖(也就是較短的延時後再判斷一次按鍵狀態)

10. 單片機鍵盤顯示電路設計的程序要求輸入64個按鍵,8個LED顯示

一種是採用8行8列組成的按鍵就可以了,實際上是16個開關,但可以實現64個按鍵。具體的看看網上的4*4鍵盤是什麼原理。基礎要自己想。
第二種是採用8255或8155擴展,具體的要自己去看去學。

閱讀全文

與單片機按鍵程序與顯示設計相關的資料

熱點內容
如何給好友加密消息 瀏覽:860
視頻加密失敗怎麼辦 瀏覽:502
中國最好的加密機 瀏覽:717
什麼是工藝壓縮機 瀏覽:598
老蓋聊技術dos命令 瀏覽:525
雲伺服器租多大的 瀏覽:883
加密和認證哪個好 瀏覽:184
好游快爆app如何同步 瀏覽:622
程序員完美辦公環境 瀏覽:408
有關程序員的魔咒 瀏覽:16
windows工具菜單包含的命令 瀏覽:565
python中文詞語數 瀏覽:439
安卓直屏播放源碼 瀏覽:54
吉林高配伺服器雲空間雲主機 瀏覽:305
51aspx源碼打包 瀏覽:592
我的世界怎麼可以搶伺服器 瀏覽:293
Python多線程最大線程限制 瀏覽:634
python圓形圖片 瀏覽:785
jsp程序設計pdf 瀏覽:992
符號靈敏度app在哪裡下載 瀏覽:786