/********************************************************************************************* 说明:定时器2 捕获功能的使用。由于只有三个三个数码管,帮只显示捕获的低八位,经验证,当 P1.1(T2EX) 用定时器0 控制发出一个下降沿,用T2 的P1^1;引脚进行捕获,从而得到高电平时间用以测量波形的宽度 跳变时,数据被捕获 /*********************************************************************************************/ /**********************************************************************************************/ #include //常用的头文件,52 单片机包含定时器2 #include //51 基本运算(包括_nop_空函数) #define uchar unsigned char #define ulong unsigned long #define uint unsigned int sbit STC_WR=P3^6; sbit IC138_C=P2^7; sbit IC138_B=P2^6; sbit IC138_A=P2^5; sbit p10=P1^0; //有定时器0 控制从 P2.0 口输出一个信号 bit flag=0; #define Port_Data P0 uint tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar count=0; //注,使用扩展 RAM 时一定要注意初始化 uchar temp[]={0,0,0,0,0,0,0,0}; //用于赋捕获值 /**********************************************************************************************/ void delay(uint z) //ms 级延时函数 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /**********************************************************************************************/ void BUZZ_Y5C() { STC_WR=0; IC138_C=1; IC138_B=0; IC138_A=1; } void we_Y6C() { STC_WR=0; IC138_C=1; IC138_B=1; IC138_A=0; } void du_Y7C() { STC_WR=0; IC138_C=1; IC138_B=1; IC138_A=1; } void up_we_Y6C() { STC_WR=1; IC138_C=1; IC138_B=1; IC138_A=0; } void up_du_Y7C() { STC_WR=1; IC138_C=1; IC138_B=1; IC138_A=1; } void display() //显示程序 { du_Y7C(); Port_Data=tab[temp[0]]; up_du_Y7C(); we_Y6C(); Port_Data=0x01; up_we_Y6C(); delay(1); du_Y7C(); Port_Data=tab[temp[1]]; up_du_Y7C(); we_Y6C(); Port_Data=0x02; up_we_Y6C(); delay(1); du_Y7C(); Port_Data=tab[temp[2]]; up...