HD44780 LCD programming From the Hardware Side

Slides:



Advertisements
Similar presentations
EXTERNAL COMMUNICATIONS DESIGNING AN EXTERNAL 3 BYTE INTERFACE Mark Neil - Microprocessor Course 1 External Memory & I/O.
Advertisements

Programmable Interval Timer
TK2633 Introduction to Parallel Data Interfacing DR MASRI AYOB.
ECE 371 Unit 13 - Part 1 Serial Peripheral Interface (SPI)
Microprocessor or Microcontroller Not just a case of “you say tomarto and I say tomayto” M. Smith, ECE University of Calgary, Canada.
SHIFT REGISTERS: CONVERTING BETWEEN SERIAL AND PARALLEL DATA Mark Neil - Microprocessor Course 1 Serial versus Parallel Data Transfers.
Serial I/O - Programmable Communication Interface
Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 2.
Lab3 -- Lab 4 Design and implementation details on the way to a valid SPI-LCD interface driver.
Peripherals and their Control An overview of industrially available “peripheral devices” Some ideas for Laboratories and Quiz / Exam questions.
Boot Issues Processor comparison TigerSHARC multi-processor system Blackfin single-core.
If we can just send 1 signal correctly over the MOSI line!!! Design and implementation details on the way to a valid SPI-LCD interface driver.
Microprocessor or Microcontroller Not just a case of “you say tomarto and I say tomayto” M. Smith, ECE University of Calgary, Canada.
Blackfin SPI Compatible Interface Design and implementation details on the way to a valid SPI-LCD interface driver.
HD44780 LCD programming From the Hardware Side Design and implementation details on the way to a valid SPI-LCD interface driver.
LCD programming Design and implementation details on the way to a valid SPI-LCD interface driver.
Serial Peripheral Interface (SPI)
Microprocessor or Microcontroller Not just a case of “you say tomarto and I say tomayto” M. Smith, ECE University of Calgary, Canada.
Getting the O in I/O to work on a typical microcontroller Ideas of how to send output signals to the radio controlled car. The theory behind the LED controller.
Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 2.
Getting the O in I/O to work on a typical microcontroller Activating a FLASH memory “output line” Part 1 Main part of Laboratory 1 Also needed for “voice.
Blackfin BF533 EZ-KIT Control The O in I/O
Now we must send the correct signals over the MOSI line!!! Design and implementation details on the way to a valid SPI-LCD interface driver.
Input/Output and Communication
Interface circuits I/O interface consists of the circuitry required to connect an I/O device to a computer bus. Side of the interface which connects to.
Microprocessor or Microcontroller Not just a case of “you say tomarto and I say tomayto” M. Smith, ECE University of Calgary, Canada.
SPI Compatible Devices Design and implementation details on the way to a valid SPI-LCD interface driver.
Overview What kind of LCD Interfacing the LCD Displaying Text and Numbers Common Issues.
Computer Architecture Lecture 08 Fasih ur Rehman.
If we can just send 1 signal correctly over the MOSI line!!! Design and implementation details on the way to a valid SPI-LCD interface driver.
Khaled A. Al-Utaibi  Intel Peripheral Controller Chips  Basic Description of the 8255  Pin Configuration of the 8255  Block Diagram.
LSU 10/22/2004Serial I/O1 Programming Unit, Lecture 5.
Peripherals and their Control An overview of industrially available “peripheral devices” that use “pulse-width modulation” for information passing. Review.
Dr. Rabie A. Ramadan Al-Azhar University Lecture 6
MICROPROCESSOR INPUT/OUTPUT
(More) Interfacing concepts. Introduction Overview of I/O operations Programmed I/O – Standard I/O – Memory Mapped I/O Device synchronization Readings:
Microprocessor-Based System. What is it? How simple can a microprocessor-based system actually be? – It must obviously contain a microprocessor otherwise.
Input/Output 2 What is I/O? How we get the CPU to communicate with devices From the computer’s point of view, it’s just 1’s and 0’s Gets interpreted.
Lab. 2 Overview Move the tasks you developed in Lab. 1 into the more controllable TTCOS operating system Manual control of RC car.
Moving Arrays -- 1 Completion of ideas needed for a general and complete program Final concepts needed for Final Review for Final – Loop efficiency.
IT253: Computer Organization Lecture 9: Making a Processor: Single-Cycle Processor Design Tonga Institute of Higher Education.
PPI-8255.
Basic LED Interface.
Department of Electronic & Electrical Engineering LCD character display (parallel interface). How to interface a LCD character display to a PIC.
Department of Electronic & Electrical Engineering Serial interfaces Serial Interfaces allow communication between devices sending one bit at a time. In.
Serial Peripheral Interface SPI I2C (i-squared cee)
Lab. 1 – GPIO Pin control Using information ENEL353 and ENCM369 text books combined with Blackfin DATA manual.
SHIFT REGISTERS: CONVERTING BETWEEN SERIAL AND PARALLEL DATA Mark Neil - Microprocessor Course 1 Serial versus Parallel Data Transfers.
1 Basic Processor Architecture. 2 Building Blocks of Processor Systems CPU.
REGISTER TRANSFER LANGUAGE (RTL) INTRODUCTION TO REGISTER Registers1.
“Lab. 5” – Updating Lab. 3 to use DMA Test we understand DMA by using some simple memory to memory DMA Make life more interesting, since hardware is involved,
Developing Tasks to use with a co-operative scheduler Ideas for Assignment 2 Lab. 2, 3 and 4 Review for Midterm on Lab. 2 Ideas of defects, errors and.
Lab3 -- Lab 4 Design and implementation details on the way to a valid SPI-LCD interface driver.
Chapter 6 Input/Output Organization
REGISTER TRANSFER LANGUAGE (RTL)
Input/Output and Communication
Lab3 -- Lab 4 Design and implementation details on the way to a valid SPI-LCD interface driver.
Atmega32 Serial Programming Basics
SPI Compatible Devices
Serial Communication Interface: Using 8251
SPI Compatible Devices
SPI Compatible Devices
Moving Arrays -- 2 Completion of ideas needed for a general and complete program Final concepts needed for Final DMA.
HD44780 LCD programming From the Hardware Side
HD44780 LCD programming From the Hardware Side
Lab3 -- Lab 4 Review Design and implementation details on the way to a valid SPI-LCD interface driver.
Developing a reliable communication between Blackfin and Slave device
Lab3 -- Lab 4 Design and implementation details on the way to a valid SPI-LCD interface driver.
Presentation transcript:

