此源码在protues 7.5下测试通过。源码最下面是连线图。使用了两个74HC573锁存器,4个独立按键。
/*/****************************************/*/
#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 num_add=P1^0; // 加1功能
sbit num_dec=P1^1; //减1功能
sbit num_clear=P1^2;//清零功能
sbit num_auto=P1^3; //自动计数功能
sbit contrl_place=P2^1; //位选
sbit contrl_segment=P2^0;//段选
unsigned char show_one_digit=0; //个位
unsigned char show_ten_place=0; // 十位
unsigned char loop_ms=0;//毫秒用循环变量
unsigned char nums=0; //显示用变量
void delayms(unsigned int xms); //延时
void scan_key(); //键盘扫描
void display(unsigned char show_num);//显示
/*程序说明:用数码管的后两位循环显示数值,变化范围为00-59,上电显示为00。每按一次“加”按键,数值加1;
每按一次“减”按键,数值减1;按一次“清零”键,数码管显示为00;按一次自动计数键,将利用定时器零,
进行每一秒自动加1显示,再按一次,停止自动加1,保持原数显示。
*/
void main()
{
TMOD=0x01; //定义定时器
TH0=(65536-45872)/256; //初值50ms
TL0=(65536-45872)%2