導航:首頁 > 操作系統 > 51單片機按鍵c程序

51單片機按鍵c程序

發布時間:2022-08-22 08:39:20

1. 51單片機中按鍵程序用C怎麼寫

這個太簡單了吧,記住寫程序定時器要一直跑,建立一個時基,像個手錶的時間一樣要一直跑,即有time_125us,time_1ms,time_100ms,time_1s,time_1min,time_1hour等時間變數建立時基一直走。其它程序可以分時掃描也可以輪流掃描,不能停留死等,像電腦里的程序一樣表面看起來各個程序是一直運行的,即各個程序中不能有delay_1ms之類的函數,如果要定時應該申請一個變數在時基里處理,如等待2s可以這么寫
if(step==0){
time=2,time_100ms=0,step=1;}
if((step==1)&&(time==0)){//2s到
//等待2s後要執行的代碼
}
在時基時每1s把time減1,減到0為止即if(time)time--;
對按鍵的寫法一般用採集的方法如按鍵後IO為低
if(!IO){
//低電平,有按鍵
key_time++;
if((key_time==100)&&(!key_flag)){
//已經賦值了就不再賦值了
key_flag=1;
key_flag_bak=1;
}
else{
//無按鍵
key_time=0;
key_flag_bak=0;
}
if(key_flag&&(!key_flag_bak)){
//有按鍵並松開,即松開響應
time=2;
//亮2s
key_flag=0;//把鍵值清0
}
if(time){
LED_ON;//燈亮
}
else
LED_OFF;

2. 51單片機按鍵控制按下K1四個led燈循環亮,再按一下全滅,c程序怎麼寫

在四個燈循環點亮的狀態下,每點亮一個燈需要延時,如果調用延時子程序,按鍵就顯示不靈敏了,所以,採用定時器中斷的方式控制延時,就不影響按鍵了。

#include<reg51.h>

#include<intrins.h>

模擬圖效果。

3. 51單片機c語音獨立按鍵程序

一個獨立按鍵程序,沒有必要寫成子程序,更沒有必要寫得這么復雜。其實很簡單的。如下程序:
#include<reg52.h>
typedef unsigned int u16;
sbit k1=P1^0;
sbit led=P1^1;
void delay(u16 i)
{
while(i--);
}
void main()
{
led=0;
while(1)
{
if(k1==0)
{
delay(700);
if(k1==0)
{
led=~led;
}
while(k1==0); //等待按鍵釋放
}
}
}

4. 求一段51單片機按鍵C語言程序詳解

P1.0、P1.1都控制 LED
試試下面程序:

#include <reg51.h>
sbit led = P1^0;
sbit key = P1^7;
void main()
{
while(1) led = key;
}

P1.1知道用

5. 51單片機c語言設計,按鍵控制數碼管,依次按下顯示0到9循環

#include<reg51.h>

sbitk1=P1^0;

#define uint16 unsigned int

#define uchar unsigned char

uchar code shuzu[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void delay()
{

uint16 i=1000;

while(i--);
}

void main()

{

uchar n ;

P2=0xfe;

P1=0xff;

while(1)

{

if(k1==0)
{

if(n>=9) n=0;

else n++;

P0=shuzu[n];

while(!k1);

delay();

while(!k1);

}

}

}

(5)51單片機按鍵c程序擴展閱讀

51單片機的功能特性

1,可以模擬63K程序空間,接近64K 的16位地址空間;

2,可以模擬64Kxdata 空間,全部64K 的16位地址空間;

3,可以真實模擬全部32 條IO腳;

4,完全兼容keilC51 UV2 調試環境,可以通過UV2 環境進行單步,斷點, 全速等操作;

5,可以使用C51語言或者ASM匯編語言進行調試 ;

6,可以非常方便地進行所有變數觀察,包括滑鼠取值觀察,即滑鼠放在某 變數上就會立即顯示出它此的值;

7,可選 使用用戶晶振,支持0-40MHZ晶振頻率;

8,片上帶有768位元組的xdata,您可以在模擬時選 使用他們,進行xdata 的模擬;

9,可以模擬雙DPTR 指針;

10,可以模擬去除ALE 信號輸出. ;

11,自適應300-38400bps 的所有波特率通訊;

12,體積非常細小,非常方便插入到用戶板中.插入時緊貼用戶板,沒有連接電纜,這樣可以有效地減少運行中的干擾,避免模擬時出現莫名其妙的故障;

13,模擬插針採用優質鍍金插針,可以有效地防止日久生銹,選擇優質園腳IC插座,保護模擬插針,同時不會損壞目標板上的插座. ;

14,模擬時監控和用戶代碼分離,不可能產生不能模擬的軟故障;

15,RS-232介面不計成本採用MAX202集成電路,串列通訊穩定可靠,絕非一般三極體的簡易電路可比。

6. 51單片機1按鍵切換3種不同狀態的c程序

主程序大致是這樣的
flag=0;//記錄按鍵次數
While(1)
{
if(key==0){delayms(20);if(key==0)flag++;}//按鍵檢測
if(flag==3)flag=0;
if(flag==0){正向流水}
else if(flag==1){反向流水}
else {間隔流水}
}存在問題,由於流水燈執行時間較長,因此對按鍵響應緩慢,可以在流水燈之間加入按鍵檢測語句,當檢測到按鍵按下時,用break語句退出當前循環

7. 51單片機C語言編程如何實現長按按鍵實現數值的累加

這個可以用定時器來做,比如檢查某鍵,按鍵時間超過2秒後一個變數開始累加知道鍵釋放為止。實現方法如下:
#include<reg51.h>
#define
uint
unsigned
int
#define
uchar
unsigned
char
uint
v=0,time=0;
sbit
key=P1^0;
void
t0isr()
interrupt
1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
time++;
if((key==0)&&(time>40)v++;
//如果按鍵時間超過2秒且鍵未釋放,變數+1
if(key==1)time=0;
//如果鍵釋放,時間復位
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}

8. 簡單的51單片機鍵盤C程序

A|=B;
等價於
A=A|B;
是先進行或運算,再把運算結果賦給A,之後的A已經不是原來的A了。
第一個鍵值判斷後,你就鍵值變數已經被賦予新的值了。
如果正好按的是第一個鍵則能返回1,
如果不是第一個鍵按下,但經過
if((keyvalue|=0xfb)!=0xff)這一判斷,其中的「keyvalue|=0xfb」就把keyvalue變成0xff了,後面的判斷條件自然不會滿足。
把這里的一些等於號再去掉試試看。
另外,建議你對於按鍵掃描程序使用switch
case
語句,這樣條理更清晰。
/*按鍵獲取程序*/
unsigned
int
Key()
{
uchar
keyvalue;
keyvalue=P3;
keyvalue|=0xc3;
if((keyvalue|0xc3)==0xff)
{
Delay(10);
if((keyvalue|0xc3)==0xff)
{
return(0);
}
}
else
{
Delay(10);
if((keyvalue|0xc3)!=0xff)
{
if((keyvalue|0xfb)!=0xff)
{
return(1);}
if((keyvalue|0xf7)!=0xff)
{
return(2);}
if((keyvalue|0xef)!=0xff)
{
return(3);}
if((keyvalue|0xdf)!=0xff)
{
return(4);}
}
}
}

閱讀全文

與51單片機按鍵c程序相關的資料

熱點內容
2021榮放怎麼下載app 瀏覽:203
命令關閉hyperv 瀏覽:146
重啟sftp服務的命令 瀏覽:37
愛情自有天意電影版 瀏覽:31
dns伺服器地址在哪裡獲取 瀏覽:551
海航的伺服器地址 瀏覽:431
蘋果手機怎麼把本地音樂導入app 瀏覽:613
黑暗與光明控制台命令 瀏覽:217
linux伺服器巡檢 瀏覽:680
安卓qq分享屏幕沒聲音怎麼辦 瀏覽:706
空餘時間編程實例 瀏覽:437
430單片機模塊 瀏覽:1004
winrar把文件解壓到哪了 瀏覽:342
bug都是編程的嗎 瀏覽:377
貸款國際版源碼 瀏覽:429
送給程序員的生日禮物 瀏覽:267
帶著空間穿越到紅軍長征的小說 瀏覽:905
蘋果系統python編譯器 瀏覽:790
馬東錫十部必看電影 瀏覽:803
台灣補習老師女學生電影 瀏覽:647