Marks and Grades Project This project uses the HCS12 to allow for user input of class grades to determine the letter grade and overall GPA for all classes. Interface: The left-most DIP switch (SW1) is used to disable the LEDs. The on position will allow the LEDs to turn on as specified below. Four pushbuttons are used to initiate and complete grade entry. SW2 allows for the Math grade, SW3 for Science, SW4 for Physics and SW5 for English. Pressing a pushbutton always causes the specified action to occur immediately, without waiting for the pushbutton to be released. Debounced and non-repetitive. Multiple simultaneous pushbutton presses should result in only one recorded press, the first one. Keypad allows for grade entry. De-bounced and non-repetitive. Multiple simultaneous pushbutton presses should result in only one recorded press, the first one. Four LEDs are used for indicating the grade after it is input. PB7-PB4 come on when the grade is an A, PB6-PB4 on for a B, PB5-PB4 on for a C, PB4 on for a D, and none on for an F. During all other times, the LEDs should be off. The left 7 segment digit shows the grade input from the keypad after it is submitted displayed as a letter grade. 100-90 is an A, 89-80 is a B, 79-70 is a C, 69-60 is a D, and below 60 is an F. The digit should be displayed only after grade submission. LCD displays prompts for guiding the user, using either one or two lines as necessary. The displayed message remains on until specifically changed in a later step. The LCD also displays the calculated GPA. Logic: Initialization: system state begins with the LCD displaying GPA = #.# on the first line and Select a course on the second line (# represents a decimal number). This is also referred to as the idle state. Each course should be initialized with a grade of 0. Thus, the initial GPA will be 0.0. Starting grade entry: during the idle state, the pushbuttons may be used to initiate entering the grade for each respective course. Once the pushbutton is pressed, the LCD should display Enter grade, where represents the course selected. For example, if SW3 is pressed, the LCD should display Enter Science grade. The grade is entered using the keypad using the functional requirements given previously. The keypad is sampled continuously for each part of the decimal grade (for 94, 9 is entered first and 4 is entered last). Digits can be continuously added until the pushbutton for that course is pressed (eg. for Science, the grade is input and followed by a press of SW3). (1/10)
If the grade is valid (meaning it is in the range of 0-100), the letter grade should be shown on the left 7 segment (right 7 segment is always off) and the LEDs should display accordingly. The LEDs and 7 segment displays should be on for 2 seconds, and then turn off. The state should revert back to the idle state. If the grade is invalid, the LCD should display Grade not valid for 2 seconds, and prompt for reentry of the grade. GPA calculations should be done after the grade is input for the course. Each course is weighted the same and is on the normal 4.0 scale. Again, each course is initialized with a grade of 0. There are only four courses. Memory Pattern Game This project performs as a pattern recognition memory game similar to the game Simon. Interface: LCD displays prompts for guiding the user, using either one or two lines as necessary. The displayed message remains on until specifically changed in a later step. 4 pushbuttons (SW2-SW5) are used for setup and game-play. When pressing pushbuttons to duplicate a sequence of LED flashes, note that SW2 lights up LED PB7, SW3 lights up LED PB6, SW4 lights up LED PB5, and SW5 lights up LED PB4. Pressing a pushbutton always causes the specified action to occur immediately, without waiting for the pushbutton to be released. De-bounced and nonrepetitive. Multiple simultaneous pushbutton presses should result in only one recorded press, the first one. 8 LEDs are used for displaying patterns and showing current state and pushbutton press. LEDs PB7- PB4 are used to display the pattern. When a pushbutton is pressed, the associated LED should light up until the pushbutton is released. Keypad is used for game level entry. Debounced and non-repetitive. Multiple simultaneous key presses should result in only one recorded key, the first one. 7 segment digit (rightmost) displays the level continuously after a level has been selected. Other digits stay off continuously. Logic: Initial conditions at start of execution: All toggle switches are off/open/up. All LEDs and digits off. The LCD screen should start with the text "Memory Pattern Game Press SW2". Select the level: When SW2 is pressed, the LCD screen should then say "Enter level and press SW3". The level (from 1 to 4) should be entered on the hex keypad and displayed on the rightmost seven segment display. Do not accept any other values from the keypad. Then press SW3. Once the level is selected, the LCD screen should read "Level: <chosen level> Press SW2". (2/10)
Begin playing the game: Pressing SW2 starts execution at the chosen level. Then the LCD screen will display Stage 1 begun. The first stage begins with a sequence of four LED flashes. The sequence should look random, but it may be the same every time the game is restarted. For example, Stage 1 may be chosen to display LEDs PB4 -> PB5 -> PB7 -> PB6. Alternatively it could be PB5 -> PB6 -> PB6 -> PB5. Or any other sequence of four flashes. The time between LED transitions depends on the level: Level 1: 2.5 seconds on, 0.5 second off Level 2: 2 seconds, 0.5 second off Level 3: 1.5 seconds, 0.5 second off Level 4: 1 second, 0.5 second off After each sequence is fully displayed for one stage, the user must light up the LEDs in the same order using the pushbuttons SW2-SW5. There is no time limit to complete the sequence. If the user cannot duplicate the sequence, turn on all 8 LEDs and display on the LCD screen Try again. Press SW2. Pressing SW2 will take the user back to the step labeled Select the level. At this point all the LEDs are turned off. If the user duplicates the sequence correctly for the current stage, the game advances to the next stage displaying on the LCD Stage Complete for 2 seconds, then displaying Stage <current stage> begun. (Current stage number is from 1 to 5). Successive stages keep the original sequence and add a new random LED flash at the end of the sequence. In other words, if the original sequence had lit a 4 LED flash sequence, the next stage will light the same 4 LED sequence followed by one new LED flash. There should be 4 such stages where a new light is added to the pattern (5 stages total). If the user successfully completes the 5 th stage (i.e. duplicating a pattern of 8 LEDs), the game should display on the LCD Lvl (chosen level) done Press SW2. Pressing SW2 will take the user back to the step labeled Select the level. Microwave Oven Controller Project Aim: This project simulates the embedded controller in a microwave oven. Assumptions and Requirements: All cooking times are sped up to make debugging and demonstration times more reasonable. Input occurs via the keypad (0 - F), the 4 push buttons, and the 8 dip switches. Displays on LCD, 4 digits, 8 LEDs. The system should allow for a cooking time of up to 30 minutes to be entered by the user. The entered and remaining cooking time counts down and is displayed on the four seven segment digits as minutes and seconds. For example: 27:11. When not cooking, the clock time should be displayed on the seven segment digits as hours and minutes. For example: 02:30. (3/10)
Procedure Details: While not cooking (stopped), enter a choice to begin cooking: If A is pushed on the keypad (for popcorn), the LCD should show Popcorn and then cook for 1 minute while the remaining cook time counts down on the digits, then clear the LCD after cooking completes. If B (for Beef) or C (for chicken) is pushed on the keypad, the words Beef weight? or Chicken weight? (respectively) should appear on the LCD. After that, the user must enter an integer value between 1 and 9 on the keypad to indicate how many pounds are there to be defrosted. Note that only whole pound values are to be entered. After a valid number is entered, clear the LCD display and show the value of the weight on the seven segment digits for 2 seconds, and then start cooking while the remaining cook time counts down on the digits. o Beef is defrosted at a rate of 0.5 minutes per pound. o Chicken is defrosted at a rate of 0.2 minutes per pound. o If an illegal number is entered, then the LCD should show Err for 2 seconds, then show previous message. If D is pushed on the keypad, the words Cooking Time? should appear on the LCD. After that the user can enter a value between 1 and 30:00 to indicate the cooking time required in minutes and seconds. This value is displayed on the seven segment digits as it is entered, right to left. For example, pressing 1 displays 00:01, then pressing 2 displays 00:12, then pressing 4 displays 01:24, then pressing 5 displays 12:45. Press pushbuttons SW2 and SW3 to clear the LCD display and start cooking and counting down the cooking time on the digits. Start/Stop/Pause cooking conditions: Switch SW1, position 1, will simulate the microwave oven door latch, where the switch being up would be simulating the open door situation and the switch being down would be simulating the door closed situation. Only when the latch is closed should the oven be able to be started. o When both SW2 and SW3 are pushed, the oven starts operation. o When both SW4 and SW5 are pushed, the oven operation pauses (keeping remaining time on the display). o When both SW4 and SW5 are pushed again the time is cleared and the cooking stops. o If SW2 and SW3 are pushed after the oven is paused and the door is closed, then cooking must resume from the time it was paused. If it is cooking, opening the door should pause the cooking and keep the remaining time on display. When the microwave is running, the array of LEDs should be on. When it is stopped, they should go off. If paused, the array of LEDs should blink (0.5 sec on and 0.5 sec off) till the cooking is resumed or stopped. (4/10)
When the microwave completes its function and timer has counted down to zero (regular timed cooking or defrosting), the array of LEDs should flash 3 times (0.5 sec on and 0.5 sec off), and the speaker should produce an audible tone during this 3 second time period. Security System Project This project provides the logic and interface for a simple security system. The system monitors a series of simulated doors, setting off an alarm if the a door is opened when the system is armed. Interface: 4 doors simulated by the 4 left-most DIP switches (SW1 Door 1 to SW4 Door 4 ). A switch in the on/up/closed position is considered an open door. 4 pushbuttons prompting password entry (SW2), password confirmation (SW3), password cancellation (SW4), and manual alarm (SW5). Pressing a pushbutton always causes the specified action to occur immediately, without waiting for the pushbutton to be released. De-bounced and non-repetitive. Multiple simultaneous pushbutton presses should result in only one recorded press, the first one. Keypad allows for password entry. De-bounced and non-repetitive. Multiple simultaneous pushbutton presses should result in only one recorded press, the first one. 8 LEDs light up from left to right, one at a time, for 100ms at each change during the armed state. During all other times, the LEDs should be off. 7 segment digits show the password entered by the keypad. The digits should be displayed only during password entry. Once a password is confirmed or cancelled, the digits should turn off. LCD displays prompts for guiding the user, using either one or two lines as necessary. The displayed message remains on until specifically changed in a later step. Logic: Initialization: System state begins by requesting a 4 digit hexadecimal password to be entered via the keypad. The LCD should display "Enter password". LEDs and digits should be off and switches should be in the off/up/open position. Password entry should then occur, using the input password as the new system password. Password entry: LCD displays Enter password. Using the keypad, the first key entry should appear on the left-most digit, 2 nd on the left-middle digit, 3 rd on the right-middle digit, and 4 th on the rightmost digit. After the system password is entered, press SW3 to confirm the password or press SW4 to cancel the current input and prompt again for password entry. After confirming the password, the LCD should display "Password accepted" for 2 seconds. Next, the system shall default to the armed state with the LEDs cycling in the above pattern. The LCD should display "Armed". Now two events may occur: (5/10)
A door is opened, setting off the alarm, or Prompt to disarm the system. Alarm triggered: the LCD should display "Alarm" and the location of the entry (e.g. if DIP switch SW1 pushed to the on/down/closed position, LCD should also display "Door 1"). The door should be closed (turn off the switch) before proceeding. To disarm (or arm) the system: All alarm sources, if any, should be reset first. Closing doors should not change the LCD display. Then pressing pushbutton SW2 will enter the step labeled Password entry. After the four digit password is entered on the keypad, pushbutton SW3 can be pressed to confirm the password or pushbutton SW4 can be pressed to cancel password entry. If the password is confirmed but incorrect or SW4 is pressed, the system reverts back to the previous state (armed, alarm, disarmed), displaying the appropriate message on the LCD. If the password was correct, the LCD should display "Disarmed if previously in the Armed or Alarm state; if the previous state is Disarmed, the LCD should display Armed. The alarm may be manually turned on by pressing SW5 during either the Armed or Disarmed state. The LCD should display "Manual Alarm", following the step labeled Alarm triggered. All LEDs and 7 segment digits should be time multiplexed using the timer subsystem. You can ask users for username and password. Based on that it can open the door or not. Also users have different privileges. The boss can access all the doors but the other employees have limited access. You can store events who access which doors and when and for how long. This may be needed in there is an accidents that require investigation. Self Checkout at a Super Market Aim: To model a self-checkout counter at a supermarket that is capable of:- Scanning through the items and identifying it. Deciding if it is vegetable/meat, thereby weigh it. Compute and display the final total of the products. A burglar alarm feature. An alarm to notify if it runs out of bags. Assumptions A table of the different items, their prices and barcodes, is specified. (6/10)
Each Message on the LCD screen or seven segment digits should be on for 3 seconds before clearing off. Procedure Details Start with LCD screen Scan the item Enter the two digit barcode of the item using the keypad in decimal. If a Barcode that is not present in the given table is entered, the LCD screen should display Wrong Code and then go back to the message Scan the item. Display the item name on the LCD screen and the price or price per pound on the seven segment digits. Check if the item falls into the category of either meat or vegetables. In case of meat or vegetables scanned o LCD Screen should display Weigh the item. o Enter the weights through the keypad and display it on LCD, in integer pounds in decimal. The acceptable range of weight is 0-9 pounds. Any weight that is entered outside this range should display a message Error on the LCD screen and then go back to the message Weigh the item. o The total price for that particular item is calculated and displayed on the seven segment digits. After scanning the item displaying its name and price, place the item in the bag. The action of placing the item in the bag is simulated by pressing SW2 in case of non-meat and non-vegetable items, and by pressing SW3 in case of meat or vegetable items. The total number of bags needed in case of non-meat and non-vegetable item will be one bag per item and in case of meat or vegetable would be 1 bag per every 3 pounds. The Total in dollars (the sum of all the prices of various items scanned till that point) is displayed as Total Amt= XX on the LCD screen for 3 seconds and the message Scan the item should come up. If the action of placing the item in the bag (i.e, pressing SW2 in case of non-meat or non-vegetable item and SW3 in case of meat and vegetable item) is done before scanning the item, the burglar alarm is triggered, which is simulated by a LCD message Alarm that stays on till the switch SW4 is pressed. A counter (counting down) keeps track of the number of bags that are left in the set of 30 bags, indicating the number by lighting up appropriate number of LEDS. For example, when there are three bags left, you should have three LEDS lit up; when there are two bags left only two LEDS should light up, and so on. Once the count equals 0 it should trigger an alarm by an LCD message Bags to notify the shortage of bags. Bags can be refilled back to a count of 30 by SW5. (7/10)
Table of Prices and Bar codes Bar Code Name of the Item Price (Per pound in case of meat or vegetables) 11 Pen $ 1.00 12 Table Lamp $14.00 13 Travel Bag $56.00 14 Tennis Racket $22.00 15 Radio $25.00 16 Box $11.00 17 Shoes $37.00 18 Shirt $18.00 19 Camera $89.00 20 Potato $3.00 21 Carrot $2.00 23 Chicken $5.00 24 Beef $4.00 25 Fish $6.00 Digital clock Display a running clock. User can set the clock and alarm with buzzer, display hours, minutes, seconds, tenth of seconds - use LCD display or 7 segments. Think in a smart clock/timer: user can program some events. Such as turn off/on a lamp at certain times, close TV after some time ------ Stop watch: use keys to set the stop/resume of the stopwatch. The stopwatch can be incremental/detrimental and it can also make beep sound when the stopwatch is zero. (8/10)
Programmable Waveform Generator Synthesize (via table lookup) variable frequency sine, triangle, square, and sawtooth waveforms; reconstruct signals using PWM. What is the range of frequency you can make? Can the user enter a signal that is not a standard one and you output it? User enters time and voltage list. Calculator Use the keypad to get operations and numbers and then display the result on the LCD. Can you do an advanced calculator? Do the operations in hex, binary, Motor Speed/Tachometer Measure the speed of a motor and display it on the LCD or 7-segment LEDs. User can enter a speed. Closed loop control is possible. Measure the speed, and then increase/decrease it to be as close as possible to the desired speed. What if the desired speed cannot be achieved after many trials? Use a push button to increase/decrease the speed. Add closed loop speed control capability (i.e., run motor at a programmable set point speed), add capability to control motor speed, allow the user to enter the speed using the keypad or switches. Connect a disc with two holes on a motor. The disc should rotate between a led and a receiver. Take the pulses and compute the speed (9/10)
A control system For example water level is a digital value readable by port A, read it and if it is more than a threshold open the sink to reduce it. When it is less than a threshold open the liquid valve to increase the water level. If the water level is more than a threshold give an alarm ---- You may not need to implement valves or sensors. But you should display the status of the system. Also use some buttons to enter water level. Digital Meter Measure voltage, current, resistance, capacitance,.. Use keypad and LCD display to select the measured quantity and range. Add the capability to measure different inputs at the same time. You can make beep if the measured quantity is more than the max. Measure the voltage using A/D. It can record several measures and gives the average. Distance Meter Using ultrasound or infrared transmitter/ receiver used by robots to do vision (10/10)