Tag Archives: PIC18F2550

Automatic monitor brightness controller


Dilshan Jayakody build a auto monitor brightness controller that adjusts your monitor brightness according to lighting conditions. He writes:

The sensor unit of this system is build around PIC18F2550 8-bit microcontroller. To measure the light level we use LDR with MCU’s inbuilt ADC. The control software of this unit is design to work with Microsoft Windows operating systems and it use Windows API’s DDC/CI related functions to control the monitors/display devices.

Automatic monitor brightness controller – [Link]

USBpicprog – a free and open source usb pic programmer


USBpicprog is an open source Microchip PIC programmer for the USB port based on PIC18F2550. PC Software, Firmware and Hardware are open source and available for free.

The hardware is built around a microchip PIC18F2550, this microcontroller has on board USB capabilities. The schematic and PCB have been designed in Kicad, an open source EDA solution
The PCB files are available in Gerber format and the schematic in pdf in the download section so that you can open them with your favourite tool.

USBpicprog – a free and open source usb pic programmer – [Link]

USB LCD Controller

This project is a USB Generic Human Interface Device (HID) device based on a PIC microcontroller. It is a USB interface for alphanumeric LCD display where the user as desired can program it. USB interface is implemented by using PIC18F2550 microcontroller ideal for low power (nanoWatt) and connectivity applications that benefit from the availability of three serial ports: FS-USB (12 Mbit/s), I2C and SPI (up to 10Mbit/s) and an asynchronous (LIN capable) serial port (EUSART). Large amounts of RAM memory for buffering and enhanced FLASH program memory make it ideal for embedded control and monitoring applications that require periodic connection with a (legacy free) personal computer via USB for data upload/download and/or firmware updates.

The hardware design is extremely simple. It can be build using the supplied PCB artwork or on a stripboard or breadboard. The circuit consists of a PIC18F2550 with a 20Mhz resonator and the required components for the LCD screen and the USB. The display is connected to the controller board using single strand wire. In addition, the contrast control potentiometer is placed underneath the board to allow easy adjustment after the LCD screen has been mounted.

USB LCD Controller is definitely useful since it can view various types of information taken from the PC such as temperature, time/date, MP3 song titles, emails, RSS feeds, all that LCD Smartie or other program supports. This provides ease in reading as well as accessing emails and songs in the playlist. Furthermore, the device can be easily constructed and reprogrammed, making it favorable to the users.

USB LCD Controller – [Link]

PICnano breadboard based on PIC18F2550


by Jesus Echavarria :

Hi all! With a bit of delay, here’s my last work, a PICnano breadboard based on the PIC18F2550 microcontroller. I have in mind a new project and I want to use an small board, like the Arduino Nano board. This new project is battery powered (3,7V Li-Ion battery). After checking the schematics of the Arduino Nano, I see that the microcontroler is powered at 5V. Of course, I can unmount the linear regulator (U3) that is on the board, and bypass the VIN to the microcontroller power supply. But I think it’s funny try to develop a new module when you’ve access to the microcontroller power supply! Also, I want to work with PIC microcontrollers after many years, so here’s what I design!

PICnano breadboard based on PIC18F2550 – [Link]

Thermocouple Auto-Zeroed Reference Design


The MCP6V01 auto-zeroed op-amp features an ultra low offset voltage (VOS) and high common mode rejection ratio (CMRR), which makes it applicable to temperature measurement. The MCP6V01 thermocouple auto-zeroed reference design demonstrates how to measure electromotive force (EMF) voltage at the cold junction of the thermocouple in order to accurately measure temperature at the hot junction.

The difference amplifier is implemented using the MCP6V01 and 0.1% tolerance resistors. It amplifies the EMF voltage at the cold junction of the thermocouple. The MCP9800 senses temperature at the type K thermocouple’s connector. It should be located as close as possible to the connector on the PCB. This measurement is used to perform cold junction compensation for the thermocouple measurement. The MCP1541 provides a VREF (4.1V) to the internal 10-Bit ADC of the PIC18F2550 and sets the reference voltage for the difference amplifier. The CVREF is the internal comparator voltage reference of PIC18F2550, which is a 16-tap resistor ladder network that provides a selectable reference voltage. The MCP6001 buffer amplifier eliminates the voltage reference output impedance problem and produces the voltage VSHIFT.

The 2nd order RC low-pass filter that is implemented in this circuit can remove the high frequency noise and aliasing at the ADC input. The ADC of PIC18F2550 completes the analog-to-digital conversion. The data will be transferred to the PC using the USB interface. The thermal management software on PC is used to perform data display to show the real-time temperature and apply cold junction compensation and data linearization to determine the actual temperature of the thermocouple’s hot junction (weld bead).

Thermocouple Auto-Zeroed Reference Design – [Link]

Open Programmer v0.8.x


Alberto Maccioni posted an update on his multi-chip opensource programmer based on a PIC18F2550. It supports PIC, I2C-SPI-MicroWire EEPROMs, some ATMEL AVRs, and (soon) other devices:

In the last few years, as serial and parallel interfaces have almost disappeared, electronics enthusiasts find even more difficult to program microcontrollers; old time programmers don’t work any more; common solutions include using USB to serial adapters (which can’t accept direct access but only slow API calls), or add-on interface chips, like FTDIxxxx, which appear substantially as serial interfaces and require custom or proprietary drivers. So why not use PIC controllers and their native USB interface? After searching a while I couldn’t find an USB programmer which was at the same time functional, free, and open source, so I decided to design one.


Open Programmer v0.8.x – [Link]

Arduino LCD Oscilloscope


semifluid.com writes:

It has been 7 years (!) since I posted my PIC18F2550 KS0108 Graphical LCD Oscilloscope code and schematics. I have long since taken the circuit apart, sold my PIC microcontrollers, and moved on in my life (as one can surmise from my most recent posts detailing my graduate and postdoctoral work). However, I still get inquiries about the Microchip PIC oscilloscope, so I decided to recreate it using a simpler setup using my Arduino Fio.


Arduino LCD Oscilloscope – [Link]

PIC18F2550 USB development board

dangerousprototypes.com writes:

Palma made a USB development board for the PIC18F2550. These chips are really popular, and there is a bunch of projects floating around the internet with them, even our own USB IR Toy, and USB LCD Backpack use them.

This board is basically a breakout board, with decoupling capacitors, and a USB jack. We like that all the broken-out pins are connected two 2 pins of the dual row female header, making it easier to connect one pin to a more then one external component.

You can also check out our PIC18F2550 Breakout Board, build in the “blade

PIC18F2550 KS0108 Graphical LCD Oscilloscope

Steve @ semifluid.com writes:

Using the PIC18F2550 GLCD Text Test as a basis for further experimentation, I put together a simple and accurate graphical oscilloscope using a PIC18F2550 microcontroller and a AGM1264F graphical LCD. The oscilloscope measures the average voltage, the maximum voltage, the minimum voltage, the peak-to-peak voltage, and the zero-crossing frequency for a DC signal over 100 samples. The oscilloscope has a built in edge trigger function that can be set to capture on rise or fall (or disabled altogether). The time scale for the display is variable and can be easily redefined using the changeTimeDivision function. Likewise, the voltage range can be change to 0-5V, 0-2.5V, and 0-1.25V. The main limitations of this oscilloscope include relatively slow acquisition time and sampling rate (~60kHz) and the fact that the inputs are limited by the constraints of the internal ADC. However, it is a very nice display and I highly suggest you view the videos to see it in action.

PIC18F2550 KS0108 Graphical LCD Oscilloscope – [Link]