【A級題】
【1.一盞LED燈閃爍,LED燈接在P3.0引腳上;】
#include<STC15F2K60S2.H>
#define uint unsigned int
sbit led=P3^0;
/*****延時函數*****/
void Delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
/******************/
void main()
{
while(1)
{
led=0;
Delayms(200);
led=1;
Delayms(200);
}
}
【2.點亮2盞LED燈,LED燈分別接在P3.0和P3.1引腳上;】
#include <STC15F2K60S2.H>
sbit led1=P3^0;
sbit led2=P3^1;
void main()
{
led1=0;
led2=0;
while(1);
}
【3.兩盞LED燈同時閃爍,LED燈分別接在P3.0和P3.1引腳上;】
#include <STC15F2K60S2.H>
#define uint unsigned int
sbit led1=P3^0;
sbit led2=P3^1;
void Delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
while(1)
{
led1=0;
led2=0;
Delayms(200);
led1=1;
led2=1;
Delayms(200);
}
}
【4.兩盞LED燈交替閃爍,一盞亮的時間長,一盞亮的時間短;】
#include <STC15F2K60S2.H>
#define uint unsigned int
sbit led1=P3^0;
sbit led2=P3^1;
void Delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
while(1)
{
led1=0;
led2=1;
Delayms(1000);
led1=1;
led2=0;
Delayms(200);
}
}
【5.用‘位移法’輪流點亮8盞LED燈,8盞LED燈水平排列,LED燈輪流從右到左循環點亮;】
3^0--3^7過程中只有一盞燈亮
#include<STC15F2K60S2.H>
#define uint unsigned int
#define uchar unsigned char
sbit led=P2;
void Delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for (j=110;j>0;j--);
}
void main()
{
uchar temp,i;
temp=0x01;
for(i=0;i<8;i++)
{
P2=~temp;
Delayms(200);
temp=temp<<1;
}
}
【6.用位移法輪流點亮8盞LED燈,8盞LED燈水平排列,LED燈輪流從左到右循環點亮;】
3^7--3^0過程中只有一盞燈亮
#include<STC15F2K60S2.H>
#define uint unsigned int
#define uchar unsigned char
sbit led=P2;
void Delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for (j=110;j>0;j--);
}
void main()
{
uchar temp,i;
temp=0x80;
for(i=8;i>0;i--)
{
P2=~temp;
Delayms(200);
temp=temp>>1;
}
}
【7.用位移法依次點亮8盞LED燈,8盞LED燈水平排列,LED燈依次從右到左依次點亮!
“過程中亮過的不滅”
#include <STC15F2K60S2.H>
#define unint unsigned int
#define unchar unsigned char
sbit led=P2;
char temp;
void Delayms(unint n)
{
unint i;
while(n--)
{
for(i=123;i>0;i--);
}
}
void main()
{
while(1)
{
for(temp=0;temp<9;temp++)
{
P2=0xff<<temp;
Delayms(500);
}
}
}
【8.用位移法依次點亮8盞LED燈,8盞LED燈水平排列,LED燈依次從左到右依次點亮!
“過程中亮過的不滅”
#include <STC15F2K60S2.H>
#define unint unsigned int
#define unchar unsigned char
sbit led=P2^0;
char aa;
void Delayms(unint n)
{
unint i;
while(n--)
{
for(i=123;i>0;i--);
}
}
void main()
{
while(1)
{
for(aa=0;aa<9;aa++)
{
P2=0xff>>aa;
Delayms(500);
}
}
}
【9.用位移法依次熄滅8盞LED燈,8盞LED燈水平排列,LED燈依次從右到左依次熄滅!
#include <STC15F2K60S2.H>
#define uint unsigned int
sbit led=P2;
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
uint i,temp;
while(1)
{ P2=0x00;
delay(500);
temp=0x01;
for(i=0;i<8;i++)
{
P2=temp;
delay(500);
temp=temp<<1;
temp=temp|0x01;
}
}
}
【10.用位移法依次熄滅8盞LED燈,8盞LED燈水平排列,LED燈依次從左到右依次熄滅!
#include <STC15F2K60S2.H>
#define uint unsigned int
sbit led=P2;
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
uint i,temp;
while(1)
{ P2=0x00;
delay(500);
temp=0x80;
for(i=8;i>0;i--)
{
P2=temp;
delay(500);
temp=temp>>1;
temp=temp|0x80;
}
}
}
【11.八盞LED燈顯示0-255二進制數,亮為1,滅為0,LED燈共陽極連接!
#include <STC15F2K60S2.H>
#define uint unsigned int
#define uchar unsigned char
void Delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
uchar temp;
while(1)
{
temp++;
P2=~temp;
Delayms(200);
}
}
【B級題】
【1.花樣流水燈
連接要求:8盞LED燈上下排列接在單片機P2口;】
#include <STC15F2K60S2.H>
#define uint unsigned int
#define uchar unsigned char
uchar code led[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,
0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,
0x00,0xff,0x00,0xff,
0x7e,0x3c,0x18,0x00,0x18,0x3c,0x7e,0xff,0x7e,0x3c,0x18,0x00,0x18,0x3c,0x7e,0xff,
0xfe,0xfb,0xef,0xbf,0xaa,0xfd,0xf7,0xdf,0x7f,0x55,0xfe,0xfb,0xef,0xbf,0xaa,0xfd,0xf7,0xdf,0x7f,0x55,
0x00,0xff,0x00,0xff};
void Delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{ uint i;
while(1)
{
for(i=0;i<72;i++)
{
P2=led[i];
Delayms(400);
}
}
}
【2.簡單交通燈
連接要求:交通燈接在單片機的P2口;】
#include <STC15F2K60S2.H>
#define uint unsigned int
sbit led=P2;
void Delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
while(1)
{
P2=0X1E;
Delayms(1000);
P2=0X1D;
Delayms(200);
P2=0X1F;
Delayms(200);
P2=0X1D;
Delayms(200);
P2=0X1F;
Delayms(200);
P2=0X1D;
Delayms(200);
P2=0X1F;
Delayms(200);
P2=0X33;
Delayms(1000);
P2=0X2B;
Delayms(200);
P2=0X3B;
Delayms(200);
P2=0X2B;
Delayms(200);
P2=0X3B;
Delayms(200);
P2=0X2B;
Delayms(200);
P2=0X3B;
Delayms(200);
}
}
【3.連續顯示0-255個二進制數
連接要求:8盞LED燈水平排列接地,并受8個PNP管控制,其控制端基級通過1k電阻連在P2口。PNP發射極通過300Ω電阻接5V電源,集電極接LED燈。
功能要求:8盞LED燈按順序依次顯示0-255個二進制數,亮表示為1,滅表示為0。】
#include <STC15F2K60S2.H>
#define uint unsigned int
#define uchar unsigned char
void Delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
uchar a;
while(1)
{
P2=0X00;
a++;
P0=~a;
Delayms(200);
}
}
|