Форум программистов, компьютерный форум, киберфорум
Наши страницы
Free Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
KasHammer
0 / 0 / 0
Регистрация: 12.05.2009
Сообщений: 9
#1

Семисегментные часы на Паскале - Free Pascal

12.05.2009, 14:49. Просмотров 1439. Ответов 1
Метки нет (Все метки)

Товарищи! Помогие пожалуйста! Как можно вывести цифры в виде семисегментных индикаторов для часов? На языке Паскаль соответственно
http://www.cyberforum.ru/windows-forms/thread1827011.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2009, 14:49
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Семисегментные часы на Паскале (Free Pascal):

Семисегментные часы на Action Script
Как можно вывести цифры в виде семисегментных индикаторов для часов? И вот еще...

Разработать семисегментные часы в консоли
Добрый день ! Знакомый попросил помочь Разработать семисегментные часы в...

Нарисовать в паскале часы
:help:помогите пожалуйста нарисовать в паскале часы, оч нужно, заранее большое...

Про семисегментные индикаторы
Имеется обычный блок из 8 семисегментных индикаторов и МК pic16f877A Удалось...

Некорректно горят семисегментные дисплеи
Здравствуйте. Хотел вывести число на семисегментный дисплей, поставил нужную...

1
mik-a-el
Администратор
71289 / 40561 / 241
Регистрация: 10.04.2006
Сообщений: 12,672
12.05.2009, 14:55 #2
Это на делфях, но принцип думаю будет понятен.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
{ *****************************************************
>> Процедура выводит на Canvas семисегментный индикатор,
позволяя управлять включенными сегментами
 
Процедура выводит на Canvas индикатор семисегментного кода
Вход:
SegStr - Строка содержащая символы горящих сегментов(используемые символы ABCDEFGH)
x,y - координаты верхнего левого угла вывода индикатора
Scale - масштаб индикатора от 1 и выше (множитель)
Hndl - Handle Canvas на который выводится изображение
 
Зависимости: Стандартные
Автор:       Pavel Manzharov, [email]pavel_man@hotmail.com[/email], ICQ:4838921, Москва
Copyright:   Pavel Manzharov
Дата:        25 февраля 2003 г.
***************************************************** }
 
{Процедура выводит на Canvas индикатор семисегментного кода
Вход:
     SegStr - Строка содержащая символы горящих сегментов
       (используемые символы ABCDEFGH)
     x,y - координаты верхнего левого угла вывода индикатора
     Scale - масштаб индикатора от 1 и выше (множитель)
     Hndl - Handle Canvas на который выводится изображение}
 
procedure Display7Seg(SegStr: string; x, y: integer; Scale: extended; hndl:
  hdc);
const
  // Цвет горящих сегментов
  ColorOn: Tcolor = clBlue;
  // Цвет погашенных сенментов
  ColorOff: TColor = clltGray;
var
  // Canvas на который выводится изображение
  Canvas1: TCanvas;
  // Координаты выводимого сегмента
  x1, x2, y1, y2: integer;
begin
  // Создаем Canvas
  Canvas1 := TCanvas.Create;
  // Проверяем масштаб и если он меньше 1 присваиваем ему 1
  if Scale < 1 then
    scale := 1;
  // Укажем что вывод осуществляется на Canvas переданный в параметрах
  Canvas1.Handle := Hndl;
  // Установим толщину линий сегментов равной масштабу
  Canvas1.Pen.Width := Trunc(Scale);
  // Пересчитаем координаты вывода с учетом масштаба для всех сегментов
  {A}
  x1 := Trunc(x + 1 * scale);
  x2 := Trunc(x1 + 5 * scale);
  y1 := y;
  y2 := y;
  if StrPos(Pchar(SegStr), ′A′) <> nil then
    Canvas1.Pen.Color := ColorOn
  else
    Canvas1.Pen.Color := ColorOff;
  Canvas1.MoveTo(x1, y1);
  Canvas1.LineTo(x2, y2);
  {G}
  y1 := Trunc(y + 6 * Scale);
  y2 := y1;
  if StrPos(Pchar(SegStr), ′G′) <> nil then
    Canvas1.Pen.Color := ColorOn
  else
    Canvas1.Pen.Color := ColorOff;
  Canvas1.MoveTo(x1, y1);
  Canvas1.LineTo(x2, y2);
  {D}
  y1 := Trunc(y + 12 * Scale);
  y2 := y1;
  if StrPos(Pchar(SegStr), ′D′) <> nil then
    Canvas1.Pen.Color := ColorOn
  else
    Canvas1.Pen.Color := ColorOff;
  Canvas1.MoveTo(x1, y1);
  Canvas1.LineTo(x2, y2);
  {H}
  x1 := Trunc(x + 8 * Scale);
  x2 := x1;
  if StrPos(Pchar(SegStr), ′H′) <> nil then
    Canvas1.Pen.Color := ColorOn
  else
    Canvas1.Pen.Color := ColorOff;
  Canvas1.MoveTo(x1, y1);
  Canvas1.LineTo(x2, y2);
  {F}
  x1 := x;
  x2 := x;
  y1 := Trunc(y + 1 * scale);
  y2 := Trunc(y + 5 * scale);
  if StrPos(Pchar(SegStr), ′F′) <> nil then
    Canvas1.Pen.Color := ColorOn
  else
    Canvas1.Pen.Color := ColorOff;
  Canvas1.MoveTo(x1, y1);
  Canvas1.LineTo(x2, y2);
  {E}
  y1 := Trunc(y + 7 * scale);
  y2 := Trunc(y + 11 * scale);
  if StrPos(Pchar(SegStr), ′E′) <> nil then
    Canvas1.Pen.Color := ColorOn
  else
    Canvas1.Pen.Color := ColorOff;
  Canvas1.MoveTo(x1, y1);
  Canvas1.LineTo(x2, y2);
  {C}
  x1 := Trunc(x + 7 * scale);
  x2 := x1;
  if StrPos(Pchar(SegStr), ′C′) <> nil then
    Canvas1.Pen.Color := ColorOn
  else
    Canvas1.Pen.Color := ColorOff;
  Canvas1.MoveTo(x1, y1);
  Canvas1.LineTo(x2, y2);
  {B}
  y1 := Trunc(y + 1 * scale);
  y2 := Trunc(y + 5 * scale);
  if StrPos(Pchar(SegStr), ′B′) <> nil then
    Canvas1.Pen.Color := ColorOn
  else
    Canvas1.Pen.Color := ColorOff;
  Canvas1.MoveTo(x1, y1);
  Canvas1.LineTo(x2, y2);
  // После вывода последнего сегмента освободим Canvas
  Canvas1.Free;
end;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2009, 14:55
Привет! Вот еще темы с решениями:

Семисегментные дисплеи со встроенным контролером
Чтобы семисегментник к микроконтролеру подключить - это как минимум регистр и...

Посмотрите код на предмет оптимизации. (вывод на семисегментные индикаторы)
/* * 7Segment.c * * Created: 10.09.2016 14:51:07 * Author : igora */...

Флеш часы: часы, показывающие указанное время
Привет всем!!!Помогите пожалуйста!!!Как создать флеш часы чтобы они показывали...

Даны целые числа m (часы) и n (минуты) .Определить наименьшее время (в минутах) когда совпадут минуты и часы
Даны целые числа m (часы) и n (минуты) .Определить наименьшее время (в минутах)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru