bit mapped fonts for lcd displays supplier

4 different font categories are available : ANSI and Unicode international System fonts (installed on Windows) , the SVG fonts (for grayscale 256) based on vector graphics for a better anti-aliasing quality, and Freely Editable Font, for customized bitmap glyphs.

The Parameters in the green frame are separated for each DataStructure (1st Parameter of this list) These data are then present or not in the Descriptor blocs of the output data.

bit mapped fonts for lcd displays supplier

The “editable font” has been created. It is an Editable Font File (EFF) and an associated GIF file, which is the catalogue of char bitmaps. Both files are located in the Fonts folder.

bit mapped fonts for lcd displays supplier

The most versatile of our graphic displays can be programmed to display any font, in any size, and in any language. With graphic lcd displays you can easily add multi-language support to any application that uses a display. Allow your creativity to flourish with photos and graphics! We also have -1U displays which conveniently fit into any 1U application, allowing you add graphics to even a limited space.

Touch screen graphic lcd display graphic and text in any font, style, justification and language, all with the convenience of a touch screen. Beautiful, easy and fun to use interfaces, all without the need of a keypad. When the touch screen is pressed, you can have the X and Y location sent, or have the on-screen keyboard displayed and touched keys are sent through the serial port. A great looking user interface in no time at all

GTT series is a powerful and feature rich line of full colour UART Embedded  HMI TFT displays with an integrated restive and capacitive touch screens, crafted to become crisp, controllable canvases for creativity to creature fast and beautiful GUI interfaces for HMI systems. Utilizing an extended version of our widely used command library and industry standard communication protocols, the customizable GTT series boasts an intelligent displays that will quickly become the gorgeous face of your application.

Included features, 32MB of RAM, 2GB of onboard memory, piezo speaker and vibratory motor, provide tactile and audio feedback for a comfortable, confident user interaction. Additionally, the field updatable micro SD card stores font and bitmap files to liberate space and resources for use by the microcontroller, Arduino, or other HMI controller.

Pair the GTT series with our free software - GTT Designer - to design screens and user interactions quickly and easily. The software, which is compatible with all GTT displays, is a fully graphical, object-on, drag and drop suite with a library of built-in objects. Including: graphs, charts, buttons and animations. The interface was designed so no technical expertise is required to create a fully interactive user interface in minutes.

Intelligent Graphic OLED display designed to fit into 1U form factors. OLED technology improves readability by offering a high contrast display with wide viewing angles and requires significantly less power to operate than VFD or even LCD units. Engineered to quickly and easily add an elegant graphic HMI to any application. Multiple communication protocols such as Serial RS232, TTL, I2C, USB and RS422 communication models allow the GOK12832A-SM Graphic OLEDto be connected to a wide variety of host controllers. Our Graphic displays provides you with a cost-effective industrial HMI user interface solution for that great product/project you are developing. On board memory for Fonts and Bitmaps! This graphic display displays graphics and text in any font, style, justification and language, all with the convenience of a 25-key keypad matrix will allow fast development for any application.

bit mapped fonts for lcd displays supplier

To convert image from bitmap file (or other standard graphics file format) to data array select from File menu command "Load image". Next, select byte orientation (for example : vertical for KS0108, SED1520, SPLC0501C etc; horizontal for : T6963C, SED1335 etc). If in data array must be image size (width and height) select "Include size" checkbox and specify endianness of size (for example: Little endian for AVR; Big endian for ST7). Size are placed in two 16-bit variables at the begin of data array. Next, specify pixels/byte parameter. If display can support miscellaneous font size (displays with T6963C controller) image can be converted to array of bytes with specified amount of pixels in each byte. At last select from "File" menu command "Save output". Data array will be saved in specified file. Next, just include this file into project and use array name as parameter for function that displays bitmap on LCD. If you have trouble with use generating file, or program will generate wrong files please let me know.

bit mapped fonts for lcd displays supplier

I am using a 3.5: TFT LCD display with an Arduino Uno and the library from the manufacturer, the KeDei TFT library. The library came with a bitmap font table that is huge for the small amount of memory of an Arduino Uno so I"ve been looking for alternatives.

What I am running into is that there doesn"t seem to be a standard representation and some of the bitmap font tables I"ve found work fine and others display as strange doodles and marks or they display upside down or they display with letters flipped. After writing a simple application to display some of the characters, I finally realized that different bitmaps use different character orientations.

What are the rules or standards or expected representations for the bit data for bitmap fonts? Why do there seem to be several different text character orientations used with bitmap fonts?

Are these due to different target devices such as a Windows display driver or a Linux display driver versus a bare metal Arduino TFT LCD display driver?

What is the criteria used to determine a particular bitmap font representation as a series of unsigned char values? Are different types of raster devices such as a TFT LCD display and its controller have a different sequence of bits when drawing on the display surface by setting pixel colors?

Is there some method other than the approach I"m using to determine what transformation is needed? I currently plug the bitmap font table into a test program and print out a set of characters to see how it looks and then fine tune the transformation by testing with the Arduino and the TFT LCD screen.

I"m not fully conversant with the standard descriptions of bitmap fonts however I think of this as being an 8x16 bitmap font in which each character is 8 pixels wide and 16 pixels in height or an 8x16 bitmap font.

With the size of this table and the small amount of memory on the Arduino Uno, I started hunting for other bitmap fonts that would be legible while also taking up less memory. See reducing memory required for KeDei TFT library used with 3.5" TFT display with Arduino

