Форум
 

Вернуться   Форум "Фрикер Клуб" - кодграббер своими руками > Основной раздел > Песочница

Важная информация

Ответ
 
Опции темы Опции просмотра
Старый 27.01.2018, 16:46   #1
filbalvan Меню Пользователя
Резидент клуба
 
Регистрация: 28.07.2013
Сообщений: 36
По умолчанию Скелет DXL3000, не понятки с дисплеем

Приветствую всех единомышленников. Пишу скелет на DXL3000, возникли проблемы с дисплеем. При попытке зажечь любой элимент на дисплеи он загорается и тухнет или беспорядочно моргает, понять ни могу почему так происходит. В свое время разбирался с дисплеями шерифа 940, 1055 и страрлайна А91, проблем не было, все работало, а здесь как то не выходит. Может у кого есть опыт работы с этими брелками. Код прилагаю, фото брелка будет поже.

#include <main.h>

#FUSES PROTECT //çàùèòà îò ÷òåíèÿ

#define KEY_F PIN_B6
#define KEY_LOC PIN_B0
#define KEY_UNLOC PIN_B7

#define led_kr PIN_E1//êðàñíûé ñâåòîäèîä
#define led_cn PIN_E0//ñèíèé ñâåòîäèîä
#define VIBRO PIN_F4//âèáðî
#define BEEPER PIN_C2
#define led PIN_F0



#byte LCDDATA0 = 0x110
#byte LCDDATA1 = 0x111
#byte LCDDATA2 = 0x112
#byte LCDDATA3 = 0x113
#byte LCDDATA4 = 0x114
#byte LCDDATA5 = 0x115
#byte LCDDATA6 = 0x116
#byte LCDDATA7 = 0x117
#byte LCDDATA8 = 0x118
#byte LCDDATA9 = 0x119
#byte LCDDATA10 = 0x11a
#byte LCDDATA11 = 0x11b
#byte LCDDATA12 = 0x190
#byte LCDDATA13 = 0x191
#byte LCDDATA14 = 0x192
#byte LCDDATA15 = 0x193
#byte LCDDATA16 = 0x194
#byte LCDDATA17 = 0x195
#byte LCDDATA18 = 0x196
#byte LCDDATA19 = 0x197
#byte LCDDATA20 = 0x198
#byte LCDDATA21 = 0x199
#byte LCDDATA22 = 0x19a
#byte LCDDATA23 = 0x19b

#byte ANSEL = 0x91

byte segments;

volatile unsigned int8 led_counter=0 , led_off_flag=0; //ñ÷åò÷èê òèêîâ òàéìåðà 1
int i;

void setup_lcd_segments()
{

#byte LCDSE0 = 0x11C
#byte LCDSE1 = 0x11D
#byte LCDSE2 = 0x11E
#byte LCDSE3 = 0x19C
#byte LCDSE4 = 0x19D
#byte LCDSE5 = 0x19E

// çäåñü ïîäêëþ÷àåì íóæíûå ïèíû äèñïëåÿ
LCDSE0 = 0b00000110; //7-0
LCDSE1 = 0b00001111; //15-8
LCDSE2 = 0b00011111; //23-16
LCDSE3 = 0b00000000; //31-24
LCDSE4 = 0b11111110; //39-32
LCDSE5 = 0b00000011; //47-40

}

void clear_lcd(void)
{
LCDDATA0=0;
LCDDATA1=0;
LCDDATA2=0;
LCDDATA3=0;
LCDDATA4=0;
LCDDATA5=0;
LCDDATA6=0;
LCDDATA7=0;
LCDDATA8=0;
LCDDATA9=0;
LCDDATA10=0;
LCDDATA11=0;
LCDDATA12=0;
LCDDATA13=0;
LCDDATA14=0;
LCDDATA15=0;
LCDDATA16=0;
LCDDATA17=0;
LCDDATA18=0;
LCDDATA19=0;
LCDDATA20=0;
LCDDATA21=0;
LCDDATA22=0;
LCDDATA23=0;
}

