找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1595|回复: 4
收起左侧

单片机代码不能实现前四个数码管一亮一灭最后两个常亮

[复制链接]
ID:513252 发表于 2019-4-21 14:35 | 显示全部楼层 |阅读模式
100黑币
51单片机六位数码管的加法和减法,0与1是数字,2是+,3是-。动态显示。例1+2=03结..灭

zzj_led_16.zip

14.15 KB, 下载次数: 6

回复

使用道具 举报

ID:513252 发表于 2019-4-21 14:46 | 显示全部楼层
                        P2=TABLE[19]>>8;}}

              if(!mum2)
            {
           Delayms(10);       
            if(!mum2)
                        P3=4;
            P0=TABLE[j];
                        P2=TABLE[j]>>8;
            j=++j%16;
            while(!mum2){Delayms(300); P0=TABLE[19];
                        P2=TABLE[19]>>8;};
                        Delayms(10);

                  P3=1;
                        if(i%16-1>-1)                                                                        //diyigeshu
                        {P0=TABLE[i%16-1];
                        P2=TABLE[i%16-1]>>8;
            Delayms(300); P0=TABLE[19];
                        P2=TABLE[19]>>8;}
                         else        {P0=TABLE[15];
                        P2=TABLE[15]>>8;
            Delayms(300); P0=TABLE[19];
                        P2=TABLE[19]>>8; }
                       
                        P3=2;                                                                        //-
            P0=TABLE[17];
                        P2=TABLE[17]>>8;
                        Delayms(300); P0=TABLE[19];
                        P2=TABLE[19]>>8;
               
                    P3=4;
                        if(j%16-1>-1)                                                                        //diergeshu
                        {P0=TABLE[j%16-1];
                        P2=TABLE[j%16-1]>>8;
            Delayms(300); P0=TABLE[19];
                        P2=TABLE[19]>>8;}
                         else        {P0=TABLE[15];
                        P2=TABLE[15]>>8;
            Delayms(300); P0=TABLE[19];
                        P2=TABLE[19]>>8; }
                       
                        P3=8;                                                                //=
            P0=TABLE[18];
                        P2=TABLE[18]>>8;
                        Delayms(300); P0=TABLE[19];
                        P2=TABLE[19]>>8;
                       
                                if(((i-1)%16-(j-1)%16)>-1)                                                                   //fuhao
                        {P3=32;
                        P0=TABLE[(i-1)%16-(j-1)%16];
                        P2=TABLE[(i-1)%16-(j-1)%16]>>8;}
                 else
                        {P3=16;
                        P0=TABLE[17];
                        P2=TABLE[17]>>8;        Delayms(400); P0=TABLE[19];
                        P2=TABLE[19]>>8;
                        P3=32;
                        P0=TABLE[(j-1)%16-(i-1)%16];
                        P2=TABLE[(j-1)%16-(i-1)%16]>>8;Delayms(300); P0=TABLE[19];
                        P2=TABLE[19]>>8;}
            }} }




}
}我的代码不能实现前四个数码管一亮一灭最后两个常亮
回复

使用道具 举报

