1、多路开关状态指示1多路开关状态指示电路一、实验任务如图4.3.1所示,AT89S52单片机的P1.0P1.3接四个发光二极管L1L4,P1.4P1.7接了四个开关K1K4,编程将开关的状态反映到发光二极管上。(开关闭合,对应的灯亮,开关断开,对应的灯灭)。二、电路原理图三、系统板上硬件连线(1)把“单片机系统”区域中的P1.0P1.3用导线连接到“八路发光二极管指示模块”区域中的L1L4端口上;(2)把“单片机系统”区域中的P1.4P1.7用导线连接到“四路拨动开关”区域中的K1K4端口上;四、程序设计内容(1)开关状态检测对于开关状态检测,相对单片机来说,是输入关系,我们可轮流检测每个开关状
2、态,根据每个开关的状态让相应的发光二极管指示,可以采用JBP1.X,REL或JNBP1.X,REL指令来完成;也可以一次性检测四路开关状态,然后让其指示,可以采用MOVA,P1指令一次把P1端口的状态全部读入,然后取高4位的状态来指示。(2)输出控制根据开关的状态,由发光二极管L1L4来指示,我们可以用SETBP1.X和CLRP1.X指令来完成,也可以采用MOVP1,1111XXXXB方法一次指示。五、程序框图六、方法一(汇编源程序) ORG 00HSTART: MOV A,P1 ANL A,#0F0H RR A RR A RR A RR A XOR A,#0F0H MOV P1,A SJMP
3、 START END七、方法一(C语言源程序)#include unsigned char temp;void main(void) while(1) temp=P14; temp=temp | 0xf0; P1=temp; 八、方法二(汇编源程序) ORG 00HSTART: JB P1.4,NEXT1 CLR P1.0 SJMP NEX1NEXT1: SETB P1.0NEX1: JB P1.5,NEXT2 CLR P1.1 SJMP NEX2NEXT2: SETB P1.1NEX2: JB P1.6,NEXT3 CLR P1.2 SJMP NEX3NEXT3: SETB P1.2NEX3
4、: JB P1.7,NEXT4 CLR P1.3 SJMP NEX4NEXT4: SETB P1.3NEX4: SJMP START END九、方法二(C语言源程序)#include void main(void) while(1) if(P1_4=0) P1_0=0; else P1_0=1; if(P1_5=0) P1_1=0; else P1_1=1; if(P1_6=0) P1_2=0; else P1_2=1; if(P1_7=0) P1_3=0; else P1_3=1; 心得体会 这次的单片机实训,真是让我们受益匪浅啊。学到了很多东西,不管怎么样,先感谢学校给我们这么多的机会,让
5、我们真正的从理论知识到实践的过渡。 此次课程设计软件与硬件相结合,考察了我们的焊接水平与编程能力。对于我们应用电子技术的学生而言焊接是不成问题,也很顺利;可到了编程时就出现了很大的障碍。本来还以为编程会很简单的,等到实际操作起来才知道它的复杂性,没有想像中的那么得心应手,理解流程是有思维的前提。单片机是我们最难学的一门课程,所以很多专业知识都不懂。不过经过我们一步步的努力,花费的时间与精力终于没有白费,效果渐渐地出现了。其实本身程序的思维是正确的,只是步骤中有点小错误,所以导致整个程序的结果很乱,在仔细修改程序之后,终于一步步地达到效果了。 最后在全组人竭尽全力,老师的精心指导下,程序基本编写
6、成功,这是我们共同努力的结果,在享受我们成果之时,不得不感慨单片机的重要性与高难度性,所以为期一周的单片机实训没有浪费,我们从中学到了很多知识,也让我们对单片机有了更深一步的了解。虽然最后结果是出来了,可这与老师的精心指导是分不开的,他引导我们的思路,本来一窍不通的我们经过老师的点拨基本上通了,所以说老师是功不可抹的。 总而言之,单片机实训对于我们有很大的帮助,我们从中受益匪浅。参考文献 (1)杨将新、李华军、刘东俊、单片机及应用M,电子工业出版社。2006 (2)彭为、黄科、单片机典型系统设计及应用M,电子工业出版社。2007 (3)何书森、何华斌、实用电子线路设计速成M,福建科学技术出版社。2005 (4)陈永莆,实用无线电遥控电路M,人民邮电出版社。2007 (5)侯玉宝,Proteus的 51系列单片机设计与仿真,电子工业出版社。2008附录一(原理图):附录二(PCB图):附录三(装配图):
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2