1.目的与要求:
- 能够正确绘制proteus原理图;
- 能够实现LED灯和数码显示器的预期功能;
- 使用两种编程方式得到预期功能:(1)中断控制方式;(2)普通顺序执行方式;
2.实验原理
图为控制LED灯和数码管显示器的电路原理图。图中输入电路由外接在P3口的两个按压按键BUT组成;输出电路由外接在P2口七段共阴极数码管和外接在P1口的二极管组成,二极管灯接口处P0口还外接上拉电阻。此外,还包括时钟电路和复位电路。
3.实验内容
程序启动后,按压P3.2口按键BUT1后,二极管D1的亮灭实现反转;按压P3.2口按键BUT2后,数码管LED1上立即显示出按键压下的次数。当显示达到F后再次按压按键,显示值将从0重新开始,以此无限循环。
4.实验代码
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit P0_4=P0^4;
sbit P3_2=P3^2;
sbit P3_3=P3^3;
uchar led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71};
uint i =0;
void delay(uint k)
{
uint j;
while(k--)
for(j=0;j<1000;j++);
}
void int0_sev( ) interrupt 0
{
P0_4=!P0_4;
}
void int1_sev( ) interrupt 2
{
i++;
if( i>15)
{ i = 0;}
P2= led_mod[i];
}
void main()
{
P0_4=0;
P2= led_mod[0];
IT0 = 1;
IT1 = 1;
EA = 1;
EX0 = 1;
EX1 = 1;
while(1);
}