EasyManua.ls Logo

ST ST7 - Page 270

ST ST7
317 pages
Print Icon
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
270/317
9 - A Carrier-current System for domestIc Remote Control
The interrupts are triggered by an overflow of the free-running counter. At each interrupt, the
PA7 bit is toggled, so that each digit is lit every other interrupt, that is, there are 32 refresh cy-
cles per second.
Since the values to be displayed range from zero to 15, driving of the display could be per-
formed easily using the following arrangement:
The various patterns that make up the display are stored in a constant two-dimensional array,
with 15 rows of 2 elements. Each couple corresponds to a value to be displayed; each element
of a couple is one of the two values that must be written to PA, alternately, so that the display
is both chopped and updated in such a way that it looks like a steady two digit display.
The constant array is defined as follows:
const Byte SevenSegment[16][2] = {
{0xff, 0x84}, {0xff, 0xed}, {0xff, 0xa2}, {0xff, 0xa8}, /*
0-3 */
{0xff, 0xc9}, {0xff, 0x98}, {0xff, 0x90}, {0xff, 0xad}, /*
4-7 */
{0xff, 0x80}, {0xff, 0x88}, {0x6d, 0x84}, {0x6d, 0xed}, /*
8-11 */
{0x6d, 0xa2}, {0x6d, 0xa8}, {0x6d, 0xc9}, {0x6d, 0x98} /*
12-15 */
};
This constant table is located in ROM (or program segment) by means of the const modifier,
and the
-Cc compiler option added in the Compoptions item of the environment file. The same
way, the
Codes[] table mentioned earlier is defined as follows:
const Byte Codes[] = {6, 7, 4, 5, 8, 9, 10, 11, 14, 15, 12, 13, 0, 1, 2, 3,
16, 24, 20, 28, 18, 26, 22, 30, 17, 25, 21, 19,
27, 23, 31} ;
Updating the display is done easily using the following statement, where Delay contains the
number to display, and
Second is decremented at each interrupt:
PADR = SevenSegment[Delay][Second & 1] ; /* Light one of both digits
at a time. */
When the delay reaches zero, the display is switched off by merely writing 0xff to it. This also
causes the display to blink at the rate of once per second:

Table of Contents

Related product manuals