Followers

Powered by Blogger.
Tuesday, February 10, 2009

Pulse Width Modulation or PWM Tutorial using PIC 16F877, Proteus and Mikroc PART-2

Now lets see how to write a code for controlling PWM Module of a PIC Micro Controller using the Mikroc compiler.
MikroC provides a very simple PWM library with 4 functions shown below
  • Pwm_Init
  • Pwm_Change_Duty
  • Pwm_Start
  • Pwm_Stop
The pwm_init used for initializing PWM which takes a arguement of frequency in hertz

To Initialize a PWM module at 2KHz do this :Pwm_Init(2000);

Pwm_Start and Pwm_Stop are used for starting and stopping PWM .

Pwm_Change_Duty Changes PWM duty ratio. Parameter duty takes values from 0 to 255. It can be calculate using equation (Percent*255)/100. See 0 is 0%, 127 is 50%, and 255 is 100% duty ratio.

Take a look at the following simple program

// microcontroller : P16F877A
// PWM module is set on RC2 Pin No 17.

unsigned short i;

void main() {
PORTC = 00; // Set PORTC to $FF
TRISC = 0; // PORTC is output
Pwm_Init(5000); // Initialize PWM module

Pwm_Start(); // Start PWM

while (1) { // Endless loop
for(i=0;i<=255;i++)

{ Pwm1_Change_Duty(i);

delay_ms(10); }

} }


This program creates a pwm on pin17 of PIC16F877A .Hope you found this tutorial useful .If you have any doubts about the program .Leave a comment . click to enlarge figure. set CRO channel A Volts to 1 V and time/div to 50us

Download DSN for Proteus

0 comments:

About Me