Introduction
This document would be useful for projects which require simple character
displays, more flexible than 7-segment LEDs, and less complicated than
LCD screens or video interfacing. The Alphanumeric dispay is a 14-segment
LED which can display any character of the alphabet, along with numerous
other characters and symbols.
Hardware of Choice
We used a part manufactured by LITEON (click here for a .PDF datasheet). This particular model was ordered through DIGIKEY ($3 to $6) but LITEON will send samples if you request them early enough. What this component provides is a dual display, although single displays are availiable. The dispalays are arranged as follows...
As noted, the 14 segments can display any character of the alphabet,
as well as any number. Included are two decimal points.
Wiring Issue
The hardware comes with only 18-pins, when there are 30 segments altogether
(2*14 + 2*decimal-pt). How does this work? Well, there are two "select"
pins on the chip. These pins decide which display (left or right) to send
the character to. This cuts down the number of wires required to display
two characters, but will make the VHDL code for interfacing a bit more
complicated.
VHDL Code for Interfacing
In order to display two numbers at the same time, your VHDL will have to toggle the select signals, and the display signals based on a clock. Here is a general sample of how to do that.
*********************************************************
process begin -- Set the select signals based on the clock. left_select <= clock; right_select <= not left_select; -- Output a character based on the select signals if left_select = '1' then DIGIT <= left_letter; else DIGIT <= right_letter; end if; end process;*********************************************************
The select signals will be outputted to the select pins of the component, while the DIGIT signals will be outputted to the appropriate segment pins (see the datasheet for the appropriate segment pins).
Note that the system clock runs too fast for the component to switch
back and forth at correct times. We used a clock divider to produce a clock
pulse that was 512-times the period of the system clock and that seemed
to work just fine.
Common Character Displays
The following characters may be commonly displayed.
*********************************************************
This is based on the following pin assignments and sequence of pins. A ------- F|\ |G /|B |P\ | /H| | \|/ | N-- --J | /|\ | E|M/ | \K|C |/ |L \| ------- D and character <= "ABCDEFGHJKLMNP"; letter_a <= "11101100100010"; letter_b <= "00111100000000"; letter_c <= "10011100100010"; letter_d <= "01111000100010"; letter_e <= "10011100100010"; letter_f <= "10001100100010"; letter_g <= "10111100100000"; letter_h <= "01101100100010"; letter_i <= "10010010001000"; letter_j <= "01110000000000"; letter_k <= "00001101010010"; letter_l <= "00011100000000"; letter_m <= "01101101000001"; letter_n <= "01101100010001"; letter_o <= "11111100000000"; letter_p <= "11001100100010"; letter_q <= "11111100010000"; letter_r <= "11001100110010"; letter_s <= "10110100100010"; letter_t <= "10000010001000"; letter_u <= "01111100000000"; letter_v <= "00001101000100"; letter_w <= "01101100010100"; letter_x <= "00000001010101"; letter_y <= "00000001001001"; letter_z <= "10010001000100"; number_0 <= "11111100010001"; number_1 <= "01100000000000"; number_2 <= "11011000100010"; number_3 <= "11110000100010"; number_4 <= "01100100100010"; number_5 <= "10110100100010"; number_6 <= "10111100100010"; number_7 <= "11100000000000"; number_8 <= "11111100100010"; number_9 <= "11110100100010";*********************************************************