void Beep(void)
{
int i;
for(i = 0; i != 50; i++)
{
output_high (Beeper);
delay_us(350);
output_low (Beeper);
delay_us(350);
}
}

void BGGGG(){
output_high (VIBRO);
delay_ms(100);
output_low (VIBRO);
delay_ms(100);
// output_high (LED);
}



void main()
{
port_B_pullups(0xC1);
//port_B_pullups(0xFF);
ANSEL=0; // Ïîðòû I/O íàñòðîåíû êàê öèôðîâûå
setup_lcd(LCD_MUX14|LCD_INTRC|LCD_TYPE_B_WAVE,0,0x 00);
setup_lcd_segments();


setup_timer_0(RTCC_INTERNAL|RTCC_DIV_64|RTCC_8_bit ); //16,3 ms overflow
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); //65,5 ms overflow

setup_oscillator(OSC_8MHZ);

// output_low (PIN_C3);
output_high (led_kr);
output_high(led_cn);
BGGGG();
// key();
beep();
lcd_symbol(0x80,COM0+1);
lcd_symbol(0x80,COM0+2);
lcd_symbol(0x80,COM0+8);
lcd_symbol(0x80,COM0+9);
lcd_symbol(0x80,COM0+10);
lcd_symbol(0x80,COM0+11);
lcd_symbol(0x80,COM0+16);
lcd_symbol(0x80,COM0+17);
lcd_symbol(0x80,COM0+18);
lcd_symbol(0x80,COM0+19);
lcd_symbol(0x80,COM0+20);
lcd_symbol(0x80,COM0+33);
lcd_symbol(0x80,COM0+34);
lcd_symbol(0x80,COM0+35);
lcd_symbol(0x80,COM0+36);
lcd_symbol(0x80,COM0+37);
lcd_symbol(0x80,COM0+38);
lcd_symbol(0x80,COM0+39);
lcd_symbol(0x80,COM0+40);
lcd_symbol(0x80,COM0+41);

lcd_symbol(0x80,COM1+1);
lcd_symbol(0x80,COM1+2);
lcd_symbol(0x80,COM1+8);
lcd_symbol(0x80,COM1+9);
lcd_symbol(0x80,COM1+10);
lcd_symbol(0x80,COM1+11);
lcd_symbol(0x80,COM1+16);
lcd_symbol(0x80,COM1+17);
lcd_symbol(0x80,COM1+18);
lcd_symbol(0x80,COM1+19);
lcd_symbol(0x80,COM1+20);
lcd_symbol(0x80,COM1+33);
lcd_symbol(0x80,COM1+34);
lcd_symbol(0x80,COM1+35);
lcd_symbol(0x80,COM1+36);
lcd_symbol(0x80,COM1+37);
lcd_symbol(0x80,COM1+38);
lcd_symbol(0x80,COM1+39);
lcd_symbol(0x80,COM1+40);
lcd_symbol(0x80,COM1+41);

lcd_symbol(0x80,COM2+1);
lcd_symbol(0x80,COM2+2);
lcd_symbol(0x80,COM2+8);
lcd_symbol(0x80,COM2+9);
lcd_symbol(0x80,COM2+10);
lcd_symbol(0x80,COM2+11);
lcd_symbol(0x80,COM2+16);
lcd_symbol(0x80,COM2+17);
lcd_symbol(0x80,COM2+18);
lcd_symbol(0x80,COM2+19);
lcd_symbol(0x80,COM2+20);
lcd_symbol(0x80,COM2+33);
lcd_symbol(0x80,COM2+34);
lcd_symbol(0x80,COM2+35);
lcd_symbol(0x80,COM2+36);
lcd_symbol(0x80,COM2+37);
lcd_symbol(0x80,COM2+38);
lcd_symbol(0x80,COM2+39);
lcd_symbol(0x80,COM2+40);
lcd_symbol(0x80,COM2+41);

