单片机补充案例--数字IO口呼吸灯
【摘要】 说明:不使用PWM口,而是使用数字口和时延函数模拟,从而实现普通IO口对LED灯的亮度控制。
设备:
LED灯
这个案例用于解释常见的一种设计思想:软解码和硬解码。
软解码:需要使用CPU实现;
硬解码:需要定时器等硬件支持。
程序:
循环演示
#include <8052.h> #define LSA P1_5 #defi...
说明:不使用PWM口,而是使用数字口和时延函数模拟,从而实现普通IO口对LED灯的亮度控制。
设备:
这个案例用于解释常见的一种设计思想:软解码和硬解码。
软解码:需要使用CPU实现;
硬解码:需要定时器等硬件支持。
程序:
循环演示
-
#include <8052.h>
-
-
#define LSA P1_5
-
#define LSB P1_6
-
#define LSC P1_7
-
#define Led P0
-
-
int main(void)
-
{
-
unsigned int a;
-
LSA = 0;
-
LSB = 0;
-
LSC = 0;
-
while(1)
-
{
-
Led = 0x00;
-
//a = 50000;
-
//a = 9;
-
//a = 1; //1000
-
a=100;
-
while(a--);
-
Led = 0xff;
-
//a = 50000;
-
//a = 1;
-
//a = 9;
-
a=900;
-
while(a--);
-
}
-
}
外部控制
-
#include<8052.h>
-
-
#define LSA P1_5
-
#define LSB P1_6
-
#define LSC P1_7
-
#define Led P0
-
-
char brightness=0,a=0;
-
-
void EXint_Init(void);
-
void Delayms(unsigned int);
-
void EXINT0() __interrupt 0;
-
-
void main()
-
{
-
EXint_Init();
-
LSA=0;
-
LSB=0;
-
LSC=0;
-
while(1)
-
{
-
Led = 0x00;
-
a=brightness;
-
while(a--);
-
Led = 0xff;
-
a=255;
-
while(a--);
-
}
-
}
-
-
void EXint_Init()
-
{
-
IT0=1;
-
IT1=0;
-
// IPH=0x40;
-
PX1=1;
-
EA=1;
-
EX0=1;
-
EX1=1;
-
}
-
-
-
void Delayms(unsigned int xms)
-
{
-
unsigned int i,j;
-
for(i = xms;i > 0;i--)
-
{
-
for (j = 110;j > 0;j--);
-
}
-
}
-
-
void EXINT0() __interrupt 0
-
{
-
brightness++;
-
}
文章来源: zhangrelay.blog.csdn.net,作者:zhangrelay,版权归原作者所有,如需转载,请联系作者。
原文链接:zhangrelay.blog.csdn.net/article/details/109667001
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)