Interfacing LCD Modules with PIC Microcontrollers.

A large number of embedded project require some type of user interface. This includes displaying numerical, textual and graphical data to user. For very simple numerical display we can use 7 segment displays. If the requirement is little more than that, like displaying some alphanumeric text, we can use LCD Modules. They are cheap enough to be used in low cost projects. They come in various sizes for different requirement. A very popular one is 16×2 model. It can display 2 lines of 16 characters. Other models are 16×4,20×4, 8×1,8×2 etc. In this tutorial we will learn how we can use such modules with Microchip PIC Microcontrollers. Here I will present my LCD library which you can use to create LCD based application/projects quickly. For demo I will use PIC18F4520 Microcontroller but you can use any PIC18 MCU. But you have to calculate the CONFIG values for correct setting and CPU clock selection etc. That means the chip should be configured correctly. See datasheet for more info on CONFIG bytes. MPLAB Project Creation First create a MPLAB project as described in this tutorial. Name the project LCD. Also add a main file called "lcd_test.c". To use my LCD library you need to add it to your project. Just copy/paste the following files to your project folder. Header Files lcd.h myutils.h […]

AVR Project – Relay Timer with ATmega8 AVR MCU

Timers are widely used in industrial and domestic application for automating tasks. Microcontrollers can be used to design versatile and accurate timers with ease. Here I present a simple timer that can be used to turn on/off a load after user specified time. The Timer uses a standard 16×2 lcd module for user interface (UI). User can set the time using a 3 button keypad. After that Timer is started. While count down is in progress, the time left is displayed on screen. The program use our LCD driver library more details of which can be found in here. Use avr-gcc + AVR Studio to compile. The prototype was developed using xBoard MINI, a low cost easy to use ATmega8 development board. The program was burned to the MCU’s flash memory using eXtreme Burner – AVR Software and Hardware. A basic knowledge of working with different tools of AVR development is required, so please refer to following articles. Note: Fuse Must be set as follows, HIGH FUSE=C9 LOW FUSE=FF (Very Important) If display is blank please adjust RV1 Part List 01 ATmega8-16 PU U1 02 16×2 LCD Module LCD1 03 16 MHz Crystal X1 04 BC548 Transistor Q1 05 1N4007 Diode D1 06 4.7K Resistor R1,R2 07 10K Variable Resistor VR1 08 22pF Disk Capacitor c1,c2 09 0.1uF Disk Capacitor […]

AVR Development Board – Assembly Instructions

A well designed development board is always essential for smooth development/experimentation with microcontrollers. Every hobbyist must have some kind of development setup. Some people use breadboard while others use veroboard to fabricate their development system. Many also use ready made off the self development board. Development is not very easy if you use only bread boards or veroboard. If you use bread board, after few days of use the wire will become loose or come out of hole. While making large circuit in a veroboard is a tedious job. To solve these problem I decided to make a low cost development board that has the following features. Low Cost All Basic connection required for developing application with AVR MCUs A Serial Port Prototyping area (like a veroboard) Incircuit Programmable with USB AVR Programmer Supports 40 PIN MCUs like ATmega16 and ATmega32. Buy Fully Assembled and Tested AVR Development Board So if you use this board, its lots easier. The basic circuit for MCU (like power supply,reset,ISP,serial port etc) are already done on a high quality PCB and some space is left for you to add other project specific components. You can also design other part of your project in bread board. But this time your bread board will be lot cleaner as major tested circuit is on the development board. […]

RF Communication Between Microcontrollers – Part II

Hello Friends, Welcome back to the Part II of RF Communication tutorial. Here I will show you the basic working of RF modules and how to send and receive data. Please see the Part I of this tutorial for basic introduction. You should also be familiar with RS232 communication. If you are new to it please see RS232 Serial Communication Tutorial. I also recommend using wireless link only after you have successfully tried wired RS232 communication. Here I will not go deep in how RS232 works because it is already discussed in RS232 Serial Communication Tutorial. I will use my interrupt driven fully buffered USART library for communication. How RF Module Works Working of RF Modules is simple but with a little trick. The working is shown in figure below. Fig- Working of RF Modules.   Here what ever digital data you input on "Data In" of TX is available on "Data Out" of RX. Say, if you set "data in" high, the "data out" will become high as well. But here lies the trick! The fact is that you cannot Keep Logic HIGH or LOW for a Long period of time, say for a few millisecond second. If you apply a logic low on "data in" the "data out" will become low but only for few millisecond and it […]

Programming in C – Tips for Embedded Development.

