Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "1 4-Integrating Peripherals in Embedded Systems (cont.)"— Presentation transcript:

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

2 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 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

3 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);

4 Using Keypad The Dragon board has a 4x4 keypad, connected to Port A. Scanning is used to minimize interface bits. See page 29. Use C function call key_scan(). See listing 6.1 Use C function call get_key(). See listing 6.3 To avoid bouncing:  keypad_enable()  getkey()  wait_keyup()  keyscan() 4

5 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

6 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 i, int b); //display hexadecimal value of i on 7SEG digit b

7 7 LCD controller E R/W RS DB7–DB0 LCD controller communications bus microcontroller 8 Dragon board has Sanyo DM1623 display of 2x16 characters. See control signals in pg. 33 and table 7.1 in pg 34

8 8 Using LCD Use: char * msg; msg=“Dragon12-Plus”; lcd_init(); //set configurations set_lcd_addr(0x01);//for first line type_lcd(msg); set_lcd_addr(0x45); //for second line

9 Next 3/02/2011 Lab1: CodeWarrior Tutorial with examplesLab1 03/07/2011 - 03/11/2011 Spring break, NO classes 3/14/2011 Lab2: Dealing with individual LEDs and Delay via PLLLab2 3/16/2011 Lab3: Push-buttons, Dip Switches, and KeypadLab3 3/21/2011 Lab 4: LCD and Serial Communication Interface (SCI)/UARTLab 4 Answer questions and submit code in the lab reports. Show instructor when finished. Apart from Lab1, Lab reports are due a week after each assignment. 9


Download ppt "1 4-Integrating Peripherals in Embedded Systems (cont.)"

Similar presentations


Ads by Google