7-сегментный индикатор оптимизация отображения функций

B

BIDOU

Guest
Здравствуйте,
.

Я сделал эту функцию, может быть, быстрее, но я не знаю, если это возможно, чтобы оптимизировать его.Потому что это занимает много данных, программа памяти ...(например, 200 байт).

Это для PIC16Fxxx ...

Я думаю, это основная форма для этой функции.Использование этой функции, как vAffichage ('7 ');Код:# включить <pic.h># DEFINE SEGMENT_A RB0

# DEFINE SEGMENT_B RB1

# DEFINE SEGMENT_C RB2

# DEFINE SEGMENT_D RB3

# DEFINE SEGMENT_E RB4

# DEFINE SEGMENT_F RB5

# DEFINE SEGMENT_G RB6# определим на 1

# DEFINE OFF 0Пустота vAffichage (неподписанных ucCharacter Char)

(

переключателя (ucCharacter)

(

случае '0 ':

дело 'O':

SEGMENT_A = On;

SEGMENT_B = On;

SEGMENT_C = On;

SEGMENT_D = On;

SEGMENT_E = On;

SEGMENT_F = On;

SEGMENT_G = Off;

брейк;

случае '1 ':

дело 'L':

SEGMENT_A = Off;

SEGMENT_B = On;

SEGMENT_C = On;

SEGMENT_D = Off;

SEGMENT_E = Off;

SEGMENT_F = Off;

SEGMENT_G = Off;

брейк;

случае '2 ':

SEGMENT_A = On;

SEGMENT_B = On;

SEGMENT_C = Off;

SEGMENT_D = On;

SEGMENT_E = On;

SEGMENT_F = Off;

SEGMENT_G = On;

брейк;

случае '3 ':

SEGMENT_A = On;

SEGMENT_B = On;

SEGMENT_C = On;

SEGMENT_D = On;

SEGMENT_E = Off;

SEGMENT_F = Off;

SEGMENT_G = On;

брейк;

случае '4 ':

SEGMENT_A = Off;

SEGMENT_B = On;

SEGMENT_C = On;

SEGMENT_D = Off;

SEGMENT_E = Off;

SEGMENT_F = On;

SEGMENT_G = On;

брейк;

случае '5 ':

дело 'S':

SEGMENT_A = On;

SEGMENT_B = Off;

SEGMENT_C = On;

SEGMENT_D = On;

SEGMENT_E = Off;

SEGMENT_F = On;

SEGMENT_G = On;

брейк;

случае '6 ':

SEGMENT_A = On;

SEGMENT_B = Off;

SEGMENT_C = On;

SEGMENT_D = On;

SEGMENT_E = On;

SEGMENT_F = On;

SEGMENT_G = On;

брейк;

случае '7 ':

SEGMENT_A = On;

SEGMENT_B = On;

SEGMENT_C = On;

SEGMENT_D = Off;

SEGMENT_E = Off;

SEGMENT_F = Off;

SEGMENT_G = Off;

брейк;

случае '8 ':

SEGMENT_A = On;

SEGMENT_B = On;

SEGMENT_C = On;

SEGMENT_D = On;

SEGMENT_E = On;

SEGMENT_F = On;

SEGMENT_G = On;

брейк;

случае '9 ':

SEGMENT_A = On;

SEGMENT_B = On;

SEGMENT_C = On;

SEGMENT_D = Off;

SEGMENT_E = Off;

SEGMENT_F = On;

SEGMENT_G = On;

брейк;

дело 'D':

SEGMENT_A = Off;

SEGMENT_B = On;

SEGMENT_C = On;

SEGMENT_D = On;

SEGMENT_E = On;

SEGMENT_F = Off;

SEGMENT_G = On;

брейк;

дело 'O':

SEGMENT_A = Off;

SEGMENT_B = Off;

SEGMENT_C = On;

SEGMENT_D = On;

SEGMENT_E = On;

SEGMENT_F = Off;

SEGMENT_G = On;

брейк;

дело 'A':

SEGMENT_A = On;

SEGMENT_B = On;

SEGMENT_C = On;

SEGMENT_D = Off;

SEGMENT_E = On;

SEGMENT_F = On;

SEGMENT_G = On;

брейк;

дело 'C':

SEGMENT_A = On;

SEGMENT_B = Off;

SEGMENT_C = Off;

SEGMENT_D = On;

SEGMENT_E = On;

SEGMENT_F = On;

SEGMENT_G = Off;

брейк;

дело 'F':

SEGMENT_A = On;

SEGMENT_B = Off;

SEGMENT_C = Off;

SEGMENT_D = Off;

SEGMENT_E = On;

SEGMENT_F = On;

SEGMENT_G = On;

брейк;

дело 'H':

SEGMENT_A = Off;

SEGMENT_B = On;

SEGMENT_C = On;

SEGMENT_D = Off;

SEGMENT_E = On;

SEGMENT_F = On;

SEGMENT_G = On;

брейк;

дело 'L':

SEGMENT_A = Off;

SEGMENT_B = Off;

SEGMENT_C = Off;

SEGMENT_D = On;

SEGMENT_E = On;

SEGMENT_F = On;

SEGMENT_G = Off;

брейк;

дело 'P':

SEGMENT_A = On;

SEGMENT_B = On;

SEGMENT_C = Off;

SEGMENT_D = Off;

SEGMENT_E = On;

SEGMENT_F = On;

SEGMENT_G = On;

брейк;

дело '_':

SEGMENT_A = Off;

SEGMENT_B = Off;

SEGMENT_C = Off;

SEGMENT_D = On;

SEGMENT_E = Off;

SEGMENT_F = Off;

SEGMENT_G = Off;

брейк;

) / / Fin переключатель (ucCharacter).)
 
За 8 светодиодных дисплеев:
Гораздо лучше использовать один байт с 1 на один бит и 0 в остальных 7 бит.
00000001
00000010
00000100
00001000
00010000
00100000
01000000
10000000
00000001
...

В каждом переключении инструкция Просто поверните этот байт, и поставил его на порт, который оказывается на дисплеях.

 
Переключатель обычно оптимизированы с помощью массива.
7 сегментов средства 7 битов которая вписывается в 1 байт.
Вы можете объявить массив байтов и хранить его в ПЗУ.

 
Попробуйте этот код.
# DEFINE SEG_A 0# DEFINE SEG_B 1# DEFINE SEG_C 2# DEFINE SEG_D 3# DEFINE SEG_E 4# DEFINE SEG_F 5# DEFINE SEG_G 6
# определим на 1# DEFINE OFF 0
# DEFINE cod_0 (ПО <<SEG_A) | (ПО <<SEG_B) | (ПО <<SEG_C) | (ПО <<SEG_D) | (ПО <<SEG_E) | (ПО <<SEG_F) | (OFF <<SEG_G )# DEFINE cod_1 (OFF <<SEG_A) | (ПО <<SEG_B) | (ПО <<SEG_C) | (OFF <<SEG_D) | (OFF <<SEG_E) | (OFF <<SEG_F) | (OFF <<SEG_G )# DEFINE cod_2 (ПО <<SEG_A) | (ПО <<SEG_B) | (OFF <<SEG_C) | (ПО <<SEG_D) | (ПО <<SEG_E) | (OFF <<SEG_F) | (ПО <<SEG_G )# DEFINE cod_3 (ПО <<SEG_A) | (ПО <<SEG_B) | (ПО <<SEG_C) | (ПО <<SEG_D) | (OFF <<SEG_E) | (OFF <<SEG_F) | (ПО <<SEG_G )# DEFINE cod_4 (OFF <<SEG_A) | (ПО <<SEG_B) | (ПО <<SEG_C) | (OFF <<SEG_D) | (OFF <<SEG_E) | (ПО <<SEG_F) | (ПО <<SEG_G )# DEFINE cod_5 (ПО <<SEG_A) | (OFF <<SEG_B) | (ПО <<SEG_C) | (ПО <<SEG_D) | (OFF <<SEG_E) | (ПО <<SEG_F) | (ПО <<SEG_G )# DEFINE cod_6 (ПО <<SEG_A) | (OFF <<SEG_B) | (ПО <<SEG_C) | (ПО <<SEG_D) | (ПО <<SEG_E) | (ПО <<SEG_F) | (ПО <<SEG_G )# DEFINE cod_7 (ПО <<SEG_A) | (ПО <<SEG_B) | (ПО <<SEG_C) | (OFF <<SEG_D) | (OFF <<SEG_E) | (OFF <<SEG_F) | (OFF <<SEG_G )# DEFINE cod_8 (ПО <<SEG_A) | (ПО <<SEG_B) | (ПО <<SEG_C) | (ПО <<SEG_D) | (ПО <<SEG_E) | (ПО <<SEG_F) | (ПО <<SEG_G )# DEFINE cod_9 (ПО <<SEG_A) | (ПО <<SEG_B) | (ПО <<SEG_C) | (OFF <<SEG_D) | (OFF <<SEG_E) | (ПО <<SEG_F) | (ПО <<SEG_G )# DEFINE cod_A (ПО <<SEG_A) | (ПО <<SEG_B) | (ПО <<SEG_C) | (OFF <<SEG_D) | (ПО <<SEG_E) | (ПО <<SEG_F) | (ПО <<SEG_G )# DEFINE cod_C (ПО <<SEG_A) | (OFF <<SEG_B) | (OFF <<SEG_C) | (ПО <<SEG_D) | (ПО <<SEG_E) | (ПО <<SEG_F) | (OFF <<SEG_G )# DEFINE cod_d (OFF <<SEG_A) | (ПО <<SEG_B) | (ПО <<SEG_C) | (ПО <<SEG_D) | (ПО <<SEG_E) | (OFF <<SEG_F) | (ПО <<SEG_G )# DEFINE cod_F (ПО <<SEG_A) | (OFF <<SEG_B) | (OFF <<SEG_C) | (OFF <<SEG_D) | (ПО <<SEG_E) | (ПО <<SEG_F) | (ПО <<SEG_G )# DEFINE cod_o (OFF <<SEG_A) | (OFF <<SEG_B) | (ПО <<SEG_C) | (ПО <<SEG_D) | (ПО <<SEG_E) | (OFF <<SEG_F) | (ПО <<SEG_G )# DEFINE cod_H (OFF <<SEG_A) | (ПО <<SEG_B) | (ПО <<SEG_C) | (OFF <<SEG_D) | (ПО <<SEG_E) | (ПО <<SEG_F) | (ПО <<SEG_G )# DEFINE cod_L (OFF <<SEG_A) | (OFF <<SEG_B) | (OFF <<SEG_C) | (ПО <<SEG_D) | (ПО <<SEG_E) | (ПО <<SEG_F) | (OFF <<SEG_G )# DEFINE cod_P (ПО <<SEG_A) | (ПО <<SEG_B) | (OFF <<SEG_C) | (OFF <<SEG_D) | (ПО <<SEG_E) | (ПО <<SEG_F) | (ПО <<SEG_G )# DEFINE cod__ (OFF <<SEG_A) | (OFF <<SEG_B) | (OFF <<SEG_C) | (ПО <<SEG_D) | (OFF <<SEG_E) | (OFF <<SEG_F) | (OFF <<SEG_G )
Пустота vAffichage_ver2 (неподписанных ucCharacter Char)(переключателя (ucCharacter)(случае '0 ':дело 'O':pORTB = cod_0;брейк;случае '1 ':дело 'L':pORTB = cod_1;брейк;случае '2 ':pORTB = cod_2;брейк;случае '3 ':pORTB = cod_3;брейк;случае '4 ':pORTB = cod_4;брейк;случае '5 ':дело 'S':pORTB = cod_5;брейк;случае '6 ':pORTB = cod_6;брейк;случае '7 ':pORTB = cod_7;брейк;случае '8 ':pORTB = cod_8;брейк;случае '9 ':pORTB = cod_9;брейк;дело 'D':pORTB = cod_d;брейк;дело 'O':pORTB = cod_o;брейк;дело 'A':pORTB = cod_A;брейк;дело 'C':pORTB = cod_C;брейк;дело 'F':pORTB = cod_F;брейк;дело 'H':pORTB = cod_H;брейк;дело 'L':pORTB = cod_L;брейк;дело 'P':pORTB = cod_P;брейк;дело '_':pORTB = cod__;брейк;))Добавлено через 13 минут:Banh пишет:

