找回密码
 立即注册

QQ登录

只需一步,快速开始

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

我有两个问题,一个是我写的单片机按键控制0~9递增递减在实现的时候有问题,希望指出

[复制链接]
跳转到指定楼层
楼主
ID:716161 发表于 2020-3-28 17:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <STC12C5A60S2.H>
#define uchar unsigned char
#define uint unsigned int
sbit DU=P2^0;
sbit WE=P2^1;
sbit key1=P3^0;
sbit key2=P3^1;
uchar code duma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(uint z)   //???????
{
uint x,y;
for(x=z;x>0;x--)
  for(y=114;y>0;y--);
}
void main()
{
     
  uchar count1=0;
  uchar count2=9;
  while(1)
  {
   if(key1==0)
  {
   delay(500);
   if(key1==0)
   {
    count1++;
    if(count1==10)
    {
     count1=0;
    }
     WE=1;
     P0=0Xfd;
     WE=0;
     DU=1;
     P0=duma[count1%10];
     DU=0;
    while(!key1);
   }
  }
  if(key2==0)
  {
   delay(500);
   if(key2==0)
   {
     count2--;
     if(count2==-1)
    {
     count2=9;
    }
        WE=1;
     P0=0Xfd;
     WE=0;
     DU=1;
     P0=duma[count2%10];
     DU=0;
    while(!key2);
   }
  }
  }  
}

还有一个问题是请问我这个程序怎么改成0~99或0~999递增递减,


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:707309 发表于 2020-3-28 18:59 | 只看该作者
count1, count2改为,都用 count全局变量,出现-1,那么不能用uchar(无符号型)
回复

使用道具 举报

板凳
ID:707309 发表于 2020-3-28 19:12 | 只看该作者
你的段码已经给到了P0,再给位(片选)给0(你选的是共阴的管子)。
回复

使用道具 举报

地板
ID:716161 发表于 2020-3-31 17:21 | 只看该作者
cyf7175 发表于 2020-3-28 18:59
count1, count2改为,都用 count全局变量,出现-1,那么不能用uchar(无符号型)

那我这个程序怎么改成0~99递增递减呢
回复

使用道具 举报

5#
ID:213173 发表于 2020-3-31 21:31 | 只看该作者
0~9999递增递减
  1. #include <STC12C5A60S2.H>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit DU=P2^0;
  5. sbit WE=P2^1;
  6. sbit key1=P3^0;
  7. sbit key2=P3^1;
  8. uchar code duma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

  9. uchar qian,bai,shi,ge,num;
  10. uint count=0;

  11. bit flag1=0,flag2=0;

  12. void delay(uint z)//12MHz晶振1T MCU
  13. {
  14.         uint x,y;
  15.         for(x=z;x>0;x--)
  16.                 for(y=1250;y>0;y--);//12T MCU改为125
  17. }
  18. void main()
  19. {      
  20.         while(1)
  21.         {
  22.                 if(key1==0)
  23.                 {
  24.                         delay(10);
  25.                         if(key1==0&&flag1==0)
  26.                         {
  27.                                 flag1=1;
  28.                                 if(count<9999)
  29.                                         count++;
  30.                         }
  31.                 }
  32.                 else flag1=0;

  33.                 if(key2==0)
  34.                 {
  35.                         delay(10);
  36.                         if(key2==0&&flag2==0)
  37.                         {
  38.                                 flag2=1;
  39.                                 if(count>0)
  40.                                         count--;
  41.                         }
  42.                 }
  43.                 else flag2=0;

  44.                 qian=duma[count/1000%10];
  45.                 bai=duma[count/100%10];
  46.                 shi=duma[count/10%10];
  47.                 ge =duma[count%10];

  48.                 P0=0X00;DU=1;DU=0;
  49.                 switch(num)
  50.                 {
  51.                         case 0: P0=0xfe;WE=1;WE=0;P0=qian;DU=1;DU=0; break;
  52.                         case 1: P0=0xfd;WE=1;WE=0;P0=bai;DU=1;DU=0; break;
  53.                         case 2: P0=0xfb;WE=1;WE=0;P0=shi;DU=1;DU=0; break;
  54.                         case 3: P0=0xf7;WE=1;WE=0;P0=ge; DU=1;DU=0; break;
  55.                 }
  56.                 delay(1);
  57.                 num++;
  58.                 if(num==4)
  59.                         num=0;
  60.         }  
  61. }
复制代码
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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