Pjatruha 10 8 сентября, 2023 Опубликовано 8 сентября, 2023 · Жалоба 2 часа назад, izerg сказал: А схема соответствует фотографиям работы сегментов ? Сигналы правильно подписаны? Если вы говорите про фотографии с 7 страницы, то они подписаны относительно схемы, которая располагается на той же 7 странице в предыдущем посте. Относительно схемы паяльника наименование выводов другое, но их расположение на индикаторе такое же. 2 часа назад, izerg сказал: Если будете выкладывать исходник программы Да выкладывать пока нечего. 🙂 Если интересно, то вечером могу выложить код программы, которая на видео. У меня есть вопрос, по графикам из предыдущего поста. Можно ли подавать постоянный сигнал на выводы индикатора напряжением 1,65 вольта (график COM2 - COM4)? Или в конце нужно сделать паузу на 1 миллисекунду и опусти уровень сигнала до нуля? Т.е итоговая частота получится не 500/6, а 500/7. Спойлер D1=D5 D2=D6 D3=D7 D4=D8 D5=D14 D6=D13 D7=D12 D8=D11 D9=D10 D10=D9 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
izerg 9 8 сентября, 2023 Опубликовано 8 сентября, 2023 · Жалоба 43 minutes ago, Pjatruha said: Да выкладывать пока нечего. 🙂 Когда будет что выкладывать - уже будет поздно переписывать. Если цель - научится, первые шаги самые странные.🙂 43 minutes ago, Pjatruha said: У меня есть вопрос, по графикам из предыдущего поста. Можно ли подавать постоянный сигнал на выводы индикатора напряжением 1,65 вольта (график COM2 - COM4)? Или в конце нужно сделать паузу на 1 миллисекунду и опусти уровень сигнала до нуля? Т.е итоговая частота получится не 500/6, а 500/7. Для ЖКИ желательно не давать постоянных напряжений на электроды. Вот тут немного написано: https://electronics.stackexchange.com/questions/363541/how-exactly-is-an-lcd-damaged-by-dc-current https://focuslcds.com/journals/segment-lcd-displays-avoiding-excessive-dc-component/ "Extended operation of an excessive DC component on a static display, or segment LCD, can damage the display by electro-plating the electrode contact. Noticeable results of a damaged display can include a blurry segment (decrease in contrast) and the segments can become burned in. " Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 9 сентября, 2023 Опубликовано 9 сентября, 2023 · Жалоба 20 часов назад, izerg сказал: Для ЖКИ желательно не давать постоянных напряжений на электроды. Да я это понимаю. У меня был вопрос несколько иной. На индикатор нельзя подавать ни пол вольта ни постоянки ни 3 вольта? Т.е постоянка губительна с любым уровнем напряжения? Вот код программы из предыдущего поста. Спойлер #include "IOSTM8S103F3.h" int k=0; void inversin_PA1() { if ( k > 0) { k++; } if (k == 0) { PA_ODR_bit.ODR1 = 1; PA_ODR_bit.ODR2 = 0; PA_ODR_bit.ODR3 = 0; PC_ODR_bit.ODR3 = 0; PC_ODR_bit.ODR4 = 0; PC_ODR_bit.ODR5 = 0; PC_ODR_bit.ODR6 = 0; PC_ODR_bit.ODR7 = 0; PD_ODR_bit.ODR2 = 0; PD_ODR_bit.ODR6 = 0; k++; } if (k == 200) { PD_ODR_bit.ODR6 = 1; PD_ODR_bit.ODR2 = 1; PC_ODR_bit.ODR7 = 1; PC_ODR_bit.ODR6 = 1; PC_ODR_bit.ODR5 = 1; PC_ODR_bit.ODR4 = 1; PC_ODR_bit.ODR3 = 1; PA_ODR_bit.ODR3 = 1; PA_ODR_bit.ODR2 = 1; PA_ODR_bit.ODR1 = 0; } if (k == 400) { k=0; } }; void inversin_PA2() { if ( k > 0) { k++; } if (k == 0) { PA_ODR_bit.ODR1 = 0; PA_ODR_bit.ODR2 = 1; PA_ODR_bit.ODR3 = 0; PC_ODR_bit.ODR3 = 0; PC_ODR_bit.ODR4 = 0; PC_ODR_bit.ODR5 = 0; PC_ODR_bit.ODR6 = 0; PC_ODR_bit.ODR7 = 0; PD_ODR_bit.ODR2 = 0; PD_ODR_bit.ODR6 = 0; k++; } if (k == 200) { PD_ODR_bit.ODR6 = 1; PD_ODR_bit.ODR2 = 1; PC_ODR_bit.ODR7 = 1; PC_ODR_bit.ODR6 = 1; PC_ODR_bit.ODR5 = 1; PC_ODR_bit.ODR4 = 1; PC_ODR_bit.ODR3 = 1; PA_ODR_bit.ODR3 = 1; PA_ODR_bit.ODR2 = 0; PA_ODR_bit.ODR1 = 1; } if (k == 400) { k=0; } }; void inversin_PA3() { if ( k > 0) { k++; } if (k == 0) { PA_ODR_bit.ODR1 = 0; PA_ODR_bit.ODR2 = 0; PA_ODR_bit.ODR3 = 1; PC_ODR_bit.ODR3 = 0; PC_ODR_bit.ODR4 = 0; PC_ODR_bit.ODR5 = 0; PC_ODR_bit.ODR6 = 0; PC_ODR_bit.ODR7 = 0; PD_ODR_bit.ODR2 = 0; PD_ODR_bit.ODR6 = 0; k++; } if (k == 200) { PD_ODR_bit.ODR6 = 1; PD_ODR_bit.ODR2 = 1; PC_ODR_bit.ODR7 = 1; PC_ODR_bit.ODR6 = 1; PC_ODR_bit.ODR5 = 1; PC_ODR_bit.ODR4 = 1; PC_ODR_bit.ODR3 = 1; PA_ODR_bit.ODR3 = 0; PA_ODR_bit.ODR2 = 1; PA_ODR_bit.ODR1 = 1; } if (k == 400) { k=0; } }; void inversin_PC3() { if ( k > 0) { k++; } if (k == 0) { PA_ODR_bit.ODR1 = 0; PA_ODR_bit.ODR2 = 0; PA_ODR_bit.ODR3 = 0; PC_ODR_bit.ODR3 = 1; PC_ODR_bit.ODR4 = 0; PC_ODR_bit.ODR5 = 0; PC_ODR_bit.ODR6 = 0; PC_ODR_bit.ODR7 = 0; PD_ODR_bit.ODR2 = 0; PD_ODR_bit.ODR6 = 0; k++; } if (k == 200) { PD_ODR_bit.ODR6 = 1; PD_ODR_bit.ODR2 = 1; PC_ODR_bit.ODR7 = 1; PC_ODR_bit.ODR6 = 1; PC_ODR_bit.ODR5 = 1; PC_ODR_bit.ODR4 = 1; PC_ODR_bit.ODR3 = 0; PA_ODR_bit.ODR3 = 1; PA_ODR_bit.ODR2 = 1; PA_ODR_bit.ODR1 = 1; } if (k == 400) { k=0; } }; void inversin_PC4() { if ( k > 0) { k++; } if (k == 0) { PA_ODR_bit.ODR1 = 0; PA_ODR_bit.ODR2 = 0; PA_ODR_bit.ODR3 = 0; PC_ODR_bit.ODR3 = 0; PC_ODR_bit.ODR4 = 1; PC_ODR_bit.ODR5 = 0; PC_ODR_bit.ODR6 = 0; PC_ODR_bit.ODR7 = 0; PD_ODR_bit.ODR2 = 0; PD_ODR_bit.ODR6 = 0; k++; } if (k == 200) { PD_ODR_bit.ODR6 = 1; PD_ODR_bit.ODR2 = 1; PC_ODR_bit.ODR7 = 1; PC_ODR_bit.ODR6 = 1; PC_ODR_bit.ODR5 = 1; PC_ODR_bit.ODR4 = 0; PC_ODR_bit.ODR3 = 1; PA_ODR_bit.ODR3 = 1; PA_ODR_bit.ODR2 = 1; PA_ODR_bit.ODR1 = 1; } if (k == 400) { k=0; } }; void inversin_PC5() { if ( k > 0) { k++; } if (k == 0) { PA_ODR_bit.ODR1 = 0; PA_ODR_bit.ODR2 = 0; PA_ODR_bit.ODR3 = 0; PC_ODR_bit.ODR3 = 0; PC_ODR_bit.ODR4 = 0; PC_ODR_bit.ODR5 = 1; PC_ODR_bit.ODR6 = 0; PC_ODR_bit.ODR7 = 0; PD_ODR_bit.ODR2 = 0; PD_ODR_bit.ODR6 = 0; k++; } if (k == 200) { PD_ODR_bit.ODR6 = 1; PD_ODR_bit.ODR2 = 1; PC_ODR_bit.ODR7 = 1; PC_ODR_bit.ODR6 = 1; PC_ODR_bit.ODR5 = 0; PC_ODR_bit.ODR4 = 1; PC_ODR_bit.ODR3 = 1; PA_ODR_bit.ODR3 = 1; PA_ODR_bit.ODR2 = 1; PA_ODR_bit.ODR1 = 1; } if (k == 400) { k=0; } }; void inversin_PC6() { if ( k > 0) { k++; } if (k == 0) { PA_ODR_bit.ODR1 = 0; PA_ODR_bit.ODR2 = 0; PA_ODR_bit.ODR3 = 0; PC_ODR_bit.ODR3 = 0; PC_ODR_bit.ODR4 = 0; PC_ODR_bit.ODR5 = 0; PC_ODR_bit.ODR6 = 1; PC_ODR_bit.ODR7 = 0; PD_ODR_bit.ODR2 = 0; PD_ODR_bit.ODR6 = 0; k++; } if (k == 200) { PD_ODR_bit.ODR6 = 1; PD_ODR_bit.ODR2 = 1; PC_ODR_bit.ODR7 = 1; PC_ODR_bit.ODR6 = 0; PC_ODR_bit.ODR5 = 1; PC_ODR_bit.ODR4 = 1; PC_ODR_bit.ODR3 = 1; PA_ODR_bit.ODR3 = 1; PA_ODR_bit.ODR2 = 1; PA_ODR_bit.ODR1 = 1; } if (k == 400) { k=0; } }; void inversin_PC7() { if ( k > 0) { k++; } if (k == 0) { PA_ODR_bit.ODR1 = 0; PA_ODR_bit.ODR2 = 0; PA_ODR_bit.ODR3 = 0; PC_ODR_bit.ODR3 = 0; PC_ODR_bit.ODR4 = 0; PC_ODR_bit.ODR5 = 0; PC_ODR_bit.ODR6 = 0; PC_ODR_bit.ODR7 = 1; PD_ODR_bit.ODR2 = 0; PD_ODR_bit.ODR6 = 0; k++; } if (k == 200) { PD_ODR_bit.ODR6 = 1; PD_ODR_bit.ODR2 = 1; PC_ODR_bit.ODR7 = 0; PC_ODR_bit.ODR6 = 1; PC_ODR_bit.ODR5 = 1; PC_ODR_bit.ODR4 = 1; PC_ODR_bit.ODR3 = 1; PA_ODR_bit.ODR3 = 1; PA_ODR_bit.ODR2 = 1; PA_ODR_bit.ODR1 = 1; } if (k == 400) { k=0; } }; void inversin_PD2() { if ( k > 0) { k++; } if (k == 0) { PA_ODR_bit.ODR1 = 0; PA_ODR_bit.ODR2 = 0; PA_ODR_bit.ODR3 = 0; PC_ODR_bit.ODR3 = 0; PC_ODR_bit.ODR4 = 0; PC_ODR_bit.ODR5 = 0; PC_ODR_bit.ODR6 = 0; PC_ODR_bit.ODR7 = 0; PD_ODR_bit.ODR2 = 1; PD_ODR_bit.ODR6 = 0; k++; } if (k == 200) { PD_ODR_bit.ODR6 = 1; PD_ODR_bit.ODR2 = 0; PC_ODR_bit.ODR7 = 1; PC_ODR_bit.ODR6 = 1; PC_ODR_bit.ODR5 = 1; PC_ODR_bit.ODR4 = 1; PC_ODR_bit.ODR3 = 1; PA_ODR_bit.ODR3 = 1; PA_ODR_bit.ODR2 = 1; PA_ODR_bit.ODR1 = 1; } if (k == 400) { k=0; } }; void inversin_PD6() { if ( k > 0) { k++; } if (k == 0) { PA_ODR_bit.ODR1 = 0; PA_ODR_bit.ODR2 = 0; PA_ODR_bit.ODR3 = 0; PC_ODR_bit.ODR3 = 0; PC_ODR_bit.ODR4 = 0; PC_ODR_bit.ODR5 = 0; PC_ODR_bit.ODR6 = 0; PC_ODR_bit.ODR7 = 0; PD_ODR_bit.ODR2 = 0; PD_ODR_bit.ODR6 = 1; k++; } if (k == 200) { PD_ODR_bit.ODR6 = 0; PD_ODR_bit.ODR2 = 1; PC_ODR_bit.ODR7 = 1; PC_ODR_bit.ODR6 = 1; PC_ODR_bit.ODR5 = 1; PC_ODR_bit.ODR4 = 1; PC_ODR_bit.ODR3 = 1; PA_ODR_bit.ODR3 = 1; PA_ODR_bit.ODR2 = 1; PA_ODR_bit.ODR1 = 1; } if (k == 400) { k=0; } }; int main (void) { PD_DDR_bit.DDR3 = 0; // Вход PD_CR1_bit.C13 = 0; // Дифф. вход PD_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR7 = 1; PC_CR1_bit.C17 = 1; PC_CR2_bit.C27 = 1; PC_DDR_bit.DDR6 = 1; PC_CR1_bit.C16 = 1; PC_CR2_bit.C26 = 1; PC_DDR_bit.DDR5 = 1; PC_CR1_bit.C15 = 1; PC_CR2_bit.C25 = 1; PC_DDR_bit.DDR4 = 1; PC_CR1_bit.C14 = 1; PC_CR2_bit.C24 = 1; PC_DDR_bit.DDR3 = 1; PC_CR1_bit.C13 = 1; PC_CR2_bit.C23 = 1; PD_DDR_bit.DDR2 = 1; PD_CR1_bit.C12 = 1; PD_CR2_bit.C22 = 1; PD_DDR_bit.DDR6 = 1; PD_CR1_bit.C16 = 1; PD_CR2_bit.C26 = 1; PA_DDR_bit.DDR1 = 1; PA_CR1_bit.C11 = 1; PA_CR2_bit.C21 = 1; PA_DDR_bit.DDR2 = 1; PA_CR1_bit.C12 = 1; PA_CR2_bit.C22 = 1; PA_DDR_bit.DDR3 = 1; PA_CR1_bit.C13 = 1; PA_CR2_bit.C23 = 1; PB_DDR_bit.DDR5 = 1; // Настройка 5-го бита порта B на вывод. PB_CR1_bit.C15 = 1; // Переключение порта в режим push-pull. PB_CR2_bit.C25 = 1; // Скорость переключения до 2 МГц int n = 1, i=0, j=0; while(1) { if (i > 0) { i--; } if (PD_IDR_bit.IDR3!=1 & i == 0) { if (j == 0 ) { j = 1; i = 200; } } if (PD_IDR_bit.IDR3!=0 & j == 1) { if (i == 0) { i = 200; j = 0; n++; } } switch(n) { case 1: inversin_PA3(); PB_ODR_bit.ODR5 = 0; // Загорание светодиода. break; case 2: inversin_PA2(); PB_ODR_bit.ODR5 = 1; // Гашение светодиода. break; case 3: inversin_PA1(); PB_ODR_bit.ODR5 = 0; // Загорание светодиода. break; case 4: inversin_PD6(); PB_ODR_bit.ODR5 = 1; // Гашение светодиода. break; case 5: inversin_PD2(); PB_ODR_bit.ODR5 = 0; // Загорание светодиода. break; case 6: inversin_PC7(); PB_ODR_bit.ODR5 = 1; // Гашение светодиода. break; case 7: inversin_PC6(); PB_ODR_bit.ODR5 = 0; // Загорание светодиода. break; case 8: inversin_PC5(); PB_ODR_bit.ODR5 = 1; // Гашение светодиода. break; case 9: inversin_PC4(); PB_ODR_bit.ODR5 = 0; // Загорание светодиода. break; case 10: inversin_PC3(); PB_ODR_bit.ODR5 = 1; // Гашение светодиода. break; default: n=1; k=1; break; } } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 128 9 сентября, 2023 Опубликовано 9 сентября, 2023 · Жалоба 23 часа назад, izerg сказал: Для ЖКИ желательно не давать постоянных напряжений на электроды. Не совсем так. Желательно не подавать постоянного напряжения между подложкой и сегментом. А поскольку на сегментах у автора темы постоянно что-то меняется, то между выводом любого сегмента и подложкой, на которую подана половина питания, всегда будет переменное напряжение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 10 сентября, 2023 Опубликовано 10 сентября, 2023 · Жалоба 15 часов назад, Сергей Борщ сказал: Не совсем так. А ведь действительный. Измерения-то нужно делать между COM и SEG. Спасибо за пояснения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mitya1698 18 10 сентября, 2023 Опубликовано 10 сентября, 2023 · Жалоба Три момента. 1 Обратить внимание, что на индикаторе в момент перепрошивки, если там разные потенциалы, то за перепрошивок можно подубить индикатор. 2 Во время отладки, опасно делать брекпоинты, поскольку индикатор останется под статикой. 3 Надо написать программу так, чтобы через сегменты шло одинакове количество энергии в плюс и в минус. Тоесть каждый минимальный цикл должен давать две полуволны одинаковой длины. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 10 сентября, 2023 Опубликовано 10 сентября, 2023 · Жалоба 1 час назад, mitya1698 сказал: Тоесть каждый минимальный цикл должен давать две полуволны одинаковой длины. Вот тут не совсем понял. Можно чуть поподробней. Как это должно выглядеть на графике? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Точка Опоры 34 10 сентября, 2023 Опубликовано 10 сентября, 2023 · Жалоба Длительности положительной и отрицательной полуволн должны быть равны. Другими словами - постоянная составляющая напряжения на любом сегменте должна быть равна нулю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 10 сентября, 2023 Опубликовано 10 сентября, 2023 · Жалоба 2 минуты назад, Точка Опоры сказал: постоянная составляющая напряжения на любом сегменте должна быть равна нулю. Это понятно. Я не понял как этого добиться. Т.е формы сигналов на сегментных и общих линиях у меня неверно изображены на графиках? При таких формах и уровнях сигнала, я думаю, на индикаторе должно светиться по одному сегменту на каждой сегментной линии. Спойлер Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 214 10 сентября, 2023 Опубликовано 10 сентября, 2023 · Жалоба 1 час назад, Pjatruha сказал: Это понятно. Я не понял как этого добиться. Т.е формы сигналов на сегментных и общих линиях у меня неверно изображены на графиках? При таких формах и уровнях сигнала, я думаю, на индикаторе должно светиться по одному сегменту на каждой сегментной линии. Трудно понять что вы там рисуете. Но переменный ток: это когда определённое количество тока течёт в одну сторону, а затем - ровно такое же количество тока - течёт в противоположную. Добиться такого тока между двумя цифровыми выходами можно, установив сначала на одном выходе лог.0, на другом - лог.1, затем (на ровно такое же время) установив на них противоположные значения. Если же длительности этих состояний не равны друг другу, то значит постоянная составляющая тока не равна 0. PS: Если "ток" заменить на "напряжение", то принципиально ничего не изменится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mitya1698 18 10 сентября, 2023 Опубликовано 10 сентября, 2023 · Жалоба Ну тоесть один минимальный цикл должен быть так: com4 = 1/2; com1 = 1 ; segs = 1 / 0; для первого знакоместа com1 = 0 ; segs = 0 / 1; для первого знакоместа com1 = 1/2; com2 = 1 ; segs = 1 / 0; для второго знакоместа com2 = 0 ; segs = 0 / 1; для второго знакоместа com2 = 1/2; com3 = 1 ; segs = 1 / 0; для третьего знакоместа com3 = 0 ; segs = 0 / 1; для третьего знакоместа com3 = 1/2; com4 = 1 ; segs = 1 / 0; для четвертого знакоместа com4 = 0 ; segs = 0 / 1; для четвертого знакоместа Восемь тактов. Менять значения segs для знакоместа можно когда его com равен 1/2 ну или чтобы не заморачиваться, то пройдя весь цикл обновить разом все четыре знакоместа и начинать новый цикл. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 51 10 сентября, 2023 Опубликовано 10 сентября, 2023 · Жалоба On 9/10/2023 at 3:02 PM, Pjatruha said: Это понятно. Я не понял как этого добиться. Т.е формы сигналов на сегментных и общих линиях у меня неверно изображены на графиках? U14737EE1V0AN00.PDF AN-658a.pdf AN-563c.pdf 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 10 сентября, 2023 Опубликовано 10 сентября, 2023 · Жалоба 3 часа назад, mitya1698 сказал: Ну тоесть один минимальный цикл должен быть так: Наверное я начинаю понимать вас. Т.е формы и уровни сигнала должны выглядеть так 3 часа назад, jcxz сказал: Трудно понять что вы там рисуете. А изобразить я пытался тоже самое, что и на картинке в этом посте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 12 сентября, 2023 Опубликовано 12 сентября, 2023 · Жалоба Почитал документацию, которой поделился dimka76 и попробовал снова нарисовать формы сигналов для засветки по одному сегменту из каждой сегментной линии. Сравнил их с ранее снятыми осциллограммами. Получилось очень похоже. Думаю теперь можно переходить к написанию программы... 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
izerg 9 12 сентября, 2023 Опубликовано 12 сентября, 2023 · Жалоба 5 hours ago, Pjatruha said: Почитал документацию, которой поделился dimka76 и попробовал снова нарисовать формы сигналов для засветки по одному сегменту из каждой сегментной линии. Сравнил их с ранее снятыми осциллограммами. Получилось очень похоже. Думаю теперь можно переходить к написанию программы... Что должно "светиться" по расчетам ? то что на картинке? или что-то другое? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться