⑴ 單片機怎麼用按鍵控制開始 停止和清零
//定義IO和變數
sbit start = P1^1;
sbit stop = P1^2;
sbit reset = P1^3;
bit flag_start;//計數標志位
uint sec;//秒
//按鍵功能
if(start==0)
flag_start=0;
if(stop==0)
flag_start=1;
if(reset==0)
{flag_start=0;sec=0;}
//計數程序
if(flag_start)
{sec++;}
單片機(Microcontrollers)是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。
⑵ 單片機按鈕開關名稱
開關在單片機中叫蜂鳴器。
單片機開關也可以叫元器件名稱蜂鳴器。一般型104無極電容30p無極電容10uF有極電容1uF有極電容發光二極體USB介面串口下載公頭單排針單排座可調電阻九腳電容器,(散件)51單片機模塊遙控繼電器開關智能控制萬用板電子套件。
單片機是一種集成電路晶元。單片機又稱單片微控制器,是把一個計算機系統集成到一個晶元上。相當於一個微型的計算機,和計算機相比,單片機只缺少了I/O設備,一塊晶元就成了一台計算機。
單片機介紹
單片機又稱單片微控制器,它不是完成某一個邏輯功能的晶元,而是把一個計算機系統集成到一個晶元上。相當於一個微型的計算機,和計算機相比,單片機只缺少了I/O設備,概括的講:一塊晶元就成了一台計算機。
它的體積小、質量輕、價格便宜、為學習、應用和開發提供了便利條件。同時,學習使用單片機是了解計算機原理與結構的最佳選擇。
單片機的使用領域已十分廣泛,如智能儀表、實時工控、通訊設備、導航系統、家用電器等。
⑶ 單片機按鍵有幾種方式
按鍵檢測一般有:1、查詢、2、掃描、3中斷等方式。查詢方式佔用主循環資源,就是說主程序主要干檢測按鍵的活兒,若增加其他程序容易出錯。掃描方式效果最好,可以在性能和佔用資源間平衡,中斷方式,適用於響應速度極高的場景,但抗干擾較差。
⑷ 單片機 按鍵
/*程序中的aa為題目中的a*/
#include<reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitk1=P2^0;
ucharaa;
voiddelay(ucharx)
{
uchary;
while(x--)
for(y=115;y>0;y--);
}
voiddelay1(uintxx)
{
ucharyy;
while(xx--)
for(yy=115;yy>0;yy--);
}
voidmain()
{ucharbb=0;
aa=0;
while(1)
{P1=aa;//為了便於觀察aa的變化
if(k1==0)//是否按下
{delay(10);//去抖
if(k1==0&&bb==0)//第一次按下
{bb++;
delay1(800);
if(k1==0)aa++;//長按
elseaa=0;//簡單按下
}
elseif(k1==0&&bb!=0)//非第一次按下
{
bb++;
delay1(800);
if(k1==0)aa--;//長按
elseaa=1;非長按
}
}
}
}
⑸ 單片機按鍵
voiddelay(uintz)
{intx,y;
for(x=z;x>0;x--)
for(y-110;y>0;y--);這里的減號改為等號
}
voidmain()
{
uchartemp=0xfe;
while(1)
{
if(k1==0)
{
P1=temp;
delay(500);
temp=_crol_(temp,1);
}
if(k1==1)
{
P1=temp;
delay(500);
temp=_cror_(temp,1);
}
}
}
這樣的話就是你不按按鍵循環右移,按下按鍵不放循環左移,放開按鍵又循環右移
你要想亮500ms滅500ms的話就是
voidmain()
{
uchartemp=0xfe;
while(1)
{
if(k1==0)
{
P1=temp;
delay(500);
P1=0xff;
delay(500);
temp=_crol_(temp,1);
}
if(k1==1)
{
P1=temp;
delay(500);
P1=0xff;
delay(500);
temp=_cror_(temp,1);
}
}
}
⑹ 單片機按鍵功能
按鍵按照結構原理可分為兩類,一類是觸點式開關按鍵,如機械式開關、導電橡膠式開關等;另一類是無觸點式開關按鍵,如電氣式按鍵,磁感應按鍵等。前者造價低,後者壽命長。目前,微機系統中最常見的是觸點式開關按鍵。
2.輸入原理
在單片機應用系統中,除了復位按鍵有專門的復位電路及專一的復位功能外,其它按鍵都是以開關狀態來設置控制功能或輸入數據的。當所設置的功能鍵或數字鍵按下時,計算機應用系統應完成該按鍵所設定的功能,鍵信息輸入是與軟體結構密切相關的過程。
對於一組鍵或一個鍵盤,總有一個介面電路與CPU相連。CPU可以採用查詢或中斷方式了解有無將鍵輸入,並檢查是哪一個鍵按下,將該鍵號送入累加器ACC,然後通過跳轉指令轉入執行該鍵的功能程序,執行完後再返回主程序
⑺ 單片機按鍵控制
補充下樓上的回答,delay()為延時子函數,一般延時10mS即可,用於鍵盤消抖,延時程序可根據單片機的主頻或者定時計數器來實現
⑻ 51單片機按鍵
#include<reg51.h>
#define uchar unsigned char
uchar num,time,limit=2;
sbit led1=P1^0;
sbit key1=P2^0;
bit flag=0;
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
time++;
if(time>=60)
{
TR0=0;
time=0;
flag=1;
}
}
void t1isr() interrupt 3
{
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
num++;
if(num>limit)
{
num=0;
led1=~led1;
}
}
main()
{
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
ET0=1;
ET1=1;
EA=1;
while(1)
{
if(key1==0)
{
time=0;
num=0;
TR1=1;
TR0=1;
flag=0;
while(key1==0);
if(flag==1)limit++;
}
}
}
⑼ 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。
⑽ 單片機的獨立按鍵
#include<reg51.h> // 4*4 按鍵+數碼管模擬,可以參考。
#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);
}
}