单片机补充案例--速度反馈控制LED亮度
【摘要】 说明:使用中断测速,速度快LED亮,速度慢LED暗。
设备:
码盘
接口
使用外部中断和定时器中断,实现里程计测速,从S到dS(V)的过程。
结合高等数学和离散时间系统,理解机器人车轮转速系统的积分和导数等概念。
程序:
#include<8052.h> #define LSA P1_5#define LSB P1...
说明:使用中断测速,速度快LED亮,速度慢LED暗。
设备:


使用外部中断和定时器中断,实现里程计测速,从S到dS(V)的过程。
结合高等数学和离散时间系统,理解机器人车轮转速系统的积分和导数等概念。
程序:
-
#include<8052.h>
-
-
#define LSA P1_5
-
#define LSB P1_6
-
#define LSC P1_7
-
#define Led P0
-
-
unsigned char speed = 0;
-
unsigned char cnt = 0;
-
char a=0;
-
void EXint_Init(void);
-
void Delayms(unsigned int);
-
void EXINT0() __interrupt 0;
-
void Timer0() __interrupt 1;
-
-
void main()
-
{
-
EXint_Init();
-
LSA=0;
-
LSB=0;
-
LSC=0;
-
while(1)
-
{
-
;
-
}
-
}
-
-
void EXint_Init()
-
{
-
IT0=1;
-
IT1=0;
-
// IPH=0x40;
-
PX1=1;
-
EA=1;
-
EX0=1;
-
TMOD = 0x01;//设置定时器T0工作方式1
-
TL0 = 47104%256;//计数器初值
-
TH0 = 47104/256;
-
TR0 = 1;//启动定时器
-
ET0 = 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
-
{
-
speed++;
-
}
-
-
void Timer0() __interrupt 1 //定时器 T0 中断响应
-
{
-
TL0 = 47104%256; //计数器初值
-
TH0 = 47104/256;
-
cnt++; //计数值自加 1
-
if (cnt > 4) //判断 T0 溢出是否达到 5 次
-
{
-
switch(speed)
-
{
-
case 0: {P0=0xff;} break;
-
case 1: { Led = 0x00;
-
a=2;
-
while(a--);
-
Led = 0xff;
-
a=255;
-
while(a--);} break;
-
case 2: { Led = 0x00;
-
a=4;
-
while(a--);
-
Led = 0xff;
-
a=255;
-
while(a--);} break;
-
case 3: { Led = 0x00;
-
a=8;
-
while(a--);
-
Led = 0xff;
-
a=255;
-
while(a--);} break;
-
case 4: { Led = 0x00;
-
a=16;
-
while(a--);
-
Led = 0xff;
-
a=255;
-
while(a--);} break;
-
case 5: { Led = 0x00;
-
a=32;
-
while(a--);
-
Led = 0xff;
-
a=255;
-
while(a--);} break;
-
case 6: { Led = 0x00;
-
a=64;
-
while(a--);
-
Led = 0xff;
-
a=255;
-
while(a--);} break;
-
case 7: { Led = 0x00;
-
a=128;
-
while(a--);
-
Led = 0xff;
-
a=255;
-
while(a--);} break;
-
default:{P0=0x00;}
-
-
}
-
Delayms(1);
-
cnt=0;
-
speed=0;
-
}
-
}
-
文章来源: zhangrelay.blog.csdn.net,作者:zhangrelay,版权归原作者所有,如需转载,请联系作者。
原文链接:zhangrelay.blog.csdn.net/article/details/109667034
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)