lcd_symbol(0x80,COM3+1);
lcd_symbol(0x80,COM3+2);
lcd_symbol(0x80,COM3+8);
lcd_symbol(0x80,COM3+9);
lcd_symbol(0x80,COM3+10);
lcd_symbol(0x80,COM3+11);
lcd_symbol(0x80,COM3+16);
lcd_symbol(0x80,COM3+17);
lcd_symbol(0x80,COM3+18);
lcd_symbol(0x80,COM3+19);
lcd_symbol(0x80,COM3+20);
lcd_symbol(0x80,COM3+33);
lcd_symbol(0x80,COM3+34);
lcd_symbol(0x80,COM3+35);
lcd_symbol(0x80,COM3+36);
lcd_symbol(0x80,COM3+37);
lcd_symbol(0x80,COM3+38);
lcd_symbol(0x80,COM3+39);
lcd_symbol(0x80,COM3+40);
lcd_symbol(0x80,COM3+41);

while(TRUE)
{

//delay_ms(100);
//output_low (led_kr);
//output_low(led_cn);
//delay_ms(100);

if (input(KEY_F)!=1)
{
while (input(KEY_F)!=1);
BGGGG();
beep();
BGGGG();
beep();
BGGGG();
beep();
}
if (input(KEY_UNLOC)!=1)
{
while (input(KEY_UNLOC)!=1);
// key();
BGGGG();
beep();
BGGGG();
beep();
}
if (input(KEY_LOC)!=1)
{
while (input(KEY_LOC)!=1);
// key();
BGGGG();
beep();
}
}

}
filbalvan вне форума   Ответить с цитированием
Старый 27.01.2018, 16:55   #2
filbalvan Меню Пользователя
Резидент клуба
 
Регистрация: 28.07.2013
Сообщений: 36
По умолчанию Re: Скелет DXL3000, не понятки с дисплеем

Такой брел
Изображения
Тип файла: jpg 338_large.jpg (45.0 Кб, 36 просмотров)
filbalvan вне форума   Ответить с цитированием
Старый 01.02.2018, 14:08   #3
filbalvan Меню Пользователя
Резидент клуба
 
Регистрация: 28.07.2013
Сообщений: 36
По умолчанию Re: Скелет DXL3000, не понятки с дисплеем

Не много упорядочил код. Основные сегменты все светятся, но вот с цифрами проблемы, зажигаеш допустим 3 а увидеть ее тяжело т.к. не много подсвечиваются еще некоторые палки. Может кто подскажит как правильно инициализировать дисплей, подозреваю именно в этом проблема

Добавлено через 1 минуту
#include <main.h>

#FUSES PROTECT //çàùèòà îò ÷òåíèÿ

#define KEY_F PIN_B6
#define KEY_LOC PIN_B0
#define KEY_UNLOC PIN_B7

#define led_kr PIN_E1//êðàñíûé ñâåòîäèîä
#define led_cn PIN_E0//ñèíèé ñâåòîäèîä
#define VIBRO PIN_F4//âèáðî
#define BEEPER PIN_B3//ïèùàëêà
#define led PIN_C3//ïîäñâåòêà äèñïëåÿ



#byte LCDDATA0 = 0x110
#byte LCDDATA1 = 0x111
#byte LCDDATA2 = 0x112
#byte LCDDATA3 = 0x113
#byte LCDDATA4 = 0x114
#byte LCDDATA5 = 0x115
#byte LCDDATA6 = 0x116
#byte LCDDATA7 = 0x117
#byte LCDDATA8 = 0x118
#byte LCDDATA9 = 0x119
#byte LCDDATA10 = 0x11a
#byte LCDDATA11 = 0x11b
#byte LCDDATA12 = 0x190
#byte LCDDATA13 = 0x191
#byte LCDDATA14 = 0x192
#byte LCDDATA15 = 0x193
#byte LCDDATA16 = 0x194
#byte LCDDATA17 = 0x195
#byte LCDDATA18 = 0x196
#byte LCDDATA19 = 0x197
#byte LCDDATA20 = 0x198
#byte LCDDATA21 = 0x199
#byte LCDDATA22 = 0x19a
#byte LCDDATA23 = 0x19b

