Right-left scrolling LEDs

Project description:

 In this project, 8 LEDs are connected to PORT B of a PIC microcontroller. Also a push-button switch is connected to bit 0 of PORT A using a pull-up resistor.. When the switch is pressed the LEDs scroll to the right.

Hardware:

The circuit diagram of the project is shown in Figure 1. The circuit in this project additionally a switch is connected to bit 0 of PORTA to control the direction of scrolling. A PIC16F627 model PIC micro controller is used and the micro controller is operated from its 4 MHz internal clock. The LEDs are connected to 8 pins of PORT B using 330_ current-limiting resistors. An external reset button is connected to MCLR input of the microcontroller.Right-left scrolling LEDs

Flow diagram:

The flow diagram of the project is shown in Figure 2. At the beginning of the program the I/O direction is specified. A byte variable called Cnt is used as the loop variable. The program consists of an indefinite loop and at the beginning of the loop the switch is tested. If the switch is logic 1 (i.e. switch is not pressed) then the scrolling is to the left and if the switch is pressed the switch is at logic 0 and scrolling is to the right. A 250 ms delay is used between each output.

Software: Pic Basic

The software for PicBasic language is given in Figure 3. At the beginning of the program PORTA, PORTB, TRISA, TRISB, and CMCON register addresses are defined. TRISA is set to 1 so that bit 0 of PORTA is configured as an input port. Similarly, TRISB is cleared to 0 so that all bits of PORTB are configured as outputs. Push-button switch is connected to bit 0 of PORTA (RA0). Normally this pin is pulled high to logic 1 by using a resistor. When the switch is pressed the pin goes down to logic 0. PORTA pins on the PIC16F627 microcontroller have dual functions and they can either be used as analog comparator inputs, or as digital I/O ports. CMCON register is used to control the function of these pins. Setting CMCON to 7

configures PORTA pins as digital I/O ports. Inside the LOOP, the value of Cnt is sent to PORTB and the PEEK instruction is used to read the switch setting. “Bit0” refers to bit 0 of variable “B0” which is where the switch is connected. When the switch is pressed the program jumps to label PRESSED where the LEDs are scrolled right. When the switch is not pressed the LEDs are scrolled left. This loop is repeated forever with 250 ms delay between each output. Set port directions

‘*************************************************************************

‘ RIGHT-LEFT SCROLLING LEDS

‘ =========================

‘ 8 LEDs are connected to PORTB of a PIC microcontroller. This program

‘ scrolls the LEDs to the right or left depending on a switch setting. The switch

‘ is connected to bit 0 of PORT A. If the switch is not pressed the switch

‘ output is at logic 1 and the LEDs scroll to the left. When the switch is

‘ pressed the LEDs scroll to the right. A 250ms delay is used between each

‘ output.

‘*************************************************************************

Right-left scrolling LEDs schematich‘ SYMBOLS

Symbol TRISA = $85                                              ‘ TRISA address

Symbol TRISB = $86                                              ‘ TRISB address

Symbol PORTA = $05                                             ‘ PORTA address

Symbol PORTB = $06                                            ‘ PORTB address

Symbol CMCON = $1F                                          ‘ CMCON address

Symbol Cnt = B1                                                    ‘ Cnt is a byte variable

Symbol Switch = B0                                                 ‘ Switch is a byte variable

‘ START OF MAIN PROGRAM

POKE CMCON, 7                                                  ‘ RA0-RA3 are digital I/O

POKE TRISA, 1                                                    ‘ Set PORTA bit 0 as input

POKE TRISB, 0                                                    ‘ Set all PORTB pins as outputs

 

 

For more detail: Right-left scrolling LEDs

About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter