完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、蜂鸣器电路
蜂鸣器的正极接VCC 5V,负极接在达林顿管的N_BUZZ上,达林顿管是一个非门电路:若IN输入1,则OUT输出0;若IN输入0,则OUT输出1;要使蜂鸣器响,则OUT7为低电平0。 再来看译码器,想要打通这个译码器那么Y5C必须为高电平,Y5C由38译码器控制,当P27=1, P26=0, P25=1时Y5输出低电平,Y5C输出高电平,锁存器打通。 打通译码器后,对P0口赋值,让OUT7为低电平0,也即让P06 = 1,这样蜂鸣器就响了。代码如下: #include"reg52.h" //包含头文件 ***it Buzz = P0^6; //定义蜂鸣器 ***it HC138_A = P2^5; //定义译码器中ABC所在引脚 ***it HC138_B = P2^6; ***it HC138_C = P2^7; void Delay(unsigned int t) //延时函数 { while(t--); } void Buzz(unsigned char State) { HC138_C = 1; //给CBA赋值 HC138_B = 0; HC138_A = 1; if(State == 1) //蜂鸣器响 Buzz = 1; if(State == 0) //蜂鸣器不响 Buzz = 0; } void main() //主函数 { while(1) //死循环 { Buzz(1); Delay(50000); Buzz(0); Delay(50000); //让它响一会儿后不响 } } 二、继电器电路 继电器的负极N_RELAY同样接在了第一张图的达林顿管上,由锁存器的P04控制。要使继电器吸合,那么P04 = 1。代码如下: #include"reg52.h" ***it Relay = P0^4; //定义继电器 ***it HC138_A = P2^5; ***it HC138_B = P2^6; ***it HC138_C = P2^7; void Delay(unsigned int t) { while(t--); } void RELAY(unsigned char State) { HC138_C = 1; HC138_B = 0; HC138_A = 1; if(State == 1) //继电器吸合 Relay = 1; if(State == 0) //继电器不吸合 Relay = 0; } void main() { while(1) { RELAY(1); Delay(50000); RELAY(0); Delay(50000); //继电器一吸一合 } } |
|
|
|
只有小组成员才能发言,加入小组>>
3260 浏览 9 评论
2941 浏览 16 评论
3442 浏览 1 评论
8944 浏览 16 评论
4035 浏览 18 评论
1073浏览 3评论
557浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
550浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2285浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1844浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-6 07:25 , Processed in 1.287737 second(s), Total 80, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号