HD44780 LCD programming From the Hardware Side Design and implementation details on the way to a valid SPI-LCD interface driver

SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada Lab. 4 Use Lab. 3 SPI interface, cause the words “Happy 511 Christmas” to appear on the LCD screen (50%) 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada Lab. 4 Blackfin processor Running tasks using TTCOS operating system SPI-interface Optional car control 4 wires 12 wires SPI-bus External parallel I/O 4 wires SPI-interface 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada To be tackled today What commands are necessary to control the LCD device -- HD44780? How do you send commands from the Blackfin to a LCD device over the SPI interface (Lab. 3)? How do we get the SPI timing for these commands correct so that LCD screen works properly? 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

LCD Connection information 13 key connections 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

Data Bus Connections for LCD screen From CJ7 connector on Blackfin interface BQ0 BQ1 BQ2 BQ3 BQ4 BQ5 BQ6 BQ7 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

Power Connections for LCD screen From LOGIC LAB POWER GROUND +5V 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

LCD operations require certain values on RS, R/W* and DBx lines LCD COMMANDS RS R/W* DATA DB7 to DB0 ClearScreen( ) 0x01 CursorIncrease( ) 0x05 CursorMove( ) 0x10 DisplayOn( ) 0x0B WriteLetter(value) 1 value WriteLetter(‘a’) 0x61 (ascii ‘a’) WriteLetter(‘A’) 0x41 (ascii ‘A’) Writing to LCD screen W* = 0 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

Control Line Connections for LCD screen From CJ8 connector on Blackfin interface BQ8 RS means command (0) or data (1) control BQ9 R/W* means Read (1) from LCD Write (0) to LCD BQ10 E Enable Normally 1 Transition 1  0  1 makes the LCD work (Meaning LCD ONLY accepts the command or data information after this line goes 1  0  1) 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

