九层妖塔 起于垒土
蓝桥杯模块显示部分Part3:蜂鸣器&继电器
- 蜂鸣器&继电器
- 1、原理图:
- 2、Template:
蜂鸣器&继电器
1、原理图:
2、Template:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16sbit Relay_Switch = P0^4; sbit Buzz_Switch = P0^6; bit Relay_S,Buzz_S; //继电器、蜂鸣器状态值 void Relay_Buzz(); void Relay_Buzz() { Relay_Switch = Relay_S; //开关继电器 Buzz_Switch = Buzz_S; //开关蜂鸣器 P2 = P2&0X1F|0XA0; P2&=0X1F; //关573 }
Notes:
●继电器驱动引脚为P04,蜂鸣器驱动引脚为P06。P0口经过U9锁存器,和达林顿管来间接驱动继电器和蜂鸣器。
●达林顿管为放大器+反相器。
●若开U9锁存器对其中之一操作,必须对另一个也进行操作。 若只操作继电器,则由于P0口的值无法确定,蜂鸣器的状态也无法确定。整体赋值则更不好确定上一次的状态。
●其实只要打开锁存器,无论人为操作几个I/O口,实际上,P0口的所有值都被送入锁存器。
●使用全局变量Relay_S
,Buzz_S
分别来保存继电器和蜂鸣器的状态值。
●对继电器和蜂鸣器的操作与动态数码管,动态LED不同。
●简单就好,形参,静态局部变量,现态,次态没有必要。
例:
分别按下按键S4,S5蜂鸣器和继电器的状态就取反一次。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31void main(void) { All_Init(); //开发板初始化 while(1) { if(P33==0) { Delay10ms(); if(P33==0) { Relay_S=!Relay_S; //次态 Relay_Buzz(); while(!P33); } } if(P32==0) { Delay10ms(); if(P32==0) { Buzz_S=!Buzz_S; //次态 Relay_Buzz(); while(!P32); } } } }
最后
以上就是专注铃铛最近收集整理的关于蓝桥杯模块显示部分Part3:蜂鸣器&继电器蜂鸣器&继电器的全部内容,更多相关蓝桥杯模块显示部分Part3内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复