川师鲤鱼 发表于 2017-4-8 06:40:03

不错不错 为你顶帖 很赞

川师鲤鱼 发表于 2017-4-8 06:41:12

不错不错 为你顶帖了

a13621146 发表于 2017-5-14 15:30:39

大神帮我看下以下程序哪里有错误.为什么输出电压只有一半?
#include<reg51.h>
#include<intrins.h>    //µ÷ÓÃ_nop_();


sfr P5=0xC8;          //ÉùÃ÷P5Òý½Å¼Ä´æÆ÷


sfr P2M0=0x96;       //ÉùÃ÷P2Òý½Åģʽ¼Ä´æÆ÷
sfr P3M0=0xb2;       //ÉùÃ÷P3Òý½Åģʽ¼Ä´æÆ÷
sfr P1ASF=0x9D;      //ÉùÃ÷P1¿ÚÄ£Ä⹦ÄܼĴæÆ÷
sfr ADC_RES=0xBD;    //ÉùÃ÷ADCת»»½á¹û¼Ä´æÆ÷
sfr ADC_CONTR=0xBC;//ÉùÃ÷ADC¿ØÖƼĴæÆ÷

sbit DA=P2^4;       //ÊýÂë¹Üÿ¸öÒý½Å               
sbit DB=P3^2;
sbit DC=P3^6;
sbit DD=P2^0;
sbit DE=P2^1;
sbit DF=P2^3;
sbit DG=P3^5;
sbit DP=P3^7;

sbit B1=P2^5;       //ËĸöÊýÂë¹ÜµÄÒý½Å¶¨Òå               
sbit B2=P2^2;
sbit B3=P3^3;
sbit B4=P3^4;

sbit Key=P3^0;

sbit OUT=P5^5;      //¶¨ÒåÒ»¸öÊä³öÒý½Å


unsigned char Key_old;
unsigned char Key_action;
unsigned char display_time;    //¶¨Òå±ê±äÁ¿ÓÃÓÚÏÔʾ´ÎÊý   

unsigned char Data1;         //µÚÒ»¸öÊýÂë¹ÜÒªÏÔʾµÄÊý¾Ý
unsigned char Data2;         //
unsigned char Data3;         //
unsigned char Data4;         //

unsigned char count;         //¼Æʱ

unsigned char BBBBB;
unsigned char mode;
unsigned int adc;            //ADת»»¼ÆËã
unsigned int L;            //¸ßµçƽʱ¼ä

void Delay10us()                //@12.000MHz
{
      unsigned char i;
      
      _nop_();
      _nop_();
      i = 24;
      while (--i);
}

void delay_n_10us(unsigned int n)   //ÑÓʱn¸ö10usµÄº¯Êý
{
      while(n)      
      {
                Delay10us();
                n=n-1;          //ÿѭ»·Ò»´În¼õ1
      }
}



void display(unsigned char x)   //¿ØÖÆÊýÂë¹ÜÏÔʾÄÚÈݵĺ¯Êý
{
      //ÅжÏxµÄÖµÀ´¾ö¶¨ÏÔʾʲô
      if(x==0){DA=1;DB=1;DC=1;DD=1;DE=1;DF=1;DG=0;DP=0;} //ÏÔʾ¡°0¡±
      if(x==1){DA=0;DB=1;DC=1;DD=0;DE=0;DF=0;DG=0;DP=0;} //    1
      if(x==2){DA=1;DB=1;DC=0;DD=1;DE=1;DF=0;DG=1;DP=0;} //    2
      if(x==3){DA=1;DB=1;DC=1;DD=1;DE=0;DF=0;DG=1;DP=0;} //    3
      if(x==4){DA=0;DB=1;DC=1;DD=0;DE=0;DF=1;DG=1;DP=0;} //    4
      if(x==5){DA=1;DB=0;DC=1;DD=1;DE=0;DF=1;DG=1;DP=0;} //    5
      if(x==6){DA=1;DB=0;DC=1;DD=1;DE=1;DF=1;DG=1;DP=0;} //    6
      if(x==7){DA=1;DB=1;DC=1;DD=0;DE=0;DF=0;DG=0;DP=0;} //    7
      if(x==8){DA=1;DB=1;DC=1;DD=1;DE=1;DF=1;DG=1;DP=0;} //    8
      if(x==9){DA=1;DB=1;DC=1;DD=1;DE=0;DF=1;DG=1;DP=0;} //    9
                                                      
      if(x==10){DA=1;DB=1;DC=1;DD=1;DE=1;DF=1;DG=0;DP=1;} //ÏÔʾ¡°0¡±´øСÊýµã
      if(x==11){DA=0;DB=1;DC=1;DD=0;DE=0;DF=0;DG=0;DP=1;} //   
      if(x==12){DA=1;DB=1;DC=0;DD=1;DE=1;DF=0;DG=1;DP=1;} //   
      if(x==13){DA=1;DB=1;DC=1;DD=1;DE=0;DF=0;DG=1;DP=1;} //
      if(x==14){DA=0;DB=1;DC=1;DD=0;DE=0;DF=1;DG=1;DP=1;} //   
      if(x==15){DA=1;DB=0;DC=1;DD=1;DE=0;DF=1;DG=1;DP=1;} //   
      if(x==16){DA=1;DB=0;DC=1;DD=1;DE=1;DF=1;DG=1;DP=1;} //
      if(x==17){DA=1;DB=1;DC=1;DD=0;DE=0;DF=0;DG=0;DP=1;} //   
      if(x==18){DA=1;DB=1;DC=1;DD=1;DE=1;DF=1;DG=1;DP=1;} //
      if(x==19){DA=1;DB=1;DC=1;DD=1;DE=0;DF=1;DG=1;DP=1;} //ÏÔʾ¡°9¡±´øСÊýµã
                                if(x==20){DA=1;DB=1;DC=0;DD=0;DE=1;DF=1;DG=1;DP=0;}
                                if(x==21){DA=1;DB=0;DC=0;DD=1;DE=1;DF=1;DG=1;DP=0;}
}

