/******************************************************************************程序功能:基于状态机的线性反转扫描方法实现按键扫描数码管动态显示开发环境:KeiL4硬件环境:STC12C5A60S2,11.0592 接线说明:单片机 P1 口接底板 JP29,具体接法为:P10-L1,P11-L2,P12-L3,P13-L4,P14-L5,P15-L6,P16-L7,P17-L8 单片机 P20~P21 接底板 JP26,具体接法:P20-DS,P21-SHCP,P22-STCP跳线说明:J70实验现象:数码管动态显示时钟时间 同时显示当前被按下的键值 可通过矩阵键盘对时钟进行开关已经参数调试 ******************************************************************************/#include typedef unsigned char uint8;typedef unsigned int uint16;#define KEY_PORT P1 //定义 4x4 键盘使用的单片机端口sbit SEG_DS = P2^0;//74HC595 芯片的数据引脚sbit SEG_SHCP = P2^1;//74HC595 芯片的控制引脚,上升沿移入数据sbit SEG_STCP = P2^2;//74HC595 芯片的控制引脚,上升沿更新数据//*****************************************************************************//全局变量//***************************************************************************** char hour,min,sec; // 秒 分 时 uint8 Clock_flag; //时钟开关标志位 uint8 ct_flag;//按键长按标志位 //***************************************************************************** //反转法矩阵键盘的各个按键的计算值unsigned char tabLe[]={0xee,//00xed,//10xeb,//20xe7,//30xde,//40xdd,//50xdb,//60xd7,//70xbe,//80xbd,//90xbb,//100xb7,//110x7e,//120x7d,//130x7b,//140x77 //15}; //共阳数码管的编码,并将数据定义在 CODE 区unsigned char code Seg_Data[]={ 0xc0,/*0*/ 0xF9,/*1*/ 0xA4,/*2*/ 0xB0,/*3*/ 0x99,/*4*/ 0x92,/*5*/ 0x82,/*6*/ 0xF8,/*7*/ 0x80,/*8*/ 0x90,/*9*/ 0x88,/*A*/ 0x83,/*b*/ 0xC6,/*C*/ 0xA1,/*d*/ 0x86,/*E*/ 0x8E,/*F*/};//数码管位选编码,控制显示 8 位中的第几位unsigned char code Seg_Addr[]={ 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0xFF,//ALL ON0x00 //OFF};//*****************************************************************************//函数声明//*************************************************************...