基于51单片机实现旋转LED灯报警(Proteus仿真)

WeChat:【嵌入式工程师成长日记】

https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484096&idx=2&sn=d3b736ae310c318b7316e5d92b8dd66e&chksm=cf430798f8348e8ed59d201120064b481a8b5e92ab979e471b781acee209d894e9ba86f77b3f&token=3445295&lang=zh_CN#rdhttps://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484096&idx=2&sn=d3b736ae310c318b7316e5d92b8dd66e&chksm=cf430798f8348e8ed59d201120064b481a8b5e92ab979e471b781acee209d894e9ba86f77b3f&token=3445295&lang=zh_CN#rd

具体功能实现:

当按下开关时,蜂鸣器报警,同时LED旋转式亮灯。

使用器件:

AT89C51、按键、电阻、蜂鸣器(SOUNDER)、8只LED灯

Proteus仿真原理图及视频 :

仿真: 

知识介绍: 

Proteus布线:

为了让整个原理图看上去简洁明了,我们对元器件的导线进行标号,而不是直接和芯片相连。

定时中断系统简图:

定时器资源:

定时器个数:3个(T0,T1,T2),T0和T1与传统的51单片机兼容,T2是此型号单片机增加的资源。

(T0和T1的操作方式是所有51单片机共有的)

中断号:

外部中断0            interrupt 0

定时器0               interrupt 1

外部中断1           interrupt 2

定时器中断1        interrupt 3

串口中断             interrupt 4

中断系统:

执行现程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。

主要代码(C语言)KEIL5实现:

#include <reg52.h>

#include <intrins.h>

#define uint unsigned int

#define uchar unsigned char

sbit SPK = P3^7;

uchar FRQ = 0x00;

void Delayms(uint ms)

{

uchar i;

while(ms--)

{

for(i=0;i<120;i++);

}

}

void main()

{

P2 = 0x00;

TMOD = 0x11;

TH0 = 0x00;

TL0 = 0xff;

IT0 = 1;

IE = 0x8b;

IP = 0x01;

TR0 = 0;

TR1 = 0;

while(1)

{

FRQ++;

Delayms(1);

}

}

void EX0_INT() interrupt 0

{

TR0 = !TR0;

TR1 = !TR1;

if(P2 == 0x00)

P2 = 0xe0;

else

P2 = 0x00;

}

void T0_INT() interrupt 1

{

TH0 = 0xfe;

TL0 = FRQ;

SPK = ~SPK;

}

void T1_INT() interrupt 3

{

TH0 = -45000/256;

TL0 = -45000%256;

P2 = _crol_(P2,1);

}

问题解答 :

Q:定时器计算如何快速得到?(无需计算)

打开51单片机烧录软件STC-ISP,找到“定时器计算器”,根据红色方框中的进行设置,可以快速得到定时器初始化代码,可直接使用。

Q:

在此项目中为什么LED灯高电平有效?

A:

LED灯的特性之一是单向导电性,阳极大于阴极才能够导通,阴极接地可以想象成0,所以阳极置1可以达到阳极大于阴极。

WeChat:【嵌入式工程师成长日记】

https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484096&idx=2&sn=d3b736ae310c318b7316e5d92b8dd66e&chksm=cf430798f8348e8ed59d201120064b481a8b5e92ab979e471b781acee209d894e9ba86f77b3f&token=3445295&lang=zh_CN#rdhttps://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484096&idx=2&sn=d3b736ae310c318b7316e5d92b8dd66e&chksm=cf430798f8348e8ed59d201120064b481a8b5e92ab979e471b781acee209d894e9ba86f77b3f&token=3445295&lang=zh_CN#rd

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值