Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
learn:courses:unit-3-lab3a:start [2017/02/13 23:40] – [Lab 3a: LCD Parallel Interface] Marthalearn:courses:unit-3-lab3a:start [2022/10/04 11:38] (current) – external edit 127.0.0.1
Line 1: Line 1:
-====== Lab 3a: LCD Parallel Interface ======+====== Lab 3a: LCD Parallel Interface - Direct IO Control ====== 
 +[[{}/learn/courses/unit-3/start|Back to Unit 3]]
 == Download This Document == == Download This Document ==
   * {{ :learn:courses:unit-3-lab3a:lab_3a.pdf |Lab 3a PDF}}   * {{ :learn:courses:unit-3-lab3a:lab_3a.pdf |Lab 3a PDF}}
Line 5: Line 6:
  
 ===== 1. Objectives ===== ===== 1. Objectives =====
-  - Develop an application of foreground-background task scheduling. +  - Identify the PIC32 processor pins used for the LCD interface. 
-  - Use change notification interrupts to detect push button presses and releases. +  - Implement LCD control using bit-banging I/O techniques. 
-  - Eliminate multiple button operations using a timer interrupt to implement a non-blocking delay. +  - Understand handshaking requirements for interfacing two systems operating at differing clock speeds.
-  - Implement the push-on / push off operation using a software-based finite state machine. +
  
 ---- ----
Line 24: Line 23:
 ===== 3. Equipment List ===== ===== 3. Equipment List =====
 ==== 3.1. Hardware ==== ==== 3.1. Hardware ====
