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

G

Guest

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

Я зробив цю функцію, може бути, швидко, але я не знаю, якщо це можливо, щоб оптимізувати його.Тому що це займає багато пам'яті, дані програми ...(Наприклад, 200 байт).

Це для PIC16Fxxx ...

Я думаю, це основна форма для цієї функції.Використання цієї функції, як vAffichage ('7 ');Код:# Включити <pic.h># Визначити SEGMENT_A RB0

# Визначити SEGMENT_B RB1

# Визначити SEGMENT_C RB2

# Визначити SEGMENT_D RB3

# Визначити SEGMENT_E RB4

# Визначити SEGMENT_F RB5

# Визначити SEGMENT_G RB6# Визначити ПО 1

# Визначити OFF 0недійсним vAffichage (непідписані символ ucCharacter)

(

перемикач (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;

перерви;

справа "про":

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 на 1 біт і 0 в інших 7 біт.
00000001
00000010
00000100
00001000
00010000
00100000
01000000
10000000
00000001
...

У кожному перемикач інструкції просто обертайте цей байт, і поклав його на порт, який виявляється на дисплеях.

 
вимикач, як правило, оптимізовані за допомогою масиву.
7 сегментів засобів 7 біт, яка вписується в 1 байт.
Ви можете оголосити масив байтів і зберігайте його в ПЗУ.

 
Спробуйте цей код.
# Визначити SEG_A 0# Визначити SEG_B 1# Визначити SEG_C 2# Визначити SEG_D 3# Визначити SEG_E 4# Визначити SEG_F травня# Визначити SEG_G 6
# Визначити ПО 1# Визначити OFF 0
# Визначити cod_0 (ON <<SEG_A) | (ON <<SEG_B) | (ON <<SEG_C) | (ON <<SEG_D) | (ON <<SEG_E) | (ON <<SEG_F) | (OFF <<SEG_G )# Визначити cod_1 (OFF <<SEG_A) | (ON <<SEG_B) | (ON <<SEG_C) | (OFF <<SEG_D) | (OFF <<SEG_E) | (OFF <<SEG_F) | (OFF <<SEG_G )# Визначити cod_2 (ON <<SEG_A) | (ON <<SEG_B) | (OFF <<SEG_C) | (ON <<SEG_D) | (ON <<SEG_E) | (OFF <<SEG_F) | (ON <<SEG_G )# Визначити cod_3 (ON <<SEG_A) | (ON <<SEG_B) | (ON <<SEG_C) | (ON <<SEG_D) | (OFF <<SEG_E) | (OFF <<SEG_F) | (ON <<SEG_G )# Визначити cod_4 (OFF <<SEG_A) | (ON <<SEG_B) | (ON <<SEG_C) | (OFF <<SEG_D) | (OFF <<SEG_E) | (ON <<SEG_F) | (ON <<SEG_G )# Визначити cod_5 (ON <<SEG_A) | (OFF <<SEG_B) | (ON <<SEG_C) | (ON <<SEG_D) | (OFF <<SEG_E) | (ON <<SEG_F) | (ON <<SEG_G )# Визначити cod_6 (ON <<SEG_A) | (OFF <<SEG_B) | (ON <<SEG_C) | (ON <<SEG_D) | (ON <<SEG_E) | (ON <<SEG_F) | (ON <<SEG_G )# Визначити cod_7 (ON <<SEG_A) | (ON <<SEG_B) | (ON <<SEG_C) | (OFF <<SEG_D) | (OFF <<SEG_E) | (OFF <<SEG_F) | (OFF <<SEG_G )# Визначити cod_8 (ON <<SEG_A) | (ON <<SEG_B) | (ON <<SEG_C) | (ON <<SEG_D) | (ON <<SEG_E) | (ON <<SEG_F) | (ON <<SEG_G )# Визначити cod_9 (ON <<SEG_A) | (ON <<SEG_B) | (ON <<SEG_C) | (OFF <<SEG_D) | (OFF <<SEG_E) | (ON <<SEG_F) | (ON <<SEG_G )# Визначити cod_A (ON <<SEG_A) | (ON <<SEG_B) | (ON <<SEG_C) | (OFF <<SEG_D) | (ON <<SEG_E) | (ON <<SEG_F) | (ON <<SEG_G )# Визначити cod_C (ON <<SEG_A) | (OFF <<SEG_B) | (OFF <<SEG_C) | (ON <<SEG_D) | (ON <<SEG_E) | (ON <<SEG_F) | (OFF <<SEG_G )# Визначити cod_d (OFF <<SEG_A) | (ON <<SEG_B) | (ON <<SEG_C) | (ON <<SEG_D) | (ON <<SEG_E) | (OFF <<SEG_F) | (ON <<SEG_G )# Визначити cod_F (ON <<SEG_A) | (OFF <<SEG_B) | (OFF <<SEG_C) | (OFF <<SEG_D) | (ON <<SEG_E) | (ON <<SEG_F) | (ON <<SEG_G )# Визначити cod_o (OFF <<SEG_A) | (OFF <<SEG_B) | (ON <<SEG_C) | (ON <<SEG_D) | (ON <<SEG_E) | (OFF <<SEG_F) | (ON <<SEG_G )# Визначити cod_H (OFF <<SEG_A) | (ON <<SEG_B) | (ON <<SEG_C) | (OFF <<SEG_D) | (ON <<SEG_E) | (ON <<SEG_F) | (ON <<SEG_G )# Визначити cod_L (OFF <<SEG_A) | (OFF <<SEG_B) | (OFF <<SEG_C) | (ON <<SEG_D) | (ON <<SEG_E) | (ON <<SEG_F) | (OFF <<SEG_G )# Визначити cod_P (ON <<SEG_A) | (ON <<SEG_B) | (OFF <<SEG_C) | (OFF <<SEG_D) | (ON <<SEG_E) | (ON <<SEG_F) | (ON <<SEG_G )# Визначити cod__ (OFF <<SEG_A) | (OFF <<SEG_B) | (OFF <<SEG_C) | (ON <<SEG_D) | (OFF <<SEG_E) | (OFF <<SEG_F) | (OFF <<SEG_G )
недійсним vAffichage_ver2 (непідписані символ ucCharacter)(перемикач (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;перерви;справа "про":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 хвилин:Бань пише:

вимикач, як правило, оптимізовані за допомогою масиву.

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";

Шість постійних: std_logic_vector (6 downto 0): = "0000010";

постійна Seven: std_logic_vector (6 downto 0): = "1111000";

постійна Вісім: std_logic_vector (6 downto 0): = "0000000";

Дев'ять постійних: std_logic_vector (6 downto 0): = "0010000";

- Постійне Тен: std_logic_vector (6 downto 0): = "0001000";

- Постійне Одинадцять: 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 малюк пише:

Чому ви не використовуєте подивитися таблиці?
 

Welcome to EDABoard.com

Sponsor

Back
Top