ftp27

Msp430 С Lcd Экранчиком. Проблема С Частотой

18 сообщений в этой теме

ftp27    2

Работаю с микроконтроллером msp430f4784 и LCD экранчиком SBLCDA4. В микроконтроллере встроен драйвер LCD, поэтому разобраться в его работе было не сложно. Составил табличку, набросал программу. Результат, как всегда, не оправдал ожиданий. Изображение мерцало. Такое чувство, что динамическая индикация происходит очень медленно, Но часовой кварц стоит, и указан номинал конденсаторов на нем. UART же как то работал.

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

Прикладываю с программой пару гифок, как все это происходит на деле

#include "msp430.h"
void main(void)
{
int i;
WDTCTL = WDTPW + WDTHOLD;				
FLL_CTL0 |= XCAP10PF;					
LCDACTL = LCDON + LCD4MUX + LCDFREQ_128;
LCDAPCTL0 = LCDS0+LCDS4+LCDS8+LCDS12+LCDS16+LCDS20;
P5SEL = BIT2+BIT3+BIT4;				
for( i = 0; i < 11; i ++)
{
 LCDMEM[i] = 0xFF;						
}

_BIS_SR(LPM3_bits);					
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как буд - то питание на дисплей с определённой частотой идёт найди питание дисплея и посмотри чё туда идёт с МК

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ftp27    2

Как буд - то питание на дисплей с определённой частотой идёт найди питание дисплея и посмотри чё туда идёт с МК

Тут нет питания так таковой. Есть четыре COM на которые поочередно что то подается напряжение, и еще куча ног на специальные порты на МК. Суть в том что МК, если верить какой то pdf-ки с сайта TI, выдает переменное напряжение на COM0-COM3 последовательно и в соответствии включает нужные пины на МК. Ну я все о том, что питания LCD нет. Это просто матрица с кристаликами и выходами к ним. Память LCD находиться в MK.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
UTSource

Найдите миллионы труднодоступных

электронных компонентов

ftp27    2

Так дисплей же или с ОА или с ОК а МК выводит единицы или нули на аноды или катоды ведь так

Я немного не понимаю что такое ОА и ОК...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ftp27    2

Хмм. Ну так или иначе, с мк идет именно то, что показывается на LCD. Как я уже говорил, устройство LCD максимально просто, все грабли в подключении или прошивке МК. По этому поводу и вопрос :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Cobban    135

Я бы уменьшил коэф. деления для частоты драйвера LCD.

Попробуйте написать так:

LCDACTL = LCDON + LCDSON + LCD4MUX + LCDFREQ_32;

Хотя на счет "LCDSON" не уверен.

Так дисплей же или с ОА или с ОК а МК выводит единицы или нули на аноды или катоды ведь так

Нет. ЖКИ иначе устроен.

Изменено пользователем Cobban

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Rhime    143

Давно не игрался с МСП по этому по программе не подскажу. Но копать нужно в сторону частоты обновления экрана. Она должна быть как минимум в 2 а то и в 3 раза выше. Ну и стоит проверить есть ли смена полярности на управляющих выводах МК. Хотя если изображение есть то и смена тоже есть. Скорей всего проблема в частоте обновления экрана.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ftp27    2

По поводу частоты, я пробовал 32. Мне кажется тут наводки какие то, у меня там проводов целая кипа на дисплей

UlkRBJsptaM.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
tvilsa    3

Подключал ЖК экран к контроллеру MSP430F449. Вроде особых проблем не заметил. В качестве исходника брал пример от техаса.

Мне почемуто кажется у Вас ошибка с подключением ЖК к контроллеру. Такое ощущение что линии ЖК которые COM подключены к линиям контроллера Sx.

Попробуйте для начала сделать так

#include "msp430.h"
void main(void)
{
int i;
WDTCTL = WDTPW + WDTHOLD;							
FLL_CTL0 |= XCAP10PF;								
LCDACTL = LCDON + LCDSON + LCD4MUX + LCDFREQ_128;
LCDAPCTL0 = LCDS0+LCDS4+LCDS8+LCDS12+LCDS16+LCDS20;
P5SEL = BIT2+BIT3+BIT4+BIT5;                        
for( i = 0; i < 11; i ++)
{
	 LCDMEM[i] = 0xFF;											
}
P1DIR = 0x22;							 // P1.1,5 to output direction
P1SEL = 0x22;							 // P1.1,5 to output MCLK & ACLK

}

и ногу R03 заземлить.

Потом померяйте (если конечно есть чем :-)) на ногах 1.1 частоту MCLK и на 1.5 ACKL. Мало ли что там с частотами.

