Данный проект представляет собой USB-устройство с LCD-дисплеем, на котором отображаются параметры компьютера в реальном времени.
Прошивка PIC-контроллера: Прошивка использует USB стек микроконтроллеров. Файлы, расположенные в USB папке, взяты из библиотеки «Microchip Libraries of Applications». Я использовал версию v2012-08-22 этой библиотеки. Файлы main.c, usb_descriptors.c, и usb_config.h были сформированы после «Device — HID — Custom Demos» файлов. Микропрограммное обеспечение обрабатывает команды в функции ProcessIO function в коде main.c. Прошивка PIC поддерживает следующие команды, передаваемые через USB HID:
0x10 — Очистить дисплей
0x11 — Перейти на строку 1, распечатать строковый параметр
0x12 — Перейти на строку 2, распечатать строковый параметр
0x13 — Перейти на строку 3, распечатать строковый параметр
0x14 — Перейти на строку 4, распечатать строковый параметр
0x20 — Выключить подсветку
0x21 — Включить подсветку
0x22 — Переключить подсветку
0x23 — Запросить состояние подсветки
0x30 — Обновить пользовательский параметр
Поддержка приложения ПК: приложение было написано на C#. Некоторые примечания… файл HIDInterface.cs представляет собой скрытую форму. Я создал это как форму, чтобы я мог получить указатель окна, используемого для вызовов функции RegisterDeviceNotification. Это позволяет мне определять, когда USB устройства подключены и не подключены. Это файл общего типа; специальные команды отображения находятся в файле HIDInterface_LcdDisplay.cs. Этот файл расширяет файл HIDInterface.cs и позволяет мне легко отправлять команды на дисплей. В LineOptionControl.cs вы найдете следующую функцию…
public string graphText(int percent) { string returnStr = ""; for (int i = 0; i < percent; i += 5) { // Check to see if we need a fraction of a full block (0x10 -> 0x14) if (i + 5 > percent) { returnStr += (char)(0x10 + (percent - i)); } else { // Use a full block. (0x15) returnStr += (char)0x15; } } // Pad the graph out with empty blocks. returnStr = returnStr.PadRight(20, (char)0x10); return returnStr; }
Эта функция определяет, как приложение отображает графы. Она требует целочисленный ввод в диапазоне 0 -> 100 и возвращает 20 символьную строку, представляющую целое число. Каждый символ представляет 5% графа. PIC интерпретирует символы 0x10 -> 0x15 в обычные символы, представляющие 0% -> 5%.
Настройки: Поддерживаемое приложение позволяет изменять значение скорости обновления информации. Это число означает, как часто ПК опрашивается для получения информации о состоянии. При этом на дисплее происходит обновление полученной информации. Вы также можете изменять время подсветки в режиме простоя. По истечении этого времени в режиме простоя компьютера (мышь не перемещалась, на клавиатуре не нажимались кнопки и т.д.) подсветка выключится. Если вы установите это время одинаково со временем отключения дисплея, тогда отключение будет выполняться синхронно. Если вы хотите деактивировать эту функцию, установите значение в 0.
Командная строка: Если вы выберите значение «min» либо «minimize» для программы в качестве аргумента, то она запустится в свернутом виде в системный трей. Это удобно выполнить путем изменения ярлыка, как показано далее …
"UCSD Application 1.0.exe" min Example: "C:UsersandrewDesktopUCSD Application 1.0.exe" min
Принципиальная схема:
Список используемых радиоэлементов:
- LCD дисплей:
- 1x NHD-0440WH-ATFH-JT [P1] — Модель не критичная. У меня используется 4×40 управляемый 2x SPLC780D микросхемами.
- 1x 20KΩ потенциометр [R3] — Подстройка контрастности дисплея
- 1x NPN FET [Q1] — Модель не критичная, я использовал MPSA42_D26Z FET.
- 1x 1KΩ резистор [R5] — Ограничитель тока затвора.
- 1x 22Ω резистор [R6] — Токоограничительный резистор подсветки LCD.
- Микроконтроллер и обвязка:
- 1x PIC18F2550 [U2] — PIC18F с поддержкой USB
- 1x 10KΩ резистор [R4] — Для подтяжки MCLR
- 1x SPST кнопка [S1] — Сброс. SKRGARD010.
- 1x 20MHz кварц [Y1] — Я использовал ABL-20.000MHZ-B2.
- 2x 18pF конденсаторы [C1] [C2] — Для 20МГц кварцевого резонатора
- 1x 220nF конденсатор [C3] — Фильтрующий конденсатор для 3.3В USB порта МК
- 1x 6 штыревой разъем [P2] — для программирования ICSP
- 1x USB кабель [P3] — Питание устройства
Фото устройства:
Программное обеспечение ПК:
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
U2 | МК PIC 8-бит | PIC18F2550 | 1 | |||
Q1 | Биполярный транзистор | MPSA42 | 1 | |||
С1, С2 | Конденсатор | 18 пФ | 2 | |||
С3 | Конденсатор | 220 нФ | 1 | |||
R3 | Переменный резистор | 20 кОм | 1 | |||
R4 | Резистор | 10 кОм | 1 | |||
R5 | Резистор | 1 кОм | 1 | |||
R6 | Резистор | 22 Oм | 1 | |||
Y1 | Кварцевый резонатор | 20 МГц | 1 | |||
Р1 | Разъем | 1 | ||||
P2 | Панелька | 6 штырьков | 1 | |||
P3 | USB вход | 1 | ||||
S1 | Кнопка | 1 | ||||
Индикатор | NHD-0440WH-ATFH-JT | 1 | 4×40 | |||