永发信息网

求两个按键控制数码管数字加减C语言程序

答案:1  悬赏:40  手机版
解决时间 2021-11-18 11:36
  • 提问者网友:情歌越听越心酸
  • 2021-11-18 05:01
求两个按键控制数码管数字加减C语言程序
最佳答案
  • 五星知识达人网友:廢物販賣機
  • 2021-11-18 06:33
void main (void)
{
unsigned char num=0;
KEY_ADD=1; //按键输入端口电平置高
KEY_DEC=1;
while (1) //主循环
{

if(!KEY_ADD) //如果检测到低电平,说明按键按下
{
DelayMs(10); //延时去抖,一般10-20ms
if(!KEY_ADD) //再次确认按键是否按下,没有按下则退出
{
while(!KEY_ADD);//如果确认按下按键等待按键释放,没有释放则一直等待
{
if(num<99) //加操作
num++;

}
}
}

if(!KEY_DEC) //如果检测到低电平,说明按键按下
{
DelayMs(10); //延时去抖,一般10-20ms
if(!KEY_DEC) //再次确认按键是否按下,没有按下则退出
{
while(!KEY_DEC);//如果确认按下按键等待按键释放,没有释放则一直等待
{
if(num>0) //减操作
num--;
}
}
}
TempData[0]=dofly_DuanMa[num/10];//分解显示信息,如要显示68,则68/10=6 68%10=8
TempData[1]=dofly_DuanMa[num%10];
Display(0,8); //显示全部8位
//主循环中添加其他需要一直工作的程序
}
}

void DelayUs2x(unsigned char t)
{
while(--t);
}

void DelayMs(unsigned char t)
{

while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}

void Display(unsigned char FirstBit,unsigned char Num)
{
unsigned char i;

for(i=0;i {
DataPort=0; //清空数据,防止有交替重影
DUAN=1; //段锁存
DUAN=0;

DataPort=dofly_WeiMa[i+FirstBit]; //取位码
WEI=1; //位锁存
WEI=0;

DataPort=TempData[i]; //取显示数据,段码
DUAN=1; //段锁存
DUAN=0;

DelayMs(2); // 扫描间隙延时,时间太长会闪烁,太短会造成重影

}

望采纳

}追问谢谢 太好了 再次谢谢对我太重要了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