单片机例子.docx
《单片机例子.docx》由会员分享,可在线阅读,更多相关《单片机例子.docx(29页珍藏版)》请在冰豆网上搜索。
单片机例子
1.闪烁的LED灯
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitLED=P1^0;
voidDelayMS(uintx)
{
uchari;
while(x--)
{
for(i=120;i>0;i--);
}
}
voidmain()
{
while
(1)
{
LED=~LED;
DelayMS(150);
}
}
2.从左到右的流水灯
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
voidDelayMS(uintx)
{
uchari;
while(x--)
{
for(i=120;i>0;i--);
}
}
voidmain()
{
P0=0xFE;
while
(1)
{
P0=_crol_(P0,1);
DelayMS(150);
}
}
3.左右来回的流水灯
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
voidDelayMS(uintx)
{
uchart;
while(x--)
{
for(t=120;t>0;t--);
}
}
voidmain()
{
uchari;
P2=0x01;
while
(1)
{
for(i=7;i>0;i--)
{
P2=_crol_(P2,1);
DelayMS(150);
}
for(i=7;i>0;i--)
{
P2=_cror_(P2,2);
DelayMS(150);
}
}
}
4.花样流水灯程序
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodePattern_P0[]=
{
0xfc,0xf9,0xf3,0xe7,0xcf,0x9f
};
ucharcodePattern_P2[]=
{
0xf5,0xf6,0xfe,0x54,0x56,0x76,0xd7,0x49,0xa9,0xe4,0xc6
};
voidDelayMS(uintx)
{
uchart;
while(x--)
{
for(t=120;t>0;t--);
}
}
voidmain()
{
uchari;
while
(1)
{
for(i=136;i>0;i--)
{
P0=Pattern_P0[i];
P2=Pattern_P2[i];
DelayMS(150);
}
}
}
5.LED交通模拟灯
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitRED_A=P0^0;
sbitYELLOW_A=P0^1;
sbitGREEN_A=P0^2;
sbitRED_B=P0^3;
sbitYELLOW_B=P0^4;
sbitGREEN_B=P0^5;
ucharFlash_Count=0;
Operation_Type=1;
voidDelayMS(uintx)
{
uchart;
while(x--)
{
for(t=120;t>0;t--);
}
}
voidTraffic_lignt()
{
switch(Operation_Type)
{
case1:
RED_A=1;YELLOW_A=1;GREEN_A=0;
RED_B=0;YELLOW_B=1;GREEN_B=1;
DelayMS(2000);
Operation_Type=2;
break;
case2:
DelayMS(200);
YELLOW_A=~YELLOW_A;
if(++Flash_Count!
=10)
return;
Flash_Count=0;
Operation_Type=3;
break;
case3:
RED_A=0;YELLOW_A=1;GREEN_A=1;
RED_B=1;YELLOW_B=1;GREEN_B=0;
DelayMS(2000);
Operation_Type=4;
break;
case4:
DelayMS(200);
YELLOW_B=~YELLOW_B;
if(++Flash_Count!
=10)
return;
Flash_Count=0;
Operation_Type=1;
break;
}
}
voidmain()
{
while
(1)
{
Traffic_lignt();
}
}
6.单只数码管显示0到9
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodeDSY_CODE[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x82,0xf8,0x80,0x90,0xff
};
voidDelayMS(uintx)
{
uchart;
while(x--)
for(t=120;t>0;t--);
}
voidmain()
{
uchari=0;
P0=0x00;
while
(1)
{
P0=~DSY_CODE[i];
i=(i+1)%10;/*显示0-9*/
DelayMS(200);
}
}
7.8只数码管滚动显示单个数字
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodeDSY_CODE[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
};
voidDelayMS(uintx)
{
uchari;
while(x--)
{
for(i=200;i>0;i--);
}
}
voidmain()
{
uchari,k=0x80;
while
(1)
{
for(i=8;i>0;i--)
{
P2=0xff;
k=_crol_(k,1);
P0=DSY_CODE[8-i];
P2=k;
DelayMS(3);
}
}
}
8.8个数码管显示多个不同数字
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodeDSY_CODE[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
};
voidDelayMS(uintx)
{
uchart;
while(x--)
{
for(t=120;t>0;t--);
}
}
voidmain()
{
uchark,m=0x80;
P0=0xff;
P2=0x00;
while
(1)
{
for(k=0;k<8;k++)
{
m=_crol_(m,1);
P2=m;
P0=DSY_CODE[k+1];
DelayMS
(2);
}
}
}
9.8只数码管闪烁显示
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodeDSY_CODE[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
};
ucharcodeDSY_IDX[]=
{
0x01;0x02;0x04;0x08;0x10;0x20;0x40;0x80
}
voidDelayMS(uintx)
{
uchart;
while(x--)
{
for(t=120;t>0;t--);
}
}
voidmain()
{
uchark,m;
P0=0xff;
P2=0x00;
while
(1)
{
for(k=0;k<30;k++)
{
for(m=0;m<8;m++)
{
P2=codeDSY_IDX[k];
P0=DSY_CODE[m];
DelayMS
(2);
}
}
P2=0x00;
DelayMS(1000);
}
}
10.K1-K4控制LED移位
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
voidDelayMS(uintx)
{
uchari;
while(x--)
{
for(i=200;i>0;i--);
}
}
voidMove_LED()
{
if((P1&=0x10)==0)P0=_cror_(P0,1);
elseif((P1&=0x20)==0)P0=_crol_(P0,1);
elseif((P1&=0x40)==0)P2=_cror_(P2,1);
elseif((P1&=0x80)==0)P2=_crol_(P2,1);
}
voidmain()
{
ucharRecent_Key=0xff;
P0=0xfe;
P1=0xfe;
P2=0xfe;
while
(1)
{
if(Recent_Key!
=P1)
{
Recent_Key=P1;
Move_LED();
DelayMS(10);
}
}
}
11.K1-K4键状态显示
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitLED1=P0^0;
sbitLED2=P0^1