Переключатель обычно оптимизированы с помощью массива.

7 сегментов средства 7 битов которая вписывается в 1 байт.

Вы можете объявить массив байтов и хранить его в ПЗУ.
 
Привет,
Какие по этому поводу:

Код:

постоянная Zero: std_logic_vector (6 DOWNTO 0): = "1000000";

Один постоянный: std_logic_vector (6 DOWNTO 0): = "1111001";

Две постоянные: std_logic_vector (6 DOWNTO 0): = "0100100";

постоянная Tree: std_logic_vector (6 DOWNTO 0): = "0110000";

постоянная четыре: std_logic_vector (6 DOWNTO 0): = "0011001";

Пяти постоянным: std_logic_vector (6 DOWNTO 0): = "0010010";

постоянная Six: std_logic_vector (6 DOWNTO 0): = "0000010";

постоянная семь: std_logic_vector (6 DOWNTO 0): = "1111000";

Восемь постоянная: std_logic_vector (6 DOWNTO 0): = "0000000";

постоянная Девять: std_logic_vector (6 DOWNTO 0): = "0010000";

- постоянное Ten: std_logic_vector (6 DOWNTO 0): = "0001000";

- постоянное Eleven: std_logic_vector (6 DOWNTO 0): = "0000011";

- постоянное Двенадцать: std_logic_vector (6 DOWNTO 0): = "1000110";

- постоянное Тринадцать: std_logic_vector (6 DOWNTO 0): = "0100001";

- постоянное Четырнадцать: std_logic_vector (6 DOWNTO 0): = "0000110";

- постоянное Пятнадцать: std_logic_vector (6 DOWNTO 0): = "0001110";

 
Почему вы не используете посмотреть таблицу?

 
CMOS Babe пишет:

Почему вы не используете посмотреть таблицу?
 

Welcome to EDABoard.com

Sponsor

Back
Top