㈠ 51單片機控制16個led燈,要求16個燈依次點亮後依次熄滅
假設16個燈接P0和P1,高電平點亮,每次亮一個燈
程序大致這樣:
uint b;//16位變數對應16個燈
uchar i;
while(1)
{
for(i=0;i<16;i++)
{
b=0x01<<i;
P0=b;//自動取低8位
P1=b<<8;//取高8 位
delayms(200);
}
}
㈡ 51單片機的按鍵控制小燈亮滅的問題(程序類型:c語言)怎麼解決
#include
#define uint unsigned int
sbit LED = P1^0;
sbit KEY1 = P1^2;
void delay(uint);
void main(void)
{
LED = 1; //初始化LED熄滅
KEY1 = 1; //賦值KEY1高電平
while(1)
{
if(!KEY1) //檢測到按鍵按下
{
LED = ~LED; /*LED取反,此時LED = 0,燈亮。當鬆手時,KEY1 = 1,不滿足if語句不
進入循環,LED繼續保持當前狀態即LED = 0,如果再次按下按鍵,此時檢測到KEY1 = 0,進入循
環,LED取反得到LED = 0,燈亮。*/
delay(500); /*此處延遲,保證連續兩次按鍵動作處在程序的延時過程中,不進行其他程序從而不會影響小燈。*/
}
}
}
void delay(uint z) //延時函數
{
uint x, y;
for(x=85; x>0; x--)
for(y=z; y>0; y--);
}
可下載到單片機驗證。