What I hoped to find was something around a 6x6 bitmap font so that the definition of the bitmap font table would change from const unsigned char font_table_16_col[96][16] = { to const unsigned char font_table_16_col[96][6] = { which would free up a significant amount of memory. And experiments with cutting the table down by removing lower case letters showed that helped as well.

Finding alternative bitmap fonts has been more difficult than I thought, envisioning someone with the motherlode of bitmap fonts in a GitHub repository somewhere, easily found with a search or two.

What I have run into is that while I have found several different examples of bitmap fonts not all seem to be compatible with my specific 3.5" TFT LCD display.

For instance here are representations of four different bitmap fonts showing the bits of the bitmaps for two characters, the exclamation point (!) and the double quote ("). The 5x8 seems to be rotated to the clockwise by 90 degrees. The 8x8 and the 16x8 seem to be oriented correctly and the 13x8 seems to be upside down.

The bitmap font representations in the image above, showing the differences in text character orientation, were generated by a simple Windows GUI and displayed with a dash (-) representing a bit value of zero and an asterisk (*) representing a bit value of 1. This is the output of a Microsoft Windows GUI application whose WM_PAINT message handler which draws the displayed image is as follows:

I have modified the code that displays text using the bitmap fonts so that for a particular bit map the character drawing logic will perform several different kinds of translations between the bitmap font representation as a series of hexadecimal digits and how the series of digits are used to determine which pixels to turn on and which to turn off.

The code for drawing a single line of a character is as follows. The outline of this function is to provide to the LCD controller a rectangle specifying the region of the display to be modified followed by a series of two 8 bit writes to set the two byte RGB565 color value of each of the pixels in the region.

static bool TFTLCD::draw_glyph(unsigned short x0, unsigned short y0, TftColor fg_color, TftColor bg_color, unsigned char bitMap, unsigned char bmWidth, unsigned char flags)

and the source code that uses the above function for drawing a complete characters is as follows. This code uses the drawGlyph() function to draw a series of slices of the text character from top to bottom. When a bitmap transformation is done depends on the bitmap representation.

TFTLCD::draw_glyph(Font::now_x, Font::now_y, Font::font_color, Font::txt_backcolor, Font::font_table.table[char_i_x + char_m], Font::font_table.nCols, glyphFlags);

TFTLCD::draw_glyph(Font::now_x, Font::now_y, Font::font_color, Font::txt_backcolor, Font::font_table.table[char_i_x + char_m], Font::font_table.nCols, glyphFlags);

TFTLCD::draw_glyph(Font::now_x, Font::now_y, Font::font_color, Font::txt_backcolor, Font::font_table.table[char_i_x + char_m], Font::font_table.nCols, glyphFlags);

TFTLCD::draw_glyph(Font::now_x, Font::now_y, Font::font_color, Font::txt_backcolor, Font::font_table.table[char_i_x + char_m], Font::font_table.nCols, glyphFlags);

TFTLCD::draw_glyph(Font::now_x, Font::now_y, Font::font_color, Font::txt_backcolor, Font::font_table.table[char_i_x + char_m], Font::font_table.nCols, glyphFlags);

TFTLCD::draw_glyph(Font::now_x, Font::now_y, Font::font_color, Font::txt_backcolor, Font::font_table.table[char_i_x + char_m], Font::font_table.nCols, glyphFlags);

There are a number of font specifications including rasterized bitmap type fonts. These specifications do not necessarily describe the glyph bitmaps used in application such as the KeDei TFT library but rather provide a device independent description of a bitmap font format.

Oracle in Solarix X Window System Developer"s Guide, Chapter 4 Font Support at https://docs.oracle.com/cd/E19253-01/816-0279/6m6pd1cvk/index.html has a table listing several different bitmap font formats and has this to say:

bit mapped fonts for lcd displays supplier

Currently I am working on the deluxe version of the data logger. This version has a LCD screen and capacitive buttons to control the software. The Adafruit library for the display is quite large and almost uses the whole RAM, because it is a pixel oriented library. My own implementation is a text only library using 8×8 pixel characters. This simplify everything and reduces the RAM costs.

To convert the bitmap font into bytes, I wrote a small application for OS X (minimum version 10.10). It accepts a PNG image with the characters in it and converts it into bytes with the correct bits set.

First you select the mode on the left side of the application window. In this example the mode is set to “8×8 Fixed Top-Down”. Select the output format in the bottom left corner of the window.

Here an example 8×8 pixel font file for the converter. The font converter ignores any transparent and light values. So you can use them on a second layer as a grid for the font.

You can use this font template for Adobe Photoshop if you plan to deign a own font. The template uses a grid on one layer, so you can draw the font information on the second layer.

The software is written in Swift 2 and is using many of the new features of this language. The code is extensible and you can easily add own converter and output formats. If you created useful additions, please let me know.

bit mapped fonts for lcd displays supplier

Hey, great instructable. When I first saw the 2x16 display had 8 programmable characters, I was hoping large fonts or some graphics would be possible, but given the few characters, and only two lines to work with, I just assumed a big font would be impossible.

But wow, you did an amazing job making it look nice with minimal characters. Kudos. It was inspiring for me to contribute back some improvements. Very creative an minimalistic use of the corners and edge pieces.

While your letters looked great, in all honesty, your novice (but working!) C code truly made my eyeballs bleed. (Not a snob; I used to do mainframe C compliler language compliance testing, and have worked on Unix utilities for years; so I"m a bit fussy about my C. Code efficiency and compactness is key with me, and are right at home in the Arduino world :) Rather than complain, I"ll contribute :)

- I added Space, period to get character additions rolling. But I got bored, and did a first crack at all the missing characters 0x20-0x5F (mostly punctuation). (A crazy Friday night here, I tell ya, a bit bleary-eyed near the end.) Some of the chars are pretty rough, it"d be great if Michael and/or others could improve upon them.

I"m going to post it to a blog or instructable (with references back here), but wouldn"t mind feedback here (specificially from Michael on the glyphs) before finalizing it.

The C should be pretty straight forward; I use a few slightly advanced C pointer constructs, like "const char *(*p)[2]" (a variable v, which is a pointer, to an array of two pointers to const chars [an array of two string pointers]. There"s an art to understanding and creating C pointers like that; think reading from the inside outworks, working from right to left. Hard to explain, but good to understand to be able to do things efficiently.

(If you are tight for space, you could null out {"", ""} the definintions for characters that you aren"t using in your app. Even better, moving those arrays to PROGMEM (putting them in FLASH instead of prescious RAM) would save a lot, too. Unfortunately all the type-casting required to make PROGMEM arrays obfuscates the code too much. I erred on the side of readability.)

bit mapped fonts for lcd displays supplier

This website is using a security service to protect itself from online attacks. The action you just performed triggered the security solution. There are several actions that could trigger this block including submitting a certain word or phrase, a SQL command or malformed data.

bit mapped fonts for lcd displays supplier

Used to describe a clocked parallel TFT connection that uses 18 data lines (6 for Red, 6 for Green, 6 for Blue) as well as Hsync, Vsync, data enable, and pixel clock to transfer data to the TFT. Theoretical color depth is 218 or 262,144 colors.

Used to describe a clocked parallel TFT connection that uses 24 data lines (8 for Red, 8 for Green, 8 for Blue) as well as Hsync, Vsync data enable, and pixel clock to transfer data to the TFT. Theoretical color depth is 224or 16,777,216 colors.

6800 is a parallel interface that uses Read/Write signal and an Enable signal to control the data bus. Communications with a display are only enabled when the enable signal is pulled high. The level of the Read/Write signal then determines whether data will be read from the display or written to the display. If the Read/Write signal is high, data will be read from the display whereas if the Read/Write signal is low, data will be written to the display. Sometimes the Write will be shown as a “notted” signal. For instance, there may be a bar over the name, a preceding exclamation mark, slash, or dash. While this looks like negation notation, in this context it simply means the signal is active low.

In theory, a material that perfectly reflects all light energy at every visible wavelength. In practice, a solid white (with known spectral data) that is used as the “reference white” for all measurements of absolute reflectance.

A liquid crystal display structure in which switching transistors or diodes are attached to each pixel to control the on/off voltage. It produces a brighter and sharper display with a broader viewing angle than a passive matrix display. Also known as AMLCD (active matrix liquid crystal display). See TFT (thin film transistor).

A/D or ADC converters must be used to process, store, or transport virtually any analog signal in digital form. TV tuner cards, for example, use fast video analog-to-digital converters. On-chip 8, 10, 12, or 16 bit analog-to-digital converters are common in microcontrollers. Digital storage oscilloscopes need very fast analog-to-digital converters. ADC converters are integral to current music reproduction technology. They are needed to create the pulse-code modulation (PCM) data streams that go onto CDs and digital music files.

AF (Anti-fingerprint) is a surface coating agent containing a fluorinated polyether. Excellent water and oil repellency, as well as anti-fouling properties, are achieved without altering the appearance, by forming a thin monomolecular layer on a surface such as glass. Normally using wet coating, spray coating, dip coating and spin coating process.

This is often described as a matte coating as it is non-reflective to the user since it diffuses rather than reflects ambient light. It provides a method for manufacturers to avoid glare on the viewing surface from other light sources and has been used in the LCD monitor market for many years since the first TFT displays started to emerge. The matte coating is included as an outer polarizing later which has been coarsened by mechanical or chemical processes. This achieves a surface coating which is not smooth and so can diffuse ambient light rather than reflect it.

AMOLED is Active Matrix OLED. An Active Matrix OLED uses a TFT (Thin Film Transistor) transistor-per-pixel architecture. Using a transistor-per-pixel allows higher resolution displays to be made and avoids the problems associated with high duty cycle passive displays.

The ratio between the transmissive portion of the pixel and its surrounding electronics, also known as fill factor. Generally, this is a limiting factor for luminance, the higher the aperture ratio; the brighter the luminance.

An anti-reflection (AR) coating is a type of optical coating applied to the surface touch panel to reduce reflection. Many coatings consist of transparent thin film structures with alternating layers of contrasting refractive index. Layer thicknesses are chosen to produce destructive interference in the beams reflected from the interfaces, and constructive interference in the corresponding transmitted beams.This makes the structure’s performance change with wavelength and incident angle, so that color effects often appear at oblique angles. Good performance can often be achieved for a relatively wide range of frequencies: usually a choice of IR, visible, or UV is offered.

A backlight is used behind the LCD glass to allow the LCM to be read in dark conditions. The vast majority of backlights are now LED. Historically there were also EL (electroluminescent) and CCFL (Cold Cathode Fluorescent Light) backlights, but as LED efficiency has increased and cost has decreased, EL and CCFL backlights have all but disappeared.

A frame of plastic or metal, fitting over the LCD glass, to protect the edges of the glass and actas a pressure device, compressing the elastomer connector between the PCB and LCD glass.

BGA stands for Ball Grid Array. A type of high-density electronic component package for integrated circuits. The BGA has solder balls on its backside, which line up with corresponding contacts on the front side of the PCB.The part and PCB are heated until the solder balls melt.

Normally an LCD’s backlight is set to the brightness that will make a white pixel fully illuminated. CABC automatically dims the backlight to the lowest level required for the brightest pixel on the display.

Simultaneously, the controller lightens the image by the same amount. Overall, there is no visible change in the image, but less power is used in the backlight for any image that does not contain a pure white pixel. In this way, CABC reduces the overall average power needed by the display and backlight.

Character LCDs include a fixed CGROM to define the bulk of the characters they display. However, since the CGROM cannot be changed the designers also included the CGRAM — a small number of characters (typically 8) that can be redefined at run-time. These eight characters are usually mapped to characters 0DEC (0x00HEX) to 7DEC (0x07HEX). The CGRAM definitions can be used to make small animations, bar graphs, and similar small graphic or sprite images. This term very likely has its beginning in the granddaddy of all LCD controllers, the venerable Hitachi HD44780.

The CGROM stores the font that is displayed on a character LCD. When you tell a character LCD to display the letter ‘A’, it needs to know which dots to turn on so that we see an ‘A’. This information is stored in the CGROM. By definition, (since it is a ROM) the font that is stored in the CGROM cannot be changed. Be sure to check the datasheet of the character LCD module to make sure that it can display the characters you need. Typically, a CGROM for a character display module has 240 characters defined. The lower half of the CGROM maps to the normal ASCII characters. Since the early character display controllers were designed in Japan, many CGROM have Japanese characters in the upper 128 positions. There are also some CGROMs that have European or Cyrillic characters in these upper locations.

The WS0010 is a more modern character OLED controller, and the designers have included several CGROMs that can be chosen at run-time, so there is not the need to lock in a particular character set at design time. Since the CGROM is completely determined at the time of manufacture of the LCD controller, the designers also included a CGRAM, which allows the bitmaps of a few characters to be redefined at run-time. This term very likely has its beginning in the granddaddy of all LCD controllers, the venerable Hitachi HD44780).

A two-dimensional graph of the chromaticity coordinates, x as the abscissa and y as the ordinate, which shows the spectrum locus (chromaticity coordinates of monochromatic light, 380 nm-770 nm). It has many useful properties for comparing colors of both luminous and non-luminous materials.

Small electronic circuits that provide voltages to the individual sub-pixel through the source lines. These are generally 8-bit driver circuits that provide 256 unique values per sub-pixel.

Fig.3 Top and bottom of a WL-CSP package sitting on the face of a U.S. penny. In the top-right, a SOT23 package is shown for comparison. Penny diameter: 19.05 mm (0.75 in).

A capacitive touchscreen panel consists of an insulator such as glass, coated with a transparent conductor such as indium tin oxide (ITO). As the human body is also an electrical conductor, touching the surface of the screen results in a distortion of the screen’s electrostatic field,measurable as a change in capacitance. Different technologies may be used to determine the location of the touch. The location is then sent to the controller for processing.

The Display Data RAM holds the letters that get shown on the LCD of a character LCD module. For instance, the letter ‘A’ is stored in its ASCII equivalent 65DEC (0x41HEX) in the DDRAM.

So a 20×2 character LCD would have enough DDRAM to store 40 letters. The value in the DDRAM is used to find the correct bitmap in the CGROM (Character Generator ROM) or CGRAM (Character Generator RAM), it is this small bitmap that gets displayed on the LCD. This term very likely has its beginning in the granddaddy of all LCD controllers, the venerable Hitachi HD44780.

Translucent material used for light diffusion placed between backlight lighting sources and the back side of an LCD. This material will create a more uniform backlight for an LCD from several unique sources of light.

Apple has been granted a patent in 2011 that describes a method for fabricating thin DITO (Double-Sided Indium Tin Oxide) or SITO (Single-Sided Indium Tin Oxide) touch sensor panels with a thickness less than a minimum thickness tolerance of existing manufacturing equipment. In one embodiment, a sandwich of two thin glass sheets is formed such that the combined thickness of the glass sheets does not drop below the minimum thickness tolerance of existing manufacturing equipment when a thin film process is performed on the surfaces of the sandwich during fabrication. The sandwich may eventually be separated to form two thin SITO/DITO panels.

EMI is disturbance that affects an electrical circuit due to either electromagnetic induction or electromagnetic radiation emitted from an external source. The disturbance may interrupt, obstruct, or otherwise degrade or limit the effective performance of the circuit. These effects can range from a simple degradation of data to a total loss of data. The source may be any object, artificial or natural, that carries rapidly changing electrical currents.

ESD can create spectacular electric sparks (lightning, with the accompanying sound of thunder, is a large-scale ESD event), but also less dramatic forms which may be neither seen nor heard, yet still be large enough to cause damage to sensitive electronic devices. Electric sparks require a field strength above approximately 40 kV/cm in air, as notably occurs in lightning strikes. Other forms of ESD include corona discharge from sharp electrodes and brush discharge from blunt electrodes.

ESD can cause harmful effects of importance in industry, including explosions in gas, fuel vapor and coal dust, as well as failure of solid-state electronics components such as integrated circuits. These can suffer permanent damage when subjected to high voltages. Electronics manufacturers therefore establish electrostatic protective areas free of static, using measures to prevent charging, such as avoiding highly charging materials and measures to remove static such as grounding human workers, providing antistatic devices, and controlling humidity.

Refers to a graphic controller from Bridgetek/FTDI. EVE graphic controllers are easy to use and can control the display, touch, backlight, and audio features of an embedded system, with each appearing to the host MCU as a memory-mapped SPI device. The host MCU sends commands and data using SPI protocol. EVE modules accept high level commands, simplify writing images and fonts (included angled fonts) on TFTs. Fonts, buttons, and tables can each be easily sent to a TFT using a one-line command.

A silicone rubber strip made up of sequentially spaced conductive and non-conductive material. A thin conductive material used to make connections between an LCD and a PC board.

A dead short is created when excess DC voltage is applied to an LCD. Conductive particles from one piece of glass are transferred through the liquid crystal fluid and deposited on the conductive surface of the opposite piece of glass.

Typical FETs are nearly perfect switches. Next to no current flows when they are off, and they drop only minuscule voltage when they are on.  An N-FET (N-Type Field Effect Transistor) is typically used to switch a load to ground. The gate of a Logic Level N-FET can be driven by a 3.3v or 5v logic output (GPIO) of a microcontroller. A P-FET (P-Type Field Effect Transistor) is used to switch a load to a positive voltage, like 3.3v or 5v or more. Typically, you need to use a pull-up resistor and a small N-FET to create the gate drive for the P-FET.

The space left between the epoxy seals on one end of the LCD glass after assembly. This space,used to fill the glass with the liquid crystal fluid, is noted by a mound of epoxy.

An LCD construction technique where the cell geometry is optimized for maximum contrast and viewing angle. The geometry is different for each LCD fluid.

Also known asflex circuits, is a technology for assembling electronic circuits by mounting electronic devices on flexible plastic substrates, such as polyimide, PEEK or transparent conductive polyester film. Additionally, flex circuits can be screen printed silver circuits on polyester. Flexible electronic assemblies may be manufactured using identical components used for rigid printed circuit boards, allowing the board to conform to a desired shape, or to flex during its use. An alternative approach to flexible electronics suggests various etching techniques to thin down the traditional silicon substrate to few tens of micrometers to gain reasonable flexibility.

Capacitive touch can be classified into glass- or film-substrate produced. Glass-substrate capacitive touchscreens are found in Apple’s iPhone and Samsung’s Galaxy S phone. The iPhone uses a glass-glass (GG) structure that forms the X-axis sensing electrode on the upper surface of a glass substrate and Y-axis sensing electrode on the bottom. While Apple’s GG method and other mobile phone makers’ glass/film (GF/GFF) designs are becoming mainstream, attempts to develop products such as G1F, and OGS (One Glass Solution) with better transmittance and thinness will continue. OGS is cover window integrated touch, which does not require separate touch sensor.

The advantages of GFF are low capital cost, suitable for small quantity batch production, and light structure. GG is suitable for mass production and has better appearance properties, but it has high investment costs and is heavier than film-based panels.

Grayscale is a range of shades of gray without apparent color. The darkest possible shade is black, which is the total absence of transmitted or reflected light. The lightest possible shade is white, the total transmission or reflection of light at all visible wavelengths. Intermediate shades of gray are represented by equal brightness levels of the three primary colors (red, green and blue) for transmitted light, or equal amounts of the three primary pigments (cyan, magenta and yellow) for reflected light.

HDMI means it is able to send a lot of data, very quickly. However, HDMI isn’t an analog communication like VGA, S-Video or parallel like 24-bit or 18-bit RGB TFTs. HDMI is actually a high-speed serial interface using a fancy TMDS (Transition Minimized Differential Signaling) protocol.

Unlike SPI where 1-bit is transferred per clock cycle, HDMI transfers 10-bits per clock cycle which further increases the bandwidth. The clock can be anywhere from 25 MHz all the way to 340 MHz. This intense bandwidth allows HDMI standard to support up to an amazing 48 bits of color depth (that’s dense!).

For embedded applications, the typical color depth and resolution are well within HDMI’s capabilities. The important thing about HDMI embedded displays is that they give you an easy way to connect an embedded display to the now small and low-cost embedded computers, such as a Raspberry Pi, or an Intel Compute Stick.

The main attribute of a color that distinguishes it from other colors. For example, a color may have a green, yellow, or purple hue. Colors defined as having hue are known as chromatic colors. White, black, and grays possess no hue.

In a typical I2C application, there will be one master, and one or more slaves. The specification allows for multiple masters, but this is not common in the field. I2C has two signals: SCL: Serial Clock; SDA: Serial Data. The I2C transfer includes an address, so multiple slaves can exist on the same I2C bus.

Typically, both the master and slave are implemented in hardware. The I2C master can be implemented in software quite easily, but it can be rather difficult to meet the timing requirements of I2C in a software slave implementation. As micro controllers continue to get faster, writing an I2C software slave will become easier. The I2C standard is pretty well defined, so there is not a huge amount of variation in I2C as it is implemented on LCD, capacitive touch and OLED controllers.

An in-cell display is a touch display in which the touch sensors are embedded within the screen. Traditional capacitive touchscreens have multiple layers of glass, including a capacitive touchscreen layer. In-cell displays eliminate the need for these external touch panel. This results in a thinner and lighter display than a comparative display with an external touch panel, enabling a sleeker final product for devices using an in-cell display.

An LCD is composed of two pieces of glass with a thin layer of liquid crystals between the glass layers. When a voltage is applied to the glass, the orientation of the crystals can be changed. This change in the crystal’s orientation (called polarization) will make either a dark or a light area, creating a character or image on the display.

A Light-Emitting Diode (LED) is a two-lead semiconductor light source which emits light when activated. When a suitable voltage is applied to the leads, electrons are able to recombine with electron holes within the device, releasing energy in the form of photons. This effect is called electroluminescence, and the color of the light (corresponding to the energy of the photon) is determined by the energy band gap of the semiconductor.

By driving LED light sources with a regulated constant-current power supply the light output variation and lifetime issues resulting from voltage variation and voltage changes can be eliminated. Therefore, constant current drivers are generally recommended for powering LED light sources.

A twisted nematic LCD design where the backlight is blocked when pixels are in the unselected state. Therefore, when no voltage is applied, the screen is black.

A twisted nematic LCD design where light is transmitted when pixels are in the unselected state. Therefore, when no voltage is applied, the screen is white.

Optical bonding improves the optical performance of the display. It eliminates the air gap between the cover glass and the LCD, and usually includes an anti-reflective (A/R) coating (as well as anti-smudge and anti-glare treatments on the cover glass). Optical bonding improves the contrast ratio by reducing the amount of reflected light, thus improving the viewability of the LCD screen. This is especially important in outdoor.

Besides the optical advantages, bonding a sheet of glass to the LCD also improves the durability of the display. It can resist scratches, condensation, and has an improved range of operating temperatures. As touchscreen devices become ubiquitous in consumer markets, this increased ruggedness becomes even more important. Also, by reducing the light loss due to reflection, the battery life of the device can be extended as the device does not need as much backlight to power the display.

On-Cell Touch (OCT) technology permits the Projected Capacitive (PCAP) touch sensor layer to be built into the LCD structure. With this integrated structure, the touch functionality is embedded within the display itself rather than a separate touch screen component on top of the display. The reduction in the number of layers also reduces parallax errors providing a superior touch interface. Fewer layers also means backlight intensity can be reduced while providing the same brightness level. The usual multitouch display has an 88% transparency while an OCT display is 93%. This helps reduce lighting power requirements and extends battery life.

For optical bonding optically clear adhesive is applied over the entire surface between the display assembly and touch panel. This bonding method removes all air and air bubbles from the viewing area providing a more rugged and optically attractive solution. Removal of ‘air gap’ between the module and touch panel eliminates surface-to-surface reflections which degrade contrast and ultimately viewing angles, especially significant in sunlight conditions.

PCN stands for Product Change Notification. A product change notification (PCN) is a document issued by a manufacturer to inform customers about a change to a mass-produced product or its manufacturing process.

Passive Matrix refers to the arrangement of the driving electrodes in the OLED display. In PMOLED displays, there is an array of horizontal conductors and an array of vertical conductors, with the OLED material between them. A pixel is formed where the vertical and horizontal conductors intersect.

A method of storing a full-color pixel in a single 16-bit word of memory.  For each pixel, the red and blue channels can take on 32 levels, encoded as 5 bits each. The green channel can take on any of 64 levels, encoded as 6 bits. Theoretical color depth is 216 or 65,536 colors.

In this variant, if the top sheet has electrodes for the vertical direction (Y), the bottom sheet will have electrodes for the horizontal direction (X). The top and bottom sheets measure each others’ voltages and based on that sensors can determine the location of the touch point.

A technique where the alignment layer (Polyimide) on the LCD substrate is rubbed in one or more directions. This process aligns the liquid crystal molecules parallel to the buffing direction.

Surface-mount technology (SMT) is a method for producing electronic circuits in which the components are mounted or placed directly onto the surface of PCBs. An electronic device so made is called a surface-mount device (SMD). In the industry it has largely replaced the through-hole technology construction method of fitting components with wire leads into holes in the circuit board. Both technologies can be used on the same board for components not suited to surface mounting such as large transformers and heat-sink power semiconductors.

SPI is a simple serial bus that is often used by LCD or OLED controllers. SPI as implemented for OLED and LCD controllers typically uses a “3-wire SPI” or “4-wire SPI” scheme. SPI was originally championed by Motorola (now Freescale). In its original “pure” form SPI uses four signals:

TFTs are also known as “Active Matrix TFT LCD modules” and have an array of these thin film transistors fabricated on the glass that makes the LCD. By using this active transistor-per-pixel architecture, the contrast of each pixel is good, allowing bright full-color, full motion images to be displayed.

USB is an industry standard developed in the mid-1990s that defines the cables, connectors and communications protocols used in a bus for connection, communication, and power supply between computers and electronic devices.

VA is also called VTN, PMVA, GDV, etc. it is a type of LCD in which the liquid crystals naturally align vertically to the glass substrates. When no voltage is applied, the liquid crystals remain perpendicular to the substrate, creating a black display between crossed polarizers. When voltage is applied, the liquid crystals shift to a tilted position, allowing light to pass through and create a gray-scale display depending on the amount of tilt generated by the electric field. VA displays have a deeper-black background, a higher contrast ratio, a wider viewing angle, and better image quality at extreme temperatures over traditional twisted-nematic displays.

Short for Zero Insertion Force connector. This kind of connector is intended to be used with FPC (Flexible Printed Circuit) or FFC (Flat Flexible Cable). Typically, a ZIF connector has a movable element that can be opened or closed. In the open position FPC/FFC can be easily slid in, then the connector is closed to make firm contact.

bit mapped fonts for lcd displays supplier

Marlin deals with a variety of different displays and needs to display a lot of different languages in different scripts on them, within their capabilities. The system described here solves some of the related problems that need to be overcome with in a limited environment.

HD44780 (and similar) with Western charset A02 HD44780 (Page 18). These are rare, but fairly useful for European languages. Also a limited number of Cyrillic symbols is available.

On all these displays you can define 8 custom symbols to display at once. In Marlin these characters are used on the Boot Screen, and on the Info Screen for the Bed Temp, Degree symbol, Thermometer, “FR” (feed-rate), Clock, and Progress Bar. On the SD Card listing screens some of these characters are re-used again for Up-level, Folder, and Refresh.

Graphical displays provide complete freedom to display whatever we want, so long as we provide a program for it. Currently we deal with 128x64 Pixel Displays and divide this area into ~5 Lines with ~22 columns. So we need monospace fonts with a bounding box of about 6x10. Until now we’ve been using a custom Marlin font similar to ISO10646-1 but with special symbols at the end, which made ‘ü’ and ‘ä’ inaccessible at 6x10 size.

All these languages (except English) normally use extended symbols not contained in US-ASCII. Even the English translation uses some Symbols not in US-ASCII (e.g., ‘\002’ for Thermometer, STR_h3 for ‘³’). In the code itself symbols may be used without taking into account the display they’re written on.

The upshot of all this is that on Western displays you’ll see a ‘~’ while on Cyrillic an “arrow coming from top - pointing to left” (which is quite the opposite of what the programmer wanted). The Germans want to use “ÄäÖöÜüß”, the Finnish at least “äö”. Other European languages want to see their accents too. For other scripts like Cyrillic, Japanese, Greek, Hebrew, … you have to find totally different symbol sets.

The Japanese translator dealt with two scripts, introducing a special font for Graphical Displays and making use of the Japanese extended character displays. Thus he ended up with two pretty unreadable language.h files full of ‘\xxx’ definitions. Other languages either tried to avoid words that included special symbols or just used the basic symbols without the accents, dots… whatever.

Make output functions that count the number of chars written and switch the font to Marlin symbols and back when needed. (ultralcd_impl_DOGM.h) (ultralcd_impl_HD44780.h)

Make three fonts to simulate the HD44780 charsets on dogm-displays. With these fonts the translator can check how the translation will look on character-based displays.

Make ISO fonts for Cyrillic and Katakana - because they don’t need a mapping table, are faster to deal with, and have a better charset than the HD44780 fonts. (Less compromise!)

Split ‘dogm_font_data_Marlin.h’ into separate fonts and delete. (+dogm_font_data_6x9_marlin.h, +dogm_font_data_Marlin_symbols.h, -dogm_font_data_Marlin.h)

If you make extensive use, your file will look like language_kana.h and your language file will only work on one of the displays (in this case DISPLAY_CHARSET_HD44780 == JAPANESE).

If you want to make use of more than a few symbols outside standard ASCII or want to improve the portability to more types of displays, use UTF-8 input. Which means defining another mapper.

UTF-8 input is used for mappers other than MAPPER_NON. With a mapper, instead of “\xe1” (JAPANESE) or STR_ae you can simply type “ä”. The “ä” expands to “\xc3\xa4”. “Я” expands to “\xd0\xaf” … “ホ” expands to “\xe3\x83\x9b” … etc.

The mapper_tables do their best to find a similar symbol in the HD44780fonts (for example, replacing small letters with the matching capital letters). But they may fail to find a match and will output a ‘?’. There are combinations of language and display which simply have no corresponding symbols - like Cyrillic on a Japanese display or _vice-versa. In those cases the compiler will throw an error.

In short: Choose a mapper that works with the symbols you want to use. Use only symbols matching the mapper. On Full Graphic Displays all symbols should be fine. Using the graphical display, you can test for bad substitutions or question-marks that would appear on character displays by defining SIMULATE_ROMFONT and trying the different variants.

If you get a lot of question marks on the Hitachi-based displays with your new translation, maybe creating an additional language file with the format language_xx_utf8.h is the way to go.

Mapper Notes As mentioned, MAPPER_NON is the fastest and least memory-hungry variant. While MAPPER_NON language files are ugly and tedious to maintain for non-Roman languages, for Roman languages it is trivial to make a MAPPER_NON file without any accents.

If there’s no existing mapper for your language then things get a bit more complex. With the Hitachi-based displays you can’t make something useful without a matching charset. For graphical display… let’s take the example of Greek: Find a matching charset. (Greek and Coptic)

Provide a bitmap font containing the symbols in the right size (5x9 to 6x10 recommended). Normal ASCII characters should occupy 1 to 127, and the upper 128 places should be populated with your special characters.

If you discover enough useful symbols in one of the HD44780 fonts you can provide a mapping table. For example WESTERN contains ‘alpha’, ‘beta’, ‘pi’, ‘Sigma’, ‘omega’ ‘My’ - which is not enough to make USEFUL table - I think.

The length of strings (for menu titles, edit labels, etc.) is limited. “17 characters” was a crude rule of thumb. Obviously 17 is too long for a 16x2 display. So, language files are free to check the LCD width and provide shorter strings in the following manner:

On 16x2 displays, strings suited to a 20x4 display will be chopped to fit. So if shorter string isn’t provided, at least make similar strings different early in the string. (‘Someverylongoptionname x’ -> ‘x Somverylongoptionname’)

All translatable strings are first declared in language_en.h and then language maintainers follow up by providing translations in their own languages. Marlin includes a script named findMissingTranslations.sh which list the strings needing translation for one or more languages.

Strings in language.h are for serial output, so don’t require any translation. Core error strings must always be in English to satisfy host protocols.

To find out which character set your hardware uses, set #define LCD_LANGUAGE test and compile Marlin. In the menu you’ll see two lines from the upper half of the character set: JAPANESE displays “バパヒビピフブプヘベペホボポマミ”

LCD_LANGUAGE: The LCD language and encoding to compile in. For example, pt-br_utf8 specifies Portuguese (Brazil) in UTF-8 format with a mapper. For a faster, lighter, but non-accented translation you might choose pt-br instead.

MAPPER_C2C3: This is a mapper set by some language files, and indicates that Marlin should use the mapper for Unicode pages C2 and C3. In this mapper, strings are converted from raw UTF-8 input to single ASCII characters from 0-127, and indexes from 0-127 within the combined two 64-glyph pages C2 and C3.

SIMULATE_ROMFONT: Languages can opt to use the HD44780 ROM font special characters on graphical display. This method can be used for accented Western, Katakana, and Cyrillic if they don’t supply their own fonts, or just for testing character-based mappers on a graphical display.

DISPLAY_CHARSET_ISO10646_1: To support a graphical display, a language file must specify either SIMULATE_ROMFONT or a display character set. This specific option selects the Western font for use on graphical display. Others include ISO10646_5, ISO10646_KANA, ISO10646_GREEK, ISO10646_CN, ISO10646_TR, and ISO10646_PL. If no character set is specified, Marlin assumes ISO10646_1.

MAPPER_ONE_TO_ONE: Most character sets on graphical displays (including SIMULATE_ROMFONT) map the character index directly to its position in the upper half of the font. This is possible for character sets that have only 2 contiguous pages of Unicode containing all the special characters. Other mappers use logic or a lookup table to locate the glyph.

bit mapped fonts for lcd displays supplier

The 4.3inch e-Paper UART Module adopts a serial port, with a resolution of 800 × 600, built-in Chinese and English fonts, and low power consumption. If you don"t want to learn the complex details of the bottom of the e-paper screen and don"t pay attention to the specific display algorithms of graphics, text and pictures, then this product is born for you. Just one serial port can realize all functions, free you from complicated details and release your creativity.

When using an external TF card, you should format the TF card into a FAT32 system, and place the font libraries provided by Waveshare and the images you want to display to the external TF card before using it.

When using the internal NandFlash, you should import the font libraries and image files you want to display to the internal NandFlash in advance. For more detailed information, please refer to the Section 2.2.

The system built-in 32, 48 and 64 dots English font is always available without using the TF card or the NandFlash; however, for the 32, 48 and 64 dots Chinese font, you should store the relative library file to the TF card or the NandFlash before using it.

The system supports 1-bit and 2-bit bitmap image display. For other image formats, you should convert these images into the specified format with the tool on the Demos so as to display them.

Click File -> Save As, and select the option Windows Bitmap file(*.bmp)"in theSave as Type list, and then enter a correct file name and save the image. Please take note to the format of the file name.

We have designed the software for E-Paper to work with PC. With this software, users can easily operate different basic displays on the E-Paper via a PC. In additional, a USB-to-serial module should be applied to build up the communication between the e-Paper and the PC. In here, we will take the serial module CP2102 USB UART Board(mini) as an example to illustrate the application. For more detailed information about this serial module, please refer to Appendix.

Prepare a micro SD card (here we take an 8G micro SD card as an example), and format the micro SD card into a FAT32 system with 4096 bytes allocation unit size. Copy the font libraries and image files provided by Waveshare into the micro SD card. When finished, insert the micro SD card into the E-Paper.

Set the drawing color, the option Foreground color for the text is set to Black and the option Background color for the background is set to White by default;

[2] For drawing point(s) or line(s), or displaying text(s) or image(s), you should click the button Refresh to update the display on the E-Paper screen whenever you finish each drawing.

Here, we take Arduino UNO development board as an example to illustrate the application. Connect the development board to the e-Paper with a serial cable as shown in the follow table. For more information about this development board, please refer to the Appendix.

Here, we take NUCLEO-F103RBdevelopment board as an example to illustrate the application. Connect the development board to the e-Paper with a serial cable as shown in the follow table. For more information about this development board, please refer to the Appendix.

Here, we take Open103Z development board as an example to illustrate the application. Connect the development board to the e-Paper with a serial cable as shown in the follow table. For more information about this development board, please refer to the Appendix.

The data of the module is transmitted in the Network byte sequence, which means higher byte is sent at first, then lower byte following. For example, a parameter, 0x1234, is transmitted in two parts: 0x12 is sent at first, and then 0x34 following.

After powered up, the default Baud rate is 115200. This command is used to set the Baud rate. You may need to wait 100ms for the module to return the result after sending this command, since the host may take a period of time to change its Baud rate.

Set the foreground color and the background color on drawing, in which the foreground color can be used to display the basic drawings and text, while the background color is used to clear the screen.

Before executing this command, please make sure the bitmap file you want to display is stored in the storage area (either TF card or internal NandFlash).

The name of the bitmap file should be in uppercase English character(s). And the string length of the bitmap name should be less than 11 characters, in which the ending "0" is included. For example, PIC7.BMP and PIC789.BMP are correct bitmap names, while PIC7890.BMP is a wrong bitmap namem.

250 is an undefined error. It may be that the name of the picture entered is wrong when displaying the picture, pay attention to the capitalization, and if the TF card is pulled out, when the TF card is connected for the next time, it can be used normally after powering on again.

2. Please use independent power supply, do not use serial port module to supply power. Because the current required to refresh the screen is large, when using the serial port module for power supply, it may cause serial port problems or SD card problems. In this case, using the SD card will report an error: Error: 1, Error: 3, or Error: 4.

bit mapped fonts for lcd displays supplier

On most boards (without built in displays) you can create your own instance(s) of the Graphics class using a module that is designed to interface to a display (see "Graphics Drivers" below), or you can manually create you own using one of the Graphics.createXYZ functions.

If you use a single-bit image, the foreground and background colors will be used instead of the image"s colours. Otherwise the color data will be copied directly so it"s an idea to use a bitmap of the same bit depth as your display.

On Linux, you can type base64 --wrap=0 myfilename.raw to convert the raw file to base64 - or on other platforms you can use the File Converter webpage.

bit mapped fonts for lcd displays supplier

In this project, I will show you how to interface a 128X64 Graphical LCD with Arduino UNO. This particular LCD Module is based ST7920 LCD Controller. So, we will first see a little bit about the Graphical LCD Module and its LCD Controller ST7920.

In the previous Arduino project, I have interfaced a Nokia 5110 LCD Module with Arduino. It is also a graphical LCD which can display some basic bitmap images and graphics. But the issue with Nokia 5110 LCD Module is its resolution.

At 84 x 48 pixels, the Nokia 5110 LCD can be used for implementing a menu-based user interface. Due to its small size, the resulting menu will be limited to 3 or 4 items per page.

If we want a bigger display with more real estate to work with, then the obvious choice is to go for the bigger and better 128×64 Graphical LCD Module.

As a demonstration, after making all the hardware connections, I will display a bitmap image on the Graphical LCD Module. If you are interested in implementing a simple 16×2 Alpha-Numeric LCD with Arduino, then check out this tutorial.

At first glance, the 128×64 Graphical LCD Module seems like a bigger brother to the famous 16×2 LCD or 20×4 LCD Modules, with their similar construction and almost similar pin layout.

But there is a significant difference between those two. 16×2 or 20×4 LCDs are essentially character displays. They can only display alpha-numeric characters and some simple custom characters that are confined to a 5×8 matrix.

By using different combinations of pixels, we can basically display characters of various sizes. But the magic doesn’t end there. You can display images and graphics (small animations) as well. In a 128×64 LCD Module, there are 64 rows and 128 columns.

There are several versions of the Graphical LCD in the market. Even though the usage, application and implementations are almost identical, the main difference lies in the internal LCD Controller used to drive the dot matrix display.

Some of the commonly used LCD Controllers are KS0108, SSD1306, ST7920, SH1106, SSD1322, etc. The pin out of the final LCD Module might vary depending on the LCD Controller used. So, please verify the LCD Controller as well as the pin out before making a purchase.

The Graphical LCD Module I purchased consists of ST7920 Controller. It is manufactured by Sitronix and supports three types of bus interfaces i.e., 8-bit mode, 4-bit mode and Serial interface.

If you have used 16×2 LCD Display earlier, then you might be familiar with both 4-bit as well as 8-bit parallel interfaces. The serial interface is something new and we will explore this option in this project.

As I already mentioned, double-check with the manufacturer about the pinout of the Graphical LCD Module. The following table describes the pinout of the 128×64 LCD Module that I have.

Now that we have seen a little bit about the Graphical LCD and its controller ST7920, let us now proceed with interfacing the 128×64 Graphical LCD with Arduino. I will implement a simple circuit to demonstrate how easy it is to interface the LCD and Arduino using very few external components.

In Serial Mode, we need only three pins for the actual data transfer. They are RS, RW and E. RS acts as Chip Select Pin in Serial Communication. RW and E acts as Serial Data IN and Serial CLK pins respectively.

So, connect the RS, RW and E of the LCD to Digital IO pins 10, 11 and 13 of Arduino UNO. Also, in order to select the Serial Interface Mode, the PCB pin must be connected to GND.

The remaining connections are similar to a traditional 16×2 LCD. VCC and GND are connected to 5V and ground of the power supply. VO is connected to the wiper of a 10KΩ POT while the other two terminals of the POT are connected to 5V and GND respectively.

Instead of displaying characters of different fonts (yes, there are libraries using which you can implement various fonts), I will straight away display an image in the form of bitmap. Before writing the code, you need to convert the bitmap image into byte arrays.

I have used the above “The Office” logo. Remember that the resolution of the 128×64 LCD is, well 128×64 pixels. So, the maximum image size should be 128×64. So, using Microsoft Paint, I have brought down the resolution of the above image to 128×64 pixels and also saved it as Monochrome Bitmap Image.

The next step is to convert this bitmap image into bytes array. I have tried several converter tools (both online and offline) but none of them were able to generate a code that is compatible with my setup.

So, I have used the “GIMP” software. You can download GIMP from this link and install it. After installing, you can open the 128×64 Bitmap image in the GIMP software and export it as “X Bitmap Image”.

A .xbm file will be generated. It contains the HEX code for the selected 128×64 Bitmap Image. Open it with any text editor (like Notepad++) and make the following changes. The Array should be a static const unsigned char and append “PROGMEM” after the array name.

Before writing the code, you need to download a special library called “U8g2”. In the Arduino IDE, go to Tools -> Manage Libraries… Search for “u8g2” and install the latest version. It is a complex library and its github page consists of all the necessary documentation.

A simple project for interfacing the 128×64 Graphical LCD with Arduino is implemented here. Instead of displaying plain characters, I have displayed a bitmap image on the LCD to show its capability.

bit mapped fonts for lcd displays supplier

In this article, you will learn how to use TFT LCDs by Arduino boards. From basic commands to professional designs and technics are all explained here.

There are several components to achieve this. LEDs,  7-segments, Character and Graphic displays, and full-color TFT LCDs. The right component for your projects depends on the amount of data to be displayed, type of user interaction, and processor capacity.

TFT LCD is a variant of a liquid-crystal display (LCD) that uses thin-film-transistor (TFT) technology to improve image qualities such as addressability and contrast. A TFT LCD is an active matrix LCD, in contrast to passive matrix LCDs or simple, direct-driven LCDs with a few segments.

In Arduino-based projects, the processor frequency is low. So it is not possible to display complex, high definition images and high-speed motions. Therefore, full-color TFT LCDs can only be used to display simple data and commands.

There are several components to achieve this. LEDs,  7-segments, Character and Graphic displays, and full-color TFT LCDs. The right component for your projects depends on the amount of data to be displayed, type of user interaction, and processor capacity.

TFT LCD is a variant of a liquid-crystal display (LCD) that uses thin-film-transistor (TFT) technology to improve image qualities such as addressability and contrast. A TFT LCD is an active matrix LCD, in contrast to passive matrix LCDs or simple, direct-driven LCDs with a few segments.

In Arduino-based projects, the processor frequency is low. So it is not possible to display complex, high definition images and high-speed motions. Therefore, full-color TFT LCDs can only be used to display simple data and commands.

Size of displays affects your project parameters. Bigger Display is not always better. if you want to display high-resolution images and signs, you should choose a big size display with higher resolution. But it decreases the speed of your processing, needs more space and also needs more current to run.

In electronics/computer hardware a display driver is usually a semiconductor integrated circuit (but may alternatively comprise a state machine made of discrete logic and other