51单片机初学:声光警报器

首页 / 随随便便写 / 正文

前言

开学上大二了,第一个学期开始接触到51单片机开发的课程,语言是C语言的分支(C51),作为初学者感到有点力不从心,还好家义兄学的专业是计算机方面的。
初学的时候我又不会的我就趁他放假在家我到他家里请教他问题。记得那天下午在他家待了4个 小时,我问的问题都很简单(我比较憨 )。

正文

我们是没有c语言基础的,刚上这门课的时候老师不讲c语言的知识,他第一节课的时候都不讲c语言的知识,他就在直播(因为当时我们再上网课 )的时候自己写代码,把我们看的一愣一愣的
我们班好多人已经开始放弃了,可是这门课6个学分咋也不能放弃啊。
我看着老师第一节课写的程序,感觉跟我以前学的python语句有点相似,都是基础的一些函数,学到今天就用到了if、delay、for、while、switch这些基本的函数。
我们每次课都会做一个实验项目,像我们前几次做的流水灯、闪烁灯、单开关控制闪烁灯和流水灯切换的程序。
前面的项目都是用led灯做的程序,今天我们刚学了一个灯光警报系统是一个led和蜂鸣器工作的项目,项目主要的用途是实现开关断开是时候绿灯亮,开关闭合的时候红灯亮并且蜂鸣器报警;在现实中的作用就是在家中实现危险报警装置,开关装在门上,门闭合的时候绿灯亮表示安全,门打开触发开关:红灯亮蜂鸣器报警提醒。
按照以上所说的,我们开始画仿真图。

led灯(绿色)
led灯(红色)
蜂鸣器
at89c51单片机
开关
电阻若干
电源|地
三极管(做公射放大电路)


效果图
dengguangjingbao.png
这样我们的图就接好了,接下来是我们的程序

#include<reg51.h>
#define int unsigned int
sbit ledg=P2^0;
sbit ledr=P2^5;
sbit k=P1^1;
sbit speak=P3^0;

void delay(int b)
    {
    int a;
    for(a=0;a<b;a++);
    }

void main()
    {
    while(1)
    {
        if(k==1)
        {
            ledg=0;
        }
        else
    {
        ledg=1;
    }
    if(k==0)
    {
        ledr=0;
        speak=~speak; //按位取反
        delay(5000);  //控制频率
        speak=~speak;
        delay(5);      //控制音量
    }
    else
    {
        ledr=1;
    }
}
}

程序也是最简单的程序大家看看就行

打赏
评论区
头像
    头像
    云雀小站
    2022年09月26日 21:48
    回复

    没做按键消抖和松手检测,容易误触。

    头像
    观后无感
    2021年10月16日 00:07
    回复

    由于视频是在宿舍录的,环境不好,我就把录音给关了,大家是听不到蜂鸣器响的