找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

用延时做按键长按检测+数码管的记数

[复制链接]
admin 发表于 2012-9-2 10:44:55 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
这是我学习中写的一个程序,希望大家看看,还有什么不足的地方可以改进!下面是程序!





#include<reg52.h>
unsigned char smduan[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //p0口为段选
unsigned char smwei[4]={0xf7,0xFb,0xfd,0xfe};//p2为位选
sbit k4=P3^5; //按键
unsigned char i;
unsigned char ge;
unsigned char bai;
unsigned char shi;
unsigned char jishu;

void delay_ms(unsigned int ms) //延时
{
unsigned int i;
unsigned char j;
for(i=0;i<ms;i++)
{
for(j=0;j<200;j++);
for(j=0;j<102;j++);
}
}

void xianshi() //数码管 显示
{
bai=i/100;
shi=i%100/10;
ge=i%10;
P2=smwei[2];
P0=smduan[bai];
delay_ms(3);
P2=smwei[1];
P0=smduan[shi];
delay_ms(3);
P2=smwei[0];
P0=smduan[ge];
delay_ms(3);
}

void main ()
{
k4=1; //按键至1
i=0; //初始

while(1) //大循环
{
if(k4==0) //判断按键是否按下
{
delay_ms(4) ; //去抖
if(k4==0) //再判断按键是否还是按下
i++; //按键是按下,记数+1
}
while(!k4) //等待按键释放
{
xianshi() ; //显示
delay_ms(1);
jishu++; //按键按下时间
delay_ms(1);
if(jishu>254) //判断按键是否按下时间超过半秒
{

i++; //实现快速+1
delay_ms(4);
jishu=250;
}
}
if(k4==1)
delay_ms(5);
if(k4==1);
xianshi();
jishu=0; //按键按下时间清0
}
}


用延时做按键长按检测 数码管的记数.rar (1.13 KB, 下载次数: 1)
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-24 07:33 , Processed in 0.053123 second(s), 12 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表