ID:513252 发表于 2019-4-22 10:09 | 显示全部楼层
已经解决 现在差 让他一直显示 有大佬帮帮忙吗?
#include"reg51.h"
#define uchar unsigned char
#define uint unsigned int
uint TABLE[]={0xff00,0xfff3,0x7788,0x77c0,0x7773,0x7744,0x7704,0xfff0,0x7700,0x7740,0x7730,0x7707,0xff0c,0x7783,0x770c,0x773c,0x55ff,0x77ff,0xffcc,0xffff};//0-f+-= qingkong
sbit mum1=P1^0;sbit mum2=P1^1;sbit add=P1^2;sbit sub=P1^3; sbit ab=P3^0;sbit bc=P3^1;sbit cd=P3^2;sbit de=P3^3;sbit ef=P3^4;sbit fg=P3^5;
void Delayms(unsigned int x)
{unsigned char t; while(x--)for(t=0;t<120;t++);}
void main()
{ unsigned  char i,j;
while(1)
{   if(!add)
        { start1:
          while(1)
    {
         if(!mum1)
          {
           Delayms(10);
            if(!mum1)
   P3=1;          //diyigeshu
            P0=TABLE[i];
   P2=TABLE[i]>>8;
            i=++i%16;
            while(!mum1){Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8;};
   
   P3=2;         //+
            P0=TABLE[16];
   P2=TABLE[16]>>8;
   Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8;
        
      P3=4;
   if(j%16-1>-1)         //diergeshu
   {P0=TABLE[j%16-1];
   P2=TABLE[j%16-1]>>8;
            Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8;}
    else {P0=TABLE[15];
   P2=TABLE[15]>>8;
            Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8; }
   
   P3=8;        //=
            P0=TABLE[18];
   P2=TABLE[18]>>8;
   Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8;
   
   if(((i-1)%16+(j-1)%16)<16)           //fuhao
   {P3=32;
   P0=TABLE[(i-1)%16+(j-1)%16];
   P2=TABLE[(i-1)%16+(j-1)%16]>>8;}
          else
   {P3=16;
   P0=TABLE[1];
   P2=TABLE[1]>>8; Delayms(400); P0=TABLE[19];
   P2=TABLE[19]>>8;
   P3=32;
   P0=TABLE[(i-1)%16+(j-1)%16-16];
   P2=TABLE[(i-1)%16+(j-1)%16-16]>>8;Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8;}}
       if(!mum2)
            {
           Delayms(10);
            if(!mum2)
   P3=4;
            P0=TABLE[j];
   P2=TABLE[j]>>8;
            j=++j%16;
            while(!mum2){Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8;};
   Delayms(10);
    P3=1;
   if(i%16-1>-1)         //diyigeshu
   {P0=TABLE[i%16-1];
   P2=TABLE[i%16-1]>>8;
            Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8;}
    else {P0=TABLE[15];
   P2=TABLE[15]>>8;
            Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8; }
   
   P3=2;         //+
            P0=TABLE[16];
   P2=TABLE[16]>>8;
   Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8;
        
      P3=4;
   if(j%16-1>-1)         //diergeshu
   {P0=TABLE[j%16-1];
   P2=TABLE[j%16-1]>>8;
            Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8;}
    else {P0=TABLE[15];
   P2=TABLE[15]>>8;
            Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8; }
   
   P3=8;        //=
            P0=TABLE[18];
   P2=TABLE[18]>>8;
   Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8;
   
   if(((i-1)%16+(j-1)%16)<16)           //fuhao
   {P3=32;
   P0=TABLE[(i-1)%16+(j-1)%16];
   P2=TABLE[(i-1)%16+(j-1)%16]>>8;}
          else
   {P3=16;
   P0=TABLE[1];
   P2=TABLE[1]>>8; Delayms(400); P0=TABLE[19];
   P2=TABLE[19]>>8;
   P3=32;
   P0=TABLE[(i-1)%16+(j-1)%16-16];
   P2=TABLE[(i-1)%16+(j-1)%16-16]>>8;Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8;}}
     if(!sub)
    { break;goto start0; }
   

   } }
if(!sub)
        {
   start0: while(1)
          {
         if(!mum1)
          {
           Delayms(10);
            if(!mum1)
   P3=1;          //diyigeshu
            P0=TABLE[i];
   P2=TABLE[i]>>8;
            i=++i%16;
            while(!mum1){Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8;};
   
   P3=2;         //-
            P0=TABLE[17];
   P2=TABLE[17]>>8;
   Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8;
        
      P3=4;
   if(j%16-1>-1)         //diergeshu
   {P0=TABLE[j%16-1];
   P2=TABLE[j%16-1]>>8;
            Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8;}
    else {P0=TABLE[15];
   P2=TABLE[15]>>8;
            Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8; }
   
   P3=8;        //=
            P0=TABLE[18];
   P2=TABLE[18]>>8;
   Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8;
   
   if(((i-1)%16-(j-1)%16)>-1)           //fuhao
   {P3=32;
   P0=TABLE[(i-1)%16-(j-1)%16];
   P2=TABLE[(i-1)%16-(j-1)%16]>>8;}
          else
   {P3=16;
   P0=TABLE[17];
   P2=TABLE[17]>>8; Delayms(400); P0=TABLE[19];
   P2=TABLE[19]>>8;
   P3=32;
   P0=TABLE[(j-1)%16-(i-1)%16];
   P2=TABLE[(j-1)%16-(i-1)%16]>>8;Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8;}}
       if(!mum2)
            {
           Delayms(10);
            if(!mum2)
   P3=4;
            P0=TABLE[j];
   P2=TABLE[j]>>8;
            j=++j%16;
            while(!mum2){Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8;};
   Delayms(10);
    P3=1;
   if(i%16-1>-1)         //diyigeshu
   {P0=TABLE[i%16-1];
   P2=TABLE[i%16-1]>>8;
            Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8;}
    else {P0=TABLE[15];
   P2=TABLE[15]>>8;
            Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8; }
   
   P3=2;         //-
            P0=TABLE[17];
   P2=TABLE[17]>>8;
   Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8;
        
      P3=4;
   if(j%16-1>-1)         //diergeshu
   {P0=TABLE[j%16-1];
   P2=TABLE[j%16-1]>>8;
            Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8;}
    else {P0=TABLE[15];
   P2=TABLE[15]>>8;
            Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8; }
   
   P3=8;        //=
            P0=TABLE[18];
   P2=TABLE[18]>>8;
   Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8;
   
    if(((i-1)%16-(j-1)%16)>-1)           //fuhao
   {P3=32;
   P0=TABLE[(i-1)%16-(j-1)%16];
   P2=TABLE[(i-1)%16-(j-1)%16]>>8;}
          else
   {P3=16;
   P0=TABLE[17];
   P2=TABLE[17]>>8; Delayms(400); P0=TABLE[19];
   P2=TABLE[19]>>8;
   P3=32;
   P0=TABLE[(j-1)%16-(i-1)%16];
   P2=TABLE[(j-1)%16-(i-1)%16]>>8;Delayms(300); P0=TABLE[19];
   P2=TABLE[19]>>8;}
            }   if(!add)
    { break;goto start1; }      } }


}
}


回复

使用道具 举报

ID:424408 发表于 2019-4-22 11:52 | 显示全部楼层
控制的时候控制好位码舍
回复

使用道具 举报

ID:434390 发表于 2019-4-24 14:20 | 显示全部楼层
四个位选加一个亮灭控制逻辑就可以了   比如共阴极  当前位亮就写0,灭就写1
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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