由于电子实验的局限性,所以笔者更倾向于用电子仿真的方式来做实验,这样,大家看完之后也可以做出一样的实验现象,要想完成本次实验只需要两个软件,一个是仿真软件Proteus,另一个是编程软件Keil-C51。 物料清单 英文名字是电子元器件在Proteus中所对应的代号。 51单片机-AT89C51 电容-CAP 电解电容-CAP-ELEC 12M晶振-CRYSTAL 黄色LED-LED-YELLOW 电阻-RES 开关-SWITCH 原理图 如下图所示,左侧为51单片机的最小系统,分别为晶振电路和复位电路,这个最小系统的设计可以在官方数据手册获取,我们暂且不必深究。当开关没有闭合时,P1.0和P1.1默认输出高电平,当开关闭合时,由于I/O口接地电平被拉低,当单片机检测到这个低电平信号之后,控制P0.0或P0.1输出低电平。 有的同学可能要问了,点亮LED灯不应该输出高电平吗?可能你没有认真观察LED灯的连接方式,LED灯的阳极连接的是电源,自然是高电平,它的阴极链接的是单片机的I/O口,如果单片机的I/O口也输出高电平,由于LED灯之间没有压差,这时候LED灯自然不会亮,只有在I/O口输出低电平的时候LED灯才会被点亮。 程序源代码 为了降低难度,本程序采用的是轮询的方法去检测按键,轮询的最大好处就是简单,它的缺点对CPU消耗较大。 #includesbit S1 = P1^0; sbit S2 = P1^1; sbit LED1 = P0^0; sbit LED2 = P0^1; void main() { while(1) { LED1 = S1; LED2 = S2; } }实验现象 每日箴言 入门并不难,难的是长期坚持实践和不遗余力的学习和实践。