Ⅰ 51單片機獨立式按鍵程序
#include<reg52.h>
unsignedcharID;
sbitk1=P3^7;//定義按鍵埠
voiddelay()
{
TMOD=0x10;//定時器的工作方式
TH1=0xd8;
TL1=0xf0;
TR1=1;
while(!TF1);//這里錯了,是定時器1
TF1=0;
}
voidmain()
{
while(1)
{
if(k1==0)
{
delay();//去抖動
if(k1==0)//檢測按鍵確實按下,進行按鍵處理
{
ID++;
if(ID==0)
{
ID=0;
}
while(!k1);//這里錯了,多餘的加了==0
}
}
switch(ID)
{
case0:P1=0x3f;break;
case1:P1=0x06;break;
case2:P1=0x5b;break;
case3:P1=0x4f;break;
case4:P1=0x66;break;
case5:P1=0x6d;break;
case6:P1=0x7d;break;
case7:P1=0x07;break;
case8:P1=0x7f;break;
case9:P1=0x6f;break;
default:break;
}
}
}
Ⅱ c51單片機怎麼用兩個按鍵控制兩個數碼管的加減,加到99就好,求程序
1、首先先在proteus畫出模擬圖,方便模擬程序。
Ⅲ 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); //等待按鍵釋放
}
}
}
Ⅳ 求一段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知道用
Ⅳ c51單片機按鍵
1.設置一個狀態變數,如flag,定義flag=0為開狀態,flag=1為關狀態。
2.因為是按鍵(不是開關),所以實際上單片機讀取的應該是脈沖形式的輸入。設按鍵接單片機P01引腳,故可採用以下程序實現按鍵掃描
if(P01==0)//按下按鍵,進入下降沿
{
delay2();//20ms延時去按鍵前抖動
while(P01==0);//等待上升沿到 來,即按鍵彈起
flag=~flag;//flag取反,實現狀態切換
}
void delay2()//20ms延時子程序
{
unsigned char i,k;
for(i=0;i<100;i++)
for(k=0;k<100;k++);
}
註:根據按鍵的具體接法,若按下按鍵向單片機輸入低電平,則採用以上程序;若按下按鍵向單片機輸入高電平,則將兩處P01==0均改為P01==1。
Ⅵ 簡單的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);}
}
}
}
Ⅶ 怎麼用C語言/C51程序實現單片機按鍵長按開機與長按關機
1.
首先需要硬體支持,也就是單片機某個引腳可以控制斷電和維持上電
2.
按鍵的的作用也可以給單片機供電,並且還要有個專門的引腳檢測按鍵狀態。
3.
軟體:首先是長按判斷。這個最好用按鍵掃描。就是檢測按鍵按下時候,定時器計時,如果松開就立即清零。在設置一個功能函數檢測定時值,大於兩秒後,就表示長按。
4.
按鍵按下單片機供電開始計時,如果達到長按標准,就輸出引腳控制持續供電,這時候按鍵鬆了也不會斷電。
5.
運行期間,按鍵再次按下並符合長按,那木引腳輸出停止供電,這時候如果按鍵松開,那就徹底沒電關機。
Ⅷ 51單片機按鍵控制
#include<reg52.h>
sbit key=你接按鈕的埠;
sbit led=你接LED的埠;
void delay(unsigned int ms)
{
unsigned int x,y;
for(x=ms;x>0:x--)
for(y=100;y>0;y--);
}
void main()
{
while(1)
{
if(key==0)//判斷鍵是否按下
{
delay(10);//10ms延遲
if(key==0)//消抖
{
led=1;//如果共陽極led=0;
delay(500);
led=0;
}
}
}
}