9
1 4-Integrating Peripherals in Embedded Systems (cont.)

4-Integrating Peripherals in Embedded Systems (cont.)

Embed Size (px)

DESCRIPTION

4-Integrating Peripherals in Embedded Systems (cont.). Using push buttons and switches. Push buttons SW2 to SW5 on the Dragon Board are connected to bits 3 to 0 of PortH When button is pushed, a corresponding bit of Port H is reset. What activity level? Can be enabled/disabled: SW_enable(); - PowerPoint PPT Presentation

Citation preview

Page 1: 4-Integrating Peripherals in Embedded Systems (cont.)

1

4-Integrating Peripherals in Embedded Systems (cont.)

Page 2: 4-Integrating Peripherals in Embedded Systems (cont.)

2

Using push buttons and switches•Push buttons SW2 to SW5 on the Dragon Board are connected to bits 3 to 0 of PortH•When button is pushed, a corresponding bit of Port H is reset. What activity level?•Can be enabled/disabled:

•SW_enable();•Can be checked with C function calls:

•SW1_dip(); //returns 8-bit reading of SW1-SW5. Non-blocking•SW2_down(); // true if SW2 is down•SW2_up(); //true if SW2 is up.

•Use while ((PTH & 0x01)==0) //to check if the SW5 is being pressed { //…SW5 still pressed }//SW5 released

Page 3: 4-Integrating Peripherals in Embedded Systems (cont.)

3

Using switches•There are also 8 DIP switches (sliders) on the Dragon board. •The rightmost 4 switches share the same bits of portH with push buttons.

•These switches are intended for use as level-sensitive data inputs to a circuit.

•When a switch is in the ON position (away from LCD) it provides a 0 bit on corresponding PORT H bit. •What activity level?

•Use:•DDRH=0x00; //Port H inputs• leds_on(~PTH);

Page 4: 4-Integrating Peripherals in Embedded Systems (cont.)

Using Keypad

The Dragon board has a 4x4 keypad, connected to Port A. Scanning is used to minimize interface bits. See pp 29. Use C function call key_scan(). See example 6.1 Use C function call get_key(). See example 6.2

To avoid bouncing:

keypad_enable()getkey()wait_keyup()keyscan()

4

Page 5: 4-Integrating Peripherals in Embedded Systems (cont.)

5

Using LEDs•The Dragon board provides 8 red LEDs.•You can use C function calls to set/reset LEDs

•led_on(int b); //Sets bit b of PORTB High, or on•led_off(int b); //Sets bit b of PORTB Low, or off•leds_on(int h); //Sets bits of all 8 leds according to hexadecimal value h

Page 6: 4-Integrating Peripherals in Embedded Systems (cont.)

6

Seven Segment Display•The Dragon Board has four 7-segment displays. These displays are arranged with the intent of displaying numbers of medium sizes.

•Must be enabled/disabled since using same port B of LEDs:

•seg7_enable();•seg7_disable();

•Applying a high logic level to a segment causes it to light up, and applying a low logic level turns it off.

•seg7_on(int s, int b); //turns on segment s on 7SEG digit b

•What will be the hexadecimal digit coding (assume 0 segment is least significant)? [9 coded as 0x6F]

• Use seg7dec(int s, int b); //display hexadecimal value of i on 7SEG digit b

Page 7: 4-Integrating Peripherals in Embedded Systems (cont.)

7

LCD controller

E

R/W

RS

DB7–DB0

LCD controller

communications bus

microcontroller8

CODES

I/D = 1 cursor moves left DL = 1 8-bit

I/D = 0 cursor moves right DL = 0 4-bit

S = 1 with display shift N = 1 2 rows

S/C =1 display shift N = 0 1 row

S/C = 0 cursor movement F = 1 5x10 dots

R/L = 1 shift to right F = 0 5x7 dots

R/L = 0 shift to left

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 Description

0 0 0 0 0 0 0 0 0 1 Clears all display, return cursor home

0 0 0 0 0 0 0 0 1 * Returns cursor home

0 0 0 0 0 0 0 1 I/D SSets cursor move direction and/orspecifies not to shift display

0 0 0 0 0 0 1 D C BON/OFF of all display(D), cursorON/OFF (C), and blink position (B)

0 0 0 0 0 1 S/C R/L * * Move cursor and shifts display

0 0 0 0 1 DL N F * *Sets interface data length, number ofdisplay lines, and character font

1 0 WRITE DATA Writes Data

•Dragon board has Sanyo DM1623 display of 2x16 characters.•See control signals in pg. 33 and table 7.1 in pg 34

Page 8: 4-Integrating Peripherals in Embedded Systems (cont.)

8

Using LCD

•Use:char * msg;msg=“Dragon12-Plus”;lcd_init(); //set configurationsset_lcd_addr(0x01);//for first linetype_lcd(msg);set_lcd_addr(0x45); //for second line

Page 9: 4-Integrating Peripherals in Embedded Systems (cont.)

Next

3/03/2010 Lab1: CodeWarrior Tutorial with examples 3/05/2010 Lab2: Dealing with individual LEDs and Delay via PLL 03/08/2010 - 03/12/2010  Spring break, NO classes 25 03/15/2010 Lab3: Push-buttons, Dip Switches, and Keypad 03/17/2010 Lab 4: LCD and Serial Communication Interface

(SCI)/UART

Answer questions and submit code in the lab reports. Show instructor when finished. Lab reports are due a week after each assignment (skipping spring break).

9