利用单片机 AT89C51 的外部中断 0 和中断 1, I/O 口,对 LED 和数码管分别进行控制。以实现按键 K0 时 LED 灯亮灭闪烁,按键 K1 时做 LED 左和右流水运动。无按键操作时偶数位数码管显示 0-F。
使用74LS373可以节省I/O口
74LS373简介:
74LS373是三态输出的八D锁存器,共有54S373和74LS373两种线路。373 的输出端 Q0~Q7 可直接与总线相连。当锁存允许端LE为高电平时,Q 随数据D而变,当LE为低电平时,D 被锁存在已建立的数据电平。
真值表:
电路原理图:
代码如下:有相关的注释
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit a=P2^5; //LED控制
sbit b=P2^6; //数码管赋值控制
sbit c=P2^7; //数码管段选
sbit K0=P3^2;
sbit K1=P3^3;
char d,n;
char t;
//共阴极数码管数字显示表
uchar table[]={0x