The “idea” of how to cause the LCD to -- Clear the screen LCD COMMANDS RS R/W* DATA DB7 to DB0 ClearScreen( ) 0x01 That means we must send the following “voltage” signals to the LCD pins from the Blackfin RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 // EnableStrobe 0 0 1 0 0 0 0 0 0 0 1 // LCD reads on high to low And we must wait after sending each “signal” for sufficient time for the LCD to work. The LCD probably works 100000 times slower than Blackfin. 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

To cause the “slow” LCD to Clear the screen – Actual Code LCD COMMANDS RS R/W* DATA DB7 to DB0 ClearScreen( ) 0x01 That means we must send the following “voltage” signals to the LCD pins RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 1 0 0 0 0 0 0 0 1 WasteSomeTimeCPP( ) 0 0 0 0 0 0 0 0 0 0 1 // EnableStrobe WasteSomeTimeCPP( ) 0 0 1 0 0 0 0 0 0 0 1 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

Complete LCD Command Instruction set 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada SKIP -- Details of what is needed to make each LCD instruction in last slide work These are “LCD” instructions NOT Blackfin instructions. We must code the Blackfin to send these instructions to LCD 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

LCD Command Instruction set For some commands the LCD is very slow 1.640 ms For other commands the LCD is faster 0.040 ms = 40 us Remember the Blackfin instruction is around 0.000002 ms = 2 ns 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

To cause the LCD to Clear the screen LCD COMMANDS RS R/W DATA DB7 to DB0 ClearScreen( ) 0x01 That means we must send the following “voltage” signals to the LCD pins RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 1 0 0 0 0 0 0 0 1 Wait(1.64 ms ) -- Only one wait is really needed this long – Refactor later 0 0 0 0 0 0 0 0 0 0 1 // EnableStrobe Wait( 1.64 ms ) -- Only one wait is really needed this long – Refactor later 0 0 1 0 0 0 0 0 0 0 1 Wait( 1.64 ms) -- Only wait is really needed this long – Refactor later 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

To cause the LCD to write the letter ‘A’ on its screen LCD COMMANDS RS R/W DATA DB7 to DB0 WriteLetter(value) 1 value WriteLetter(‘a’) 0x61 That means we must send the following “voltage” signals to the LCD pins RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 0 1 0 1 1 0 0 0 0 1 Wait( 40 us) 1 0 0 0 1 1 0 0 0 0 1 // EnableStrobe Wait( 40 us) 1 0 1 0 1 1 0 0 0 0 1 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

Bit patterns to send a character Complicated or not? How do the letter bit patterns for the LCD data patterns relate to ASCII bit patterns? standard format used to store characters in a C++ character array? Just copy from an array onto the LCD data pins To cause “A” to appear on LCD screen need bit pattern 01000001 = 0x41 sent to LCD data pins WriteSPI(‘A’); Also send the necessary LCD control signals (EN / RS) 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

Alpha-numeric ascii code ‘A’ to ‘Z’, ‘a’ to ‘z’ 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

Alpha-numeric ascii code 0 through 9, ( ) etc 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada Problem – we need 22 lines (11 in / 11 out) to control LCD – and we don’t have them on the Blackfin 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

Solution – Setup LCD as SLAVE device Master (Blackfin) / Slave (LCD) concept Will not work LCD was set up as a PARALLEL DEVICE – many lines at one time Not capable of SPI usage directly MOSI --MASTER OUT – SLAVE IN 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada Solution There is a standard chip (Name ?????) that is capable of Receiving (serial) signals from the Blackfin over the MOSI wire Converting those serial signals (16 signals -- received one at a time) into a parallel signal (16 signals -- sent all at once) Sending the PARALLEL voltage signals to the LCD This chip has been designed into the Logic Station Blackfin interface (is not part of the Blackfin itself) All we need to do is attach 11 wires from the interface to the LED Attach 4 wires from the SPI interface to the Blackfin MOSI lines Program the Blackfin SPI interface and “GO” 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

