51单片机中断控制LED
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机作业
题目要求:
设计这样一个系统:在一个51单片机最小系统板上,P1口低四位接四个四角按键,高四位接四个LED灯。按键中断作为总中断,当接中断的按键按下后,所有灯均可按照对应的按键进行点亮。当没有中断按下时,无论怎么按接在P1口低四位的按键,均不能是按键点亮。
实现步骤:
第一:电路搭建:
电路搭建说明:
1.采用AT89C52单片机,DIP40封装。
2.选用12M,并使晶振尽可能接近单片机,采用22pf的电容接在晶振两边并接地,使晶振更容易起振。
3.标号为D18的LED是中断触发指示灯,一旦中断触发,D18会一直亮着。没有中断触发时会一直灭着。
4.key1,key2,key3,key4分别控制D1,D2,D3,D4,D
5.
5.D5为复位指示灯,当复位按键按下时,D5亮。反之灭。
第二:程序实现:
本程序十分简单,秉着杜绝抄袭,自助设计的理念,本程序完全有本人设计完成。没有采用老师讲解的例程。程序的注释已经将程序称述的很明白,现做简要说明:
本人将按键查询部分都放在中断处理函数中处理。当中断触发按键按下时,D18亮,程序进入中断函数,开始不断查询按键值,并点亮相应led.。这样的程序
对CPU的占有率较高,但由于这样写代码更加简单明了,有由于题目对cpu占有率的并没有明确要求,本着开发周期尽可能短的原则,本程序选择了简单方案。
现将代码复制如下:
将KEIL与PROTEUS联调,调试结果如下:
1.启动程序:
,可以看到图中三角符号变绿。此时:
此时,图中所有led灭,无现象。
1.此时按下任意按键,比如key1,key2两个(为了方便截图,直接将开关用导线短路):
现象如下:
可以看到,并没有认可指示灯亮。
2.按复位按键观察是否正常(为了方便截图,直接将开关用导线短路):
可以看到,红色的D5,复位指示灯变红。复位电路正常工作。
3.按触发中断按键,观察D18会不会一直亮,即,只要按一下触发中断按键,D18会长亮。
明显看到,即使中断触发按键已经松开,D18,依旧亮着。
4.此时(即,中断触发按键已经按下过,D18长亮),随意按几个按键,观察,对应LEd会不会点亮(为了方便截图,直接将开关用导线短路)。
可以看到:key4被按下,即用导线短路,D4发出可爱的红色光芒。实现成功。
5.5.再按下key2看看,避免偶然,杜绝意味(为了方便截图,直接将开关用导线短路)
现象:D18依旧长亮,key2被按下,相应的LED2发出可爱的红色,实验没必要在做无谓的重复,实验成功。