『壹』 單片機中怎樣定義一個按鍵控制轉換三個模式
參考如下: 假設按鍵按下為低電平; if(key1==0) { while(key1==0);//彈起後執行 { 按鍵1需要執行的功能; } } if(key2==0) { while(key2==0);//彈起後執行 { 按鍵2需要執行的功能; } }
『貳』 單片機用外部中斷0改變流水燈的方式(0~3共4種模式)。
外部中斷一次給temp變數加一if(temp>=4){temp=0;}顯示程序里就根據temp的值來確定流水燈的移動次數就可以實現了。
『叄』 單片機如何控制流水燈每三秒循環一次
for循環三次後,執行while(1); ,這是一條死循環語句,相當於暫停指令,停止在此處。因單片機沒有暫停指令,只好用這行語句代替了。
如果3次後,需要保持亮或滅,可以換一下:
led=1;
led=0;這兩行就行了。
在實現流水燈之前,我們有必要提一點,C51代碼在寫之前,要參考電路圖來寫。拿流水燈來說,我們來看圖二,LED燈,也就是二極體,八隻LED的正極通過一根匯流排接在+5V的電壓上,再看圖一,可知八隻LED燈的負極接在LED、P2的8個I/O口上。根據二極體的導通條件可知,在單片機的IO口輸出低電平時,才能點亮LED燈。
『肆』 c51單片機獨立按鍵控制三種流水燈
#include<reg51.h>
#include<intrins.h>
#defineucharunsignedchar
ucharkeyval,led,led1;
sbitkey=P3^2;
voidext0()interrupt0
{
while(key==0);
keyval++;
keyval%=3;
}
voiddelay(uchara)
{
uchari;
while(a--)for(i=0;i<120;i++);
}
main()
{
led=0xfe;
led1=0x55;
while(1)
{
switch(keyval)
{
case0:P1=led;led=_crol_(led,1);delay(200);break;
case1:P1=led;led=_cror_(led,1),delay(200);break;
case2:P1=led1;led1=~led1;delay(200);brek;
default:break;
}
}
}
『伍』 單片機按鍵控制3個流水燈樣式
把按鍵程序源代碼發上來,別發圖片,而且做的是長圖,那程序根本沒法看,發了也沒用。這樣,才方便復制並幫你改。可現在的圖片,誰看都會頭痛,還哪有心情幫你改,躲還來不及呢,誰願意自找麻煩。
『陸』 如何用單片機實現流水燈,從一依次亮到八,再從八依次亮回一,一直循環
用GPIO寄存器比如PA、PB、PC這類的整段寄存器。配合循環、移位和延時(軟硬都可以)操作,就能很優雅地實現。
單片機(Single-Chip Microcomputer)是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。
單片機又稱單片微控制器,它不是完成某一個邏輯功能的晶元,而是把一個計算機系統集成到一個晶元上。相當於一個微型的計算機,和計算機相比,單片機只缺少了I/O設備。概括的講:一塊晶元就成了一台計算機。它的體積小、質量輕、價格便宜、為學習、應用和開發提供了便利條件。同時,學習使用單片機是了解計算機原理與結構的最佳選擇。
『柒』 51單片機中怎樣用一個按鍵控制三種模式的流水燈,如控制流水燈流水速率(每按一下加速,到三後返回和第一次
#include <reg51.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit anjian = P1^0; //按鍵位
void delay(uint16 h) //延時程序
{
while(h--);
}
main()
{ uint8 k = 0 , i = 0;
P0 = 0xff;
anjian = 1;
while(1)
{
P0 = ~(1<<k++);
if(anjian == 0)
{
delay(200);
if(anjina == 0) i++;
if(i == 3)
i = 0;
}
switch(i)
{
case 0: delay(10000);break;
case 1: delay(20000);break;
case 2: delay(20000); break;
}
if(k==8) k=0;
}
}
//頭一次回答問題,多多支持,全部知識都是自學的,但是我試驗過可以符合你的要求運行,謝謝
『捌』 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語句退出當前循環
『玖』 51單片機C程序:如何實現一個按鍵長按3秒進入程序,再長按3秒關機,短一次卻換流水燈切換模式,共3種模式
長按3秒進入程序可以這樣
while(1)
{
if(key==0)//按鍵按下
{
cnt++;
if(cnt>300)
{
cnt=0;//到3秒,退出本循環進入下一段程序
break;
}
dely(10);//延時10毫秒
}
}
while(1)
{
...//此為主程序段
}
『拾』 單片機流水燈
P0口控制,先奇數亮再偶數亮,循環三次;一個燈上下循環三次;兩個分別從兩邊往中間流動三次;再從中間往兩邊流動三次;不過這個程序實現的應該是這樣的
先奇數亮再偶數亮,循環三次;一個燈上下循環三次;兩個分別從兩邊往中間流動;再從中間往兩邊流動(延時0.1s)
#include< reg52.h>
#include< intrins.h>//頭文件
#define uint unsigned int
#define uchar unsigned char//聲明用unit代替unsigned int,下個同理
void delay();
void main()
{ uchar temp,temp1,temp2,a,b;
while(1)
{ for(b=3;b>0;b--)
{ temp=0xaa;
P0=temp;
delay();
temp=0x55;
P0=temp;
delay();//調用延時函數
}
for(a=3;a>0;a--)
{ temp=0xfe;
for(b=7;b>0;b--)
{ P0=temp;
temp=_crol_(temp,1);
delay();
P0=temp;
delay();
}
}
temp1=0xfe;
temp2=0x7f;
for(a=8;a>0;a--)
{
temp=temp1&temp2;
P0=temp;
delay();
temp1=_crol_(temp1,1);
temp2=_cror_(temp2,1);
}
}
}
void delay()
{ uint a,b;
for(a=100;a>0;a--)
for(b=100;b>0;b--);
} //延時函數
希望可以幫助到您
謝謝