Jump to content

Схеман

Members
  • Content Count

    43
  • Joined

  • Last visited

Community Reputation

2 Обычный

About Схеман

  • Rank
    Новенький

Информация

  • Город
    Сыктывкар

Электроника

  • Стаж в электронике
    Менее года
  • Сфера радиоэлектроники
    Любитель
  • Оборудование
    DT 830, DSO138

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Я починил, написал код, которому надо только один выход 15. Не нужен транзистор, кварц и c PC6 ничего мудрить не надо. #define F_CPU 1000000UL // 1 MHz #include <avr/io.h>//библиотека ввода/вывода #include <util/delay.h> int main(void) { PORTB=0x00; DDRB=0x02; TCCR1A=(1<<COM1A1)|(1<<WGM10); //На выводе OC1A единица, когда OCR1A==TCNT1, восьмибитный ШИМ TCCR1B=(1<<CS10); //Делитель= /1 OCR1A=0x00; unsigned char i; while (1){ for (i=0;i<255;i++){ OCR1A++; _delay_ms(5); } for (i=0;i<255;i++) { OCR1A--; _delay_ms(5); } }; }
  2. @_abk_ Не решена, теперь не могу сделать плавное тушение
  3. @andrusha152 остальное я програмировал без кварца и всё работает @andrusha152 вот фьюзы @andrusha152 Вот сделал код, который плавно включает светодиод без кварца #define F_CPU 1000000UL // 1 MHz #include <avr/io.h>//библиотека ввода/вывода #include <util/delay.h> int main(void) { PORTB=0x00; DDRB=0x02; TCCR1A=(1<<COM1A1)|(1<<WGM10); //На выводе OC1A единица, когда OCR1A==TCNT1, восьмибитный ШИМ TCCR1B=(1<<CS10); //Делитель= /1 OCR1A=0x00; while (1) { OCR1A++; _delay_ms(100); }; }
  4. Нашёл схему и код. Светодиод должен мигать, но почему то он просто горит. Кварц по схеме я подключать не стал, потому что моя atmega8 работает на частоте 1МГц и PC6 у меня просто подключён от программатора разъёма MISO, я думаю без этого должно работать. #define F_CPU 1000000UL // 1 MHz #include <avr/io.h>//библиотека ввода/вывода //Програма задержки void pause (unsigned int a) { unsigned int i; for (i=a;i>0;i--); } //Програма инициализации ШИМ void init_pwm (void) { TCCR1A=(1<<COM1A1)|(1<<WGM10); //На выводе OC1A единица, когда OCR1A==TCNT1, восьмибитный ШИМ TCCR1B=(1<<CS10); //Делитель= /1 OCR1A=0x00; //Начальная яркость нулевая } //Основная програма int main(void) { unsigned char i; DDRB=0x02; //Инициализация PB1 (OC1A) как выход init_pwm(); while (1) { for (i=0;i<255;i++) //Плавно повышаем яркость {OCR1A++; pause(1000);} for (i=0;i<255;i++) //Плавно понижаем яркость {OCR1A--; pause(1000);} } return 1; }
  5. @Dr. West Большое спасибо, я оказывается неправильно подключал потенциометр.
  6. Я у подстроечника, всегда только 2 вывода использую
  7. Я подключил на 10 км, подсветка не реагирует.
  8. Я регулятор вообще не подключал.
  9. Включается экран и вообще ничего не выводится, пробовал atmega8 и на ардуине (для неё использовал тестовый код). Что может быть? Может ли такое быть, что контакты плохо спаял? Как вообще проверить, что символы могут отображаться? #define F_CPU 1000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <stdio.h> #include <stdlib.h> //---------------------------------------- void LCD_ini(void); void setpos(unsigned char x, unsigned y); void str_lcd (char str1[]); //---------------------------------------- #define e1 PORTD|=0b00001000 // установка линии E в 1 #define e0 PORTD&=0b11110111 // установка линии E в 0 #define rs1 PORTD|=0b00000100 // установка линии RS в 1 (данные) #define rs0 PORTD&=0b11111011 // установка линии RS в 0 (команда) //---------------------------------------- //---------------------------------------- void sendhalfbyte(unsigned char c) { c<<=4; e1; //включаем линию Е _delay_us(50); PORTD&=0b00001111; //стираем информацию на входах DB4-DB7, остальное не трогаем PORTD|=c; e0; //выключаем линию Е _delay_us(50); } //---------------------------------------- void sendbyte(unsigned char c, unsigned char mode) { if (mode==0) rs0; else rs1; unsigned char hc=0; hc=c>>4; sendhalfbyte(hc); sendhalfbyte(c); } //---------------------------------------- void sendchar(unsigned char c) { sendbyte(c,1); } //---------------------------------------- void setpos(unsigned char x, unsigned y) { char adress; adress=(0x40*y+x)|0b10000000; sendbyte(adress, 0); } //---------------------------------------- void LCD_ini(void) { _delay_ms(15); //Ждем 15 мс (стр 45) sendhalfbyte(0b00000011); _delay_ms(4); sendhalfbyte(0b00000011); _delay_us(100); sendhalfbyte(0b00000011); _delay_ms(1); sendhalfbyte(0b00000010); _delay_ms(1); sendbyte(0b00101000, 0); //4бит-режим (DL=0) и 2 линии (N=1) _delay_ms(1); sendbyte(0b00001100, 0); //включаем изображение на дисплее (D=1), курсоры никакие не включаем (C=0, B=0) _delay_ms(1); sendbyte(0b00000110, 0); //курсор (хоть он у нас и невидимый) будет двигаться влево _delay_ms(1); } //---------------------------------------- void clearlcd() { sendbyte(0b00000001, 0); _delay_us(1500); } //---------------------------------------- void str_lcd (char str1[]) { wchar_t n; for(n=0;str1[n]!='\0';n++) sendchar(str1[n]); } //----------- void port_ini(void) { PORTD=0x00; DDRD=0xFF; } //---------------------------------------- int main(void) { port_ini(); //Инициализируем порты LCD_ini(); //Инициализируем дисплей setpos(0,0); str_lcd("Hello World!"); setpos(2,1); str_lcd("String 2"); while(1) { } }
  10. Вот такой код #define F_CPU 1000000UL // 1 MHz #include <avr/io.h> #include <util/delay.h> int main(void) { DDRD = 0b11111111; PORTD = 0b0000100; while(1){ PORTD = 0b00010010; PORTD = PORTD & (1 << 5); } } 00010010 & (1 << 5) Получается 00010010 & 00100000 = 00010000 Почему получается тогда 00010010? Должен гореть только светодиод, под номером 5, а горят 2, второй и пятый.
  11. В общем отдал в ремонт и там её оживили и дополнительно поставили предохранитель, заплатил 3500р.
  12. на самой фишке сейчас обнаружил, что не прозванивается кнопка включения
  13. Передняя панель "lg 6871er1081p" вообще не реагирует, как будто отключили свет. Несколько раз включал/выключал с розетки, не помогло. Подключил в неё обогреватель, он заработал, значит розетка исправная. Опять включил, начал замерять напряжение после фильтра дроселя, оно есть 220, но кнопка вкл, по прежнему не реагирует. Иду дальше, начал проверять напряжение на самой панели, на самой жёлтой фишке приходит 220, на кнопку вкл, которая чёрная справа, почему то всего 0.24 в, это не малова-то?
×
×
  • Create New...