基于51系列单片机的c程序
minute++;
//即时把显示数据处理,如果去掉下面2句处理信息,实际上看不到渐变效果,而是看到跳变效果
//用户可以自行屏蔽测试
Display_Data_Operation();
DelayMs(50);//用于调节长按循环操作的速度
}
}
}
key_press_num=0;//防止累加造成错误识别
if(minute<99) //加操作
minute++;
}
}
if(!KEY_DEC) //如果检测到低电平,说明按键按下
{
DelayMs(10); //延时去抖,一般10-20ms
if(!KEY_DEC) //再次确认按键是否按下,没有按下则退出
{
while(!KEY_DEC)
{
key_press_num++;
DelayMs(10);
if(key_press_num==200) //大约2s
{
key_press_num=0;
while(!KEY_DEC)
{
if(minute>0) //减操作
minute--;
Display_Data_Operation();
DelayMs(50);//用于调节长按循环操作的速度
}
}
}
key_press_num=0;//防止累加造成错误识别
if(minute>0) //减操作
minute--;
}
}
if(UpdateTimeFlag==1)
{
UpdateTimeFlag=0;
Display_Data_Operation();
if((minute==0)&&(second==0))//条件满足蜂鸣器闪响
{
Beep_ON();
}
else
Beep_OFF(); //不满足时关掉
}
}
}
/*------------------------------------------------
uS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
长度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{
while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
/*------------------------------------------------
显示函数,用于动态扫描数码管
输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示
如输入0表示从第一个显示。
Num表示需要显示的位数,如需要显示99两位数值则该值输入2
------------------------------------------------*/
void Display(unsigned char FirstBit,unsigned char Num)
{
static unsigned char i=0;
DataPort=0; //清空数据,防止有交替重影
LATC
H1=1; //段锁存
LATCH1=0;
DataPort=dofly_WeiMa[i+FirstBit]; //取位码
LATCH2=1; //位锁存
LATCH2=0;
DataPort=TempData[i]; //取显示数据,段码
LATC
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新高中教育使用99分钟倒计时器.c(2)全文阅读和word下载服务。
相关推荐: