Этот проект представляет собой ультразвуковой дальномер, разработанный на основе однокристального микрокомпьютера, в основном с использованием однокристального компьютера STC89C52 и модуля ультразвуковой дальномерности HC-SR04. Информация об измеренном расстоянии отображается на жидкокристаллическом дисплее LCD1602.
Технология ультразвуковой дальнометрии — это распространенный бесконтактный метод дальномера, который использует скорость распространения ультразвуковых волн для измерения расстояния между объектом и дальномером. Он обладает характеристиками широкого диапазона измерений, высокой точностью и быстрым откликом и широко используется в таких областях, как автоматическое управление, навигация роботов и беспилотное вождение.
В этом проекте в качестве основного управляющего чипа выбран STC89C52. Это распространенный и мощный микроконтроллер серии 8051 с мощными вычислительными и управляющими возможностями, который подходит для различных конструкций встроенных систем.
В то же время в качестве модуля измерения дальности используется модуль ультразвуковой дальнометрии HC-SR04. Модуль HC-SR04 может передавать ультразвуковые сигналы вперед и принимать эхо-сигналы, а также рассчитывать расстояние путем измерения разницы во времени между передачей и приемом.
Благодаря подключению и управлению микроконтроллером STC89C52 и модулем ультразвуковой дальнометрии HC-SR04 измеренное расстояние может быть получено в режиме реального времени и отображено на жидкокристаллическом дисплее LCD1602. Жидкокристаллический дисплей LCD1602 прост, интуитивно понятен и удобен для чтения, а также может удобно отображать информацию об измеренном расстоянии.
Целью этого проекта является разработка простого и практичного ультразвукового дальномера, который предоставит пользователям точные и надежные функции измерения расстояния для удовлетворения потребностей в измерении расстояний в различных областях.
Идеи проектирования аппаратного обеспечения этого проекта в основном включают следующие аспекты: выбор основного чипа управления, выбор модуля ультразвуковой дальности, дизайн источника питания и метод подключения.
(1) Выбор основного чипа управления: в этом проекте микроконтроллер STC89C52 выбран в качестве основного чипа управления. STC89C52 — это микроконтроллер на основе архитектуры 8051. Он обладает богатыми периферийными ресурсами и мощными вычислительными возможностями и подходит для проектирования встраиваемых систем.
(2) Выбор модуля ультразвуковой дальнометрии. В этом проекте в качестве модуля дальности выбран модуль ультразвуковой дальнометрии HC-SR04. Модуль HC-SR04 имеет функцию отправки ультразвуковых сигналов и приема эхо-сигналов, а также может точно измерять расстояние между объектом и дальномером.
(3) Конструкция источника питания и способ подключения. Чтобы обеспечить стабильную рабочую мощность микроконтроллера и модуля ультразвуковой дальности, вы можете использовать адаптер питания постоянного тока или аккумулятор. Обычно подключайте положительный полюс источника питания к контакту VCC микроконтроллера и модуля ультразвуковой дальности, а отрицательный полюс источника питания подключайте к контакту GND.
(1) Настройки инициализации: в начале программы необходимо инициализировать микроконтроллер, включая настройки режима вывода, настройки таймера и т. д.
(2) Отправка ультразвуковых сигналов: Управляйте передающим контактом модуля ультразвуковой дальности через микроконтроллер для передачи ультразвуковых сигналов определенной частоты и длительности.
(3) Прием эхо-сигнала: микроконтроллер управляет приемным контактом модуля ультразвуковой дальности, контролирует эхо-сигнал, рассчитывает его время и записывает продолжительность эхо-сигнала.
(4) Расчет расстояния: на основе продолжительности эхо-сигнала можно рассчитать расстояние между объектом и дальномером. Выполните соответствующие расчеты в программном обеспечении и сохраните результаты расчетов в переменных.
(5) Отображение данных: отображение информации об измеренном расстоянии на жидкокристаллическом дисплее LCD1602. Выводами ЖК-дисплея можно управлять через микроконтроллер и отправлять на него соответствующие данные и команды.
Подключите модуль ультразвуковой дальности HC-SR04 и жидкокристаллический дисплей LCD1602 к порту ввода-вывода микроконтроллера STC89C52:
Подключение контактов модуля HC-SR04:
(1) Вывод Trig подключен к порту P1.0 микроконтроллера.
(2) Вывод Echo подключен к порту P1.1 микроконтроллера.
(3) Вывод VCC подключен к выводу VCC микроконтроллера.
(4) Контакт GND подключен к контакту GND микроконтроллера.
Соединение контактов ЖК-экрана LCD1602:
(1) Вывод RS подключен к порту P2.0 микроконтроллера.
(2) Вывод RW подключен к порту P2.1 микроконтроллера.
(3) Контакт E подключен к порту P2.2 микроконтроллера.
(4) Вывод D4 подключен к порту P2.4 микроконтроллера.
(5) Вывод D5 подключен к порту P2.5 микроконтроллера.
(6) Вывод D6 подключен к порту P2.6 микроконтроллера.
(7) Вывод D7 подключен к порту P2.7 микроконтроллера.
(8) Вывод VCC подключен к выводу VCC микроконтроллера.
(9) Контакт GND подключен к контакту GND микроконтроллера.
HC-SR04 — это широко используемый модуль ультразвуковой дальнометрии, который может измерять расстояние между объектом и модулем путем излучения ультразвуковых импульсов и приема их эхо-сигналов. Ниже приводится подробное описание модуля ультразвуковой дальнометрии HC-SR04:
(1) Принцип: модуль HC-SR04 использует время эха ультразвуковых волн для расчета расстояния между объектом и модулем. Он состоит из двух основных частей: ультразвукового передатчика и ультразвукового приемника. Передатчик излучает короткие импульсы ультразвуковых волн вперед, а приемник принимает эхо. Измерив разницу во времени между передачей и приемом, можно рассчитать расстояние от объекта до модуля.
(2) Принцип измерения: Ультразвуковые волны, используемые модулем HC-SR04, представляют собой неслышимые высокочастотные звуковые волны, а обычная рабочая частота составляет 40 к Гц. Модуль запускает передачу ультразвуковых волн, отправляя импульс длительностью 10 микросекунд, а затем ожидает получения эха. При получении эха модуль останавливает отсчет времени и преобразует измеренное время в расстояние.
(3) Диапазон измерения: Диапазон измерения модуля HC-SR04 обычно составляет от 2 см до 400 см, в зависимости от условий окружающей среды и качества модуля. Измерения на больших расстояниях могут иметь определенные погрешности.
(4) Рабочее напряжение: Рабочее напряжение модуля HC-SR04 обычно составляет 5 В и может питаться при подключении к микроконтроллеру или другому адаптеру.
(5) Интерфейс: модуль HC-SR04 обычно использует четыре контакта для подключения. Среди них два контакта используются для питания (VCC и GND), один контакт используется для запуска ультразвукового излучения (Trig), а другой контакт используется для получения ультразвукового эхо-сигнала и результатов измерения выходного сигнала (Echo).
(6) Использование: Использование модуля HC-SR04 для определения дальности обычно требует следующих шагов:
(7) Области применения: Модуль HC-SR04 широко используется для измерения расстояний, предотвращения препятствий, контроля высоты дрона, интеллектуальной навигации транспортных средств, автоматического управления дверями и других областей. Он прост в использовании, имеет низкую стоимость и хорошую точность измерения дальности, что делает его пригодным для многих проектов в области электроники и робототехники.
Модуль ультразвуковой дальнометрии HC-SR04 использует передачу и прием ультразвуковых волн для измерения расстояния между объектом и модулем. Это широко используемый модуль измерения дальности, отличающийся простотой, удобством использования, низкой стоимостью и хорошей точностью измерения. Он подходит для различных задач измерения расстояний и обхода препятствий.
#include <reg52.h>
#include <intrins.h>
#define LCD_RS P2_0 // Разъем RS ЖК-экрана для подключения к порту P2.0
#define LCD_RW P2_1 // Контакт LCD RW для подключения к порту P2.1
#define LCD_E P2_2 // Контакт E ЖК-экрана подключается к порту P2.2.
#define LCD_D4 P2_4 // Вывод D4 ЖК-экрана подключается к порту P2.4.
#define LCD_D5 P2_5 // Вывод D5 ЖК-экрана подключается к порту P2.5.
#define LCD_D6 P2_6 // Вывод D6 ЖК-экрана подключается к порту P2.6.
#define LCD_D7 P2_7 // Вывод D7 ЖК-экрана подключается к порту P2.7.
#define TRIG P1_0 // Вывод Trig модуля ультразвуковой дальности подключается к порту P1.0.
#define ECHO P1_1 // Контакт Echo для подключения модуля ультразвуковой дальности к порту P1.1.
sbit RS = LCD_RS;
sbit RW = LCD_RW;
sbit E = LCD_E;
sbit D4 = LCD_D4;
sbit D5 = LCD_D5;
sbit D6 = LCD_D6;
sbit D7 = LCD_D7;
void delay(unsigned int time) {
while (time--) {
for (int i = 0; i < 120; i++);
}
}
void lcd_enable() {
E = 1;
_nop_();
E = 0;
}
void lcd_write_cmd(unsigned char cmd) {
RS = 0;
RW = 0;
P0 = cmd;
lcd_enable();
}
void lcd_write_data(unsigned char dat) {
RS = 1;
RW = 0;
P0 = dat;
lcd_enable();
}
void lcd_init() {
lcd_write_cmd(0x38); // Инициализируйте 8-битный интерфейс данных, 2 строки дисплея, матричные символы 5x7.
lcd_write_cmd(0x0c); // Включить дисплей, не отображать курсор
lcd_write_cmd(0x06); // Курсор перемещается вправо, а дисплей не перемещается.
lcd_write_cmd(0x01); // очистить экран
}
void lcd_clear() {
lcd_write_cmd(0x01);
}
void lcd_print(const unsigned char *str) {
while (*str) {
lcd_write_data(*str++);
}
}
unsigned int measure_distance() {
unsigned int distance;
TRIG = 0; // Отправить триггерный сигнал
delay(10);
TRIG = 1;
delay(12);
TRIG = 0;
while (!ECHO); // Ожидание эхо-сигнала
TH0 = 0; // Инициализировать начальное значение таймера
TL0 = 0;
TR0 = 1; // 启动таймер while (ECHO); // Ожидание эхо-сигнала结束
TR0 = 0; // 停止таймер distance = TH0 * 256 + TL0; // Рассчитать расстояние
distance = distance / 58; // Преобразовать время в расстояние в сантиметрах
return distance;
}
void main() {
unsigned int distance;
lcd_init();
lcd_clear();
while (1) {
distance = measure_distance(); // Измерить расстояние
lcd_clear();
lcd_print("Distance: ");
if (distance >= 100) {
lcd_write_data(distance / 100 % 10 + '0');
lcd_write_data(distance / 10 % 10 + '0');
lcd_write_data('.');
lcd_write_data(distance % 10 + '0');
lcd_print(" m");
} else {
lcd_write_data(distance / 10 % 10 + '0');
lcd_write_data('.');
lcd_write_data(distance % 10 + '0');
lcd_print(" cm");
}
delay(200);
}
}
В рамках данного проекта успешно разработан и реализован ультразвуковой дальномер на базе микроконтроллера STC89C52 и модуля ультразвукового дальномера HC-SR04. Реализует функции измерения расстояния и ЖК-дисплея. Это простое и практичное устройство может широко использоваться в областях измерения расстояний и автоматического управления, обеспечивая удобство в жизни. Благодаря реализации проектов можно получить богатый опыт и знания. Узнайте, как правильно подключать аппаратные устройства, понимать и использовать порт ввода-вывода микроконтроллера, а также использовать модуль ультразвуковой дальнометрии для измерения расстояния. В то же время вы можете улучшить свои навыки программирования на языке C и освоить метод управления жидкокристаллическим дисплеем LCD1602.