Дмитрий Вас

Members
  • Публикации

    1 285
  • Зарегистрирован

  • Посещение

Репутация

7 Обычный

О Дмитрий Вас

  • Звание
    Живу я тут

Информация

  • Пол
    Мужчина
  • Город
    Кубань

Электроника

  • Стаж в электронике
    Не связан с электроникой

Посетители профиля

1 962 просмотра профиля
  1. Вопросы От Начинающих По Мк

    #include "main.h" #define sbi(x, y) (x |= (1 << y)) /*set Register x of y*/ #define cbi(x, y) (x &= ~(1 <<y )) /*Clear Register x of y*/ #define uchar unsigned char #define uint unsigned int //Defined HT1621's command (обозначим команды) #define ComMode 0x52 //4COM,1/3bias 1000 010 1001 0 #define RCosc 0x30 //встроенный RC-генератор (включено по умолчанию)1000 0011 0000 #define LCD_on 0x06 //on LCD #define LCD_off 0x04 //off LCD #define Sys_en 0x02 //включаем системный осцилятор дисплея 1000 0000 0010 #define CTRl_cmd 0x80 //записываем control cmd #define Data_cmd 0xa0 //записываем data cmd // // назначаем порты HT1621 data port #define CS 2 //это ss в атмеге8 порт PB2 #define WR 5 //sck PB5 #define DATA 3 //mosi PB3 #define CS1 (PORTB|=(1<<2)) #define CS0 (PORTB&=~(1<<2))//digitalWrite #define WR1 (PORTB|=(1<<5)) #define WR0 (PORTB&=~(1<<5)) #define DATA1 (PORTB|=(1<<3)) #define DATA0 (PORTB&=~(1<<3)) /*void SPI_init(void) { DDRB |= ((1<<PORTB2)|(1<<PORTB3)|(1<<PORTB5)); //ножки SPI на выход PORTB &= ~((1<<PORTB2)|(1<<PORTB3)|(1<<PORTB5)); //низкий уровень SPCR |= (1 << SPE) | (1 << MSTR)| (1<<SPR0);//включим шину, объ¤вим ведущим, делитель 16 } void SPI_SendByte (char byte) { SPDR = byte; while (!(SPSR & (1 << SPIF))); }*/ char dispnum[6]={0x00,0x00,0x00,0x00,0x00,0x00}; /*0,1,2,3,4,5,6,7,8,9,A,b,C,c,d,E,F,H,h,L,n,N,o,P,r,t,U,-, ,*/ //const char num[]={0x7D,0x60,0x3E,0x7A,0x63,0x5B,0x5F,0x70,0x7F,0x7B,0x77,0x4F,0x1D,0x0E,0x6E,0x1F,0x17,0x67,0x47,0x0D,0x46,0x75,0x37,0x06,0x0F,0x6D,0x02,0x00,}; const char num[]={0xD7,0x50,0xE3,0xF1,0x74,0xB5,0xB7,0xD0,0xF7,0xF5,0xF6,0x37,0x87,0X23,0X73,0XA7,0XA6,0X76,0X36,0X07,0XD6,0XE6,0X22,0X27,0X57,0X20,0x00,}; /**------------------------------------------------------------------------- Name: SendBit_1621(отправлять данные) ---------------------------------------------------------------------------*/ void SendBit_1621(uchar sdata,uchar cnt) //Первый бит { uchar i; for(i=0;i<cnt;i++) { WR0; _delay_ms(20); if(sdata&0x80) DATA1; else DATA0; _delay_ms(20); WR1; _delay_ms(20); sdata<<=1; } _delay_ms(20); } /**------------------------------------------------------------------------- Name: SendCmd(отправлять cmd) //Запись MODE «100» и 9 бит команды ---------------------------------------------------------------------------*/ void SendCmd_1621(uchar command) { CS0; SendBit_1621(0x80,4); SendBit_1621(command,8); CS1; } /**------------------------------------------------------------------------- Name: Write_1621 отправлять data and cmd) ---------------------------------------------------------------------------*/ void Write_1621(uchar addr,uchar sdata) { addr<<=3; CS0; SendBit_1621(0xa0,3); //запись MODE“101” SendBit_1621(addr,6); //запись addr high 6 bits SendBit_1621(sdata,8); //запись data 8 bits CS1; } /**------------------------------------------------------------------------- Name: all_off(Clear Display) ---------------------------------------------------------------------------*/ void HT1621_all_off(uchar num) { uchar i; uchar addr=0; for(i=0;i<num;i++) { Write_1621(addr,0x00); addr+=1; } } /**************************************************************************** Name: all_on(All lit) ****************************************************************************/ void HT1621_all_on(uchar num) { uchar i; uchar addr=0; for(i=0;i<num;i++) { Write_1621(addr,0xff); addr+=1; } } /**************************************************************************** Name: all_on_num(All lit,Display the same number) ****************************************************************************/ void HT1621_all_on_num(uchar num,uchar xx) { uchar i; uchar addr=0; for(i=0;i<num;i++) { Write_1621(addr,xx); addr+=1; } } /**************************************************************************** Name: Init_1621(initialize 1621) *****************************************************************************/ void Init_1621(void) { SendCmd_1621(Sys_en); SendCmd_1621(RCosc); SendCmd_1621(ComMode); SendCmd_1621(LCD_on); } /**************************************************************************** Name: LCDoff(off 1621) *****************************************************************************/ void LCDoff(void) { SendCmd_1621(LCD_off); } /**************************************************************************** Name: LCDon(on 1621) *****************************************************************************/ void LCDon(void) { SendCmd_1621(LCD_on); } void displayallnum(unsigned int n) //Display all digital characters { uchar i,j; uchar addr=0; for(i=0;i<n;i++) { for(j=0;j<27;j++) { Write_1621(addr,num[j]); _delay_ms(100) ; } addr+=1; } } //By-bit display 8 characters and decimal point void displayall8(void) {uchar i; HT1621_all_off(16); for(i=0;i<16;i++) { Write_1621(i,0b11110111); _delay_ms(50) ; } } /**************************************************************************** Name: displaydata(unsigned long int t) Display data t : Data to be displayed *****************************************************************************/ void displaydata(unsigned long int t) {uchar i; dispnum[5]=num[t/100000]; dispnum[4]=num[(t/10000)%10]; dispnum[3]=num[(t/1000)%10]; dispnum[2]=num[(t/100)%10]; dispnum[1]=num[(t/10)%10]; dispnum[0]=num[t%10]; for(i=0;i < 6 ;i++) { Write_1621(i,dispnum); } } void setup() { DDRB|=(1<<CS)|(1<<WR)|(1<<DATA);//CS,WR,DATA на выход /* pinMode(CS, OUTPUT); //Pin 2 pinMode(WR, OUTPUT); //Pin 5 pinMode(DATA, OUTPUT); //Pin 3*/ } void loop() { long int t=0; uchar i; _delay_ms(50) ; Init_1621() ; HT1621_all_on(16) ; _delay_ms(300) ; HT1621_all_off(16); _delay_ms(300) ; HT1621_all_on(16) ; _delay_ms(300) ; HT1621_all_off(16); _delay_ms(300) ; for(i=0;i<27;i++) { HT1621_all_on_num(16,num); _delay_ms(200) ; HT1621_all_off(16); } while(1) { //display 0 to 99999 for(t=0;t<99999;t++) { displaydata(t); _delay_ms(100) ; } //displaydata : "0 1 2 3 4 5 6 7 8 9 A b" //for(i=0;i < 16 ;i++) //{ //Write_1621(i,num); //} //displaybihua(); //_delay_ms(1000); } } вот мои каракули. это было написано под ардуино и на сколько знаний хватило переделал. но вроде все исправил да пишет id returned 1 exit status/collect2.exe
  2. Курилка

    0.3 который чтоли?
  3. Курилка

    что за D в формуле?
  4. Блок Питания На Ir2153

    Это писал видимо очень "УМНЫЙ" человек
  5. Блок Питания На Ir2153

    Форум опасно.[emoji5] спасибо скупой
  6. Блок Питания На Ir2153

    Господа посоветуйте чего почитать по полумостам, а то глаза разбегаются.
  7. Блок Питания На Ir2153

    Вы скорей прозревший пастырь. Иногда.[emoji5]
  8. Блок Питания На Ir2153

    Григорий пусть люди разговаривают и идут к истине.
  9. Расчет импульсного трансформатора.

    Если сделать как в расчете т.е. два выхода да еще подгрузить чуток. То падение будет меньше, а уровень напряжения к реальному ближе. Напряжение всегда будет как в расчетке вашей: мин ном макс.
  10. Курилка

    Посоветуйте книгу по импульсным источникам питания, а то глаза разбегаются.
  11. Расчет импульсного трансформатора.

    Хз но как то работают на обычных сетевых трансах. Для увеличения мощности расчитывают с запасом по току.
  12. Расчет импульсного трансформатора.

    Номинальное у вас показало 13в, это раз. Число витков 4.6 ну округлите в меньшую сторону и нагрузите после фильтра резистором. К тому же вы не учли тот факт что в проге у вас еще один выход который погасит мощность на порядок. Что кстати скажется и на напряжении 12 вольтового выхода!
  13. Расчет импульсного трансформатора.

    Я бы на вашем месте не заморачивался, ну сделайте 4 витка и пользуйтесь. На такую погрешность причины могут быть разные, начиная от проницаемости сердечника до банальной ошибки в числе витков в первичке.
  14. Блок Питания На Ir2153

    Полевики это подобие конденсатора затвор нужно разряжать поэтому ставят резистор. Без него работать будет но не долго т.к. разряжаться будет через цепи микры.
  15. Расчет импульсного трансформатора.

    Че то я не понял 19,4 или 20? А частота точно 47к? И при нашрузке ничуть не село? Что то сильно сомниваюсь! При ос с стабилизацией на крутых микрах такого только можно добиться.