永发信息网

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

答案:1  悬赏:40  手机版
解决时间 2021-11-18 11:36
求两个按键控制数码管数字加减C语言程序
最佳答案
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); // 扫描间隙延时,时间太长会闪烁,太短会造成重影

}

望采纳

}追问谢谢 太好了 再次谢谢对我太重要了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
北京长和兴业投资有限公司怎么样?
上海逻格斯文化传播有限公司怎么样?
云米大屏冰箱保鲜功能好用吗?
冬虫夏草配枸杞,百合能治什么
用黄秀伟我爱你分别写成一首诗
宁波有哪些月子会所
剑杆机断尾/送剑和接剑时都正好'可开
插座上标注10a-16a250v-是什么意思
我家狗狗的脸毛发红是怎么回事
宝骏63o现价是多少元辆
这张图是什么意思(斗图里的)
现在临邑哪个地方招工啊,不想出
中国邮政储蓄银行(德清县禹越营业所)地址在什
谁知道唯路时这个牌子?英文叫JONAS&VERUS。
□□.□÷12=0.□□
推荐资讯
我从未见过刘文静这样无耻骗钱的女朋友怎样上
黄州区黄冈舒心干洗这个地址在什么地方,我要
谁有学习地址
物理题,求翻译和解答过程 In the circuit, t
怎样进移动当10086的话务员
南安市违法建筑举报网站
当A为何值时,下面的等式成立?
你好,,你说你是做三生的,可以大概说一下刚
日本的横滨这个地名是市还是省?
私奔大概需要多少钱啊
我的程序那里错了?为什么sum、ave、count不
流量定义是流体流过某个截面,我的理解是从截
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?