此源码在protues7.5 下调试通过。使用了两个74HC573锁存器,6个共阴极数码管和16个按键。连线图在源码下面。
#include <reg51.h>
unsigned char code show_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //数码管编码
sbit contrl_place=P2^1; //声明位选锁存器控制位
sbit contrl_segment=P2^0; //声明段选锁存器控制位
unsigned char temp; //用来比较按键按下
unsigned char put_key; //判断显示键值
void delayms(unsigned int xms); //延时函数
void display(unsigned char show_num); //显示函数
void scan_keys(); //键盘扫描函数
void main()
{
contrl_segment=1; // 初始化段码上电为无显示,
P0=0x00;
contrl_segment=0;
contrl_place=1;
contrl_place=0; // 所有数码管共同显示按键值
while(1) //主循环扫描键盘
{
scan_keys();
}
}
void delayms(unsigned int xms) //延时函数
{
unsigned char loop_var;
for(xms;xms>0;xms--)
{
for(loop_var=110;loop_var>0;loop_var--);
}
}
void display(unsigned char show_num) //显示函数
{
P0=show_code[show_num]; //把按键值转换成段码显示
contrl_segment=1;
contrl_segment=0;
}
void scan_keys() //键盘扫描函数
{
<