#byte ANSEL = 0x91
// à--------á--------ñ--------ä--------å--------ô--------æ
#define DIGIT0 COM2+39, COM1+39, COM3+39, COM3+40, COM0+39, COM0+40, COM1+40
#define DIGIT1 COM2+41, COM1+41, COM3+41, COM3+33, COM0+41, COM0+33, COM1+33
#define DIGIT2 COM2+34, COM1+34, COM3+34, COM3+35, COM0+34, COM0+35, COM1+35
#define DIGIT3 COM2+1, COM1+1, COM3+1, COM3+2, COM0+1, COM0+2, COM1+2

// 0----1----2----3----4----5----6----7----8----9----A----B----C----D----E----F
byte const Digits_Map[16] = {0xF6,0x06,0xDC,0x9E,0x2E,0xBA,0xFA,0x16,0xFE,0xBE ,0x7E,0xEA,0xF0,0xCE,0xF8,0x78};

#define ant_base COM0+8 // àíòåíà
#define antM COM3+8 // âîëíû àíòåíû
#define antB COM3+17 // âîëíû àíòåíû

#define propeller1 COM2+37 // ñåãìåíò ïðîïåëëåðà
#define propeller2 COM2+38 // ñåãìåíò ïðîïåëëåðà

#define ramka_1 COM0+9 //ñåãìåíò ðàìêà 1
#define ramka_2 COM0+10 //ñåãìåíò ðàìêà 2
#define ramka_3 COM0+11 //ñåãìåíò ðàìêà 3
#define ramka_4 COM0+16 //ñåãìåíò ðàìêà 4

#define kanal COM1+8 //ñåãìåíò êàíàë
#define kanal_1 COM1+19 //ñåãìåíò êàíàë 1
#define kanal_2 COM1+11 //ñåãìåíò êàíàë 2
#define kanal_3 COM1+16 //ñåãìåíò êàíàë 3
#define kanal_4 COM3+16 //ñåãìåíò êàíàë 4

#define strelka COM0+17//ñòðåëêà ïîä ìàøèíîé
//#define no_dinamik COM0+19 //- ÷åðòî÷êè ïåðå÷åðêèâàþùèå äèíàìèê
#define tormoz COM0+38 //çíàê òîðìîçà
#define fary COM0+20 //ôàðû

#define zamok COM0+36 //çàìîê
#define zamok_lock COM3+36 //äóæêà çàêðûòîãî çàìêà
#define zamok_unl COM3+37 //îòêðûòûé çàìîê

#define klych COM1+37 //ñåãìåíò êëþ÷à çàæèãàíèÿ
#define molot COM0+37 // - ìîëîòîê

#define dver COM1+18 //- ñåãìåíò îòêðûòîé äâåðè

#define trunk COM0+18 //- TRUNK áàãàæíèê
#define kapot COM0+19 // êàïîò

#define bat1 COM3+9 //- ïåðâûé êóáèê è êîðïóñ áàòàðåè
#define bat2 COM3+11 // -âòîðîé êóáèê áàòàðåè
#define bat3 COM3+10 // -òðåòèé êóáèê áàòàðåè

#define rValet COM1+10 //ñåãìåíò ðàìêà 1
#define rCheck COM1+19 //ñåãìåíò ðàìêà ÷åê


byte segments;

volatile unsigned int8 led_counter=0 , led_off_flag=0; //ñ÷åò÷èê òèêîâ òàéìåðà 1
int i;
int unlock=0,lock=0,f=0;

void setup_lcd_segments()
{

#byte LCDSE0 = 0x11C
#byte LCDSE1 = 0x11D
#byte LCDSE2 = 0x11E
#byte LCDSE3 = 0x19C
#byte LCDSE4 = 0x19D
#byte LCDSE5 = 0x19E

// çäåñü ïîäêëþ÷àåì íóæíûå ïèíû äèñïëåÿ
LCDSE0 = 0b00000110; //7-0
LCDSE1 = 0b00001111; //15-8
LCDSE2 = 0b00011111; //23-16
LCDSE3 = 0b00000000; //31-24
LCDSE4 = 0b11111110; //39-32
LCDSE5 = 0b00000011; //47-40

}

void clear_lcd(void)
{
LCDDATA0=0;
LCDDATA1=0;
LCDDATA2=0;
LCDDATA3=0;
LCDDATA4=0;
LCDDATA5=0;
LCDDATA6=0;
LCDDATA7=0;
LCDDATA8=0;
LCDDATA9=0;
LCDDATA10=0;
LCDDATA11=0;
LCDDATA12=0;
LCDDATA13=0;
LCDDATA14=0;
LCDDATA15=0;
LCDDATA16=0;
LCDDATA17=0;
LCDDATA18=0;
LCDDATA19=0;
LCDDATA20=0;
LCDDATA21=0;
LCDDATA22=0;
LCDDATA23=0;
}

void Beep(void)
{
int i;
for(i = 0; i != 50; i++)
{
output_high (Beeper);
delay_us(350);
output_low (Beeper);
delay_us(350);
}
}

void BGGGG(){
output_high (VIBRO);
delay_ms(100);
output_low (VIBRO);
delay_ms(100);
// output_high (LED);
}

void Key(void){
output_high (led);
//output_low (led);
led_counter = 0;
led_off_flag = 1;
enable_interrupts(INT_TIMER1);
}

#INT_TIMER1
void TIMER1_isr(void)
{
set_timer1(0);
if (led_off_flag == 1) {
led_counter++;
if (led_counter == 200){
led_counter =0;
led_off_flag = 0;
//output_high (LED);
output_low (LED);
disable_interrupts(INT_TIMER1);
}
}
}

void main()
{
port_B_pullups(0xC1);
//port_B_pullups(0xFF);
ANSEL=0; // Ïîðòû I/O íàñòðîåíû êàê öèôðîâûå
setup_lcd(LCD_MUX14|LCD_INTRC|LCD_TYPE_B_WAVE,0,0x 00);
setup_lcd_segments();


setup_timer_0(RTCC_INTERNAL|RTCC_DIV_64|RTCC_8_bit ); //16,3 ms overflow
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); //65,5 ms overflow

enable_interrupts(GLOBAL);
setup_oscillator(OSC_8MHZ);

//output_high (led_kr);
//output_high(led_cn);

//lcd_symbol(0x80,COM0+39);//1-å
//lcd_symbol(0x80,COM0+40);//1-ô
//lcd_symbol(0x80,COM1+39);//1-á
//lcd_symbol(0x80,COM1+40);//1-æ
//lcd_symbol(0x80,COM2+39);//1-à
//lcd_symbol(0x80,COM2+40);//òî÷êà
//lcd_symbol(0x80,COM3+39);//1-c
//lcd_symbol(0x80,COM3+40);//1-ä

//lcd_symbol(0x80,COM0+33);//2-ô
//lcd_symbol(0x80,COM0+41);//2-å
//lcd_symbol(0x80,COM3+41);//2-c
//lcd_symbol(0x80,COM2+41);//2-à
//lcd_symbol(0x80,COM1+41);//2-á
//lcd_symbol(0x80,COM1+33);//2-æ
//lcd_symbol(0x80,COM2+33);//:
//lcd_symbol(0x80,COM3+33);//2-ä

//lcd_symbol(0x80,COM0+34);//3-e
//lcd_symbol(0x80,COM0+35);//3-ô
//lcd_symbol(0x80,COM3+34);//3-c
//lcd_symbol(0x80,COM3+35);//3-ä
//lcd_symbol(0x80,COM2+34);//3-à
//lcd_symbol(0x80,COM2+35);//ãðàäóñû
//lcd_symbol(0x80,COM1+34);//3-á
//lcd_symbol(0x80,COM1+35);//3-æ

//lcd_symbol(0x80,COM2+1);//4-a
//lcd_symbol(0x80,COM0+1);//4-å
//lcd_symbol(0x80,COM0+2);//4-ô
//lcd_symbol(0x80,COM2+2);//êîëîêîëü÷èê
//lcd_symbol(0x80,COM3+1);//4-ñ
//lcd_symbol(0x80,COM3+2);//4-ä
//lcd_symbol(0x80,COM1+2);//4-æ
//lcd_symbol(0x80,COM1+1);//4-á

//lcd_symbol(0x80,COM1+18);//dver
//lcd_symbol(0x80,COM1+20);//óäàð îò ìîëîòêà

