当前位置:文档之家› 51单片机中断控制LED

51单片机中断控制LED

单片机作业
题目要求:
设计这样一个系统:在一个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发出可爱的红色,实验没必要在做无谓的重复,实验成功。

相关主题