找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 968|回复: 6
打印 上一主题 下一主题
收起左侧

不用中断实现51单片机0-99的动态显示?求指导

[复制链接]
跳转到指定楼层
楼主
ID:1022415 发表于 2022-4-28 15:32 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
由于本论坛禁止直接求程序,禁止伸手党,所以向大家请教一下大致的实现方法与思路,理清头绪后我自己来写程序去实现,谢谢大家

不用中断实现按键控制0-99的显示,一个加一键,一个减一键,还有一个清零键。想问我怎么用c语言语句实现此功能?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:624769 发表于 2022-4-28 16:56 来自手机 | 只看该作者
你至少说一下单片机型号吧?有些单片机带硬件按键处理的,本来就不需要中断
回复

使用道具 举报

板凳
ID:390416 发表于 2022-4-28 17:17 | 只看该作者
数码管显示任意数字                        https://www.acfun.cn/v/ac15187311_16
独立按键的短按和长按                          https://www.acfun.cn/v/ac15187311_20
回复

使用道具 举报

地板
ID:161164 发表于 2022-4-28 18:51 | 只看该作者
不能用什么中断?定时中断可不可以用?
回复

使用道具 举报

5#
ID:213173 发表于 2022-4-28 20:56 | 只看该作者
不要把中断看作万能胶,在主函数内很容易实现此功能。

  1. #include <REG51.H>

  2. sbit W1=P2^0;//十位
  3. sbit W2=P2^1;//个位
  4. sbit S1=P2^2;//++
  5. sbit S2=P2^3;//--
  6. sbit S3=P2^4;//清0

  7. unsigned char code table[]={//共阴数码管段码"0~f-."
  8.                 0x3f,0x06,0x5b,0x4f,
  9.                 0x66,0x6d,0x7d,0x07,
  10.                 0x7f,0x6f,0x77,0x7c,
  11.                 0x39,0x5e,0x79,0x71,0x40,0x80};

  12. void Delay(unsigned t)
  13. {
  14.         unsigned i,j;
  15.         for(i=t;i>0;i--)
  16.                 for(j=120;j>0;j--);
  17. }

  18. void main()
  19. {
  20.         unsigned char num=0;
  21.         unsigned char count=0;
  22.         bit sign=0;
  23.         bit flag=0;
  24.         while(1)
  25.         {
  26.                 if(!S1||!S2||!S3)
  27.                 {
  28.                         if(++count>=10 && sign==0)
  29.                         {
  30.                                 sign=1;
  31.                                 if(!S1){if(num<99)num++;}
  32.                                 if(!S2){if(num>0)num--;}
  33.                                 if(!S3)num=0;
  34.                         }
  35.                 }
  36.                 else{count=0;sign=0;}

  37.                 if(flag)
  38.                 {
  39.                         W1=1;W2=1;
  40.                         P0=table[num/10];
  41.                         W1=0;W2=1;flag=0;
  42.                 }
  43.                 else
  44.                 {
  45.                         W1=1;W2=1;
  46.                         P0=table[num%10];
  47.                         W1=1;W2=0;flag=1;
  48.                 }
  49.                 Delay(1);
  50.         }
  51. }
复制代码



回复

使用道具 举报

6#
ID:68468 发表于 2022-4-28 21:25 | 只看该作者
动态显示跟中断并没有必然的联系,不用中断完全可以实现0-99的动态显示。
回复

使用道具 举报

7#
ID:123289 发表于 2022-4-28 22:21 | 只看该作者
0、让MM=0,跳到第5步。
1、查询+1键,有则将MM+1,到100时清0,跳到第5步。
2、查询-1键,有则将MM-1,这负时改成99,跳到第5步。
3、查询清0键,有则将MM=0,跳到第5步。
4、跳到第1步
5、显示变量MM的数字。这里可以加个延时,也可以不加。
6、跳到第1步。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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