Lots of stuff has to happen in the correct order From the Blackfin data manual Putting data into the Blackfin SPI_TDBR register causes the data to be transmitted over the MOSI line “automatically” SPI_TDBR means Serial Peripheral Interface Transmit Data Buffer Register 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

Known facts -- MOSI data starts being transmitted from Blackfin THE MOMENT that ANY data is written to Blackfin SPI_TDBR register SPI_TDBR Blackfin Processor SPI_RXBR SLAVE SELECT PF5 used (PF1 to PF7) SPI CLOCK MOSI MISO SLAVE OUTPUT INTERFACE SLAVE INPUT INTERFACE LOAD Slave to LCD DATA SWITCHES (LOGIC LAB) CONTROL LCD SCREEN CJ7 / CJ8 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

Lots of stuff has to happen in the correct order Putting (8 or 16 bit parallel) data into the Blackfin SPI_TDBR register causes the (1-bit serial) data stream to be transmitted over the MOSI line automatically  However the external device will ignore the command unless the slave select line is held low  4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

Known facts -- MOSI data is accepted by the SLAVE IF slave-select is active low – set PF5 to low – Master/Slave SPI_TDBR Blackfin Processor SPI_RXBR SLAVE SELECT PF5 used (PF1 to PF7) Can be made to happen “automatically” SPI CLOCK MOSI MISO SLAVE OUTPUT INTERFACE SLAVE INPUT INTERFACE LOAD Slave to LCD DATA SWITCHES (LOGIC LAB) CONTROL LCD SCREEN CJ7 / CJ8 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

Lots of stuff has to happen in the correct order Putting data into the Blackfin SPI_TDBR register causes the data to be transmitted over the MOSI line  However the external device will ACCEPT the command if the slave select line PF5 line is AUTOMATICALLY SET LOW by the Blackfin before the transmission is started.  When transmission is ended (16-bits sent) then the slave select line PF5 line is AUTOMATICALLY SET HIGH by the Blackfin  or  ???? 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

Known facts – The SLAVE only sends the data to the LCD screen when the PF5 line goes from low to high – interface design SPI_TDBR Blackfin Processor SPI_RXBR SLAVE SELECT PF5 used (PF1 to PF7) SPI CLOCK MOSI MISO SLAVE OUTPUT INTERFACE SLAVE INPUT INTERFACE LOAD Slave to LCD DATA SWITCHES (LOGIC LAB) CONTROL LCD SCREEN CJ7 / CJ8 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

Lots of stuff has to happen in the correct order Putting data into the Blackfin SPI_TDBR register causes the data to be transmitted over the MOSI line  However the external device will ACCEPT the command as the slave select line PF5 line is AUTOMATICALLY SET LOW by the Blackfin before the transmission is started.  When transmission is ended (16-bits sent) then the slave select line PF5 line is AUTOMATICALLY SET HIGH by the Blackfin  As PF5 line goes high the data sent by the Blackfin over the MOSI line to the special interface is transferred to the LCD  Everything in the garden is wonderful – most stuff happening automatically -- we just have to wire it correctly !!!!!!!!!!!!!! ALL? we have to do is make it happen!  4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada Blackfin must be coded to transmit 16 bits with THIS format over the MOSI line DB7, DB6, ………DB1, DB0 E – Enable / Strobe 1  0 – When this line goes from high to the low, then the command is send to (latched into) LCD To make LCD respond to command 0x4F0 Then Blackfin must transmit 0x5F0 ( E High ) 0x4F0 ( E low ) 0x5F0 ( E high ) RS 1 – LCD data 0 – LCD instruction R/W 1 – Read from LCD 0 – Write to LCD 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada Design the controls signals and data signals to ‘Clear the screen’ and then send the char string “511” to LCD Reminder – sequence to sent the letter ‘a” to the screen RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 0 1 0 1 1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 1 // EnableStobe 1 0 1 0 1 1 0 0 0 0 1 ClearScreen ‘5’ ‘1’ 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada

SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada Tackled today What commands are necessary to control the LCD device -- HD44780? How do you send commands from the Blackfin to a LCD device? How do we get the timing correct? 4/20/2017 SPI and LCD , Copyright M. Smith, ECE, University of Calgary, Canada