//lcd_symbol(0x80,COM2+8);//ðàìêà ïèñòîëåòà
//lcd_symbol(0x80,COM2+19);//ðàìêà äèíàìèê
//lcd_symbol(0x80,COM1+38);//ðàìêà âåíòåëÿòîðà
//lcd_symbol(0x80,COM2+10);//ðàìêà âàëåò
//lcd_symbol(0x80,COM2+16);//ðàìêà ìóò

//lcd_symbol(0x80,COM2+9);//ïèñòîëåò
//lcd_symbol(0x80,COM2+11);//âàëåò
//lcd_symbol(0x80,COM2+17);//äèíàìèê
//lcd_symbol(0x80,COM1+17);//dinamik
//lcd_symbol(0x80,COM2+18);// ïåðå÷åðêíóòûé äèíàìèê
//lcd_symbol(0x80,COM2+20);//÷åê
//lcd_symbol(0x80,COM2+37);//âåíòåëÿòîð
//lcd_symbol(0x80,COM2+38);//âåíòåëÿòîð

//lcd_symbol(0x80,COM3+9);//áàòàðåÿ 1ä
//lcd_symbol(0x80,COM3+10);//áàòàðåÿ 3ä
//lcd_symbol(0x80,COM3+11);//áàòàðåÿ 2ä

//lcd_symbol(0x80,COM3+16);//êàíàë 4
//lcd_symbol(0x80,COM1+16);//êàíàë 3
//lcd_symbol(0x80,COM1+11);//êàíàë 2
//lcd_symbol(0x80,COM1+19);//êàíàë 1
//lcd_symbol(0x80,COM1+8);//êàíàë

//lcd_symbol(0x80,COM3+17);//âîëíû
//lcd_symbol(0x80,COM3+8);//âîëíû ìàëåíüêèå
//lcd_symbol(0x80,COM3+18);//auto arm
//lcd_symbol(0x80,COM3+38);//ÀÊÁ
//lcd_symbol(0x80,COM1+36);//êðåñò áîëüøîé
//lcd_symbol(0x80,COM1+37);//êëþ÷
//lcd_symbol(0x80,COM3+19);//öåíòð
//lcd_symbol(0x80,COM3+20);//êâàäðàò öåíòð
//lcd_symbol(0x80,COM2+36);//öåíòð êðåñò

//lcd_symbol(0x80,COM3+36);//çàìîê çàêð
//lcd_symbol(0x80,COM3+37);//çàìîê îòêð

BGGGG();
key();
beep();

lcd_symbol(0x80,bat1);
lcd_symbol(0x80,bat2);
lcd_symbol(0x80,bat3);

while(TRUE)
{
lcd_symbol(Digits_Map[lock],DIGIT0);
lcd_symbol(Digits_Map[unlock],DIGIT1);
lcd_symbol(Digits_Map[f],DIGIT2);

if (input(KEY_LOC)!=1)
{
while (input(KEY_LOC)!=1);
lock++;
if (lock == 16) lock=0;
key();
BGGGG();
beep();
}
if (input(KEY_UNLOC)!=1)
{
while (input(KEY_UNLOC)!=1);
unlock++;
if (unlock == 16) unlock=0;
key();
BGGGG();
beep();
}
if (input(KEY_F)!=1)
{
while (input(KEY_F)!=1);
f++;
if (f == 16) f=0;
key();
BGGGG();
beep();
}
}

}
filbalvan вне форума   Ответить с цитированием
Старый 01.02.2018, 18:18   #4
EPA Меню Пользователя
Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,057
По умолчанию Re: Скелет DXL3000, не понятки с дисплеем

