Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Управление на 4х7сегмента с PIC
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=8923
Страница 1 от 1

Автор:  RM [ Вто Юни 07, 2011 5:11 pm ]
Заглавие:  Управление на 4х7сегмента с PIC

Срам не срам ще питам ... Как ставаше? Начина за който се сещам , ми се вижда много дървен.
Код:
char digit[]={63,6,91,79,102,109,125,7,127,111,0};     
//char invdigit[]={192,249,164,176,153,146,130,248,128,144,255};
void OutLED(unsigned char i1)
{
if(i1&1){output_high(PIN_B0);}else{output_low(PIN_B0);}
if(i1&2){output_high(PIN_B1);}else{output_low(PIN_B1);}
if(i1&4){output_high(PIN_B2);}else{output_low(PIN_B2);}
if(i1&8){output_high(PIN_B3);}else{output_low(PIN_B3);}
if(i1&16){output_high(PIN_B4);}else{output_low(PIN_B4);}
if(i1&32){output_high(PIN_B5);}else{output_low(PIN_B5);}
if(i1&64){output_high(PIN_B6);}else{output_low(PIN_B6);}
if(i1&128){output_high(PIN_B7);}else{output_low(PIN_B7);}
}


void main()
{

//port_c_pullups(TRUE);
//setup_wdt(WDT_ON);
//setup_wdt(WDT_18MS|WDT_DIV_16);      //~18.0 ms reset
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1|RTCC_8_bit);      //128 us overflow


output_high(PIN_A0);
output_low(PIN_A1);


OutLED(digit[5]);

}

Не се сещам за друг начин :oops: . Интересува ме принципа.

Автор:  MYXATA [ Вто Юни 07, 2011 7:09 pm ]
Заглавие: 

http://www.gooligum.com.au/tutorials/ba ... se_C_4.pdf

Proncipa e , 4e trebe da se 4ete :!:
sorry za maimunicata

Автор:  michev [ Вто Юни 07, 2011 7:20 pm ]
Заглавие: 

Без малко да стане колизия :)
http://www.gooligum.com.au/tutorials/baseline/PIC_Base_A_8.pdf
Това ми се види най - точно от към обяснения.

И все пак много на бързо и на кратко -
Тия 7 сег. индикатори се връзват към пик-а (7-те извода на всичките индикатори заедно към 7 извода на пик-а )
Общия - отново към пика, но на всеки индикатор - на отделен извод и не директно ами през някой транзистор.
В програмата правиш цикъл през точно определено време (колко точно - гугъл), който да редува тия общи изводи на индикаторите, и през времето в което е отпушен конкретен извод- през 7-те извода му подаваш какво да покаже. Във всяко едно време имаш само 1 активен индикатор.
възможните комбинации които може да покаже един индикатор се записват в масив. Този масив ти служи за намиране на точната комбинация която искаш да покажеш. Като за индекс на масива подаваш числото което ще изобразиш. Това което ще вземеш от масива го плясваш директно към ПОРТх на който са ти вързани 7-те сегмента на индикатора.

Автор:  RM [ Вто Юни 07, 2011 7:53 pm ]
Заглавие: 

Цитат:
го плясваш директно към ПОРТх на който са ти вързани 7-те сегмента на индикатора

Да де , ама чак сега намерих как да правя в това в CCS "output_b (value)"
Код:

void OutLED(unsigned char i1)
{
//if(i1&1){output_high(PIN_B0);}else{output_low(PIN_B0);}
//if(i1&2){output_high(PIN_B1);}else{output_low(PIN_B1);}
//if(i1&4){output_high(PIN_B2);}else{output_low(PIN_B2);}
//if(i1&8){output_high(PIN_B3);}else{output_low(PIN_B3);}
//if(i1&16){output_high(PIN_B4);}else{output_low(PIN_B4);}
//if(i1&32){output_high(PIN_B5);}else{output_low(PIN_B5);}
//if(i1&64){output_high(PIN_B6);}else{output_low(PIN_B6);}
//if(i1&128){output_high(PIN_B7);}else{output_low(PIN_B7);}
output_b (i1);


}


Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/