Поиск сообщества
Показаны результаты для тегов 'Библиотека'.
Найдено: 6 результатов
-
В общем, во встроенных библиотеках Proteus нет МК PIC12F635. И мне нужна какая-нибудь сторонняя библиотека, что бы там был этот МК
- 2 ответа
-
- PIC12F635
- микроконтроллер
-
(и ещё 1 )
C тегом:
-
OLED дисплей на контроллере SH1122 - STM32 HAL драйвер
aitras опубликовал запись в блоге в Заметки радиолюбителя
Краткий рассказ об использовании китайского дисплея на контроллере SH1122. Особенности отображения, описание функций библиотеки, демонстрация работы. Ссылка на библиотеку-драйвер: https://github.com/mikhail-tsaryov/SH1122-STM32-HAL-Driver -
Ошибки при подключении библиотеки LCD Proteus 8
Anastas Mik опубликовал тема в Программное обеспечение
Народ, всем привет! Кто знает, почему не подключаются нормально библиотека LCD к Proteus 8. Перепробовал уже целую кучу, но все время выдает столько же ошибок. Библиотеку беру от сюда: http://kot3245.ru/hrdwr/ssd1306IIC.html LCD на SSD1306. Протеус вообще способен корректно работать с внешними библиотеками? Подскажите плз. -
В общем нужна библиотека для вывода текста с STM32RB100 на экран 1602a. Соединение -- через 4 или 8 ножки. Я вам даю микроконтроллер и дисплей, а вы ищите или пишите библиотеку для этого. В общем нужно чтобы заработало. Если дисплей не работает, то подобрать другой. Пишите сюда либо на почту yurolejniko@yandex.ru
-
Доброго времени суток. Вопрос в названии: есть ли готовая библиотека для работы с дисплеем? Сразу отвечу на пару возникающих вопросов: 1. Да, я уже искал в инете. Если что-то похожее находил, оно обязательно не рабочее! 2. Сам писать не пробовал. ИМХО, приступлю к этому если не будет другого выбора. Спасибо за интерес и помощь
- 9 ответов
-
- библиотека
- atmel studio
-
(и ещё 1 )
C тегом:
-
динамическая индикация на индикатор (общий анод) используется сдвиговый регистр 74HC595 и arduino nano 328p проблема в заключается функции indicator7seg4razr::displayMain(); //main.cpp #include "Indicator7s4razr_registr.h" indicator7seg4razr indicator; //переменная класса ISR(TIMER2_OVF_vect) { indicator.displayMain(); TCNT0 = 0xFF - 10; // Overflow again after 10 ticks = 10 us } String hello = "hello it s me"; void setup() { // put your setup code here, to run once: //indicator.displayString(hello,300,true); indicator.displayNumber(1234); } void loop() { // put your main code here, to run repeatedly: indicator.displayMain(); } //****************************************************************** // Name : Indicator7s4razr_registr.h // Author : ALEX_45 // Date : 01.02.2016 // Version : 1.0 // Notes : Программа использует один сдвиговый регистр 74HC595 // : для управления 7сегментным 4рех разрядным индикатором //****************************************************************** /* 4-разрядный 7-сегментный индикатор 1 A F 2 3 B 1 A F 2 3 B ____________|__|__|__|__|__|____________ | | | | | | A | A | A | A | | F B | F B | F B | F B | | G | G | G | G | | E C | E C | E C | E C | | D dp| D dp| D dp| D dp| |_________|_________|_________|_________| | | | | | | E D dp C G 4 74HC595 Map: _______ PINS 15, 1-7 Q0 - Q7 Output Pins Q1 |1 * 16| Vcc PIN 8 GND Ground, Vss Q2 |2 15| Q0 PIN 9 Q7" Serial Out Q3 |3 14| DS PIN 10 MR Master Reclear, active low Q4 |4 13| OE PIN 11 SH_CP Shift register clock pin Q5 |5 12| ST_CP PIN 12 ST_CP Storage register clock pin (latch pin) Q6 |6 11| SH_CP PIN 13 OE Output enable, active low Q7 |7 10| MR PIN 14 DS Serial data input GND |8_____9| Q7" PIN 16 Vcc Positive supply voltage */ /****|добавить в код main.cpp:|********************************** indicator7seg4razr indicator; //переменная класса ISR(TIMER2_OVF_vect) { indicator.display(); TCNT0 = 0xFF - 10; // Overflow again after 10 ticks = 10 us } *****************************************************************/ #ifndef _7segm4razr_Indicator®istr_H_ #define _7segm4razr_Indicator®istr_H_ #define A 0// Segment A #define B 1// Segment B #define C 2// Segment C #define D 3// Segment D #define E 4// Segment E #define F 5// Segment F #define G 6// Segment G #define DP 7// Segment DP class indicator7seg4razr{ private: byte lockPin = 8; //Пин подключен к ST_CP входу 74HC595 byte clockPin = 12; //Пин подключен к SH_CP входу 74HC595 byte dataPin = 11; //Пин подключен к DS входу 74HC595 byte segmentPins[4] = {3,5,6,9}; //Пины разрядов индикатора {1,2,3,4} volatile byte display[4] = {255,255,255,255}; //переменная хранящая вывод на дисплей byte get_segments(char symvol); //получает вывод на сегменты из символа public: indicator7seg4razr(); //конструктор-настройщик void displayMain(); //выводит display[4] должна крутится в таймере void displayClear(); //Очищает дисплей void displayChar(char simvol,byte pos); //выводит символ в позицию 1-4 void displayString(String str,int zaderjka,bool fromRight); //выводит строку; задержка между символами; с права или слева void displayNumber(int number); //выводит число 0-9999 void addDot(byte pos); //добавляет точку в позицию 1-4 void displayTime(byte hour,byte minutes,byte seconds); //выводит время должна быть в цикле void displayDate(byte date,byte mounth); //выводит датту void displayYear(int year); //выводит год void displayZmeika(byte pos,int zaderjka); //выводит бегающюю змейку в позицию 1-4; zaderjka - задержка перемещения }; #endif // _7segm4razr_Indicator®istr_H_ //**************************************************************** // Name : Indicator7s4razr_registr.cpp // Author : ALEX_45 // Date : 01.02.2016 // Version : 1.0 // Notes : Программа использует один сдвиговый регистр 74HC595 // : для на сегментный 4рех разрядный индикатор //**************************************************************** #include "Arduino.h" #include "String.h" //using namespace std; #include "Indicator7s4razr_registr.h" byte indicator7seg4razr::get_segments(char symvol) { byte segments = 0; switch (symvol) { case 0: case '0': case 'O': segments = (1 << A) | (1 << | (1 << C) | (1 << D) | (1 << E) | (1 << F); break; case 1: case '1': case 'l': segments = (1 << | (1 << C); break; case 2: case '2': segments = (1 << A) | (1 << | (1 << D) | (1 << E) | (1 << G); break; case 3: case '3': segments = (1 << A) | (1 << | (1 << C) | (1 << D) | (1 << G); break; case 4: case '4': segments = (1 << | (1 << C) | (1 << F) | (1 << G); break; case 5: case '5': case 'S': case 's': segments = (1 << A) | (1 << C) | (1 << D) | (1 << F) | (1 << G); break; case 6: case '6': segments = (1 << A) | (1 << C) | (1 << D) | (1 << E) | (1 << F) | (1 << G); break; case 7: case '7': segments = (1 << A) | (1 << | (1 << C); break; case 8: case '8': segments = (1 << A) | (1 << | (1 << C) | (1 << D) | (1 << E) | (1 << F) | (1 << G); break; case 9: case '9': case 'g': segments = (1 << A) | (1 << | (1 << C) | (1 << D) | (1 << F) | (1 << G); break; case 10: case 'A': case 'a': segments = (1 << A) | (1 << | (1 << C) | (1 << E) | (1 << F) | (1 << G); break; case 11: case 'B': case 'b': segments = (1 << C) | (1 << D) | (1 << E) | (1 << F) | (1 << G); break; case 12: case 'C': segments = (1 << A) | (1 << D) | (1 << E) | (1 << F); break; case 'c': segments = (1 << D) | (1 << E) | (1 << G); break; case 13: case 'D': case 'd': segments = (1 << | (1 << C) | (1 << D) | (1 << E) | (1 << G); break; case 14: case 'E': segments = (1 << A) | (1 << D) | (1 << E) | (1 << F) | (1 << G); break; case 'e': segments = (1 << A) | (1 << | (1 << D) | (1 << E) | (1 << F) | (1 << G); break; case 15: case 'F': case 'f': segments = (1 << A) | (1 << E) | (1 << F) | (1 << G); break; case 'G': segments = (1 << A) | (1 << C) | (1 << D) | (1 << E) | (1 << F); break; case 'H': case 'x': case 'X': segments = (1 << | (1 << C) | (1 << E) | (1 << F) | (1 << G); break; case 'h': segments = (1 << C) | (1 << E) | (1 << F) | (1 << G); break; case 'I': case 'i': segments = (1 << | (1 << C); break; case 'J': case 'j': segments = (1 << | (1 << C) | (1 << D) | (1 << E); break; case 'L': segments = (1 << D) | (1 << E) | (1 << F); break; case 'M': case 'm': segments = (1 << A) | (1 << C) | (1 << E) | (1 << G); break; case 'N': case 'n': segments = (1 << C) | (1 << E) | (1 << G); break; case 'o': segments = (1 << C) | (1 << D) | (1 << E) | (1 << G); break; case 'P': case 'p': segments = (1 << A) | (1 << | (1 << E) | (1 << F) | (1 << G); break; case 'Q': case 'q': segments = (1 << A) | (1 << | (1 << C) | (1 << F) | (1 << G); break; case 'R': case 'r': segments = (1 << E) | (1 << G); break; case 'T': case 't': segments = (1 << D) | (1 << E) | (1 << F) | (1 << G); break; case 'U': segments = (1 << | (1 << C) | (1 << D) | (1 << E) | (1 << F); break; case 'u': case 'v': segments = (1 << C) | (1 << D) | (1 << E); break; case 'V': segments = (1 << A) | (1 << C) | (1 << D) | (1 << E); break; case 'W': case 'w': segments = (1 << A) | (1 << C) | (1 << D) | (1 << E); break; case 'Y': case 'y': segments = (1 << | (1 << C) | (1 << D) | (1 << F) | (1 << G); break; case '-': segments = (1 << G); break; case '"': segments = (1 << | (1 << F); break; case 0x27: // "'" segments = (1 << ; break; case '_': segments = (1 << D); break; case '.': case ',': segments = (1 << DP); break; case '!': segments = (1 << DP) | (1 << | (1 << C); break; case ' ': default: segments = 0; break; } return segments; } indicator7seg4razr::indicator7seg4razr() { //конструктор-настройщик //устанавливаем режим OUTPUT pinMode(lockPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); for(byte i = 1;i<4;i++){ pinMode(segmentPins[i],OUTPUT); } //sei(); // Enable interrupts // Inititalize timer for multiplexing TCCR2B = (1 << CS22)|(1 << CS21)/*|(1 << CS20)*/; TIMSK2 |= (1 << TOIE2); // Enable Overflow Interrupt Enable TCNT2 = 0; // Initialize counter } void indicator7seg4razr::displayMain() { for (int i = 0; i <4; i++) { digitalWrite(segmentPins[0], LOW); digitalWrite(segmentPins[1], LOW); digitalWrite(segmentPins[2], LOW); digitalWrite(segmentPins[3], LOW); digitalWrite(segmentPins[i], HIGH);//+ 7сегментного индикатора i-го разряда digitalWrite(lockPin, LOW);// устанавливаем синхронизацию "защелки" на LOW shiftOut(dataPin, clockPin, MSBFIRST, ~display[i]);// передаем последовательно на dataPin digitalWrite(lockPin, HIGH);//"защелкиваем" регистр, тем самым устанавливая значения на выходах } } void indicator7seg4razr::displayChar(char simvol, byte pos = 4) { display[pos - 1] = get_segments(simvol); } void indicator7seg4razr::displayString(String str, int zaderjka = 300, bool fromRight = true) { if (fromRight) { for (int i = 0, end = str.length() - 1; i != (end - 3); i++) { display[0] = display[1]; display[1] = display[2]; display[2] = display[3]; display[3] = get_segments(str.charAt(i)); delay(zaderjka); display[0] = display[1]; display[1] = display[2]; display[2] = display[3]; display[3] = get_segments(str.charAt(i + 1)); delay(zaderjka); display[0] = display[1]; display[1] = display[2]; display[2] = display[3]; display[3] = get_segments(str.charAt(i + 2)); delay(zaderjka); display[0] = display[1]; display[1] = display[2]; display[2] = display[3]; display[3] = get_segments(str.charAt(i + 3)); delay(zaderjka); } } else { for (int i = str.length() - 1, end = 0; i != (end + 3); i--) { display[3] = display[2]; display[2] = display[1]; display[1] = display[0]; display[0] = get_segments(str.charAt(i)); delay(zaderjka); display[3] = display[2]; display[2] = display[1]; display[1] = display[0]; display[0] = get_segments(str.charAt(i + 1)); delay(zaderjka); display[3] = display[2]; display[2] = display[1]; display[1] = display[0]; display[0] = get_segments(str.charAt(i + 2)); delay(zaderjka); display[3] = display[2]; display[2] = display[1]; display[1] = display[0]; display[0] = get_segments(str.charAt(i + 3)); delay(zaderjka); } } } void indicator7seg4razr::displayNumber(int number) { display[3] = get_segments(number % 10); number /= 10; display[2] = get_segments(number % 10); number /= 10; display[1] = get_segments(number % 10); number /= 10; display[0] = get_segments(number % 10); } void indicator7seg4razr::displayTime(byte hour, byte minutes, byte seconds) { displayNumber((hour * 100) + minutes); if (seconds % 2) display[1] |= (1 << DP); //точка раз в секунду else display[1] &= ~(1 << DP); } void indicator7seg4razr::displayDate(byte date, byte mounth) { displayNumber((date * 100) + mounth); display[1] |= (1 << DP); display[3] |= (1 << DP); } void indicator7seg4razr::displayYear(int year) { displayNumber(year); display[3] |= (1 << DP); } void indicator7seg4razr::addDot(byte pos) { display[pos - 1] |= (1 << DP); } void indicator7seg4razr::displayClear() { for (byte i = 1; i < 4; i++) { display[i] = 0; } } void indicator7seg4razr::displayZmeika(byte pos, int zaderjka = 300) { display[pos - 1] = (1 << A) | (1 << | (1 << F); delay(zaderjka); display[pos - 1] = (1 << A) | (1 << | (1 << G); delay(zaderjka); display[pos - 1] = (1 << | (1 << G) | (1 << E); delay(zaderjka); display[pos - 1] = (1 << G) | (1 << E) | (1 << D) | (1 << DP); }
- 2 ответа
-
- arduino
- 7ми сегментный индикатор
- (и ещё 2 )