1、2 模拟开关灯 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) 开关状态的检测过程 单片机对开关状态的检测相对于单片机来说,是从单
2、片机的 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 sbit K1=P30; sbit L1=P10; void main(void) while(1) if(K1=0) L1=0; /灯亮 else L1=1; /灯灭