打印
[经验分享]

模拟开关灯 实验

[复制链接]
906|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xia00|  楼主 | 2015-10-29 22:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1. 实验任务
如图4.2.1所示,监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭。
2. 电路原理图
       图4.2.1
3. 系统板上硬件连线
(1). 把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上;
(2). 把“单片机系统”区域中的P3.0端口用导线连接到“四路拨动开关”区域中的K1端口上;
4. 程序设计内容
(1). 开关状态的检测过程
单片机对开关状态的检测相对于单片机来说,是从单片机的P3.0端口输入信号,而输入的信号只有高电平和低电平两种,当拨开开关K1拨上去,即输入高电平,相当开关断开,当拨动开关K1拨下去,即输入低电平,相当开关闭合。单片机可以采用JB BIT,REL或者是JNB BIT,REL指令来完成对开关状态的检测即可。
(2). 输出控制
如图3所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。
5. 程序框图
      图4.2.2
6. 汇编源程序 ORG 00H
START: JB P3.0,LIG
CLR P1.0
SJMP START
LIG: SETB P1.0
SJMP START
END
7. C语言源程序
#include <AT89X51.H>
sbit K1=P3^0;
sbit L1=P1^0;
void main(void)
{
while(1)
{
if(K1==0)
{
L1=0; //灯亮
}
else
{
L1=1; //灯灭
}
}
}

沙发
布谷鸟2015| | 2015-10-29 22:37 | 只看该作者
当拨开开关K1拨上去,即输入高电平,相当开关断开。

使用特权

评论回复
板凳
android2| | 2015-10-30 11:01 | 只看该作者
楼主不用对按键开关消抖吗

使用特权

评论回复
地板
天灵灵地灵灵| | 2015-10-30 11:20 | 只看该作者
开关状态的检测过程

使用特权

评论回复
5
zhuotuzi| | 2015-10-30 11:27 | 只看该作者
可以搞个电磁铁控制。

使用特权

评论回复
6
gejigeji521| | 2015-10-30 13:11 | 只看该作者
汇编源程序 ORG 00H
START: JB P3.0,LIG
CLR P1.0
SJMP START
LIG: SETB P1.0
SJMP START
END

使用特权

评论回复
7
lwsn| | 2015-10-31 11:01 | 只看该作者
谢谢分享

使用特权

评论回复
8
xia00|  楼主 | 2015-10-31 17:23 | 只看该作者
android2 发表于 2015-10-30 11:01
楼主不用对按键开关消抖吗

多谢提醒,这个给忘了。

使用特权

评论回复
9
xia00|  楼主 | 2015-10-31 17:24 | 只看该作者
zhuotuzi 发表于 2015-10-30 11:27
可以搞个电磁铁控制。

这个感觉有难度啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

179

主题

1867

帖子

1

粉丝