Here I will highlight some features of C language commonly used in 8 bit embedded platforms like 8051, AVR and PICs. While programming microcontrollers in C most of the time we have to deal with registers. Most common tasks are setting and clearing bits in a register and check whether a bit is 0 or 1 in a given register. So here I will give detail on those topics, it will help you if you are new to embedded programming in C and if you get confused when you see some codes. A Register A register is simply a collection of some bits (mostly 8 bits in case of 8bit MCUs). Either each different bit in a register has some purpose or the register as a whole holds a value. Registers serves as connection between a CPU and a Peripheral device (like ADC or TIMER). By modifying the register the CPU is actually instructing the PERIPHERAL to do something or it is configuring it in some way. And by reading a register, the CPU can know the state of peripheral or read associated data. Fig.: CPU writing to Peripheral Register   Fig.: CPU Reading from Peripheral Register Binary Numbers in C When you write a=110; in C it means you are setting the value of variable"a" to "one hundred and […]

RF Communication Between Microcontrollers – Part I

In many situations a communication link between to devices becomes essential. This communication can be wired or wireless. If two devices are close to each other (like a MCU and a Memory) a wired link is preferred. How ever in many situations two devices are reasonably far apart. In that case a wireless link is preferred. Two popular wireless communication technologies are IR Communications Used in IrDA, and Remote controls Short Range Requires two devices to be in line of sight. There should be no Opaque Obstacle in between the devices. Easy and low cost to implement RF Communication Widely used, including Bluetooth,Radios,Cell phones, Satellite etc Wide range, from few meters to millions of kilometers (Can be Used to control Robots in Mars) Does not requires two devices to be in line of sight. Can cross many obstacles Circuits can be complicated and costly. In this tutorial we will learn how to practically implement a wireless link between two MCUs. This link will be used to send and receive digital data. We will create a Radio Frequency link. How ever as I said the RF circuits are little complicated so we will use ready made RF Modules. These are easily available and low cost. What is a RF Module ? A RF Module is a small circuit pre built and […]

AVR Project – Digital Stop Watch with ATmega8

Hello Friends, In this tutorial we will make a "Digital Stop Watch" using an AVR ATmega8 Microcontroller. This will help you learn many concepts like Multiplexed Seven Segment Display Interfacing Using AVR Timers Using Interrupts And many others too. The code is written in C language for avr-gcc (WinAVR) . Fig.: Digital Stop Watch Prototype Steps to Build the "Digital Stop Watch" using AVR ATmega8 MCU Make the circuit according to the schematic on general purpose PCB or a BreadBoard. Make a project in AVR Studio and add a new file to the project. Copy/paste the "c" code. Set optimization as "o2" and CPU frequency as 16000000Hz. Save and Build the project. You will get a HEX file. Burn this HEX file to an ATmega8 MCU using a tool such as eXtreme Burner AVR. Set High Fuse = C9(Hex) Low Fuse = FF(Hex). How to do this depends on you programmer software. I have use a xBoard MINI development board for fast and easy prototyping. The Displays+Transistors+Key are on the Veroboard while the Core CPU unit + power supply is in the xBoard MINI. It can be programmed "In System" over USB Port using eXtreme Burner – AVR software toolkit. Fig.: Digital Stop Watch made using xBoard MINI   How to Use the "Digital Stop Watch" When initially powered up […]

PIC Development Board – Expansion of Board

The PIC Development board from eXtreme Electronics has the feature of connecting add-on boards, like user interface board or a motor controller board. You can also make your own expansion board. Actually the board has the ability to connect a prototyping area where you can create your project specific circuit while the "basic" environment for PIC resides on the Development board. Fig.: Replaceable Prototyping Area   In this way many project can be created and kept for future use. Each project resides in its own board when you need that simply pair it with development board and the project is up and running! No messy wiring! Preparing a Veroboard for connection Take a general purpose PCB (veroboard) and solder a 40 PIN right angled burg strip connector in one end. Fig.: Replaceable Prototyping Area Now the it is ready to plug into the Development Board. Fig.: Replaceable Prototyping Area   After you connect your prototyping area to the Dev Board all PORTs of PIC MCU and Power Supply becomes available in the veroboard. Here you can connect all sort of components required by your project. It is very easy to remove the prototyping are and replace it with a fresh new one for another project. Thus a single development board can be used for many different projects. The 40 PIN […]

PIC Development Board – Hello World Project

