[讨论] AT89S51单片机-模拟开关灯

SuperStar515   2007-7-4 10:53 楼主
模拟开关灯 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. 程序框图
开始
K1开关闭合了吗?
L1亮
L1灭
图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 sbit K1=P3^0; sbit L1=P1^0; void main(void) { while(1) { if(K1==0) { L1=0; //灯亮 } else { L1=1; //灯灭 } } }
世界是个圈,人生也是个圈。

回复评论 (4)

回复:AT89S51单片机-模拟开关灯

很好
南京璞晓电子   www.cpx0.com需要 msn:njlianjian@hotmail.com
点赞  2007-7-5 10:18

回复:AT89S51单片机-模拟开关灯

简单的程序 呵呵
点赞  2007-7-5 15:10

回复:AT89S51单片机-模拟开关灯

有个类似的程序(关于按键的)被誉为经典啊~~
世界是个圈,人生也是个圈。
点赞  2007-7-5 18:59

回复:AT89S51单片机-模拟开关灯

看示简单。做好不容易,有多少人能保证做出来能过电磁兼容,保证程序不非跑?
作人随心、做事随缘。世间凡事岂能尽如人意。不求无怨无悔、但求无愧于心。
点赞  2007-7-6 10:18
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复