前言
开学上大二了,第一个学期开始接触到51单片机开发的课程,语言是C语言的分支(C51),作为初学者感到有点力不从心,还好家义兄学的专业是计算机方面的。
初学的时候我又不会的我就趁他放假在家我到他家里请教他问题。记得那天下午在他家待了4个 小时,我问的问题都很简单(我比较憨
)。
正文
我们是没有c语言基础的,刚上这门课的时候老师不讲c语言的知识,他第一节课的时候都不讲c语言的知识,他就在直播(因为当时我们再上网课 )的时候自己写代码,把我们看的一愣一愣的
。
我们班好多人已经开始放弃了,可是这门课6个学分咋也不能放弃啊。
我看着老师第一节课写的程序,感觉跟我以前学的python语句有点相似,都是基础的一些函数,学到今天就用到了if、delay、for、while、switch这些基本的函数。
我们每次课都会做一个实验项目,像我们前几次做的流水灯、闪烁灯、单开关控制闪烁灯和流水灯切换的程序。
前面的项目都是用led灯做的程序,今天我们刚学了一个灯光警报系统是一个led和蜂鸣器工作的项目,项目主要的用途是实现开关断开是时候绿灯亮,开关闭合的时候红灯亮并且蜂鸣器报警;在现实中的作用就是在家中实现危险报警装置,开关装在门上,门闭合的时候绿灯亮表示安全,门打开触发开关:红灯亮蜂鸣器报警提醒。
按照以上所说的,我们开始画仿真图。
led灯(绿色)
led灯(红色)
蜂鸣器
at89c51单片机
开关
电阻若干
电源|地
三极管(做公射放大电路)
效果图

这样我们的图就接好了,接下来是我们的程序
#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;
}
}
}
程序也是最简单的程序大家看看就行
3周前
文章深入浅出,既有深度思考,又不乏广度覆盖,令人叹为观止。
3周前
观点新颖,见解独到,发人深省。
2025年3月1日 02:20
文章中的实用建议和操作指南,让读者受益匪浅,值得珍藏。
2022年09月26日 21:48
没做按键消抖和松手检测,容易误触。
2021年10月16日 00:07
由于视频是在宿舍录的,环境不好,我就把录音给关了,大家是听不到蜂鸣器响的