Код:
if (lock == 16) lock=0;
...
if (unlock == 16) unlock=0;
...
if (f == 16) f=0;
...
ИМХО: ->
Такие конструкции с оператором "==" чреваты особенно в главном цикле при использовании прерываний.
При "==" камень чтоб сравнить значения между собой, сначало записывает значение во временный регистр ( назовём его TempR), а потом уже сравнивает. Теперь допустим случилось прерывание, и как обычно бывает по закону Подлости в это время сравнения. А Мля, подпрограмма Прерывания, так же использует этот TempR, но уже для своих телодвижении и конечно же затерёт предыдущие значения TempR и вставит свои не уведомив никого. И после выхода из подпрограмы прерывания, функция main() об этом и знать не будет об этом недоразумении. И тогда, например сравнение lock == 16 не сработает. while(1) {} дальше будет колбасит код до следующего раза 16. А поезд, то ушёл! А весь алгоритм - коту под хвост!
Существует два-три ( наверное и более) решения:
1) Отказаться "==" , а воспользоваться ">=";
2) Использовать конструкции clt() ... sei()

Последний раз редактировалось EPA; 01.02.2018 в 23:14.
EPA вне форума   Ответить с цитированием
Старый 01.02.2018, 23:30   #5
Luke_Skywalker Меню Пользователя
Вступил в клуб
 
Аватар для Luke_Skywalker
 
Регистрация: 08.12.2011
Сообщений: 53
По умолчанию Re: Скелет DXL3000, не понятки с дисплеем

был у меня затык с одним проектом(автомобильная тематика,открытие багажника актуатором) с "==" , теперь понятно, почему не отрабатывало условие )) Спасибо.

Добавлено через 7 минут
Цитата:
Сообщение от filbalvan
Такой брел

там PIC ?Что у тебя за компилятор?
Luke_Skywalker вне форума   Ответить с цитированием
Старый 02.02.2018, 00:52   #6
filbalvan Меню Пользователя
Резидент клуба
 
Регистрация: 28.07.2013
Сообщений: 36
По умолчанию Re: Скелет DXL3000, не понятки с дисплеем

За совет с "==" спасибо, учту. Вопросс в другом, почему подсвечиваются не нужные сегменты на дисплеи и как с этим бороться?
Компилятор CCS.

Последний раз редактировалось filbalvan; 02.02.2018 в 00:56.
filbalvan вне форума   Ответить с цитированием
Старый 02.02.2018, 08:11   #7
EPA Меню Пользователя
Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,057
По умолчанию Re: Скелет DXL3000, не понятки с дисплеем

Я думаю дело не в программе, а в самом железе: шлейф, места пайки.А например бывает такая ситуёвина : при сильной влажности, начинают подсвечиваться лишние сегменты.
EPA вне форума   Ответить с цитированием
Старый 02.02.2018, 09:00   #8
Paul74s Меню Пользователя
Резидент клуба
 
Аватар для Paul74s
 
Регистрация: 16.11.2012
Сообщений: 589
По умолчанию Re: Скелет DXL3000, не понятки с дисплеем

Много-СОМ-овые ЖКИ работают на переменном аналоговом напряжении (разные уровни напряжения и переменная полярность).
Засветка иных символов - это скорее всего неверная настройка кол-ва СОМ-ног драйвера - проверяй и исправляй
Paul74s вне форума   Ответить с цитированием
Старый 02.02.2018, 16:01   #9
filbalvan Меню Пользователя
Резидент клуба
 
Регистрация: 28.07.2013
Сообщений: 36
По умолчанию Re: Скелет DXL3000, не понятки с дисплеем

Дисплей вызванивал два раза, ошебиться не мог, в нем используется 4-е сом. Подозреваю что проблема в строке setup_lcd(LCD_MUX14|LCD_INTRC|LCD_TYPE_B_WAVE,0,0x 00); точнее, в место нулей должны стоять какие то значения, первая цифра делитель, а вторая не помню что.
filbalvan вне форума   Ответить с цитированием
Старый 02.02.2018, 16:24   #10
Paul74s Меню Пользователя
Резидент клуба
 
Аватар для Paul74s
 
Регистрация: 16.11.2012
Сообщений: 589
По умолчанию Re: Скелет DXL3000, не понятки с дисплеем

Вполне возможно установка напряжения - покрути значения - может чего добьешся
Paul74s вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 14:47. Часовой пояс GMT +3.


vBulletin 4.1.0 Перевод: zCarot
(C) www.phreakerclub.com
Яндекс.Метрика