1. Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.
    Dismiss Notice

basics of 8051 microcontroller

Discussion in '8051/8951' started by PG1995, Mar 15, 2012.

  1. remon7

    remon7 Active Member

    Joined:
    Aug 3, 2013
    Messages:
    122
    Likes:
    55
    Location:
    Malaysia
  2. PG1995

    PG1995 Active Member

    Joined:
    Apr 18, 2011
    Messages:
    1,645
    Likes:
    13
    Hi

    What microcontroller should I use to design a maximum power tracker? I have some experience with 8051 as is witnessed by this thread but have forgotten almost all the stuff. I was thinking of using PIC 16F877 but after reading Jon Wilder post above, I thought it would be a good idea to explore an alternative. I want to base the code on this flowchart. The block diagram of the system looks like this. You might also find this block diagram useful. Thank you.

    Regards
    PG
     

    Attached Files:

    Last edited: Apr 4, 2014
  3. Little Ghostman

    Little Ghostman Well-Known Member Most Helpful Member

    Joined:
    Jan 7, 2011
    Messages:
    3,702
    Likes:
    426
    Location:
    SCOTLAND
    I have an excellent 8051 simulator! with lcd's and all sorts, but its on the broken laptop!!! let me try and hunt around the net for it! its really ace
     
  4. dave

    Dave New Member

    Joined:
    Jan 12, 1997
    Messages:
    -
    Likes:
    0


     
  5. Little Ghostman

    Little Ghostman Well-Known Member Most Helpful Member

    Joined:
    Jan 7, 2011
    Messages:
    3,702
    Likes:
    426
    Location:
    SCOTLAND

    It does some ATMEL chips as well, but when you start a new project it gives you a drop down box, just select 8051.
    For C it uses SDCC compiler, its actually a IDE but has a simulator in it with loads of goodies
    http://mcu8051ide.sourceforge.net/intro
     
  6. Little Ghostman

    Little Ghostman Well-Known Member Most Helpful Member

    Joined:
    Jan 7, 2011
    Messages:
    3,702
    Likes:
    426
    Location:
    SCOTLAND
    Forgot to add it does ASM as well, you get keypads and led matrix, all sorts and works really well, I was going to use it to learn 8051 but I kind of jumped straight into hardware instead :rolleyes:. I have downloaded it again though :D
     
  7. Little Ghostman

    Little Ghostman Well-Known Member Most Helpful Member

    Joined:
    Jan 7, 2011
    Messages:
    3,702
    Likes:
    426
    Location:
    SCOTLAND
    POO you caught me with an old thread again!!! :hilarious::oops: oh well it might help someone! can you please :stop: brnging back the dead without at least warning people!!! we dont charge by the thread FFS :joyful:
     
  8. Little Ghostman

    Little Ghostman Well-Known Member Most Helpful Member

    Joined:
    Jan 7, 2011
    Messages:
    3,702
    Likes:
    426
    Location:
    SCOTLAND
  9. PG1995

    PG1995 Active Member

    Joined:
    Apr 18, 2011
    Messages:
    1,645
    Likes:
    13
    Thank you, Little Ghostman. :)

    I have used the simulator MCU 8051 IDE in the past. Yes, it's an old thread but I always try to keep similar content in the same thread. It also helps other members to help me in a better way because they can go through past posts, if they like to, to see what little bit I have already learned about the topic previously. In my view, you should have tried to help me with my most recent query rather than going for the queries which had already been answered. Moreover, You could have edited your post and added more content to a single post rather than generating four different posts. Please don't mind me. I'm just saying this as a friend.

    Best wishes
    PG
     
  10. Little Ghostman

    Little Ghostman Well-Known Member Most Helpful Member

    Joined:
    Jan 7, 2011
    Messages:
    3,702
    Likes:
    426
    Location:
    SCOTLAND
    I dont think you can edit posts anymore after a set time, thats why I post many times, often I think of something ten mins later and cant edit the original post!
    I understand why you put it all in the same thread, but most people including me feel STUPID replying to an old question! most times we forget to look at the date and just assume the question is new because the post is at the top.
    Sorry I couldn't help more. By the way what did you think of the IDE simulator? I think considering how many chips it supports and all the external stuff it can sim, its great for a totally free program!
     
  11. PG1995

    PG1995 Active Member

    Joined:
    Apr 18, 2011
    Messages:
    1,645
    Likes:
    13
    I learned a lot using that simulator. It was great. I still remember that Ian Rogers suggested that simulator. Thanks.
     
  12. Little Ghostman

    Little Ghostman Well-Known Member Most Helpful Member

    Joined:
    Jan 7, 2011
    Messages:
    3,702
    Likes:
    426
    Location:
    SCOTLAND
    Trust Ian to beat me to it! lol
     
    • Dislike Dislike x 1
    • Funny Funny x 1
  13. Ian Rogers

    Ian Rogers Super Moderator Most Helpful Member

    Joined:
    Mar 28, 2011
    Messages:
    9,151
    Likes:
    907
    Location:
    Rochdale UK
    ONLINE
    Actually Jon Wilder beat me to it!!

    I still use it... I am trying to get ASM / C tutorials into the articles section... Nearly done, so it comes in handy...
     
  14. PG1995

    PG1995 Active Member

    Joined:
    Apr 18, 2011
    Messages:
    1,645
    Likes:
    13
    Hi

    I have found this code which I believe can be tweaked to serve the purpose. Please note that I don't really understand the code and it has been few years when I did some basic C++. Please let me know what you think of it. You can also refer to post #22 above. Thanks.

    Regards
    PG
     
  15. Little Ghostman

    Little Ghostman Well-Known Member Most Helpful Member

    Joined:
    Jan 7, 2011
    Messages:
    3,702
    Likes:
    426
    Location:
    SCOTLAND
    Better to post code in tags like this
    Code (text):

    #include <16f876.h>
    #device *=16 ADC=10
    #use delay(Clock=20000000)
    #fuses XT, NOWDT, NOPROTECT, NOPUT, NOBROWNOUT,NOLVP
    #define BATTERY_CHARGED 63
    #define night_voltage 61

    float mean_adc(byte channel) // Reads the adc port 30 times and gives the mean value
    {

       int i,mean_total = 30;
       float mean = 0,mean1 = 0;

       set_adc_channel(channel);
       delay_us(100);
       for (i=1; i<=mean_total; i++)
       {
          mean =mean + read_adc();
      delay_us(100);
       mean1=(mean/mean_total);
       }
       return(mean1);
    }
    main()
    {

       const byte current_channel = 0; // sets the channel one to read solar panel current
       const byte voltage_channel = 1; // set to read solar panel voltage
       const byte voltage_battery_channel=2;
       const byte current_battery_channel=4// set to read battery voltage

       float current; // initialising variables
       float battery_voltage;
       float voltage;
       float power_new = 0.0;
       float power_old= 0.0;
       long duty_change = 1;
       long pwm_value;
       setup_adc_ports(ALL_ANALOG); // setting up all port a as analog
       setup_adc(adc_clock_div_32);
       setup_ccp1(CCP_PWM);
       setup_timer_2(T2_DIV_BY_1, 99, 1);// pwm frequency 50KHz
       set_pwm1_duty(60)
       delay_ms(1000);

       while(TRUE) {
     
       current = mean_adc(current_channel);
       voltage = mean_adc(voltage_channel);
       battery_voltage=mean_adc(voltage_battery_channel);
       battery_current=mean_adc(current_battery_channel);
       power_new = current * voltage;
          if (battery_voltage > 517 || battery_current>670) // 517 corresponding to 14.4 battery voltage and 670 corresponding to 3A
         {
            set_pwm1_duty(0);
             output_high(battery_charged);
          }
          if (power_old >= power_new) {
             duty_change -= duty_change; // decrease duty cycle
                   }
           else if (power_old<power_new)
           {
           duty_change += duty_change; // increase duty cycle
           }
          power_old = power_new;
          pwm_value =pwm_value+ duty_change;
          if (pwm_value > 160)// maximum duty cycle
          {
          pwm_value = 160;
          }
             else if (pwm_value< 36)  // duty cycle minimum
             {
             pwm_value = 36;
             }
         if (voltage<429)//429 CORRESPONDING TO 12V
         {
            pwm_value=0;
            out_high(night_voltage);
         }
          set_pwm1_duty(pwm_value);    
          delay_ms(1000);
       } // end of while
    }   //end main
     
  16. Little Ghostman

    Little Ghostman Well-Known Member Most Helpful Member

    Joined:
    Jan 7, 2011
    Messages:
    3,702
    Likes:
    426
    Location:
    SCOTLAND
    Well thats pic 16f code and your in the 8051 forum! so are you using a pic or a 8051? you are going to confuse me
     
  17. PG1995

    PG1995 Active Member

    Joined:
    Apr 18, 2011
    Messages:
    1,645
    Likes:
    13
    Hi Little Ghostman

    I'm going to use PIC. I posted it here because I had already made a related post above. Sorry for the confusion. Thanks.
     
  18. Little Ghostman

    Little Ghostman Well-Known Member Most Helpful Member

    Joined:
    Jan 7, 2011
    Messages:
    3,702
    Likes:
    426
    Location:
    SCOTLAND
    Which pic? The one mentioned above? do you have the CCS compiler? Do you have a schematic? Are you going to make me ask 1000 questions first? lol :D
     
  19. PG1995

    PG1995 Active Member

    Joined:
    Apr 18, 2011
    Messages:
    1,645
    Likes:
    13
    Thanks.

    I can use the one mentioned in the code, i.e. PIC 16f876. This is the block diagram. You can also refer to post #22 above. Let me know if there is still some confusion. I can also get CCS compiler. Thank you.
     

    Attached Files:

  20. Little Ghostman

    Little Ghostman Well-Known Member Most Helpful Member

    Joined:
    Jan 7, 2011
    Messages:
    3,702
    Likes:
    426
    Location:
    SCOTLAND
    I dont use CCS, but yes it would probably do what you want regarding the block diagram. If you go hat route your question's may be better answered on the CCS forum, most here dont seem to use CCS although it dosnt look much different to most C compilers.
    Anyway to answer your question, yes its ok based on the details given ;)
     
    • Thanks Thanks x 1

Share This Page