基于国信长天单片机竞赛实训平台的 LED 亮度控制程序设计如下:
#include <STC15F2K60S2.h>
#include <intrins.h>
//1、系统初始化(J3要调到io模式,否则无法将控制端连接起来)
void system_init()
{
P2=0XA0;//打开蜂鸣器、继电器控制端
P0=0X00;//关闭蜂鸣器、继电器
P2=0X80;//打开led控制端
P0=0XFF;//关闭led
P2=0X00;//取消对任何外设的控制
}
//2、led显示(要求1开灯,0熄灯)
void led_display(unsigned char i)
{
P2=0X80;//打开led控制端
P0=~i;
P2=0X00;//取消对任何外设的控制
}
//3、延时函数
void Delay1ms(unsigned int num) //@12.000MHz
{
unsigned char i, j;
i = 12*num;
j = 169/num;
do
{
while (--j);
} while (--i);
}
//4、设置亮度等级
void led_level(unsigned char level)
{
unsigned char i,j;
for(i=0;i<level;i++)
{
for(j=0;j<100;j++)
{
led_display(0xff);//全亮
Delay1ms(i+1);//延时时间越来越长,即亮的时间越来越长
led_display(0x00);//全灭
Delay1ms(4-i);//延时时间越来越短,即暗的时间越来越短
}
}
}
void main()
{
system_init();
while(1)
{
//led_display(0x01);
led_level(3);
}
}