-  - Basys MX3 trainer board. +  - [[https://digilent.com/shop/basys-mx3-pic32mx-trainer-board-for-embedded-systems-courses/|Basys MX3 trainer board]] 
-  - PC or Linux Workstation computer. +  - [[https://digilent.com/shop/usb-a-to-micro-b-cable/|Micro USB cable]] 
-  - [[http://store.digilentinc.com/usb-a-to-micro-b-cable/|Micro USB cable]]. +  - Workstation computer running Windows 10 or higher, MAC OS, or Linux
-  - [[http://store.digilentinc.com/analog-discovery-2-100msps-usb-oscilloscope-logic-analyzer-and-variable-power-supply/|Analog Discovery 2]]. +
  
 +In addition, we suggest the following instruments:
  
-==== 3.2. Software: ==== +  - [[http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,842,1018&Prod=ANALOG-DISCOVERY|Digilent Analog Discovery 2]]
-  - [[http://www.microchip.com/mplab/mplab-x-ide|Microchip MPLAB X® v3.35 or higher]]. +
-  - [[http://www.microchip.com/SWLibraryWeb/product.aspx?product=PIC32%20Peripheral%20Library|PLIB Peripheral Library]]. +
-  - [[http://store.digilentinc.com/waveforms-2015-download-only/|WaveForms 2015]].+
  
 +
 +
 +==== 3.2. Software: ====
 +  - [[http://www.microchip.com/mplab/mplab-x-ide|Microchip MPLAB X® v3.35 or higher]]
 +  - [[http://www.microchip.com/SWLibraryWeb/product.aspx?product=PIC32%20Peripheral%20Library|PLIB Peripheral Library]]
 +  - [[http://www.microchip.com/xcdemo/xcpluspromo.aspx|XC32 Cross Compiler]]
 +  - [[https://digilent.com/shop/software/digilent-waveforms/|WaveForms]]
  
 ---- ----
Line 58: Line 61:
  
 ===== 7. LCD Background Information ===== ===== 7. LCD Background Information =====
-Character [[https://en.wikipedia.org/wiki/Liquid-crystal_display|Liquid Crystal Displays]] (LCD) are low cost electronic devices that are capable of generating visual displays consisting of alphanumeric characters and graphical symbols commonly used for [[https://en.wikipedia.org/wiki/Embedded_system|embedded system]] [[https://en.wikipedia.org/wiki/User_interface|human machine interfaces]] (HMI). Many suppliers of LCD devices are based on the [[https://en.wikipedia.org/wiki/Hitachi_HD44780_LCD_controller|Hitachi HD44780]] LCD controller, and hence have a common hardware and software interface. Some LCD devices have serial interfaces that use UART, I2C, and SPI communications. These protocols are covered in Unit 4. Other LCD devices use interfaces consisting of four or eight data lines and three control lines. Although the LCDs that use a serial interface require fewer processor I/O pins, the display controller IC is still based on the Hitachi HD44780, which uses 8 or 11 I/O pins. Hence, the serial LCD devices have an on-board microprocessor that translates the serial communications instructions to parallel I/O. +Character [[https://en.wikipedia.org/wiki/Liquid-crystal_display|Liquid Crystal Displays]] (LCD) are low-cost electronic devices that are capable of generating visual displays consisting of alphanumeric characters and graphical symbols commonly used for [[https://en.wikipedia.org/wiki/Embedded_system|embedded system human machine interfaces]] (HMI). Many suppliers of LCD devices are based on the [[https://en.wikipedia.org/wiki/Hitachi_HD44780_LCD_controller|Hitachi HD44780]] LCD controller, and hence have a common hardware and software interface. Some LCD devices have serial interfaces that use UART, I2C, and SPI communications((PmodCLS: Character LCD with Serial Interface, [[https://digilent.com/shop/pmod-cls-character-lcd-with-serial-interface/]])). These protocols are covered in Unit 4. Other LCD devices use interfaces consisting of four or eight data lines and three control lines((PmodCLP Character LCD with Parallel Interface, [[https://digilent.com/reference/pmod/pmodclp/start]])). Although the LCDs that use a serial interface require fewer processor I/O pins, the display controller IC is still based on the Hitachi HD44780, which uses 8 or 11 I/O pins. Hence, the serial LCD devices have an on-board microprocessor that translates the serial communications instructions to parallel I/O. 
  
 The handshaking required to successfully communicate with the LCD on the Basys MX3 is representative of many common parallel interfaces.  The handshaking required to successfully communicate with the LCD on the Basys MX3 is representative of many common parallel interfaces. 
- 
  
 ---- ----
Line 73: Line 75:
     - Initialize the LCD using the recommended sequence of instructions shown in the control flow diagram FIg. B.2. to write specific codes to the LCD at specified intervals.     - Initialize the LCD using the recommended sequence of instructions shown in the control flow diagram FIg. B.2. to write specific codes to the LCD at specified intervals.
     - Position the cursor in the display space (Line 1 or Line 2) where the next character is to be displayed.     - Position the cursor in the display space (Line 1 or Line 2) where the next character is to be displayed.
-    - Write function(s) that write ASCII control and display data to the Display Data Ram (DDRAM). one or more?+    - Write function(s) that write ASCII control and display data to the Display Data Ram (DDRAM).
     - Translate the ASCII control characters into one or more C instructions for the LCD, as detailed in Table 8.1.     - Translate the ASCII control characters into one or more C instructions for the LCD, as detailed in Table 8.1.
     - Write functions that write ASCII character data to the Display Data Ram (DDRAM).     - Write functions that write ASCII character data to the Display Data Ram (DDRAM).
       - Write a function that will write a single ASCII encoded character to the display.       - Write a function that will write a single ASCII encoded character to the display.
       - Write a function that will write a string (array) of ASCII encoded characters to the display.       - Write a function that will write a string (array) of ASCII encoded characters to the display.
-  - Using the following program, develop a test project that will verify that the function //LCD_puts(byte *str);// correctly displays an array of ASCII text and control characters. +  - Using the following program, develop a test project that will verify that the function //LCD_puts(byte *str);// correctly displays an array of ASCII text and control characters.<code>
-<code>+
 char test_str[] = “ User generated test string”; char test_str[] = “ User generated test string”;
 int main(void) int main(void)
Line 93: Line 94:
 } }
 </code> </code>
-  - Write an application program for the BASYS MX3 processor board that achieves the following:+  - Write an application program for the Basys MX3 processor board that achieves the following:
     - Initializes a loop counter to a value of zero.     - Initializes a loop counter to a value of zero.
     - Displays your name on the first line.     - Displays your name on the first line.
Line 158: Line 159:
  
 ===== Appendix A: Basys MX3 Schematic Drawings ===== ===== Appendix A: Basys MX3 Schematic Drawings =====
-{{ :learn:courses:unit-3-lab3a:lab3a-figure-a-1.png?nolink |Figure A.1. LCD connection schematic diagram for Labs 3a and 3b.}}+{{ :learn:courses:unit-3-lab3a:lab_3a_3_fig_a_1.jpg?nolink&550 |Figure A.1. LCD connection schematic diagram for Labs 3a and 3b.}}
 //Figure A.1. LCD connection schematic diagram for Labs 3a and 3b.// //Figure A.1. LCD connection schematic diagram for Labs 3a and 3b.//
 +
  
  
Line 175: Line 177:
  
 {{ :learn:courses:unit-3-lab3a:lab3a-figure-b-4.png?nolink |Figure B.3. Control flow diagram for LCD Write operation using bit-banging.}} {{ :learn:courses:unit-3-lab3a:lab3a-figure-b-4.png?nolink |Figure B.3. Control flow diagram for LCD Write operation using bit-banging.}}
-//Figure B.3. Control flow diagram for LCD Write operation using bit-banging.//+//Figure B.4. Control flow diagram for LCD Write operation using bit-banging.//
  
 {{ :learn:courses:unit-3-lab3a:lab3a-figure-b-5.png?nolink |Figure B.5. LCD display character control flow diagram.}} {{ :learn:courses:unit-3-lab3a:lab3a-figure-b-5.png?nolink |Figure B.5. LCD display character control flow diagram.}}
 //Figure B.5. LCD display character control flow diagram.// //Figure B.5. LCD display character control flow diagram.//
 +
 +----
 +
 +[[{}/learn/courses/unit-3/start|Back to Unit 3]]
 +[[{}/learn/courses/unit-3-lab3b/start|Go to Lab 3b]]