Хотя на счет "LCDSON" не уверен.

Да нет все нормально. Этот бит служит для организации мигания.

Если он в единице то все сегменты которые должны светиться-светятся, если в ноле то все НЕГОРЯТ.

Вот руководство пользователя на msp430x4x первая часть архива

вторая часть архива

правда это устаревшее описание

Семейство микроконтроллеров MSP430x4xx руководство пользователя.part1.rar

Семейство микроконтроллеров MSP430x4xx руководство пользователя.part2.rar

Изменено пользователем tvilsa

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
tvilsa    3

Вот нашел техасовский пример именно для вашего экрана

//******************************************************************************
//    MSP430x47xx Demo - LCD_A Put "0123456" on SBLCDA4 LCD
//
//  Description; Put "0123456" on SBLCDA4 LCD.
//  ACLK = LFXT1 = 32768, MCLK = SMCLK = DCO = 32xACLK = 1.048576MHz
//  //*An external watch crystal is required on XIN/XOUT for ACLK*//
//
//			    MSP430x47xx
//		    -----------------
//	    /|\|			  XIN|-
//		 | |				 | 32kHz
//		 --|RST		  XOUT|-		 SBLCDA4
//		   |				 |	    ___________
//		   |			  S4 |------>|14		 |
//		   |			  S5 |------>|13		 |
//		   |			 ..  | ....  |..		 |
//		   |			 S17 |------>|1		  |
//		   |			 COM0|------>|15		 |
//		   |			 COM1|------>|16		 |
//		   |			 COM2|------>|17		 |
//		   |			 COM3|------>|18		 |
//		   |			 S18 |------>|19		 |
//		   |			 S19 |------>|20		 |
//		   |			  .. | ....  |..		 |
//		   |			 S25 |------>|26		 |	
//		   |_________________|	   |___________|
//
//
//  P. Thanigai / K.Venkat
//  Texas Instruments Inc.
//  November 2007
//  Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.42A
//*****************************************************************************
#include <msp430x47x4.h>
// LCD segment definitions.
#define h 0x80
#define e 0x40
#define g 0x20
#define f 0x10
#define d 0x08
#define c 0x04
#define b 0x02
#define a 0x01
const char char_gen[] = {				   // definitions for digits
 a+b+c+d+e+f,							  // Displays "0"
 b+c,									  // Displays "1"
 a+b+d+e+g,							    // Displays "2"
 a+b+c+d+g,							    // Displays "3"
 b+c+f+g,								  // Displays "4"
 a+c+d+f+g,							    // Displays "5"
 a+c+d+e+f+g,							  // Displays "6"
 a+b+c,								    // Displays "7"
 a+b+c+d+e+f+g,						    // Displays "8"
 a+b+c+d+f+g							   // Displays "9"
};
void main(void)
{
 volatile unsigned int i;
 WDTCTL = WDTPW +WDTHOLD;				  // Stop WDT
 FLL_CTL0 |= XCAP14PF;					 // Configure load caps
 // Wait for xtal to stabilize
 do
 {
   IFG1 &= ~OFIFG;						 // Clear OSCFault flag
   for (i = 0x47FF; i > 0; i--);		   // Time for flag to set
 }
 while ((IFG1 & OFIFG));				   // OSCFault flag still set?

 P5SEL = 0x1C;							 // Set COM pins for LCD
 LCDACTL = LCDON+LCD4MUX;				  // 4mux LCD, ACLK/32
 LCDAPCTL0 = 0x7E;						 // Segments 4-24
 for( i = 0; i < 20; i ++)
 {
   LCDMEM[i] = 0;						  // Clear LCD
 }
 for (i=2;i<9;i++)
 {
   LCDMEM[i] = char_gen[i-2];
 }
 _BIS_SR(LPM3_bits);					   // Enter LPM3
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ftp27    2

Вот нашел техасовский пример именно для вашего экрана

//******************************************************************************
// MSP430x47xx Demo - LCD_A Put "0123456" on SBLCDA4 LCD
//
// Description; Put "0123456" on SBLCDA4 LCD.
// ACLK = LFXT1 = 32768, MCLK = SMCLK = DCO = 32xACLK = 1.048576MHz
// //*An external watch crystal is required on XIN/XOUT for ACLK*//
//
//			 MSP430x47xx
//		 -----------------
//	 /|\|			 XIN|-
//		 | |				 | 32kHz
//		 --|RST		 XOUT|-		 SBLCDA4
//		 |				 |	 ___________
//		 |			 S4 |------>|14		 |
//		 |			 S5 |------>|13		 |
//		 |			 .. | .... |..		 |
//		 |			 S17 |------>|1		 |
//		 |			 COM0|------>|15		 |
//		 |			 COM1|------>|16		 |
//		 |			 COM2|------>|17		 |
//		 |			 COM3|------>|18		 |
//		 |			 S18 |------>|19		 |
//		 |			 S19 |------>|20		 |
//		 |			 .. | .... |..		 |
//		 |			 S25 |------>|26		 |	
//		 |_________________|	 |___________|
//
//
// P. Thanigai / K.Venkat
// Texas Instruments Inc.
// November 2007
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.42A
//*****************************************************************************
#include <msp430x47x4.h>
// LCD segment definitions.
#define h 0x80
#define e 0x40
#define g 0x20
#define f 0x10
#define d 0x08
#define c 0x04
#define b 0x02
#define a 0x01
const char char_gen[] = {				 // definitions for digits
a+b+c+d+e+f,							 // Displays "0"
b+c,									 // Displays "1"
a+b+d+e+g,							 // Displays "2"
a+b+c+d+g,							 // Displays "3"
b+c+f+g,								 // Displays "4"
a+c+d+f+g,							 // Displays "5"
a+c+d+e+f+g,							 // Displays "6"
a+b+c,								 // Displays "7"
a+b+c+d+e+f+g,						 // Displays "8"
a+b+c+d+f+g							 // Displays "9"
};
void main(void)
{
volatile unsigned int i;
WDTCTL = WDTPW +WDTHOLD;				 // Stop WDT
FLL_CTL0 |= XCAP14PF;					 // Configure load caps
// Wait for xtal to stabilize
do
{
IFG1 &= ~OFIFG;						 // Clear OSCFault flag
for (i = 0x47FF; i > 0; i--);		 // Time for flag to set
}
while ((IFG1 & OFIFG));				 // OSCFault flag still set?

P5SEL = 0x1C;							 // Set COM pins for LCD
LCDACTL = LCDON+LCD4MUX;				 // 4mux LCD, ACLK/32
LCDAPCTL0 = 0x7E;						 // Segments 4-24
for( i = 0; i < 20; i ++)
{
LCDMEM[i] = 0;						 // Clear LCD
}
for (i=2;i<9;i++)
{
LCDMEM[i] = char_gen[i-2];
}
_BIS_SR(LPM3_bits);					 // Enter LPM3
}

Буквально на днях пришли платы со схемой. Ваш пример выдает аналогичный вариант, все моргает и не выводится все что нужно. Т.к. плата уже полностью печатная и дорожки максимально короткие, о наводках никакой речи идти не может.

post-129151-0-58128800-1363271256_thumb.jpg

Подключал ЖК экран к контроллеру MSP430F449. Вроде особых проблем не заметил. В качестве исходника брал пример от техаса.

Мне почемуто кажется у Вас ошибка с подключением ЖК к контроллеру. Такое ощущение что линии ЖК которые COM подключены к линиям контроллера Sx.

Попробуйте для начала сделать так

#include "msp430.h"
void main(void)
{
int i;
WDTCTL = WDTPW + WDTHOLD;							
FLL_CTL0 |= XCAP10PF;								
LCDACTL = LCDON + LCDSON + LCD4MUX + LCDFREQ_128;
LCDAPCTL0 = LCDS0+LCDS4+LCDS8+LCDS12+LCDS16+LCDS20;
P5SEL = BIT2+BIT3+BIT4+BIT5;
for( i = 0; i < 11; i ++)
{
	 LCDMEM[i] = 0xFF;											
}
P1DIR = 0x22;							 // P1.1,5 to output direction
P1SEL = 0x22;							 // P1.1,5 to output MCLK & ACLK

}

и ногу R03 заземлить.

Потом померяйте (если конечно есть чем :-)) на ногах 1.1 частоту MCLK и на 1.5 ACKL. Мало ли что там с частотами.

Хотя на счет "LCDSON" не уверен.

Да нет все нормально. Этот бит служит для организации мигания.

Если он в единице то все сегменты которые должны светиться-светятся, если в ноле то все НЕГОРЯТ.

Вот руководство пользователя на msp430x4x первая часть архива

вторая часть архива

правда это устаревшее описание

Это описание мне уже знакомо. В правильности подключения LCD я уверен. По распиновке все подключалось.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ftp27    2

Попробовал цепануть осциллографом COM0. Увидел там такое

post-129151-0-12196600-1363333512_thumb.jpg

Это уже совсем не нормально выглядит о_О

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ftp27    2

Припаял электролит на 10uF на ногу LCDCAP микроконтроллера. Получил такую штуку

post-129151-0-45712900-1363335294_thumb.jpg

Видно что сразу стало получше. Но дисплей все еще каловратит

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
NebsteR    743

400мс период этого дела? Не многовато ли?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ftp27    2

400мс период этого дела? Не многовато ли?

Вот уж не знаю. Вот COM3 (желтый) и COM2(Синий).

post-129151-0-89088400-1363349724_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ftp27    2

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: Scinar
      Привет всем. Хочу собрать калькулятор на atmega 328p. Но не как не могу запустить LCD TIC55, основанный на сдвиговом регистре с чипом ML1001. Никогда не связывался с подобным дисплеем. Понравился очень экономичным потреблением тока и экономным количеством выводов управления - всего 3. Проблема в тактирование, как написать программу для вывода хотя б одного символа, документации мало нашел, так же есть библиотека для atmel studio 5, сам пользуюсь 7. Библиотку переделал под 7 но дисплей так ничего и не вывел. Подскажите как правильно написать программу, язык значения не имеет хоть assembler или С. Мне надо что б дисплей вывел хоть один символ корректно, дальше разберусь


      TIC55 Display Module.pdf
    • Гость Иван
      Автор: Гость Иван
      Есть LCD панель V260B3-P09 rev.C1. С платы T-con V260B3-XC09 отпаяна микросхема U1.
      Такая же плата бывает на панелях с другой маркировкой, например DE260AGM-C1.
      В инете не нашёл чётких фото этой платы с читаемой маркировкой микросхемы.
      Если у кого то есть хорошее фото платы или сама плата - пожалуйста, напишите маркировку или сделайте  фото.
      Хочу на основе этой матрицы и китайской универсальной основной платы  сделать ТВ.
    • Автор: Alexander1997
      Доброго времени суток. Понадобилось сделать несложное меню.  Меню построено следующим образом - имеется главный пункт и 4 подпункта. Попасть в нужный подпункт можно только через главное меню. Вот примерный вид главного меню.

      Блок схема меню

       
      Конструкция кода
      typedef struct { uint8_t menu;// uint8_t submenu;// MAIN_MENU, MENU_MANUAL, MENU_AUTO, MENU_SETUP, MENU_START }menuItem; typedef struct Selection { unsigned char id; //Номер меню/подменю unsigned char ent_f : 4; //Флаг входа в подменю unsigned char esc_f : 4; //Флаг выхода из подменю }SL; enum switchVariants : byte { // Определения для переключателя пунктов меню; MAIN_MENU, MENU_MANUAL, MENU_AUTO, MENU_SETUP, MENU_START }; switchVariants switchPointer = MAIN_MENU; // С чего начнем цикл int main (void) { while(1) { } } Посоветуйте как организовать вход и выход из меню? Для этого завел два флага ent и esc. Но как их связать голову ломаю.
    • Автор: dsotm
      Подключаемый через mini Usb Lcd дисплей для компьютера. Позволяет выводить различную информацию на экран. Проверялось в Windows (Lcd Smarie, AIDA64) и Linux (LCDProc, lcd4linux). 
      Платы немного с дефектом - для удобства подключения usb пришлось сточить уголок. Кабель miniUSB к комплект не входит.
      Позволяет подключать к компьютеру дисплеи 1602 или 2004 на контроллере hd44780 (самый распространенный).
      Цены:
      Без дисплея - 600 С дисплеем 1602 - 700 С дисплеем и металлическим корпусом - 900 Демонстрация работы
      Пересылка по РФ почтой + 250.
      Самовывоз - Краснодар.




    • Автор: Timuridze
      Накрылась фоторамка Texet TF-803 которая верой и правдой прослужила несколько лет. Возникла идея задействовать lcd экран и подключить его к raspberry через lvds. (30 pins   LVDS (1 ch, 8-bit) , FPC) Пытался найти даташит он есть  на panelook.com http://www.panelook.com/TM081JFH01_Tianma_8.1_CELL_overview_20071.html но к сожалению у меня нет регистрации, кто нибудь может скачать оттуда pdf со спецификацией?
      Скачал сам все таки...Там какая то сложная система с кредитами, пришлось мыло засветить, теперь спамом замучают наверно.
  • Сообщения

    •  Честно сказать не знаю как лучше, но я взял bta12 на 800 вольт.  
    • давно доказано-соты самая оптимальная форма для вентиляционных отверстий.  
    • Размер отверстий я увеличил до 6 мм. но это ситуацию не спасло. А так чертёж переделал под Щели. 
    • @oleg1ma во первых спасибо за печать Ради эксперимента, намотал 30 витков , многожильным провдом, на колце r63 Epocs N87 , сделал пропил на 2/3 и вот что получил( индуктивность 4,6mH как быть? или можно и так оставить?
    • Хотя бы вот http://www.power-e.ru/2005_01_34.php  Вот кстати в схеме тоже резисторы в затворах при параллельном соединении(pdf)   bnt-v13b_bnt-400a_600a__copy_941.pdf Так же книга Семенов Силовая электроника 2011г. Вот только ж по тому же Семенову где за расчет резистора в затвор, формула расчета резистора, если схема не имеет эмиттерного повторителя с необходимым током, да и у меня  же с выхода ШИМ стоит резистор 68Ом на входе двухтактного эмиттерного повторителя, что с учитыванием Ку транзисторов не даст ток больше 3А, что мне и нужно, но по статьям и книгам по силовой электроникен нужно ставить либо ферритовую трубочку в затворы, либо резисторы 1-10Ом, для уменьшения колебаний(звона) при переключениях при параллельном соединении полевиков, только не забывать что появляются потери на этих резисторах и затягивается время переключения, как я до этого и думал). Значить нужно ставить резисторы в затворы, вот только какого номинала, есть по 2,2Ома, пойдут?
    • Вам же советовали щелевые отверстия горизонтальные - ширина щели в 2 раза превышает ширину перемычек. Улис похожее нарисовал, только вертикальные.
      А вы послали на заказ свою картинку с мелкими отверстиями... Чем больше щелей - меньше сопротивления потоку воздуха, тем меньше обороты вентилятора и т.п.
    • Заметил это когда добавил токовый канал и стал вгонять схему в СС .  Отключил емкости у ОУ , добавил коррекцию в транзисторный каскад УН и случилось чудо -  не возбуждается и амплитуда выбросов - 480мВ при переходе из СС в СV . Правда длительность перехода 1mS почему-то,  пока не выяснил почему , никаких мер повышающих быстродействие не применял . В сравнении со схемами на LM358 работает явно лучше  . Симулятор несколько раз подводил, когда брал модели  из нефирменных  папок  . Если выйдет,  что схема того стоит,  можно будет попробовать в железе . Важно ведь не наличие проблемы , а наличие пути ее решения . Если мы каналы разделяет,  то сначала можно отладить транзисторную часть,  без ОУ , так ведь проще и в симуляторе и в реале ?   Можно попробовать поставить ее от эмиттера Q4 к земле , пусть даже будет шунтирование к земле по ВЧ .  А корректировать Б-К Q4 .