Abstract:
Microprocessor-based vending apparatus incorporating a plurality of separately driven individual dispensing assemblies is disclosed. The dispensing assemblies are scanned to determine their state and any malfunctioning assembly disabled to prevent attempted selection by a user without shutting down the entire vending machine. The state of the malfunctioning dispensing apparatus is retained in memory so that the state of each dispensing assembly may be selectively displayed through activation of a display switch causing the microprocessor to sequentially identify and display those dispensing devices which malfunctioned. The microprocessor performs all change-making functions normally performed in vending machines to greatly reduce the complexity and expense of the coin-accepting apparatus. Additionally, data is stored representing the quantity of each coin denomination present and change-making capability is disabled when coin denominations are reduced to a predetermined count. Cash flow data is stored in memory and may be displayed upon request. All functions of the vending apparatus are continuously monitored to assure proper operation and alarm conditions to identify malfunctions are developed. The status of all such functions are stored in memory for subsequent display or data transfer. Data transfer may be to an off-line printer, an off-line memory, optically coupled data transducers or the like. The off-line memory has a transceiver which is automatically energized by the vending machine transceiver to initiate data transfer.

Description:
BACKGROUND OF THE INVENTION 
     The present invention relates to vending apparatus and, more particularly, to microprocessor-based vending apparatus capable of providing a significant increase in the amount and complexity of vending operations without any increase in the size of the vending apparatus and in the total number of conventional components employed in the vending apparatus and in fact leading to a significant reduction in the total number of components employed in conventional vending apparatus. 
     Although it may not be obvious to the casual observer, the conentional vending machine, which is employed for vending liquids and/or packaged food products, such as candy, for example, are capable of performing some rather complex functions, such as accepting a coin; examining the accepted coin to ascertain its authenticity; recognizing the denomination of the coin and rejecting if it is insufficient for the particular purchase requested or, alternatively, returning the precise amount of change in the event that the denomination exceeds the cost of the desired purchase; and dispensing the particular item requested. In some cases, the dispensing operation may also include a properly-sequenced group of activities including dispensing precisely one fresh cup and dispensing precise amounts of both liquid and solid ingredients into said cup to provide the desired liquid beverage having quantities of ingredients to suit the taste of the user. Conventionally, these operations have been accomplished through the use of either mechanical or electromechanical devices which, although rather ingenious in their own right, are large, cumbersome, and of questionable reliability in that they are subject to a significant amount of wearing and thereby require regular maintenance and/or repairs. 
     In addition to all of the functions which conventional vending apparatus is capable of performing, there are nevertheless a number of other functions which it would be highly desirable and in some applications even imperative to integrate into vending apparatus to provide the vending apparatus with both useful and important operating capabilities. The utilization of conventional apparatus to introduce such capabilities renders the vending apparatus still more complex and cumbersome and in fact is highly impractical due to the limited space available within the vending apparatus housing. 
     BRIEF DESCRIPTION OF THE INVENTION 
     The present invention is characterized by comprising a microprocessor-based vending machine in which the vast majority of functions previously performed by separate and independent vending machine subassemblies are now concentrated within the microprocessor, thus eliminating the need to provide each such subassembly with its own electronic control, thereby significantly reducing the size and complexity of each of the required subassemblies, by reducing the components of such subassemblies to a practical minimum. 
     In addition to the above, the microprocessor is uniquely designed to provide a significant increase in the number of vending apparatus functions not heretofore incorporated in conventional vending apparatus and this may be achieved without significantly increasing the complexity of the microprocessor or its interfacing circuitry. 
     The vending apparatus, in one preferred embodiment, comprises a coin acceptor and change-dispensing unit whose control capability has been incorporated in the microprocessor; manually operable item-selection switches; and dispensing devices for dispensing a large plurality of different packaged items whose control capability is also integrated into the microprocessor which constantly monitors the selection switches to exert control over the desired dispensing device. 
     In addition to the above functions, the microprocessor constantly scans all of the dispensing devices to monitor their condition and disable the dispensing device identified as malfunctioning and prevent selection of such device by a vending machine user, to thereby prevent the vending machine user from becoming frustrated by repeated attempts to select a packaged item dispensed by a malfunctioning dispensing device. Although a malfunctioning dispensing device is prevented from being selected by a user, the remaining dispensing devices may be operated in the normal fashion. 
     All other vending machine functions are monitored on a regular basis to assure their proper operation. The microprocessor stores signals in memory representing those malfunctioning units, some of which signals are utilized to create alarms which are not cleared until the malfunctioning unit has been repaired or replaced and some of which may be displayed on demand, usually by generation of a display request. 
     The microprocessor also stores other pertinent data in memory representing the inventory of items to be dispensed and the number of coins of each denomination accumulated in the vending apparatus as well as other status information. All such information may be displayed on demand thereby providing a firsthand indication of vending machine status to repair personnel. 
     The microprocessor also controls a bidirectional transceiver which is adapted to communicate with an off-line device for receiving data from the vending machine representing vending machine status. The off-line device is portable and comprises optically coupled transmitter and receiver means. Compatible optically coupled transmitting and receiving means is provided as part of the vending machine. The optically coupled transmitting and receiving apparatus of the off-line unit is aligned with and positioned immediately adjacent to the cooperating transmitting and receiving apparatus forming part of the vending machine. The transmitting light in the vending machine is normally on. When light is received by the off-line unit, it is automatically turned on, thus conserving energy in the off-line unit without requiring separate independent manual off-on switch means. Energization of the off-line unit causes its microprocessor to step through a program which generates a request transmission signal. The request transmission signal is decoded by the vending machine microprocessor, initiating transmission of vending machine status data including detailed cash flow and inventory records. The vending machine status data is received by the off-line unit, and preferably is stored in a CMOS RAM (random access memory) or in both memory such as on a cassette controlled by the off-line microprocessor. The data stored in the off-line unit may be returned to a central location whereat the data is employed to monitor the current status of the vending machine and update records maintained therefor. The off-line unit in another embodiment may incorporate a printer for generating a hard copy of the vending machine status. 
     The off-line unit may also transmit data to the vending unit which data may be utilized to reset prices of items dispensed by the vending machine. 
     The microprocessor described herein for controlling a vending machine is adapted to operate vending machines of a packaged food, snack, or drink dispensing type. 
     OBJECTS OF THE INVENTION AND BRIEF DESCRIPTION OF THE FIGURES 
     It is therefore one object of the present invention to provide automatic vending apparatus employing a microprocessor to control all of the operations of the vending apparatus and monitor the status of all vending devices, such as coin and food-dispensing motors, for obtaining and updating status information regarding machine status and inventory and for providing visual and/or hard copy presentations of all of said status data. 
     Still another object of the present invention is to provide novel vending apparatus employing microprocessor-based monitoring and control means for controlling all functions performed within the vending apparatus in their proper order and for storing and continually updating data representative of the status of the vending machine. 
     Still another object of the present invention is to provide a novel vending machine incorporating microprocessor-based control and monitoring means further incorporating a transceiver capable of being selectively interfaced with off-line transceiver apparatus for transferring data representative of the status of the vending machine and having the further capability of enabling the off-line apparatus to exert control over the vending machine microprocessor by communication from the transceiver of the off-line apparatus to the transceiver of the vending machine. 
    
    
     The above, as well as other objects of the present invention, will become apparent when reading the accompanying description and drawings, in which: 
     FIG. 1 shows the front panel of an exemplary snack-type vending machine embodying the principles of the present invention. 
     FIG. 2 is a perspective view of exemplary dispensing apparatus for the vending machine of FIG. 1. 
     FIGS. 3a and 3b collectively comprise a simplified, exemplary schematic diagram of an electronic system for controlling and monitoring the vending machine of FIGS. 1 and 2 wherein FIG. 3a illustrates the upper portion of the diagram and FIG. 3b depicts the lower part of said diagram. 
     FIG. 4 is an electrical schematic diagram showing the details of the switch array whose actuators are shown in FIG. 1. 
     FIG. 5 is a schematic diagram of a coin acceptor/changer mechanism controlled by the electronic system of FIGS. 3a and 3b for use in scanning the switch array of FIG. 4. 
     FIG. 6 is a schematic diagram of the power supply and voltage monitoring circuitry for providing power to the electronic system illustrated in FIGS. 3a and 3b. 
     FIG. 7 is a schematic diagram of an exemplary motor drive array for the vending machine of FIG. 1. 
     FIGS. 8a and 8b are detailed schematic diagrams illustrating two types of motor drive circuits which may be employed in the examplary array of FIG. 7 wherein FIG. 8a illustrates an exemplary drive circuit for operating A.C. motors and FIG. 8b illustrates an exemplary drive circuit for operating D.C. motors. 
     FIG. 9 is a schematic diagram showing a motor switch and cam arrangement for monitoring the operation of an associated motor. 
     FIG. 10 shows a plan view of the visual display and cooperating display control panel for displaying status information. 
     FIG. 11 is a schematic diagram showing an exemplary microprocessor-based off-line data collection device for communicating with the electronic system shown in FIGS. 3a and 3b of the vending machine for the purpose of collecting and storing status data for subsequent off-line use. 
     FIG. 12 is a schematic diagram showing an exemplary microprocessor-based off-line printer module for communication with the electronic system of FIGS. 3a and 3b of the vending machine for purposes of providing a hard copy printout of status information. 
     FIG. 13 is a perspective view showing the manner in which the transceiver provided in the vending machine electronic system and the off-line unit transceiver are arranged when communicating with one another. 
     FIG. 14 is a perspective view showing exemplary structure for a remote data collection device. 
     FIG. 15 is a flow diagram illustrating the operation of the present invention under program control. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     The microprocessor-based system of the present invention may be used to great advantage in a vending machine 10 of the type shown in FIG. 1 which is comprised of a front door 11 having a large viewing window 12 to facilitate viewing of the food items or snacks available to be dispensed. Each item position is provided with a selection and price holder assembly 13 comprised of a holder 13a releasably supporting a tag 13b having a price and an identifying number. Each of the items displayed within window 12 is adapted to be dispensed by a snack-tray assembly 20, shown best in FIG. 2. 
     A selection button panel 14 is provided with an array of selection buttons 15 arranged in regular rows and columns. Each button is provided with a different designating letter, each letter corresponding to a letter on one of the identifying tags 13b. Thus, in order to make a selection, a user will, during the select-item phase of operation, depress that button whose letter corresponds to the letter associated with the item the user wishes to purchase. 
     The panel is further provided with a coin-entry escutcheon 17 comprised of a coin-entry slot 17a, panels 17b and 17c which may be illuminated to selectively indicate when the machine is able to make change and when the machine will accept only the exact amount of the purchase, and a coin-return lever 17d. 
     The bottom row 15&#39; of the array of push buttons 15 is positioned immediately above a small display window 18 displaying small snack items such as gum packages 19. The button above each of the gum packages may be depressed to select that brand or type of gum immediately beneath the push button 15&#39; being operated. 
     As will be more fully described, the food items F are pushed forward toward window 12 and off of the front edge of the shelf upon which they are suppoted such as, for example, the shelf 21, whereupon the items fall into the open region between the forward edge of the shelf and the interior surface of the window 12 where the items F drop by gravity into a delivery bin (not shown) which is just beneath the swingable door 23 adapted to be pushed inwardly to allow the purchaser to remove the vending item. 
     FIG. 2 shows a typical snack-tray assembly 30 comprised of a supporting shelf 31 and a plurality of vertical dividers 32 arranged to provide a supply region for storing a plurality of each type of snack item. The compartments 33 and 34 can each be seen to be substantially double the width of the compartments 35, 36, and 37. Each of the compartments 35, 36 and 37 is provided with a single helical drive assembly comprised of an elongated helical spring-like drive member 38 secured to an operating shaft 39 at its rearward end, said shaft 39 being driven by motor 40. Although the rearward end of the shaft is shown in FIG. 2, it should be understood that shaft 39 extends forwardly where it is joined with a coupling member (not shown) for coupling shaft 39 to the rearward end of helical drive member 38. Motor 39 is selectively energized to cause rotation of helical member 38 through one full revolution. A package or snack item is positioned between each pitch of the helical member 38. The helical member 38 is driven through one full revolution, causing the forwardmost item to be moved beyond the forward edge of shelf 31 and thereby dropped into the delivery bin, as was previously described. In a similar fashion, every snack item arranged in each pitch of helix member 38 behind the dispensed item is moved forward through the distance equal to one pitch of the helical member 38. The helical members 38 may be either left or right-hand helices. 
     Bins 33 and 34 which accommodate snack items substantially double the width of those snack items accommodated in bins 35-37, employ both a left and a right-hand helical drive member 38&#39; and 38&#34;, said left and right-hand types cooperating to collectively drive the forwardmost snack item off of the forward end of shelf 31 and simultaneously therewith moving each of the remaining snack items in the forward direction through a distance equal to one pitch of the helical members 38&#39; and 38&#34;. Only a single motor 40&#39; is utilized to drive the helical members 38&#39; and 38&#34;, there being a spiral drive gear assembly 41 to reverse the direction of rotation of helical member 38&#39; relative to helical member 38&#34; in order to properly drive the snack items F in the forward direction. 
     It is important to continuously monitor the motors 40 of the snack tray assembly in order to be assured, on the one hand, that merchandise is properly being dispensed and, on the other hand, to be assured that no more than one item is being vended. The manner in which this is accomplished will be described in greater detail hereinbelow. 
     Turning to a consideration of FIGS. 3a and 3b there is shown therein the electronic means 50 for operating the vending machine 10. Electronic system 50 is comprised of a microprocessor 51 which may, for example, be an INTEL Model 8035 microprocessor or any one of the INTEL Model 8048 series. 
     The oscillator which establishes the timing for microprocessor 51 is comprised of precision crystal 52 and capacitors C1 and C2 arranged in electrical circuit with the precision crystal 52 which is coupled across the crystal input terminals of the microprocessor 51. 
     The microprocessor 51 is powered by a 5 volt regulated DC supply to be more fully described and coupled to its power input terminals. 
     The T1 terminal receives interrupt signals requiring servicing as will be described in more detail in connection with the programmable keyboard interface circuit 101 shown in FIG. 3b and which provides a signal applied to microprocessor input T1 upon operation of one of the front panel switches 15. 
     The power supply circuit 60 shown in FIG. 6 comprises transformer means 61 adapted to provide separate 12.6 volts and 26 volt AC output signals across outputs 61a and 61b, respectively. The AC signals are respectively full-wave rectified by the diode bridges 62 and 63. The output of bridge 62 is coupled through Zener diode ZD1 and resistor R1 to the base of transistor Q1, whose collector is coupled to +5 volts DC by resistor R2 and whose emitter is grounded. The common terminal between ZD1 and R1 is coupled to ground through the parallel circuit of resistor R3 and capacitor C4. The circuit path including Zener diode ZD1 is coupled to input 54a of one-shot multivibrator 54 shown in FIG. 3a. When the power falls below a predetermined level, transistor Q1 triggers one-shot multivibrator 54 to apply a signal through conductor 54c to turn on transistor Q2. This will allow capacitor C T  to discharge and the resulting signal applied through inverters I 1  and I 2  to the reset input RST of the microprocessor 51 will cause the same to be reset and held reset for the 60 millisecond period of the one-shot multivibrator 54. When the one-shot multivibrator 54 is triggered, the Q output will go low. The signal from the Q output or conductor 54b is applied to the interrupt input INT microprocessor 51 causing the program counter of microprocessor 51 to be forced to a predetermined count which is typically the first program step of an interrupt service routine whereupon RAM memories 66 and 68 are deselected and immediately protected through the low voltage condition. The program counter incorporated in microprocessor 51 typically steps to a count representative of the fourth address location in the programmable read only memory containing the microprocessor operating programs. 
     One-shot multivibrator 54 is designed to reset the microprocessor 51 and hold it reset for the 60 millisecond output interval thereof when its Q output goed high and triggers transistor Q2, as coupled thereto by conductor 54c and resistor R6 to develop a reset signal RST. The reset input RST is developed a few milliseconds after a high appears on conductor 54c due to the discharge of the R.C. circuit in the collector path of transistor Q2 and is applied to microprocessor 51 through the series path comprised of resistor R7 and inverters I1 and I2. The program counter of microprocessor 51 is thus reset to 0 in the event that a brown-out or power-out condition occurs and is held reset for at least 60 milliseconds. If power returns, the R.C. circuit will again charge permitting further operation after the 60 millisecond period; however, if power does not return, the R.C. circuit cannot again charge. 
     Microprocessor 51 has a first and a second group of I/O (input/output) ports P1-0 through P1-7 and P2-0 through P2-7, which I/O ports are utilized to transfer data out of microprocessor 51 or accept data into microprocessor 51 from devices interfaced with said ports. 
     Ports P2-4 through P2-6 of microprocessor 51 are coupled to a three-line to eight-line decoder circuit 55 which may, for example, be a Model 74LS138 decoder circuit. Binary signals developed by microprocessor 51 during the course of operation are applied to inputs 55a-55c of decoder 55 to selectively generate a signal at one of its eight outputs 55d through 55k, said signals being utilized to select and thereby enable only one particular integrated circuit (&#34;chip&#34;) for interfacing with the data bus DB of microprocessor 51, said data bus having data bus lines DB0-DB7. The data bus lines DB0-DB7 are adapted to transfer eight-bit bytes to and from the microprocessor 51 in parallel fashion. For example, note that the data bus lines DB0-DB7 are coupled in common to the inputs D0-D7 of a latch circuit 56, the D0-D7 inputs of read only memories (ROMs) 57 and 58 and inputs I0-I3 and outputs O0-O3 of random access memories (RAMs) 66 and 68. Latch circuit 56 may be an integrated circuit of the 74LS273 type. ROMs 57 and 58 may be of the 2716/2316 type while RAMs 66 and 68 may be of the integrated circuit type 51L01. 
     ROMs 57 and 58 each have address inputs A0-A10 in order to address either the ROM 57 or ROM 58. Microprocessor 51 utilizes the data bus lines DB0-DB7 as well as the outputs P2-0, P2-1 and P2-2 of the second group P2 of I/O ports in order to develop an address code of sufficient bit length. In order to access ROMs 57 and 58, a portion of the address is applied to octal latch 56 while the remainder of the address is applied to the input terminals A8-A10 of both ROM&#39;s 57 and 58. The octal latch 56 is then latched by a clock signal applied to its clock input CLK from the ALE output terminal of microprocessor 51 to latch the address bits into octal latch 56 during the rising edge of the clock pulse. Terminal P2-3 of the second group of I/O output ports is utilized to select that one of the ROM&#39;s 57 and 58 which is to be enabled. The signal on line P2-3 is inverted by inverter I5 whereby the selection of the two ROMs 57 and 58 by microprocessor 51 is mutually exclusive. The select signal is simultaneously applied to both ROMs 57 and 58 by output terminal PSEN of microprocessor 51, causing the eight-bit byte stored at the address applied to address input terminals A0-A10 to appear at output terminals D0-D7 for transfer into microprocessor 51 through the data bus lines DB0-DB7. 
     RAMs 66 and 68 are selected in a similar fashion for purposes of reading out data or writing data into said RAMs. RAMs 66 and 68 together form a memory for storing 256 8 bit bytes. If desired, said memory may be an EAROM (electronically alterable ROM). 
     In order to write data into RAMs 66 and 68, a write pulse is developed in write line WR by microprocessor output terminal WR. In addition, the RAMS 66 and 68 are selected by a &#34;chip select&#34; signal CS derived from output terminal 55g of decoder 55 (such integrated circuits being commonly referred to as &#34;chips&#34;). A four-bit byte is written into each group of inpus I0-I3 of RAMs 66 and 68, said data being transferred over data bus lines DB0-DB7, following the latching of the desired address into octal latch circuit 56. 
     Data is read out of RAMs 66 and 68 in a substantially similar fashion except that a read signal developed in read line RD by microprocessor output RD causes the RAMs 66 and 68 to transfer data from their respective outputs O0-O3 to microprocessor 51 through the data bus lines DB0-DB7. 
     RAMS 66 and 68 are protected against the loss of data stored therein by providing a backup battery supply 71 having its plus (+) terminal coupled to the +5 volts regulated DC source to diode D2 and further coupled to RAMs 66 and 68 by diode D3. In the event of either a brown-out or failure, the voltage level of battery supply 71 is sufficient to prevent data stored in RAMs 66 and 68 from being lost. This capability is provided in addition to a routine for deselecting the RAM which routine is initiated by a low voltage sensing circuit described hereinabove in order to prevent microprocessor 51 from accessing the RAM during an undervoltage condition. 
     Terminals P2-0 through P2-3 of the second I/O port P2 are also coupled to the P2-0 through P2-3 of inputs of circuit 73 which is a four line to sixteen line latched I/O port and may, for example, be an INTEL type 8243 integrated circuit. The output line coupled to the PROG output of microprocessor 51 is coupled to the PROG input of the input/output expander circuit 73 and is designed to latch the operation code and port address of the selected one of four I/O port groups P4-P7 during a high to low transition of the signal applied to the PROG input of microprocessor 51. On the low to high transition of said signal, data on port P2 is transferred to the logic block of the specified output port group P4 through P7. 
     The I/O port group P4-P7 of the expander circuit 73 are adapted to be connected to one of two general types of coin acceptor/changer mechanisms. One type of suitable acceptor/changer mechanism is a semi-intelligent electronic coin acceptor which through an electronic means such as sensing coils accepts or rejects a coin, determining the denomination of an accepted coin and deposits said accepted coin in the inventory tubes or the coin hopper. The coin mechanism then sends an interrupt request to the electronic system 3a and 3b via I/O expander circuit 73 indicating a coin has been accepted. When the electronic system acknowledges the interrupt and the coin mechanism sends an 8 bit serial data word which tells the electronic system the coin denomination, where the coin has been sent, i.e. the change tubes or cash box and certain other status information including the state of the low level detectors in the coin inventory tubes. The electronic system controls the change making portion of the coin mechanism as well as a &#34;BLOCKER&#34; line which enables or disables the coin acceptor mechanism. This information also enables a monitoring and maintenance of various cash history records and coin tube inventory records as shall be further discussed below. 
     The second type of coin acceptor/changer mechanism is an electromechanical version as schematically represented in FIG. 5. This type of changer mechanically accepts or rejects the coins, by size and weight, and directs the accepted coin to the appropriate coin switch 93, 94 or 95. By scanning the coin switches 93-95 through leads 96-99, at a sufficiently rapid rate, the electronic system is assured that a coin will not be missed and may maintain the same cash history records mentioned above. The C.R.E.M. coils 81 and 82 serve to disable the acceptance of all coins while inventory tube switches 91 and 92 serve to inform the electronics system that the inventory tube has reached a level known as minimum. Coil 84, motor 87 and motor SN88 are controlled by the electronic system during change making. 
     FIG. 3b, showing the remaining portion of the microprocessor based electronic system for operating and monitoring the vending machine, shows a programmable keyboard/display interface chip which may, for example, be an INTEL type 8279 integrated circuit. Device 101 is utilized in conjunction with microprocessor 51 for sequentially scanning switches of the vending machine to be assured of their proper operation. The electronic system of the present invention has been incorporated within the vending machine 10 which, in one preferred embodiment, comprises a total of 148 switches, 60 of which are selection switches; 60 of which are switches monitoring the interval during which the motors are being operated and 20 of which are miscellaneous switches. 
     Programmable interface device 101 is selected by the signal CS0+1 derived from decoder 55 and gate 102 shown in FIG. 3a. Data is transferred between microprocessor 51 and programmable interface device 101 through the data bus lines DB0-DB7. The direction in which data is transferred is established by the read RD and write WR lines. Output ALE of microprocessor 51 provides clocking pulses to programmable interface device 101 to synchronize the operation and generate internal timing for the interface 101. 
     Interface 101 has its scan outputs S0-S3 coupled to three-line to eight-line decoders 103 and 105 and four line to sixteen line decoder 107. Outputs S0-S2 of programmable interface device 101 set up a three-bit binary code for sequentially enabling one of each of the outputs of decoders 103 and 105. Similarly, scan outputs S0-S3 set up a four-bit binary code causing each of the outputs of decoder 107 to go low in a one-at-a-time sequential manner. 
     Outputs O0-O7 of decoders 103 and 105 are respectively coupled to the scan lines of the selection switches shown in FIG. 4 and to the motor switches 210 to be more fully described in connection with FIG. 9. Only one of the decoders 103 and 105 is enabled at any particular time by microprocessor 51, the chip enable signal being derived from output line P2-7 of microprocessor 51 shown in FIG. 3a which is coupled to the switch selection line SW. SEL, which line is coupled in common to the enable input EN of decoder 103 and the inverted enable input EN of decoder 105 so that the decoders 103 and 105 are selected in a mutually exclusive fashion. 
     Decoder 107, which is a four-line to sixteen-line decoder, is designed to control both the internal and the external displays of the vending machine. Each of its output lines 00 through 015 is coupled to one of the LED display devices for example as shown in FIG. 10 wherein an array of thirteen such LED display devices 111-123 are provided for selectively displaying status information of the vending machine as will be more fully described hereinbelow. The LED devices 111 through 122 are of the seven segment type capable of displaying any decimal digit from decimal &#34;0&#34; to decimal &#34;9&#34;. Each of the LED devices 111-123 is scanned on a one-at-a-time basis at a high repetition rate by decoder 107 so that each LED device is energized during only one-sixteenth of a full scan cycle of decoder 107. 
     The data necessary to display the appropriate decimal number is derived from the output ports A0-A3 and B0-B2 of the programmable interface 101, these lines being coupled through driver 125 to the displays. The information presented to driver 125 is applied in synchronism with the outputs 00-015 of decoder 107. Thus, although the outputs of driver 125 are coupled to all of the LED display devices 111-123, only one LED device will be energized at any given time in order to be illuminated in accordance with the scan rate of decoder 107. The data presented to driver 125 must be synchronized with the enabled output of decoder 107 in order to place the proper decimal number in the proper display position of the array of display devices 111-123. 
     The S0 output of programmable device 101 is coupled to the trigger input of a one-shot multivibrator 126. One-shot multivibrator 126 is designed to reverse the level of its Q output 126b to disable decoder 107 from operating if scan pulse S0 is not repeated at least as frequently as every two milliseconds. This arrangement prevents the display elements 111-123 from being burned out in the event that decoder 107 stops scanning and locks in on one output due to a fault condition within the system electronics. 
     The outputs 00-02 are presented to LED display devices 111-113 which are arranged upon the front panel of the vending machine for displaying the total credit of the person presently operating the machine. 
     Octal latch 130 has its inputs D0-D7 coupled to the data bus lines DB0-DB7. The clock input C of octal latch 130, coupled to the output of gate 132, latches the eight-bit byte presented to its input terminals in the presence of chip select signal CS4 and write signal WR to selectively illuminate one or more of the front panel lights which are appropriate for illumination depending upon machine status and the phase of the program presently being performed, said panel lights being for the purpose of illuminating panels including indications, such as DEPOSIT COIN; EXACT CHANGE ONLY; MAKE ANOTHER CHOICE; and MAXIMUM CREDIT. A more detailed description of this arrangement will be set forth hereinbelow. 
     As was mentioned hereinabove, the vending machine is provided with a group of gum selection switches 15&#39;. Switch means (not shown) are provided in each gum dispenser to ascertain when these gum selections have been sold out, the switch closure conditions appearing at input terminals 135-139 when line 140 which is the select line CS5 is enabled to provide status data of all of the gum dispensing stations. This status data is transferred through the buffer circuits 142-144, 147 and 148, when enabled by gate 150 in order to transfer this status data to the microprocessor 51 by way of data bus lines DB0-DB7. The control switches such as, for example, those shown in FIG. 10 and which will be more fully described hereinbelow, are similarly coupled through the buffer circuits 141-148 in a multiplexed fashion depending upon which select signal is present, i.e. CS6 or CS5, for enabling one of the respective arrays of control buttons, as will be more fully described. 
     As was mentioned hereinabove, decoder 105, when selected, scans the selection switches in the selection switch pushbutton array 14 shown in FIG. 1 for the purpose of determining which of the switches has been operated. A signal is coupled to the switches on a column-by-column basis and the switches within the column which have been closed transmit signals through the lines 171-179 shown in FIG. 3b. The switch array 190 is shown in FIG. 4 and is comprised of the scan lines S0-S7 which are respectively coupled to the output lines 00-07 of decoder 105. Only one column line is enabled at any given instant. Each column line is coupled in common to all of the switches in one column of the front panel switch array and motor switches 190 comprised of columns COL1-COL8. Each column conductor is coupled to an associated switch arm SWA through a diode D. Each switch arm SWA is adapted to be selectively engaged with a stationary switch terminal T there being a stationary switch terminal T coupled to each of the row conductors ROW0-ROW7 in the manner shown in FIG. 4. Let it be assumed that a scanning signal is applied to scan line S0 thereby energizing the COL1 conductor. Any of the switch arms SWA electrically connected to the COL1 conductor will complete an electrical circuit through its associated row winding ROW0-ROW7 when closed. COL2 conductor is scanned next, followed by COL3 conductor, and so forth with the switch closures being presented through the row conductors ROW0-ROW7 to the lines 172-179 coupled to the read line inputs RL0-RL7 of the programmable interface circuit 101, which stores data representing the closed switch and generates interrupt request signal IRQ. 
     The additional change switch CSW, when closed, provides signals to the shift input of programmable interface 101 for the purpose of storing a shift input status condition, which is stored along with any switch closure conditions when a scan pulse is applied to the COL1 conductor. Diodes D are provided to prevent erroneous switch closure information from being fed back to the microprocessor 51 in the event of multiple switch closures in a single column conductor. 
     As was mentioned hereinabove, programmable device 101 continuously generates scan pulses S0-S3 which causes sequential development of signals at the outputs O0-O7 of either decoder 103 or 105, said outputs being respectively coupled to the row lines of the selector switches 14 (FIG. 1) and the row lines of the motor switches 210 (FIG. 9). The inputs A, B, and C and G2A of a three-line to eight-line decoder 202 (FIG. 7) are coupled to I/O ports P1-7 through P1-4 while the remaining four inputs P1-3 through P1-0 are coupled to inputs A, B, C and G2A of three-line to eight-line decoder 204. 
     Decoders 202 and 204 decode each three-line input coupled thereto to enable one line of its eight-line output when its enable input G2A is enabled. The output lines of decoder 202 are coupled to the row lines ROW0-ROW7. Each row line is coupled to input MD1 of a motor drive circuit MD. 
     Decoder 204 has its eight output lines O0-O7 coupled to the column lines COL0-COL7, each such line being coupled to input MD2 of each motor drive unit MD coupled to the associated column line. 
     Each of the motor drive circuits MD is either of the type adapted to operate an AC motor or is of the type adapted to operate a DC motor. FIG. 8a shows a motor drive circuit MD-AC adapted for operating an AC motor while the motor drive circuit MD-DC shown in FIG. 8b is utilized to drive a DC motor. 
     Motor drive circuits MD-AC is comprised of a light emitting diode element LED, a bidirectional light sensing switch element LSD and a bidirectional triac TR. The DC type motor drive is comprised of a similar light emitting diode LED and a light sensing switch element LSD but is provided with a unidirectional SCR TRU. In order to energize the LED of the desired motor drive circuit MD-AC, signals of the proper polarity are applied to input terminals MD1 and MD2 illuminating the LED which operates the light sensitive switch element LSD to close, causing the bidirectional triac TRB to drive an AC motor. 
     In a similar fashion, a voltage of the proper polarity applied to inputs MD1 and MD2 of a DC control MD-DC causes the LED to illuminate and to establish a circuit path between the motor power supply circuit terminal MTR PWR and the motor associated with the motor drive circuit MD through the SCR TRU. One output terminal of the twenty-four volt motor supply is coupled in common to one terminal of every motor drive circuit MD. However, the output terminal MD4 of each motor drive circuit MD is coupled independently to its associated motor, the opposite terminal of the motor being returned to the twenty-four volt power supply. In this manner, it is possible to selectively energize any one of a maximum of 64 motors through the arrangement shown in FIG. 7. 
     Each motor operated by one of the motor drive circuits MD shown in FIG. 7 is provided with a sensing means 208 shown in FIG. 9 and comprised of a cam 209 and microswitch 210. Microswitch 210 is provided with a switch arm 210 and a resilient &#34;skid&#34; member 210b. As was mentioned hereinabove, in connection with FIG. 2, each of the motors 40 is provided with an output shaft 39 upon which cam 209 is mounted. Microprocessor 51, energizes one of the motor drive units dependent upon the particular food item to be dispensed, said unit being energized to enable shaft 39 to rotate through one full revolution. Correct operation of the motor so energized is ascertained during a scanning technique in which the condition of the switch 210 for each motor is scanned. The energization of the motor rotates its associated cam 209 to move skid 210b and hence switch arm 210a to close switch 210. Switch 210 remains closed during almost the entire revolution of the drive motor 40. In the event that the switch 210 of the motor which has been energized is open, this indicates a malfunction of the motor. 
     The switch 210 of those motors which have not been energized are also sensed during the scanning operation. The closing of a switch occurring during the time that its associated motor has not been selected to be energized, serves as an indication that the motor associated with said closed switch has jammed or otherwise malfunctioned and has done so in a position other than the normal start position of the motor. 
     Each time a proper vend operation is initiated and completed by the Microprocessor 51, registers therein for maintaining a count of vends of that item which have taken place both on a historical basis and in a collection-to-collection basis are incremented in the same manner as the registers maintained for keeping track of cash. In this manner, appropriate accounting registers are updated each time a vend takes place. Should a vend failure occur as indicated by the switches monitored, a &#34;Make Another Selection&#34; lamp is lit. Should monitoring of these switches disclose a multiple vend, the operation of the vending machine is shut down to await service. 
     Turning again to a consideration of FIG. 10, as was described hereinabove, the front panel cash display including LED display elements 111, 112 and 113 is arranged on the front panel of the vending machine as shown in FIG. 1. The status display comprised of display elements 114-123 is arranged at a convenient location behind door 11, as is a free play switch, not shown, for allowing free selections. Access to the interior of vending machine 10 is limited to authorized personnel holding a key to lock 16. By opening door 11, it is possible to replenish the stock of items vended, to actuate the free play switch and to closely observe the various components of the vending machine to assure proper operation. In order to greatly facilitate such periodic maintenance, the microprocessor 51 is further utilized to create displays upon the array comprised of display elements 114-123. The variety of information capable of being displayed comprises: 
     I. The Cash History, which is displayed by display elements 114-121 and represents the amount of cash taken in since the machine was installed. 
     II. Cash collection-to-collection display which is presented by display elements 114-119 and which represents the total amount of cash taken in by the machine since the last time the coin hopper was emptied. 
     III. Maximum cash price which is displayed by display elements 114-116 and which represents the maximum cash value, from $0.05 to $9.95, beyond which maximum value the changer refuses additional coins. 
     IV. The number of Historical Vends is displayed by display elements 116-120 and represents the total number of items vended per item. Corresponding thereto, the display elements 121-123 display the identity of the vended item by way of the number assigned to such item. The number is displayed by display elements 121 and 122. Elements 123 which is a LED dot matrix display element comprised of a LED display device having dot-like elements arranged in a four column by six row matrix is adapted to display a letter representing the particular item being displayed such as, for example, &#34;M&#34; for motor; &#34;S&#34; for the selection switches; &#34;C&#34; for a control panel switch; and so forth. 
     V. The number of Vends Collection-to-Collection. The total number of units of each item vended since the last collection is displayed by display elements 116-118. The particular item is identified by display elements 121-123. In the event that a particular dispensing mechanism, such as motor 40, has failed between the last collection and the present collection, display elements 119-121 are illuminated to present the display &#34;ERR&#34; to indicate a failure in the particular dispensing device upon a vend request. The display developed by display elements 116-118 represent the number of vends of said dispensing device before the present failure condition. 
     Each of the above items capable of being displayed is selected at the option of maintenance personnel by means of the pushbutton control panel 230 comprised of the array of pushbuttons 236-242 and the control/run switch means 246. Each of the buttons 231-236 are adapted to cause the display functions set forth as functions I-V hereinabove. For example, to obtain the Cash Historical display, pushbutton 231 is depressed; to obtain the Cash Display Collection-to-Collection, pushbutton 231 is depressed in combination with forward pushbutton 242; and so forth. In the event that pushbutton 234 is operated, the first item of the array will be displayed. By depressing the forward pushbutton 242, each item will be displayed for a period of the order of 0.70 seconds before displaying status information for the next item. In order to more rapidly change the display from item to item in the forward direction, pushbuttons 242 and 240 are simultaneously depressed whereupon each item is displayed for a period of only 0.20 seconds, enabling an operator to observe the status of the times within the selected category of status information at a more rapid rate. 
     In the event that it is desired to switch from item to item in the reverse order, pushbutton 241 is depressed causing the items to change at the rate of 0.70 seconds. If it is desired to change from item to item at a faster rate, pushbuttons 240 and 241 are simultaneously depressed causing the display of each item to persist for an interval of only 0.20 seconds before displaying the status of the next item. 
     By depressing pushbutton 236, it is possible to set or alter the price of an item. Each item is displayed by depressing pushbutton 236 wherein the price is displayed by elements 114-116 and the item having that price is identified by display elements 121-123. By releasing either of the buttons 242 or 241, the display will stop at the item being displayed at the time that the button is released whereupon the price of the item may be changed in increasing $0.05 increments by depressing the increase price button 238. The price will be increased by $0.05 increments at the rate of 0.07 seconds. If it is desired to alter the price at a faster rate, pushbuttons 238 and 240 are depressed causing the price increments to increase at a rate of 0.20 seconds. 
     If it is desired to decrease the price, the decrease price button 239 is depressed causing the price display to be altered by $0.05 increments at a rate of 0.70 seconds. In the event that it is desired to more rapidly reduce the price of the item, pushbuttons 239 and 240 are simultaneously depressed, causing the $0.05 incremental change to occur at the rate of 0.20 seconds. By releasing the depressed pushbuttons 238 or 239, the last price change displayed will be retained in memory. 
     Microprocessor 51 is also capable of providing other status information which is obtained by moving Control/Run switch 246 to the left, i.e. to the Control position, and selectively depressing the test switch. This automatically develops a status display mode comprised of five phases which are as as follows: 
     I. Lamp Test--The microprocessor 51 alternately illuminates the front panel credit display, each of the front panel lamps and the control panel digits. 
     II. Front Panel Switch Test--Upon a second closure of the test switch, the microprocessor 51 sequentially displays the letter and number of any closed front panel switch. If no switches are closed, display elements 123 and 122 generate the display &#34;S0&#34;. 
     III. Motor Switch Test--Upon a third closure of the test switch, microprocessor 51 steps to Phase III, in which the letter and number of any closed motor switch is displayed by elements 123 and 122. If none of the motor switches are closed, the display &#34;M0&#34; will be presented by display elements 123 and 122. 
     IV. Control Panel Switch Test--A fourth depression of the Test Switch causes the microprocessor 51 to display at postions 121-123 the letter &#34;C&#34; and a number &#34;1&#34; through &#34;12&#34; identifying any control panel switch which may be stuck in a closed position. In the event that the control panel switches are all open, microprocessor 51 causes a display &#34;C0&#34; to be presented. 
     As one example of the above phase control operations, the front panel lights are sequentially tested by causing the programmable interface circuit 101 (see FIG. 3b) to be selected by microprocessor 51 (see FIG. 3a). Microprocessor 51 also generates chip select signal CS4 and the write WR causing gate 132 to select decoder 130. The data bus lines DB0-DB7 are enabled to cause each output line Q0-Q7 of decoder 130 to be enabled on a one-at-a-time basis. Each lamp may remain illuminated for a period sufficient to allow each lamp position to be visually observed thus providing a visual display of the front panel lamps to assure their proper operation. 
     The control switches are scanned in a similar fashion. 
     Although it is quite useful to display status information to service and/or collection personnel, it is also quite valuable to simply and accurately present such data in the form of a visually observable or machine readable form such as, for example, a hard copy print out and/or a magnetic record of the status data in the form of a magnetic tape, floppy disc or static memory device such as a random access memory (RAM). 
     In order to transfer data in a simple, accurate and high speed manner, microprocessor 51 (see FIG. 3a) includes a sub-routine which is adapted to bidirectionally communicate with an off-line device provided for data collection. Considering FIGS. 3a and 3b, microprocessor 51 periodically examines the signal level on line DB0, which changes when the off-line device is aligned with the vending machine LED263 and photoresistor 265. When the level on data bus line DB0 changes, the output of gate 260 applies a signal to input 262b of flip-flop 262 causing its Q output 262c to go low. This signal is identified as a transmit signal XMIT which is coupled to a light emitting diode 263 causing light emitting diode 263 to be turned off and on to transmit binary data. A light sensitive transistor 265 is coupled to the Data Bus line DB0 and operates to change the level on Data Bus line DB0, responsive to the operation of the off-line unit in a manner to be more fully described. Considering FIG. 13, light emitting element 263 and light sensitive element 265, which is preferably a phototransistor, are positioned behind a protective lens 267 provided at a convenient, accessible location within the interior of vending machine 10 and behind door 11 or on the face of the door as indicated by the dashed block in FIG. 1. The remote unit 270 (see FIG. 14) to be interfaced with the microprocessor 51, is comprised of a main housing 271 which contains a microprocessor 292, memory 298 and associated circuitry as will be described in detail in connection with FIGS. 11 and 12, and further includes a coupler housing 272 containing an LED element 274 and a phototransistor 276, which elements are positioned behind lens 278 shown in FIGS. 13 and 14. A second LED 301 (FIG. 11) positioned behind window 272a serves to indicate when the transfer of data is completed, as will be more fully described. The components in coupling housing 272 are connected to the electronic control system in main housing 271 through cable 279. Microprocessor 292 may be an INTEL Type integrated circuit. While a two-piece housing is shown in FIG. 14, a single housing could also be employed. In addition, a storage media, such as a tape or cassette could be relied upon to record data obtained. 
     LED 263 in vending machine 10 is normally maintained energized so that it is constantly transmitting light. By aligning lens 278 with lens 267 so that the exterior surface of lens 278 rests upon the exterior surface of lens 267, the light constantly emitted by LED 263 is picked up by phototransistor 276. Noting, for example, FIG. 11, the receipt of light from LED 263 causes phototransistor 276 to conduct. The conduction of phototransistor 276 develops a voltage drop across resistor R15 sufficient to cause transistor 284 to conduct. Capacitor C20 which is normally fully discharged, is caused to rapidly charge through the circuit path comprised of the emitter-collector path of transistor 284 and diode D20. When the positive terminal of capacitor C20 reaches a predetermined threshold level, transistor 286 is caused to conduct. The collector electrode of transistor 286 is brought substantially to ground potential causing a voltage drop to be developed across resistor R20 sufficient to cause transistor 288 to conduct. The conduction of transistor 288 couples the battery supply 290 to terminal +CONT which is coupled to the cathode of diode D21 and to the power terminals Vcc and Vdd of microprocessor 292. The + CONT terminal is also coupled through resistors R23 and R24 to the inputs SS and INT of microprocessor 292 to remove the signal level causing microprocessor 292 to advance through program steps in a &#34;single step&#34; mode and to disable the microprocessor Interrupt. 
     When the battery source 290 is coupled to microprocessor 292, its reset input RST is initially maintained low near ground potential due to capacitor C23 which is coupled between the RST input and ground. This low input causes the program counter (not shown) in microprocessor 292 to be set to program step &#34;0&#34; at which time microprocessor 292 performs certain &#34;houskeeping&#34; functions such as, clearing random access memory device 296 and 298 which are substantially identical to the random access memory devices 66 and 68 shown in FIG. 3a. 
     When transistor 286 is turned on, it also couples a low level signal to the chip enable inputs CE1 of random access memories 296 and 298 coupled thereto through bus 299, thereby enabling random access memory devices 296 and 298 to be written into. 
     Microprocessor 292 ultimately steps to that step of its program which causes a low level signal to be developed at output port P2-0 to turn on transistor 296. The conduction of transistor 296 causes LED 274 to be turned on and simultaneously causes LED 301 to be turned on. LED 301 is positioned behind window 272a in coupler housing 272 and is illuminated to indicate that a communications cycle is presently in progress. 
     The energization of LED 274 causes light to be passed to phototransistor 265 through the lenses 278 and 267 (see FIG. 13). The light picked up by phototransistor 265 is coupled through buffer 303 to data bus line DB0. Microprocessor 51 periodically scans data bus line DB0 to look for a transmit request signal and, upon noting the transition level present on Data Bus line DB0, acknowledges this condition as a &#34;ready to receive&#34; signal derived from microprocessor 292 of the off-line unit 270. As a result, microprocessor 51 enters into a data transfer subroutine in which data is transmitted in serial fashion to off-line unit 270 in conventional teletype fashion wherein each data word is comprised of a one millisecond start bit, 8 data bits each of one millisecond duration and a one millisecond stop bit. The start bit is low and the stop bit is high while the data bits may be either high or low depending upon their binary state. 
     The first byte transmitted by microprocessor 51 comprises an 8 bit byte representing, in binary fashion, the number of status words to be transmitted from microprocessor 51 to microprocessor 292. This byte is stored in the working memory of microprocessor 292 and is compared against a byte counter of microprocessor 292 in order to establish when transfer of all of the status words is complete. 
     After transmission of the data byte representing the number of status words to be transmitted, microprocessor 51 transmits each status word over the transmit line XMIT. This is accomplished by transmitting each start bit, eight data bits and a stop bit to the D input of type-D bistable flip-flop 262 and applying a clock pulse to the clock input whereupon the Q output 262c of flip-flop 262 follows the level present at the D input upon receipt of each clock pulse. The binary 1 and binary 0 levels are transmitted in the form of turning on and turning off LED 263 for one millisecond intervals. These signals are received by phototransistor 276 which functions to control the conductivity of transistors 276 and 284 as the light from LED 263 (FIG. 3a) is respectively cut off and turned on. The signal levels are applied from the collector of transistor 284 to input port P1-0 of microprocessor 292. The serially transmitted data is converted into parallel form by microprocessor 292. Although the level at collector transistor 284 is caused to drop, possibly for periods as long as 9 milliseconds, the capacitance of capacitor C20 and the reverse polarity connection of diode D20 prevents capacitor C20 from discharging to a level sufficient to turn off transistors 286 and 288. The use of the circuitry described assures the delivery of sharp pulse levels to input P1-0 of microprocessor 292. In the event that a malfunction occurs, capacitor C20 will discharge to turn off the transistors 286 and 288. When the collector of transistor 286 thus goes high, RAMS 296 and 298 are deselected thereby protecting the data transferred to random access memories 296 and 298. 
     Each byte transmitted in serial form to microprocessor 292 is converted to parallel form. Microprocessor 292 picks each address location in memories 296, 298 in succession, applies the binary word representing said address location to octal latch 320, and develops an output signal at its output ALE to enable transistor 322 to apply a clock pulse to clock input CK of octal latch 320 latching the address word therein. Thereafter, microprocessor 292 applies the status word to be stored in memory 296, 298 to its data bus lines DB0-DB7, lines DB0-DB3 being written into random access memory 296 and lines DB4-DB7 being written into input line I0-I3 of random access memory 298. Microprocessor 292 develops a write pulse at its write output WR which is applied to the read/write terminal R/W of both random access memories 296 and 298. The random access memories 296 and 298 are capable of storing four bit bytes, collectively forming a 256 by eight memory capacity. 
     After a status word is written into memories 296 and 298, the next status word is transmitted to microprocessor 292 in serial fashion, is converted by microprocessor 292 in parallel fashion and is written into the next memory location. Microprocessor 292 employs one of its working memory locations as a counter. By incrementing the count in said counter by one each time a status word is written into random access memories 296-298. This count is compared against the count originally received from the vending machine microprocessor 51 each time it is incremented. As soon as these counts are equal, microprocessor 292 removes the high level from its output P2-0 causing transistor 297 to be turned off and simultaneously causing LED 274 and 301 to be deenergized. By observing the window 272a provided in coupling housing 272 shown in FIG. 14, the operator is made aware of the fact that data transfer from vending machine 10 to the off-line unit 270 is completed when the LED 301 behind window 272a is turned off. Even assuming a transfer of data equivalent to the full capacity of memories 296-298, such data transfer is completed in less than 3 seconds. 
     Status data may also be transferred from the vending machine 10 to an off-line unit utilizing a printer, for example, of the type shown in FIG. 12. 
     In the off-line unit 350 shown in FIG. 12, microprocessor 380 is normally powered due to the power requirements of the printer 460 controlled thereby. When it is desired to use the off-line unit, switch 55 is closed causing the power supply unit 370 to develop regulated 5 volt and 24 volt DC outputs. 
     Microprocessor 380 is thus turned on and enters into an initialization program where it performs normal housekeeping functions including the clearing and resetting of the microprocessor working memory and registers (not shown). 
     When light sensitive element 351 receives light from LED 263 provided in the vending machine (FIG. 13), a signal is applied to input port P0-0. The microprocessor 380 generates a signal at its output port P-0 which turns on transistor 384 causing light emitting diode 386 (similar to light emitting diode 274 of FIG. 13) to transmit a &#34;ready to receive&#34; signal to the vending machine which is picked up by phototransistor 265. 
     In a manner described hereinabove, the vending machine microprocessor 51 periodically examines Data Bus line DB0 and upon recognizing a level change in this data bus line, interprets the signal transition as a &#34;ready to receive&#34; signal which causes microprocessor 51 to transmit data words in serial fashion which constitute a low start bit of one millisecond duration; eight data bits each of one millisecond duration and a high level stop bit of one millisecond duration. The signals are applied to input port P0-0 of microprocessor 380 which converts the data into parallel form. The parallel data byte is then applied to a memory (not shown) provided in microprocessor 380 which is preferably of the read only memory type for converting each data word into seven bit dot pattern bytes, five such dot pattern bytes collectively forming a five by seven dot matrix character. 
     The characters are formed by printer 460 which sequentially prints each of the dot column patterns, five such dot column patterns collectively forming a single character. The particular dot column pattern to be printed is determined by the print signal transmitted from the printer line position circuit (not shown) to the print sync input T0 of microprocessor 380. Upon the occurrence of each print signal, microprocessor 380 selects the next seven bit dot column byte from the character generator read only memory for application to the seven print wires of the dot matrix printer (not shown) coupled to output lines PW1-PW7. As soon as the printing of a character is completed, microprocessor 380 provides blanking signals to the print wires to provide a space between each character. 
     The printer 460 is designed to have its printing element (not shown) scan across an entire line regardless of the fact that the characters may or may not be printed at any particular column position. The printer 460, as is conventional, is provided with an end of print sensing device (not shown) which, when the printing element reaches the right-hand margin, generates an end of line signal which automatically develops a carriage return and line feed signal causing the printer 460 to advance the paper web 461 to be advanced through a distance of one line and causing the printer 460 to return the printing element to the left-hand margin in readiness to initiate printing of the next line. The end of line signal is applied to the line sync input for application to input port P0-1 which prevents microprocessor 380 from initiating printing of the next character until the line sync signal terminates at which time microprocessor 380 is thus advised that the printer 460 has advanced the paper web to the next line and the printing element is returned to the left-hand margin in readiness for printing the next character. The printing element is preferably a print head of the dot matrix type having seven reciprocating print wires (not shown). The signals for energizing the wires are derived from lines PW1-PW7. 
     In the off-line unit 350 of FIG. 12, printing is terminated simply by terminating transmission of data from microprocessor 51 to the microprocessor 380 of off-line unit 350. 
     While the actual operational details of the processing and modes of control exercised by the microprocessor 51 will be best appreciated upon an examination of the exemplary, annotated program therefor as attached hereto as the Appendix, a general appreciation for the modes of operation of the instant invention and the manner in which the same are implemented under program control may be obtained from FIG. 15 which illustrates system operations in terms of a generalized flow diagram. It will be understood, however, that the actual details of the program per se will be ascertained by a review of the Appendix and that many variations and modifications of the specific program set forth will be available to those of ordinary skill in the art depending upon the preferences of the program and the design objectives thereof. 
     FIG. 15 shows a generalized flow diagram 400 of the program routines and sub-routines performed by microprocessor 51 to control the operations of vending machine 10. The various routines of the vending machine microprocessor 51 will now be described in conjunction with the aforesaid flow diagram 400 and making reference to one or more of the FIGS. 1-14. 
     A hardware reset of microprocessor 51 occurs when Zener diode ZD1 of FIG. 6 detects the presence of less than 7 volts DC, causing transistor Q1 to be cut off and developing a power down signal PWR DWN which is applied to trigger input 54a of one-shot multivibrator 54 shown in FIG. 3a. Output 54c of one-shot multivibrator 54 will thus go high for the 60 millisecond duty cycle of one-shot multivibrator 54 while the output thereof on conductor 54b goes low. The high on conductor 54c causes transistor Q2 to conduct, to discharge the capacitor C T  and apply a signal to the reset input terminal RST which resets microprocessor 51, causing the program counter (not shown) provided in microprocessor 51 to be automatically advanced to a predetermined count, Microprocessor 51 remains in the reset state until the rest signal is removed at the end 60 millisecond duty cycle of one-shot 54 and a recharging of capacitor C T  occurs. 
     In the event that the undervoltage condition persists for more than 60 milliseconds, the delay period of one-shot multivibrator 54, the capacitor C T  will not charge and the microprocessor remains reset. When the one-shot 54 is triggered, the Q output thereof connected to conductor 54b immediately goes low. This output is applied to the not interrupt intput INT of microprocessor 51 to force the program counter to address 3 as an interrupt. This is the first program step of an interrupt service routine and automatically deselects the random access memories 66 and 68, preventing an erroneous selection thereof during an undervoltage condition to thereby immediately protect valuable information previously stored in random access memory units 66 and 68. The battery supply 71 provides standby power to RAM&#39;s 66 and 68. 
     When the voltage level applied to Zener diode ZD1 exceeds 7 volts and the capacitor C T  charges, the reset input signal applied to the reset input RST of microprocessor 51 is removed and the program counter may advance to the first program step for the initialization sub-routine. This is accomplished by advancing the program counter to a predetermined program step after which the remaining steps are called out of PROMs 57 and 58 for the purpose of performing the aforesaid housekeeping functions including clearing certain memory locations in RAMs 66 and 68 and setting up the I/O ports of microprocessor 51. 
     After initialization is complete, microprocessor 51 enters into the Idle loop 403. Microprocessor 51 remains in the Idle loop unless it is processing and continues to examine certain hardware and circuitry within the vending machine 10 to ascertain if any servicing or control is required. The said machine hardware and circuitry is periodically examined until they require microprocessor attention at which time microprocessor 51 enters into the appropriate sub-routine to attend to the matter at hand. 
     Having once entered into the Idle loop, the first phase of the sub-routine causes the microprocessor 51 to service the changer device shown in FIG. 5. In this sub-routine of the Idle loop, microprocessor 51 selects I/O port 73 shown in FIG. 3a to determine whether the coin mechanism requires servicing. At this time the I/O port 73 shown in FIG. 3a is selected to interface with the hanger mechanism. In the event that an electronic changer is employed, the microprocessor looks for an interrupt signal. In the event that a mechanical type changer is employed, for example, changer 80 as shown in FIG. 5 of the application, switches 93, 94 and 95 are examined to detect the fact that coins have recently been deposited. This is accomplished by placing a signal upon common line 96 and examining each of the lines 97-99 to establish if any switch closures are present, thereby establishing what coins may have recently been deposited. For the next phase 405, in the event that coins have been deposited, the signals representing the denomination of these coins by virtue of the closed switches, causes microprocessor 51 to add the denomination of the coin just deposited to the present count, which count is stored in a predetermined location in memory. The count is also displayed on the front panel of vending machine 10 by LED display elements 111-113 to advise the user of the count. The stored count continues to be updated as additional coins are deposited. Each time the last coin denomination is added to the present count, this count is compared against the maximum amount acceptable by the machine, said amount being stored in another location in memory whereupon, when this amount is reached or exceeded, microprocessor 51 deenergizes the coin return eject mechanism coils 81 and 82 and energizes coil 84. The deenergization of coils 81 and 82 prevents further coins inserted into the mechanism to be evaluated. Energization of coil 84, by application to a signal to line 85, causes a pin (not shown) in the mechanism to be moved to a deflect position causing any further coins inserted into the coin slot 17a (see FIG. 1) to be deflected away from the coin evaluation slot and coin inventory tubs or hopper coin hopper (not shown for purposes of simplicity) and into the coin return hopper 17c. The disposition of coins in the individual coin inventory tubes (not shown) or the coin hopper cash box is also here controlled and if coins are placed in the coin return tubes the inventory count therefor is updated. Microprocessor 51 operates programmable interface circuit 101 which selects decoder 107 and segment display driver circuit 125 to operate the front panel cash display comprised of segmented elements 111-113 shown in FIG. 10 and in FIG. 1 to display the amount of money which has been deposited into the vending machine 10. 
     Phase 405 of the Idle loop represents the deenergization of the coin return eject mechanism coils 82 and 83. 
     In the event that no coins are deposited when the coin changer mechanism 80 is examined, microprocessor 51 automatically steps to the next phase 406 of Idle loop 403 whereupon when at least the smallest amount of cash suitable for purchasing the least expensive item has been deposited, the progream illuminates the MAKE SELECTION lamp by selecting decoder circuit 130 shown in FIG. 3b. This phase includes a comparison of the cash deposited amount against the amount of the least expensive item capable of being dispensed, which amount is stored in a predetermined location in memory, and if the amount deposited into the coin changer is equal to or greater than this amount, microprocessor 51 causes the MAKE SELECTION lamp to be illuminated. Although not shown for purposes of simplicity, the illumination of the MAKE SELECTION lamp is accomplished in a manner similar to that in which the motors 49 described hereinabove are selectively energized. More particularly, an opto-isolator ciruit is employed, which opto-isolator circuit comprises a light emitting diode LED similar to that shown in FIG. 8a. The LED is illuminated, causing the conduction of a light sensitive triac for turning on the MAKE SELECTION lamp. This electrical isolation circuit enables low level signals to be utilized for control while utilizing signals of greater power for operating motors, lamps and the like. 
     The next phase 407 of the Idle loop 403 comprises a group of program steps entered into for the purpose of updating machine displays which are called for in response to the last previous action taken such as the GUM SOLD OUT lamp, the EXACT CHANGE lamp and the credit display. As was previously described, the credit display is operated in a multiplexed fashion while the other front panel display lamps are continually lit. The GUM SOLD OUT lamp is illuminated when an examination of the SOLD OUT switches for the associated gum vending position has closed. The exact change lamp is illuminated when the vending machine 10 no longer contains coins sufficient for providing change in the coin tubes. The credit display is illuminated based upon the number of coins deposited in the machine by the user or what remains after a selection operation has occurred. 
     The next phase 408 of idle loop 403 constitutes a test of the T0 pin which results when one of the selection switches in switch array 15 (see FIG. 1) is depressed by someone operating vending machine 10. The switches are scanned by the programmable interface circuit 101 in the manner previously described. When a switch closure is present, programmable interface circuit 101 detects this condition and develops an interrupt request signal at its output IRQ, which signal is applied to the T0 input of microprocessor 51 shown in FIG. 3a. The T0 input is tested during phase 408 of the idle routine. In the event that a switch closure has not taken place, the level at the T0 input of microprocessor 51 will be low causing microprocessor 51 to step to the next phase of the Idle loop which tests the door switch (not shown) of the vending machine door 11 (see FIG. 1). In the event that door 11 is closed, microprocessor 51 returns to the initial step of the Idle loop 403 as represented by lines 409a and 409b. The Idle loop continually repeats itself every 2.5 milliseconds, examining each of the circuits described hereinabove to ascertain if any action is necessitated. 
     In the event that the vending machine front door 11 is open during the test door switch phase 409 of the Idle loop 403, a door open signal causes microprocessor 51 to jump to step 410 in the stored program to ascertain if a peripheral (i.e. off-line) device is present. In accordance with the description set forth hereinabove, the Data Bus line DB0 is examined to ascertain the presence of a level transition. In the event that an off-line device is present, microprocessor 51 branches to the transmit data to peripheral sub-routine 411 whereupon all the data stored in memory is transferred to the off-line device in the manner described hereinabove. Microprocessor 51 then leaves sub-routine 411 and enters into the initialization sub-routine 402 discussed hereinabove. 
     In the event that a peripheral unit, such as unit 270 (FIG. 14) is not present, microprocessor 51 branches to the test control switch program step 412 whereupon the control switch 246 shown in FIG. 9 is examined. In the event that the test control switch 246 is in the run position, indicative of the fact that normal operation of the vending machine 10 is requested, microprocessor 51 returns to the initial program step of the Idle loop 403 as represented by lines 412a and 409b. 
     In the event that the test control switch 246 of FIG. 10 is in the control position (i.e. ON), microprocessor 51 jumps to the control mode loop as represented by lines 412b and 412c, which Control Mode Loop will be described hereinbelow in greater detail. 
     As was mentioned hereinabove, programmable interface device 101 continually scans the selection switches 15 and presents an interrupt request signal IRQ which is applied to the T0 input of microprocessor 51 when a switch closure is detected. In the event that the level to the T0 input is high, microprocessor 51 branches to the vend cycle sub-routine through line 408a. During the vend cycle sub-routine, the switches are scanned in the manner indicated by block 414 to ascertain which switch has been operated. At program step 416, the sold out switches are examined to establish if the item has been sold out. In the event that the item has been sold out, microprocessor 51 returns to the Idle loop 403 as represented by lines 416a and 417 and updates displays at phase 407 of Idle loop 403. 
     In the event that the requested item is not sold out, microprocessor 51 advances to program step 418 wherein the price of the item which has been requested to be vended is called out of its memory location to ascertain its price and the price of the item is compared against the amount of money which has been deposited into vending machine 10, as displayed on the front panel, to ascertain whether the amount deposited is equal to or greater than the price of the item which has been requested to be vended. In the event that the amount deposited into vending machine 10 is less than the price of the item, microprocessor 51 immediately returns to the Idle routine 403 through lines 418a, 419 and 417, at which time the lamp displays are updated during phase 407 of the Idle loop 403 when the Idle loop reaches phase 407. In the worst case, this would be no greater than 2.4 milliseconds after microprocessor 51 returns to the Idle loop. 
     In the event that the amount deposited in vending machine 10 is equal to or greater than the cost price of the item which was requested to be vended, microprocessor 51 advances to program sub-routine 420 during which the item is vended, accountability is updated and error conditions, if present, are updated. These steps are performed in the following manner: 
     Microprocessor 51 generates the selection signal which selects the decoder 105. Programmable interface circuit 101 continually scans both of the decoders 103 and 105 shown in FIG. 3b. However, only decoder 105 is operating. 
     When a switch closure is detected (at lines RLφ-RL7) device 101 stores the identity of the switch in array 14 and simultaneously generates an interrupt request signal IRQ. 
     Microprocessor 51 acknowledges this signal by requesting that programmable device 101 transmit through Data Bus lines DBφ-DB7 the identity of the closed selector switch in array 14. Microprocessor 51 after comparing the cost of the item to be vended with the amount deposited, then places a control word at the I/O ports P1-φ through P1-7. This word is applied to the code inputs A, B, C and select input SEL of decoders 67, 69. Only one line of the eight output lines Oφ-O7 of each of the decoders 67, 69 is energized to energize the LED of only that motor drive circuit MD lcoated at the intersection of the column (COL) and row (ROW) conductors provided in the matrix array of FIG. 7. If desired, in the case where DC motors are employed to drive the dispensing means such as the helix drives 38 of FIG. 2, the opto-isolator circuits may be eliminated and the column (COL) and row (ROW) conductors may be directly connected across the DC motor. Microprocessor 51 also powers the motor power lines which provide the AC and DC power required for operating AC or DC motors, respectively. This selection is made by turning on appropriate LED devices of opto-isolator circuits similar to those shown in FIGS. 8a and 8b in order to provide the AC and DC power through the associated common power lines. 
     Thereafter, microprocessor 51 selects decoder 103 while device 101 scans all switches in the entire switch array of the motor switches 210 shown in FIGS. 4 and 9 to determine if any of the motor switches are closed, indicating that their associated cams have not been returned to the start position. In the event that any such switches close indicating that the associated motor is either on or has returned to other than the proper start position, microprocessor 51 derives the identity of the closed switch 210 from programmable device 101 and stores a malfunction status signal in the memory location assigned to the malfunctioning motor. In the event that a malfunction status code was previously stored for the selected motor, microprocessor 51 examines the memory location assigned to such motor at the time that the switch selection signal has been identified. In the event that a malfunction status code was previously stored for that particular dispensing motor, microprocessor 51 jumps to the Idle loop and updates the front displays during Idle loop phase 407 which, in the present instance, consists of illumination of the MAKE NEW SELECTION lamp (not shown for purposes of simplicity), which is selected through decoder 130 (see FIG. 3b). In the event that no malfunction status code is present for the selected dispensing motor and further in the event that no switch closures are present due to any malfunctions, the motor of the selected dispensing device is turned on by microprocessor 51 which generates a chip select signal to select decoder 103 shown in FIG. 3b causing the motor drive circuit MD for the selected motor to be energized by illuminating its associated LED. The energization of the motor drive MD is delayed at least until a zero crossing condition is present in order to delay the turn on of an AC motor until the AC waveform crosses through zero voltage. This capability is provided to prevent premature burn out of the motors and motor drive circuits. FIG. 6 shows the zero crossing detector circuit in which the full wave bridge 63 provides a full wave rectified signal at output line 61c shown in FIG. 6, which signal is applied through buffer circuit 61d of microprocessor 51 which serves to delay advancement to the next program step, preventing completion of the present program step, until the zero crossing condition has been detected, whereupon microprocessor 51 is then free to advance to the next program step in this sub-routine. 
     Microprocessor 51 tests for switch closures at all sixty-four motor positions approximately 0.60 seconds after a switch closure condition is requested since the motor drive circuit has been selected. The motor which is energized causes the cam associated therewith to begin rotation to close the associated monitor switch 210 shown in FIG. 9. In the event that the motor switch 210 associated with the selected motor is not closed, a malfunction status signal is entered into the memory location assigned to the malfunctioning motor, and microprocessor 51 is caused to return to the Idle loop at which time, during phase portion 407 the vending machine displays are updated and, more specifically, the MAKE NEW SELECTION lamp is illuminated. 
     In the event that the motor switch 210 for the selected motor is closed, microprocessor 51 tests for a switch open condition at that position three seconds after turn on of the aforementioned motor. The associated motor is automatically turned off when cam 209 returns to its start position opening switch 210. In the event that there has been a malfunction, the motor will either be jammed in the on position or will occupy a position other than the normal start position when it is stopped whereupon switch 210 will be closed indicating a malfunction condition. Such a malfunction status code word will be inserted into the memory location assigned to the malfunctioning motor and microprocessor 51 will again return to the Idle loop 403 to update the vending machine display. 
     In the event that the switch being tested is open after three seconds, when the switch opens the motor is turned off during the next zero crossing. 
     If a switch is closed when testing for an open condition, an error bit is entered into the memory location in RAM 66 or 68 assigned to the malfunctioning motor and microprocessor 51 returns to the Idle loop 403 to update the vending machine displays. The malfunction status code position for the motor is examined when its selection switch 15 is depressed to ascertain the presence of a malfunction condition. In the event that a malfunction condition is present, microprocessor 51 returns to the Idle loop 403 as was described hereinabove updating the front panel displays and thereby preventing an operator from using a malfunctioning dispensing device. This technique allows the vending machine to remain in service even in the presence of a malfunctioning device (or devices) since the malfunctioning device (or devices) is automatically prevented from being operated when selected while all other dispensing devices are operable in their normal fashion. 
     In the event that the sub-routine 420 terminates without detecting the presence of any malfunctioning conditions, microprocessor 51 returns to the Idle loop 403 as represented by lines 420a, 419 and 417. 
     As was previously described, when the control switch 246 shown in FIG. 10, which switch is mounted within the interior of vending machine 10, is operated to the control position, the presence of this condition is tested during phase 412 of the Idle loop causing microprocessor 51 to enter into the control mode loop routine as represented by lines 412b and 412c. 
     At this time, microprocessor 51 tests the door switch to ascertain whether the door is open or closed. In the event that an operator has erroneously allowed the test control switch 412 to remain in the control position thinking that he had returned switch 246 to the run position and closed the vending machine door 11, the sub-routine initially tests the door switch. In the event that the door switch is closed, indicating that the vending machine door has been closed and locked, microprocessor 51 returns to the initialization sub-routine 402 as represented by lines 421a, 422 and 423. This technique prevents the vending machine from being accidentally or erroneously shut down due to an oversight on the part of maintenance personnel inadvertently forgetting to return switch 246 to the run position. 
     In the event that the door switch is open when tested at program step 421, microprocessor 51 advances to program step 424 to detect for the presence of a peripheral or off-line device by examining Data Bus line DBO as was previously described. In the event that a peripheral or off-line device is present, the program branches to the transmit data to peripheral sub-routine 411 which was previously described hereinabove. 
     In the event that no peripheral or off-line device 270 (FIG. 4) is present or in the event that data has been transferred to the peripheral unit and the off-line unit has been removed, microprocessor 51 advances to program step 425 at which time the control switch 246 is again tested. In the event that the control switch is now in the run position, microprocessor 51 returns to the initialization sub-routine 402 as represented by lines 425a, 422 and 423. 
     In the event that the control switch is in the control position, microprocessor 51 advances to program step 426 to determine if the test switch 243 (FIG. 10) has been selected. Selection of test switch 243 which is one of the switches in the control switch array coupled to buffers 141-148 (FIG. 3b), causes microprocessor 51 to step to the test door switch sub-routine 427 as indicated by arrow 426a. At this time, microprocessor 51 tests the door switch to determine if it is open or closed. If closed, this indicates that the test switch 243 was inadvertently turned on and thereafter the front door 11 of the vending machine 10 was closed. This program routine automatically returns the vending machine 10 to normal operation even though maintenance personnel have erroneously depressed the test switch 243. In the event that the door switch indicates that the door 11 of vending machine 10 is open, microprocessor 51 advances to the test control switch program step 428. In the event that the test control switch 246 is on, microprocessor 51 enters into the execute test mode subroutine 429 which monitors and counts the number of times the test switch 243 has been depressed and performs the following operations: 
     Initial operation of the test switch 243 causes microprocessor 51 to select decoder 130 as shown in FIG. 3b. Each lamp and digit indicator provided vending machine door 11 is illuminated for one second and then extinguished for one second and illuminated for one second and so forth. This flashing sequence will continue until the test switch is again depressed. 
     The next time that test switch 243 is depressed, microprocessor 51 advances to the next program step during which all 60 front selection panel switches are examined. In the event that any of the front panel control switches are closed due to a malfunction, the microprocessor sequentially displays the letter and number of any closed front panel switch. Thus, the programmable interface circuit 101 is caused to scan all of the front panel control switches in the array to ascertain switch closures. If any of the switches in the array are closed, LED device 123 will display the letter of the switch while display elements 122 and 121 display the number of the malfunctioning switch in the array shown in FIG. 10a. In the event that all of the front panel control switches are open, display elements 123 and 122 will display a value &#34;SO&#34; indicating that all selection switches are open. If more than one switch has malfunctioned the designation of the lowest number switch will be displayed first. Each of the selection switches may then be individually tested by depressing the selection switch. If the switch is operating normally, the display will then be changed to display the number of the selection switch so depressed. For example, if the fourth control switch is depressed, display elements 123, 122 and 121 will display &#34;A4&#34;. Any one or all of the switches may be tested during this mode to assure that they are closed when depressed. 
     Once maintenance personnel have been satisfied that all selection switches are operating properly, test switch 243 may again be depressed. When this subsequent depression of the test switch 243 is detected and counted in the monitor portion of the routine, the execute test mode portion of routine 429 will enter into the motor switch test at which time the programmable interface circuit 101 is caused to scan all of the motor switches 210 (FIG. 9) to look for any switch closures. In the event that all of the motor switches are open, display positions 123, 122 and 121 generate a display &#34;MOO&#34;. In the event that any of the motor switches have malfunctioned and are closed, display elements 123, 122 and 121 generate and display the number associated with the switch which has malfunctioned. The number displayed will be the same number assigned to the selection switch associated with malfunctioning motor. In the event that more than one motor has malfunctioned, the lowest numbered malfunctioning motor will be displayed until the condition is cleared. Clearing of the malfunctioning condition is performed by manually rotating the helix drive 38 (FIG. 2) associated with the malfunctioning motor 40 to determine whether the helix drive 38 and malfunctioning motor 40 and associated cam may be moved to its normal start position. In the event that the malfunction condition for that motor has been cleared, the display elements 123, 122 and 121 will then display the letter &#34;A&#34; followed by the designating number of the next lowest malfunctioning motor. Each successive malfunctioning motor will be displayed in a similar manner as soon as the next lower numbered malfunctioning motor condition has been cleared. 
     In the event that all motors are functioning properly, it is further possible to perform a test to be assured that the switches 210 are in proper operation by manually turning each helix drive 38 to be assured that its associated switch closes by the rotation of the cam associated therewith and then reopens when the cam associated with the motor is reset to the start position. As each helix drive 38 is rotated, its associated cam 208 (see FIG. 9) will cause closure of its associated motor switch 210 causing the display elements 123, 122 and 121 to display the number representing the motor presently under manual test. As few or as many of the helix drives 38 may be tested as is desired. 
     The test mode is advanced to the next sub-routine by again depressing test switch 243 causing microprocessor 51 to select the control switches by enabling the buffers 141-148 shown in FIG. 3b. The proper operation of each control switch is determined by depressing each control switch. A switch closure is coupled through the associated buffer and one line of the data bus DB0-DB7. Microprocessor 51 converts the enabled Data Bus line into display information presented by display elements 123, 122 and 121 wherein the letter &#34;C&#34; followed by the switch number is displayed when the associated switch is depressed, in the event that the switches are functioning properly. Any one, more than one, or all of the control switches may be tested at this time. 
     While exemplary test mode features which are viewed as highly advantageous have been described in conjunction with the test mode routines represented by the block 429, it will be apparent to those of ordinary skill in the art that additional test mode features may also be included and initiated within the test mode loop by further depressions of the test switch 243. Thus, each time the test switch 243 is operated, it is detected and counted in association with the program steps associated with block 429 and thereafter the test routine associated with that depression of the test switch 243 is executed. The test mode loop is initially entered, as indicated by arrow 426a, by a depression of the test switch 243 and after the test routine is executed, the number of times the test switch 243 has been depressed is tested to ascertain if the same equals the value N, in the manner indicated by step 430. The test is conducted by comparing the value of the count in the counter incremented each time the test switch is depressed in step 429 with the value N where N corresponds to the number of different test routines executable in association with block 429. When the number of times the test switch 243 has been depressed does not equal N, as indicated by the arrow 430a, the program loops back to the beginning of the test mode loop for further test sequences and will only exit this loop under these conditions if the door is closed or the test control switch is turned off in the manner indicated by steps 427 and 428. In this manner, further depressions of the test switch may be counted and further test routines executed. 
     When the test switch count corresponds to the value established for N, as indicated by the arrow 430b  microprocessor 51 exits the test mode loop and branches to the normal control mode which displays information in accordance with the operation of the function switches of the function switch array 230 shown in FIG. 10. Entering into the process control mode 431, microprocessor 51 controls the generation of a display in one or more of the display elements 114-123 shown in FIG. 10 based upon the selection of the function switches in switch array 230. For example, in order to obtain a display of the Cash History, button 231 is depressed whereupon a display comprised of elements 114-121 displays the Total Cash taken in by the machine since it was installed at the site by depressing pushbutton 231 and the forward function pushbutton 242, display elements 114-119 display the Total Cash taken in since the last collection. 
     Similarly actuating the inventory pushbutton 232 and selectively actuating the right function pushbutton 241 causes a display of the number of coins in the coin return tubes on an individual basis. More particularly, when the inventory pushbutton 232 is depressed, elements 123 and 122 display NR (Nickel Reserve) respectively while elements 114-116 display a 3 digit number corresponding to the number of nickels in the nickel reserve tube. If the reverse function pushbutton 241 is additionally depressed, elements 123 and 122 display dR (Dime Reserve) respectively while elements 114-116 display a 3 digit number corresponding to the number of dimes in the dime reserve tube. The next depression of the reverse function pushbutton 241 causes elements 123 and 122 to display QR (Quarter Reserve) while elements 114-116 display a 3 digit number corresponding to the number of quarters in the quarter reserve tube and a following depression of the reverse function pushbutton 241 will cause elements 123 and 124 to display DR (Dollar Reserve) while elements 114-116 display a 3 digit number corresponding to the number of dollar coins in the dollar reserve tube. If coins are added to any of the coin reserve tubes, the number of coins in the respective one of the tubes is displayed in the manner aforesaid, and the up pushbutton 238 is depressed to increment the display and appropriate registers in memory to include the amount added. Conversely, if coins are to be withdrawn, the number of coins in a given tube are displayed and thereafter the down pushbutton 239 is depressed. Under these conditions, a depression of the down pushbutton 239 decrements the display and memory and ejects coins from the tube selected. 
     Depressing pushbutton 233 causes display elements 114-116 to display a three digit number representative of the maximum cash capable of being accepted by vending machine 10, which value may be any value in $0.05 increments from $0.05 to $9.95. The cash value displayed may be altered by operating the &#34;up&#34; button 238 or &#34;down&#34; button 239 causing the Maximum Cash Value to change in $0.05 increments said increments being changed at the rate of every 0.70 seconds. In order to change the $0.05 increments at a faster rate in the positive direction, pushbuttons 238 and 240 are depressed causing the $0.05 increments to change at a rate of 0.20 seconds. By releasing the buttons 238 and 240, further incremental changes are terminated. 
     The Maximum Cash Value may be decreased in $0.05 increments by pressing pushbutton 239, changing the increments at the rate of 0.70 seconds. Depressing buttons 239 and 240 changes the increments in the negative direction at the rate of 0.2 seconds. The Maximum Cash Value is stored in memory 66, 68 and is used by microprocessor 51 to limit the receipt of cash by comparing the cash deposited against the stored maximum value. Depressing pushbutton 233 with the forward function pushbutton 242 will similarly cause the value of any remaining credits to be displayed. 
     By depressing the Vends Historical pushbutton 234, the number of vends per dispensing device are displayed in display elements 116-120. The identity of each dispensing device is represented by display elements 121-123, displaying the letter and number of the particular dispensing device. Similarly, a depression of the Vends Collection-To-Collection pushbutton 235 will cause elements 121-123 to display the letter and number representing the particular dispensing device and elements 116-120 to display the number of vends for that device since the last collection. In order to display the number of Historical Vends or Vends Collection-To-Collection for the next dispensing device, either pushbutton 242 or pushbutton 241 is depressed. By depressing pushbutton 242, the displays are advanced from one dispensing device to another in a &#34;forward&#34; direction. By depressing pushbutton 241, appropriate vend information per device is displayed wherein each dispensing device is selected for display in reverse order. 
     Vend history on either basis together with a display identifying the particular dispensing device is changed at a rate of 0.70 seconds. In the event that it is desired to cause the displays to be changed at a more rapid rate, either button 242 and button 240 or button 241 and button 240 are depressed in combination causing the display to change at the rate of 0.20 seconds. 
     In the event that any dispensing device has malfunctioned, the Vends-Collection-To-Collection display will further generate the display &#34;ERR&#34;  at display elements 121-119 to indicate that a malfunction has occurred at a given device. Display elements 123 and 122 represent the particular dispensing device and display elements 118-116 represent the number of vends of said dispensing device before the occurrence of the failure or malfunction. 
     Prices for all items are displayed and/or altered by depressing the price function SW 236. The current price for the first item will be displayed in display elements 114-116 and the item letter and number in display elements 123-121. To alter the price, the up 238, down 239 and fast 240 switches are utilized in a manner previously described. The item and its associated price display are advanced using the forward 242, reverse 241 and fast 240 switches as previously described. 
     Microprocessor 51 may be removed from the process control mode associated with block 431 when the Control Mode loop is completed whereupon microprocessor 51 branches to program step 421 in the manner indicated by arrow 431a and 412c. If the door switch for door 11 is closed, the program is caused to return to the initialization sub-routine 402 through lines 421a, 422 and 423. Microprocessor 51 then repeats the initialization routine clearing all registers, memories, etc. which are &#34;unprotected&#34; and again enters into the Idle loop 403. 
     Although the description has been set forth herein for a food or snack vending machine, it should be understood that the present invention may be used with equal success with all types of vending machines of various categories such as coffee vending machines and vending machines for vending other foodstuffs, the only difference between the latter vending machines and the vending machine 10 described herein being control over different functions. For example, whereas the present description sets forth the manner in which motors are energized to dispense a package, bag or box of foodstuffs, other types of motors or solenoid operated valve devices may be activated in a similar fashion to dispense powdered coffee; hot water; cream and sugar, for example, in the event that the microprocessor 51 of the present invention is being utilized in a coffee vending machine. Obvious selection changes may be made by selectively energizing or deenergizing those motor devices for dispensing sugar and cream in the event that it is desired to dispense black coffee, coffee with cream and no sugar, black coffee with extra sugar, and so forth. The motor control devices may be utilized to control motors for driving devices other than helix drives, the particular type of dispensing mechanism being a mere matter of choice depending upon the particular vending application. 
     A latitude of modification, change an substitution is intended in the foregoing disclosure and, in some instances, some features of the invention will be employed without a corresponding use of other features. Accordingly, it is appropriate that the appended claims be construed broadly in a manner consistent with the spirit and scope of the invention herein. ##SPC1## ##SPC2## ##SPC3## ##SPC4## ##SPC5## ##SPC6## ##SPC7##