您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 统计图表 > 51单片机PWM波实现拖尾灯
/**********************************在百度上没搜到关于用定时器输出控制LED产生拖尾灯的51单片机程序,经过努力弄从一个小的拖尾灯,希望对大家有用!!!**********************************/#includereg52.h#defineucharunsignedchar#defineuintunsignedintucharcount=1;sbitP00=P0^0;//管脚定义sbitP01=P0^1;sbitP02=P0^2;sbitP03=P0^3;sbitP04=P0^4;sbitP05=P0^5;sbitP06=P0^6;sbitP07=P0^7;uintLED[8]={0};//八个LED定义及初始化/**********************************延时函数**********************************/voiddelay(uintk){uintdatai,j;for(i=0;ik;i++){for(j=0;j100;j++){;}}}/**********************************T0初始化,定时0.2ms**********************************/voidT0_init(void){TMOD=0x01;TH0=(65536-200)/256;TL0=(65536-200)%256;ET0=1;TR0=1;EA=1;}/**********************************T0中断服务程序,PWM输出**********************************/voidtime0(void)interrupt1{TH0=(65536-200)/256;TL0=(65536-200)%256;count++;if(count8)count=0;elsecount++;if(countLED[0])//PWM输出,本人数码管为共阳,0为点亮,1为熄灭P00=0;elseP00=1;if(countLED[1])P01=0;elseP01=1;if(countLED[2])P02=0;elseP02=1;if(countLED[3])P03=0;elseP03=1;if(countLED[4])P04=0;elseP04=1;if(countLED[5])P05=0;elseP05=1;if(countLED[6])P06=0;elseP06=1;if(countLED[7])P07=0;elseP07=1;}/**********************************主程序实现拖尾灯效果**********************************/voidmain(void){inti;T0_init();for(i=0;i8;i++)LED[i]=i;//while(1){/*****先从P00开始亮,四盏灯一个单位亮度由高位向低位递减,整体向高位(P07推进),知道P07最亮后熄灭****/LED[0]=10;delay(100);LED[1]=10;LED[0]=6;delay(100);LED[2]=10;LED[1]=6;LED[0]=2;for(i=0;i5;i++){LED[i]=0;LED[i+1]=2;LED[i+2]=6;LED[i+3]=10;delay(100);}LED[5]=0;LED[6]=2;LED[7]=6;delay(100);LED[6]=0;LED[7]=2;delay(100);LED[7]=0;delay(300);/***与前面过程相反进行扫描**/LED[7]=10;delay(100);LED[6]=10;LED[7]=6;delay(100);LED[5]=10;LED[6]=6;LED[7]=2;delay(100);for(i=7;i2;i--){LED[i]=0;LED[i-1]=2;LED[i-2]=6;LED[i-3]=10;delay(100);}LED[2]=0;LED[1]=2;LED[0]=6;delay(100);LED[1]=0;LED[0]=2;delay(100);LED[0]=0;delay(300);}}
本文标题:51单片机PWM波实现拖尾灯
链接地址:https://www.777doc.com/doc-4208683 .html