void main()
{
      P2M0=0x1B;      // ÐèÒª¸ßµçƽ´óµçÁ÷µÄÒý½Å 2.42.32.12.0   ÌîÈëÊýÖµ0001 1011      
      P3M0=0xE4;      //   ¸ßµçƽ´óµçÁ÷µÄÒý½Å3.73.63.53.2            1110 0100   
      P1ASF=0x80;   //ÉèÖÃP1.7 Òý½ÅΪģÄ⹦ÄÜ
      Key_old=1;
      while(1)
      {
                                        delay_n_10us(100);
                                ////////////////////////////////       
                                        BBBBB=BBBBB+1;
                                        if(BBBBB>9)
                                        {
                                                BBBBB=0;
                                       
                                       
                                        if(Key==1)
                                        {
                                                if(Key_old==0)
                                                {
                                                        Key_action=1;
                                                }
                                        }
                                       Key_old=Key;
                                }
                                       
                                /////////////////////////////////////       
                                        if(Key_action==1)
                                        {
                                                Key_action=0;
                                                mode++;
                                                if(mode>1)
                                                {
                                                        mode=0;
                                                }
                                        }
                                        ///////////////////////////////////
                                        if(mode==1)
                                        {
            
                count=count+1;
                if(count>19)      //ÿ20ms²åÈëÒ»´Î¸ßµçƽ
                {
                        count=0;
                        B1=1;B2=1;B3=1;B4=1;//ÔÝʱ¹Ø±ÕÊýÂë¹Ü±ÜÃâÉÁ˸
                        
                        ADC_CONTR=0x88+7;   //¿ªÊ¼P1.7Òý½Åת»»
                        delay_n_10us(5);      //µÈ´ý50usADת»»Íê³É
                        adc=ADC_RES;          //¶Áȡת»»½á¹û
                        
                        L=adc;               //ת¶¯ÐýÅ¥ADC µÄÖµ0¡«255±ä»¯
                     //LµÄ±ä»¯·¶Î§ÊÇ100¡«200ËùÒÔ½øÐÐÒ»ÏÂÏÞÖÆ
                        if(L>200)L=200;      //¸ßµçƽʱ¼ä²»³¬¹ý2ms
                        if(L<100)L=100;      //¸ßµçƽʱ¼ä²»µÍÓÚ1ms
                        
                        OUT=1;
                        delay_n_10us(L);    //Êä³ö1¡«2ms¸ßµçƽ
                        OUT=0;            //ÆäËûʱ¼äÊǵ͵çƽ
                        
                     //ÏÔʾLµÄ´óС
                        Data1=20;
                        Data2=(L-100)/100;      //°Ùλ
                                                //Data2=Data2+10¼Ó10displayº¯ÊýÏÔʾµÄÊý×Ö»á´øСÊýµã
                        
                        Data3=(L-100)%100/10;   //    ʮλ               
                        Data4=(L-100)%10;       //   ¸öλ
                }
                                                        }
                                                        ////////////////////////////////////////////////
                                                        if(mode==0)
                                                        {

               
                                                                B1=1;B2=1;B3=1;B4=1;
                        
                        ADC_CONTR=0x88+7;   
                        delay_n_10us(5);   
                        adc=ADC_RES;         
                        
                        L=adc;
                                                                if(L>100)L=100;
                                                                        OUT=1;
                        delay_n_10us(L);

                                                               
                        OUT=0;
                                                                        Data1=21;
                        Data2=(L)/100;   
                                                
                        
                        Data3=(L)%100/10;         
                        Data4=(L)%10;
                                                        }
                                               
               
               
                ///////////////////////////////////////////////////////
               //ÏÔʾ³ÌÐòÄ£¿é»¯   Ö»Ðè¸Ä±äData1/2/3/4µÄÊýÖµ¾Í¿ÉÒÔ¿ØÖÆÏÔʾÄÚÈÝ
               
                display_time=display_time+1;
                if(display_time>3)
                {
                        display_time=0; //0123ËĸöÑ­»·
                }
               
                if(display_time==0)    //µÚ0´ÎÏÔʾµÚÒ»¸öÊýÂë¹Ü
                {
                        B1=0;B2=1;B3=1;B4=1;      
                        display(Data1);    //ÏÔʾµÚһλÊý¾Ý            
                }
               
                if(display_time==1)
                {
                        B1=1;B2=0;B3=1;B4=1;      
                        display(Data2);               
                }
               
                if(display_time==2)
                {
                        B1=1;B2=1;B3=0;B4=1;      
                        display(Data3);            
                }
               
                if(display_time==3)
                {
                        B1=1;B2=1;B3=1;B4=0;      
                        display(Data4);               
                }
      }
}

