dr.lc作者
14年1个月前IP:未同步
477902
16楼
回 14楼(y363300158) 的帖子
做了个脉宽调制的封装子函数。。
LC自己觉得还算挺好用的。。。
就是有些粗糙。。。
延时函数方面很不方便。。

#include<STC12C5A60S2.H>

#define lc_led P1

/*******************************************************
100us延时子函数
*******************************************************/
void delay_100us(unsigned int i)
{
    unsigned int j;
    while(--i!=0)
    {
        for(j=0;j<60;j++);
    }
}

/********************************************************
                 脉宽调制子函数
输入P1口状态,以及输出高电平时间所占比例(即亮度,0~100的
正整数)
********************************************************/
void bright(unsigned char lc_light,unsigned int lc_bright)
{
    while(lc_bright--!=0)
    {
        lc_led=lc_light;
        delay_100us(1);
    }
    lc_bright=100-lc_bright;
    while(lc_bright--!=0)
    {
        lc_led=0xff;
        delay_100us(1);
    }
}

void main(void)//P7所接的led由亮到暗,最终熄灭
{
    unsigned int a,b;
    a=100;
    do
    {
        for(b=0;b<100;b++)
        {
            bright(0x7f,a);
        }
        a=a-5;
    }
    while(a!=0);
    for(b=0;b<1000;b++)
    {
        bright(0x7f,a);
    }
}

传统。。。
截图。。。

程序1.jpg
程序2.jpg

希望高手能改进一下。。。
最好可以做的精巧一点,这个实在是太糙了。。
计时太不准。。
评论
文号 / 477902

千古风流
名片发私信
学术分 1
总主题 95 帖总回复 1627 楼拥有证书:学者 笔友
注册于 2012/04/30 16:18:29最后登录 2018/01/10 01:06:47
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:0

个人简介

暂未填写
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的