【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);
}
}