Hello friends, welcome to this exciting tutorial were we will begin our journey with latest PIC18F micros from Microchip Technologies. This tutorial will give you information on what software/hardware you will require and basic steps on how to get, install, configure and use them. After going through this tutorial you will have a complete setup and knowledge to experiment with these powerful chips !           What you will learn ? MPLab as a powerful IDE. HI-TECH C for PIC18 MCUs as a powerful C Compiler. Creating a new HI-TECH C project in MPLab. Write a C Code to blink LED and compile it to get a HEX code. Configure the MCU for proper oscillator selection. Basic Use for PIC development board from eXtreme Electronics Burn the HEX code to MCU using eXtreme Burner PIC from eXtreme Electronics. Use the programmed MCU to actually blink the LED ! So lets get started !!! First get these stuffs Microchip’s MPLab IDE or Integrated development Environment. This is the central tool from where you can access most of other tools, like the C Compiler. This also lets you create and edit program files and projects. Download this from Microchips Web site and Install it in your computer. Download MPLAB IDE Free. HI-TECH C Pro for PIC18 MCUs – This […]

PIC Development Board – Programming

The PIC Development Board can be easily programmed INCircuit by using our eXtreme Burner – PIC, a PIC Programmer with USB Connectivity. The firmware of a Microcontroller is normally stored in HEX files. This HEX file is generated by an assembler or a Compiler. In this section we will show you how you can transfer a HEX file from your PC to the Microcontroller. NOTE: It is assumed that eXtreme Burner – PIC (hardware) is installed as described in its documentation. It is assumed that eXtreme Burner – PIC (software) is installed as described in its documentation. Connect the PIC development board with the programmer using a six pin female to female cable as shown below. Power on both development board and the burner. Fig. Six pin female to female cable for ICSP.   Fig. 6 PIN ICSP of Development Board.   Fig. 6 PIN ICSP of eXtreme Burner – PIC. Launch eXtreme Burner – PIC from Windows Desktop or Start Menu. Fig.: eXtreme Burner – PIC, Main Screen.   The software is easy to use. First you need to load the HEX file which you want to burn to the MCU. So select Open from File Menu or From the Toolbar. Then select the hex file. Now the HEX file will be loaded and the contents (FLASH,EEPROM,Chip Settings) will […]

PIC Development Board – Introduction

Thanks for selecting PIC development board from eXtreme Electronics. Now lets get familiar with this powerful and easy to use system. Introduction This board will help you build and test any project with PIC microcontroller quickly and easily. It can be used to work with any 40 PIN PIC micros. The board provides the basic environment for the PIC to run. The great advantage of the design is replaceable prototyping area. All ports and power supply is available on 40 PIN female connecter. You can easily attach a normal veroboard with help of 40 PIN male headers. Now all PORTs of MCU is available on the veroboard where you can design the rest of your project. In this way you can create many different project with same development board, you just need a blank veroboard. By using this technique the "rest" of your project and the development board are paired firmly, both electrically and physically, yet flexibly separable! Features Incircuit Serially Programmable with eXtreme Burner – PIC. PIC 18F4550 Included USB 2.0 Support Running @ 48 MHz (12MIPS) with 20 MHz crystal. (Using on chip PLL) Inbuilt 5V regulator with reverse voltage protection Power Switch (on/off) Power LED Reset Button RS232 Interface with DB9 male connector. 2 x Extra 5v Out All ports on linear 40 pin female connector. Replaceable […]

GUI Software for USBasp based USB AVR Programmers.

When I started using USBasp (a great programmer for AVRs), I soon realized that the avrdude (the software for driving USBasp) is not much usable. Sometimes it irritates me a lots because of its command line interface. Also the avrdude-gui is not much helpful as it was just calling the avrdude in background. It cannot write/read the fuse bytes easily and reading the chip content was impossible. I made many changes to the software to make it more useful but Finally I decided to write a fresh new software from scratch and eXtreme Burner – AVR was born! The eXtreme Burner- AVR has full graphical user interface (GUI) and can be used much more easily. Screen shots Fig.: GUI Software for USBasp   Fig.: GUI Software for USBasp – Burn Progress.   Fig.: GUI Software for USBasp – Task Complete ! Easy AVR Clock Source Configuration AVR series of MCU supports several types of clock sources for various applications. For example a cheap RC Oscillator or a perfect high speed crystal oscillator. You can select from the following clock sources easily using a drop down menu. External Clock. Calibrated Internal RC Oscillator. (DEFAULT) External RC Oscillator. External Low Frequency Crystal. External Crystal/Ceramic Resonator. Fig.: Selecting AVR Clock Source Fig.: Selecting Clock Option Linux Version ! Finally the much awaited Linux […]