我爱萝丽爱萝丽 发表于 2017-5-16 21:32:02

a13621146 发表于 2017-5-14 15:30
大神帮我看下以下程序哪里有错误.为什么输出电压只有一半?
#include
#include    //µ÷ÓÃ_nop_();


是不是用了两个电阻分压,程序里面再乘以2就行了

a13621146 发表于 2017-5-17 21:20:33

我爱萝丽爱萝丽 发表于 2017-5-16 21:32 static/image/common/back.gif
是不是用了两个电阻分压,程序里面再乘以2就行了

是单片机的引脚输出电压!不是电压表

我爱萝丽爱萝丽 发表于 2017-5-18 12:44:00

a13621146 发表于 2017-5-17 21:20
是单片机的引脚输出电压!不是电压表

单片机只能输出高电平5V或低电平0V,不知道你说的是什么。5V接了LED会变低。

skerryzz 发表于 2017-5-25 16:19:04

顶顶顶

davidxu 发表于 2017-6-14 13:48:15

好教程,谢谢了

时间匆匆 发表于 2017-8-29 08:15:22

666666666666666666666666666666666666666666

曾诚 发表于 2017-9-5 16:02:51

入坑了,没办法,拼命赞吧!

lihui12321 发表于 2017-9-7 02:49:28

好贴,感谢分享

木木子观 发表于 2018-2-5 17:56:52

赞赞赞一个先。{:1_14:}

陈小手 发表于 2018-2-5 21:42:29

USB有通信功能吗{:1_12:}

magic8en 发表于 2018-5-3 14:25:29

感谢楼主分享      

coolbgo 发表于 2018-7-1 14:09:21

请教大神,为什么呼吸灯模式光线暗下去的时候频闪很明显 尝试过1000hz还是这样 是程序哪里写的不对?还是pwm就这样?

coolbgo 发表于 2018-7-1 14:10:01

#include<reg51.h>

sbit led_r=P3^2;//É趨LED¡¢°´¼ü½Åλ
sbit led_g=P3^3;
sbit led_b=P3^4;
sbit key1=P3^1;
sbit key2=P3^0;

unsigned char mode,key1_old,key1_action,key2_old,key2_action,light=100,light_back,count,second,duty_r,duty_g,duty_b;
//É趨±äÁ¿ ģʽ£¬¼ü1¼Ç¼£¬¼ü1¾ÍÐ÷£¬¼ü2¼Ç¼£¬¼ü2¾ÍÐ÷£¬ÁÁ¶È³õʼֵ100£¬ÁÁ¶Èϵ÷±êÖ¾£¬10ºÁÃë¼ÆÊýÖÜÆÚ£¬ÃëÊý£¬ºìÉ«ÁÁ¶È¿ÕÕ¼±È100¼¶£¬ÂÌÉ«¿ÕÕ¼±È£¬À¶É«¿ÕÕ¼±È
unsigned int count2,count3=3333,count4=6666;//É趨±äÁ¿ 1Ãë¼ÆÊýÖÜÆÚ

void Delay100us()                //@12.000MHz ¶¨Òå0.1ºÁÃëÑÓʱ
{
    unsigned char i, j;

    i = 2;
    j = 39;
    do
    {
      while (--j);
    } while (--i);
}


void delay(unsigned int n)//100n us
{
    while(n--)
    {
      Delay100us();
    }
}


main()
{
    while(1)
    {
      Delay100us();//0.1ºÁÃë1¸öÑ­»·

      count++;//¼ÆÊýÆ÷£¬Ò»¸öÖÜÆÚ10ºÁÃë 100¸öÑ­»· 1Ãë100ÖÜÆÚ 100hz
      if(count>99)
      {
            count=0;
      }

      count2++;//¼ÆÊýÆ÷2£¬Ò»¸öÖÜÆÚ1Ãë
      if(count2>9999)
      {
            count2=0;
            second++;
            if(second>3)//ÃëÊý¼Ç¼£¬Ò»¸öÖÜÆÚ4Ãë
            {
                second=0;
            }
      }
                               
                                count3++;//¼ÆÊýÆ÷3£¬Ò»¸öÖÜÆÚ1Ãë
      if(count3>9999)
      {
            count3=0;
      }
                               
                                count4++;//¼ÆÊýÆ÷4£¬Ò»¸öÖÜÆÚ1Ãë
      if(count4>9999)
      {
            count4=0;
      }

      if(count==0)//°´¼ü¼ì²â£¬10ºÁÃë1´Î
      {
            if(key1==0&&key1_old==1)
            {
                key1_action=1;
            }

            if(key2==0&&key2_old==1)
            {
                key2_action=1;
            }
            key1_old=key1;//±£´æ°´¼ü
            key2_old=key2;

            if(key1_action==1)//°´¼ü1¸Ä±äģʽ
            {
                key1_action=0;
                mode++;
                if(mode>9)
                {
                  mode=0;
                }
            }

            if(key2_action==1)//°´¼ü2¸Ä±äÁÁ¶È10¼¶£¬¹²100¼¶ÁÁ¶È
            {
                key2_action=0;
                if(light_back==0)
                {
                  light+=10;
                  if(light>99)
                  {
                        light_back=1;
                  }
                }

                if(light_back==1)
                {
                  light-=10;
                  if(light==0)
                  {
                        light_back=0;
                  }
                }
            }
      }


      if(mode==0)//ģʽ0¹ØµÆ
      {
            duty_r=0;
            duty_g=0;
            duty_b=0;
      }
                               
      if(mode==1)//ģʽ1 È«ÁÁ
      {
            duty_r=light;
            duty_g=light;
            duty_b=light;
      }
                               
      if(mode==2)//ģʽ2 ±¬ÉÁ
      {
            if(count2<1000)
            {
                duty_r=light;
                duty_g=light;
                duty_b=light;
            }
            else
            {
                duty_r=0;
                duty_g=0;
                duty_b=0;
            }
      }
                               
      if(mode==3)//ģʽ3 Ë«±¬ÉÁ 1ÃëÖÜÆÚ
      {
            if(count2<1000)
            {
                duty_r=light;
                duty_g=light;
                duty_b=light;
            }
            else if(count2>=1000&&count2<2000)
            {
                duty_r=0;
                duty_g=0;
                duty_b=0;
            }
            else if(count2>=2000&&count2<3000)
            {
                duty_r=light;
                duty_g=light;
                duty_b=light;
            }
            else
            {
                duty_r=0;
                duty_g=0;
                duty_b=0;
            }
      }

      if(mode==4)//ģʽ4 ÁÁ°ëÃëÃð°ëÃë
      {
            if(count2<5000)
            {
                duty_r=light;
                duty_g=light;
                duty_b=light;
            }
            else
            {
                duty_r=0;
                duty_g=0;
                duty_b=0;
            }
      }
                               
                               
      if(mode==5)//ģʽ5 4ÃëÂýË«ÉÁ
      {
            if(count2<5000&&second==0)
            {
                duty_r=light;
                duty_g=light;
                duty_b=light;
            }
            else if(count2>5000&&second==0)
            {
                duty_r=0;
                duty_g=0;
                duty_b=0;
            }
            else if(count2<5000&&second==1)
            {
                duty_r=light;
                duty_g=light;
                duty_b=light;
            }
            else
            {
                duty_r=0;
                duty_g=0;
                duty_b=0;
            }
      }
                               
      if(mode==6)//ģʽ6 4Ãë7É«ÅÜÂíµÆ
      {
                                        if(count2<5000&&second==0)
                                        {
            duty_r=light;
            duty_g=0;
            duty_b=0;
                                        }
                                       
                                        if(count2>5000&&second==0)
                                        {
            duty_r=light;
            duty_g=light;
            duty_b=0;
                                        }
                                       
                                        if(count2<5000&&second==1)
                                        {
            duty_r=0;
            duty_g=light;
            duty_b=0;
                                        }
                                       
                                        if(count2>5000&&second==1)
                                        {
            duty_r=0;
            duty_g=light;
            duty_b=light;
                                        }
                                       
                                        if(count2<5000&&second==2)
                                        {
            duty_r=0;
            duty_g=0;
            duty_b=light;
                                        }
                                       
                                        if(count2>5000&&second==2)
                                        {
            duty_r=light;
            duty_g=0;
            duty_b=light;
                                        }
                                       
                                        if(count2<5000&&second==3)
                                        {
            duty_r=light;
            duty_g=light;
            duty_b=light;
                                        }
                                       
                                        if(count2>5000&&second==3)
                                        {
            duty_r=0;
            duty_g=0;
            duty_b=0;
                                        }
                                       
      }



                               
                                if(mode==7)//ģʽ7 1ÃëºôÎüµÆ
      {
            if(count2<5000)
            {
                duty_r=count2/50;//0-100
                duty_g=count2/50;
                duty_b=count2/50;
            }
            else
            {
                duty_r=(10000-count2)/50;
                duty_g=(10000-count2)/50;
                duty_b=(10000-count2)/50;
            }
      }

      if(mode==8)//ģʽ8 4ÃëÂýºôÎü
      {
            if((count2+10000*second)<25000)
            {
                duty_r=(count2+10000*second)/250;
                duty_g=(count2+10000*second)/250;
                duty_b=(count2+10000*second)/250;
            }
            else
            {
                duty_r=(40000-(count2+10000*second))/150;
                duty_g=(40000-(count2+10000*second))/150;
                duty_b=(40000-(count2+10000*second))/150;
            }
      }

      if(mode==9)//ģʽ9 7²ÊºôÎü
      {
                                                if((count2+10000*second)<25000)
                                                {
                                                        duty_r=(count2+10000*second)/250;
                                                }
                                                else
            {
            duty_r=(40000-(count2+10000*second))/150;
                                                }
                                               
                                                if((count3+10000*second)<25000)
                                                {
                                                        duty_r=(count3+10000*second)/250;
                                                }
                                                else
            {
            duty_r=(40000-(count3+10000*second))/150;
                                                }
                                               
                                                if((count4+10000*second)<25000)
                                                {
                                                        duty_r=(count4+10000*second)/250;
                                                }
                                                else
            {
            duty_r=(40000-(count4+10000*second))/150;
                                                }
                                                if(key2==0)
                                                {
                                                        delay(10000);
                                                }
      }



      if(duty_r>count)//ºìÉ« pwm
      {
            led_r=1;
      }
      else
      {
            led_r=0;
      }

      if(duty_g>count)//ÂÌÉ« pwm
      {
            led_g=1;
      }
      else
      {
            led_g=0;
      }

      if(duty_b>count)//À¶É« pwm
      {
            led_b=1;
      }
      else
      {
            led_b=0;
      }


    }
}

sc19 发表于 2018-7-27 00:44:00

跟随大神的脚步……

我爱萝丽爱萝丽 发表于 2018-7-27 00:46:53

coolbgo 发表于 2018-7-1 14:09
请教大神,为什么呼吸灯模式光线暗下去的时候频闪很明显 尝试过1000hz还是这样 是程序哪里写的不对?还是pw ...

程序不对,人眼能觉察说明实际并没有1000hz

C5126059 发表于 2018-12-28 16:05:18

爆闪怎么延时才不会失灵呢,请教

yzx12354 发表于 2019-1-10 08:49:16

感谢楼主,支持教程
页: 1 2 3 4 5 [6] 7
查看完整版本: 第七课:扩展课!用掉你的单片机