在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 2464|回复: 5

以最快的时间最好的方法学好单片机

[复制链接]
头像被屏蔽
发表于 2009-7-18 18:25:52 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2009-7-18 23:29:47 | 显示全部楼层

TX-1C C语言 PWM控制LED渐变循环

/*8个灯从第一个开始依次渐亮,直到最后一个。
再从最后一个起渐暗,直到第一个。如此循环往复*/

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit P00=P1^0; //P1口为低电平时LED亮
sbit P01=P1^1;
sbit P02=P1^2;
sbit P03=P1^3;
sbit P04=P1^4;
sbit P05=P1^5;
sbit P06=P1^6;
sbit P07=P1^7;
uchar cnt[8]={8,16,24,32,40,48,56,64};
//定义8个初始亮度级别
uchar flgdir[8]={1,1,1,1,1,1,1,1};
//在LED从暗到渐亮再从亮到渐暗是做计数方向标志
void main()
{
TMOD=0x11; //定时器0定时0.25mS,定时器1定时10ms
TH0=0xFF;
TL0=0x19;
TH1=0xDC;
TL1=0x00;
ET0=1;
ET1=1;
PT0=1;
EA=1;
TR0=1;
TR1=1;
P1=0x00;
while(1);
}
void timer0() interrupt 1
{
static uchar n;
TH0=0xFF;
TL0=0x19;
n++;
if(n==cnt[0])P00=1; //用n定时计数与cnt比较用来在P0各个位出现不同脉宽的PWM波行
if(n==cnt[1])P01=1;
if(n==cnt[2])P02=1;
if(n==cnt[3])P03=1;
if(n==cnt[4])P04=1;
if(n==cnt[5])P05=1;
if(n==cnt[6])P06=1;
if(n==cnt[7])P07=1;
if(n>64)
{
   n=0;
   P1=0;
}
}
void timer1() interrupt 3
{
uchar i;
TH1=0xDC;//10ms即100Hz频率改变cnt的值用来调整脉宽使LED出现渐变的效果
TL1=0x00;
for(i=0;i<8;i++)
{
   if(flgdir==1)
   {
    cnt++;
    if(cnt>63)flgdir=0;
   }
   else
   {
    cnt--;
    if(cnt<9)flgdir=1;
   }
}
}
发表于 2009-7-19 08:33:44 | 显示全部楼层
晕,是广告啊
发表于 2009-7-19 10:56:03 | 显示全部楼层
也不全是广告,这确实是学单片机最有效的方法,也不一定要买我的开发板,只要能做实验的就可以,另外,欢迎大家跟帖讨论怎样学习单片机,也可以把自己做的小程序发到这里来
发表于 2014-9-1 15:56:15 | 显示全部楼层
谢谢 !!!!!
发表于 2015-5-19 18:20:31 | 显示全部楼层
谢谢 !!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-16 06:32 , Processed in 0.031068 second(s), 12 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表