|
一、项目简介 本项目基于迪文DGUS智能串口屏与单片机控制系统进行设计,主要实现环境数据实时采集、界面数据显示以及外部设备控制等功能。 系统通过光敏传感器和热敏传感器采集环境信息,并将采集结果实时显示在DGUS屏幕上。同时,用户可以通过触摸屏控制舵机角度以及直流电机的正转、反转和停止。 整个项目采用“单片机负责数据采集与设备控制,DGUS屏负责数据显示与人机交互”的设计方式,具有界面直观、操作方便、功能清晰等特点。 二、项目实现功能本项目主要实现了以下功能: - 实时采集光敏传感器数据。
- 实时采集热敏传感器数据。
- 在DGUS屏幕上显示光敏数值和热敏数值。
- 通过触摸按键控制舵机角度。
- 支持舵机五个角度档位控制。
- 控制直流电机正转。
- 控制直流电机反转。
- 控制直流电机停止。
- 实现DGUS屏与单片机之间的串口双向通信。
- 实现数据显示界面与外设控制界面的切换。
三、系统总体设计系统主要由以下几个部分组成: - 迪文DGUS智能屏
- 单片机最小系统
- 光敏传感器
- 热敏传感器
- 舵机
- L9110直流电机驱动模块
- 直流电机
- 串口通信模块
单片机负责读取传感器数据,并将数据通过串口发送至DGUS屏。 DGUS屏根据指定的VP变量地址显示光敏数值和热敏数值。当用户点击屏幕上的控制按钮时,DGUS屏将对应的按键值发送给单片机,单片机根据接收到的指令控制舵机和直流电机。 系统工作流程如下: 传感器采集数据 → 单片机处理数据 → 串口发送数据 → DGUS屏显示数据 控制流程如下: 用户点击DGUS屏按钮 → DGUS屏发送控制指令 → 单片机解析指令 → 控制舵机或电机 四、DGUS界面设计本项目设计了两个主要界面,分别是数据监测界面和外设控制界面。 1. 数据监测界面数据监测界面主要用于显示光敏传感器和热敏传感器的实时采集结果。 界面中包含: - 光敏数值显示区域
- 热敏数值显示区域
- 页面标题
- 学号及班级信息
- 页面切换按钮
单片机将采集到的传感器数据写入对应的VP地址,DGUS屏根据变量地址自动更新显示内容。 【此处插入数据监测界面图片】 图1 数据监测界面 2. 外设控制界面外设控制界面主要用于控制舵机和直流电机。 舵机控制区域设置了五个档位按钮,可以控制舵机转动到不同角度。 电机控制区域设置了三个按钮: 用户点击对应按钮后,DGUS屏将按键值发送给单片机,单片机执行相应的控制操作。 【此处插入外设控制界面图片】 图2 外设控制界面 五、传感器数据采集项目中使用光敏传感器和热敏传感器采集环境数据。 传感器输出的模拟电压接入单片机ADC通道,单片机通过ADC转换得到数字量。 基本采集流程如下: - 启动ADC转换。
- 等待ADC转换完成。
- 读取ADC转换结果。
- 对采集数据进行简单处理。
- 将处理后的数据发送到DGUS屏。
为了避免界面数值刷新过快导致显示不稳定,程序中对数据发送周期进行了控制,使界面能够稳定显示实时数据。 六、DGUS串口通信设计单片机与DGUS屏之间通过串口进行通信。 系统中的通信主要分为两种类型: 1. 单片机向DGUS屏发送数据单片机将传感器数据写入指定的VP变量地址。 项目中使用的主要VP地址包括: - 0x1000:光敏数据显示地址
- 0x1100:热敏数据显示地址
- 0x1400:舵机控制指令地址
- 0x1700:电机控制指令地址
发送数据时,单片机按照DGUS通信协议组成数据帧,并通过串口发送给屏幕。 典型的数据写入帧格式如下:
5A A5 数据长度 82 VP高字节 VP低字节 数据高字节 数据低字节
其中: - 5A A5为帧头。
- 82表示写变量存储器。
- VP高字节和VP低字节表示变量地址。
- 最后的数据字节表示需要显示的数据。
2. DGUS屏向单片机发送控制指令当用户点击舵机或电机控制按钮时,DGUS屏会将按键对应的变量值发送给单片机。 单片机接收串口数据后,对数据帧进行解析,并根据VP地址和按键值判断用户执行的操作。 例如: - 接收到舵机控制地址的数据后,改变舵机PWM占空比。
- 接收到电机控制地址的数据后,控制电机正转、反转或停止。
七、舵机控制设计舵机通过PWM信号进行控制。 本项目使用定时器产生约50 Hz的PWM信号,通过改变高电平持续时间控制舵机角度。 界面设置了五个舵机档位,对应不同的目标角度: 档位舵机角度
1档0°
2档45°
3档90°
4档135°
5档180°
当用户点击不同档位按钮时,DGUS屏向单片机发送对应的控制值。 单片机解析控制值后,修改舵机PWM脉宽,使舵机转动到指定角度。 八、直流电机控制设计直流电机通过L9110电机驱动模块进行控制。 单片机通过两个GPIO引脚控制L9110输入端,从而实现电机正转、反转和停止。 控制逻辑如下: 控制状态输入1输入2
正转10
反转01
停止00
用户点击DGUS屏中的“正转”“反转”或“停止”按钮后,单片机根据接收到的控制指令修改GPIO输出状态。 九、程序设计思路系统程序主要包括以下几个模块: 1. 系统初始化模块主要完成: - 单片机时钟初始化
- GPIO初始化
- ADC初始化
- 串口初始化
- 定时器初始化
- 舵机初始位置设置
- 电机初始状态设置
2. 传感器采集模块负责读取光敏传感器和热敏传感器的ADC数据,并进行简单的数据处理。 3. DGUS数据显示模块负责按照DGUS串口协议,将光敏数据和热敏数据写入对应的VP变量地址。 4. 串口接收与解析模块负责接收DGUS屏发送的数据,并判断当前控制的是舵机还是直流电机。 5. 舵机控制模块根据屏幕发送的档位值修改PWM参数,实现舵机角度控制。 6. 电机控制模块根据屏幕发送的控制值设置L9110输入端,实现电机正转、反转和停止。 十、项目调试过程在项目调试过程中,主要遇到了以下问题。 1. DGUS屏数据显示异常最开始单片机发送数据后,屏幕没有正常显示。 经过检查发现,问题主要集中在: - VP地址配置错误
- 数据长度设置错误
- 数据高低字节顺序不正确
- 串口波特率不一致
重新检查DGUS工程中的变量地址,并按照通信协议调整发送数据帧后,屏幕能够正常显示数据。 2. 屏幕按键无响应初期点击屏幕按钮后,单片机没有执行对应操作。 通过串口调试发现,单片机虽然接收到了数据,但程序中对VP地址的判断不正确。 修改串口接收程序,并按照完整数据帧提取VP地址和按键值后,按键控制恢复正常。 3. 舵机角度不准确舵机最初出现角度偏差或抖动现象。 主要原因包括: - PWM周期不准确
- 高电平脉宽设置不合理
- 舵机供电不稳定
通过调整定时器参数、重新标定不同角度对应的脉宽,并改善供电后,舵机能够稳定转动到指定档位。 4. 电机正反转控制异常电机调试过程中曾出现正反转方向与界面标识不一致的问题。 通过交换驱动模块的控制逻辑,重新确定GPIO输出组合后,实现了正确的正转、反转和停止控制。 十一、项目运行效果系统上电后,DGUS屏首先进入数据监测界面。 单片机持续读取光敏传感器和热敏传感器数据,并将数据发送到屏幕显示。当环境光照或温度发生变化时,屏幕上的数据也会随之变化。 切换到外设控制界面后,可以通过触摸按钮控制舵机角度和直流电机运行状态。 实际测试结果表明: - 传感器数据能够正常采集。
- DGUS屏能够稳定显示实时数据。
- 页面切换功能正常。
- 舵机五档角度控制正常。
- 电机正转、反转和停止功能正常。
- 串口通信稳定。
- 屏幕触摸响应正常。
十二、项目特色本项目具有以下特点: 使用DGUS智能屏实现人机交互 与传统字符屏相比,DGUS屏能够实现更加美观和直观的图形化界面。 数据显示与设备控制相结合 系统不仅可以显示传感器数据,还可以通过触摸屏控制舵机和电机。 采用VP变量地址进行数据交互 通过合理规划VP地址,使数据显示和控制指令更加清晰,便于程序维护。 软硬件功能完整 项目涵盖ADC采集、串口通信、定时器PWM、GPIO控制以及GUI设计等内容。 具有较强的扩展性 后续可以继续增加温湿度传感器、继电器、蜂鸣器、无线通信模块以及云平台上传功能。
十三、后续改进方向目前项目已经实现了基本的数据监测和外设控制功能,后续可以从以下几个方向继续完善: - 增加数据曲线显示功能。
- 增加温度和光照异常报警。
- 增加数据存储功能。
- 增加Wi-Fi或蓝牙通信。
- 将数据上传至物联网云平台。
- 增加自动控制模式。
- 优化界面动画和页面切换效果。
- 对传感器数据进行滤波,提高数据稳定性。
- 增加电机调速功能。
- 增加系统参数设置页面。
十四、项目总结通过本项目的设计与调试,完成了基于迪文DGUS智能屏的数据监测与外设控制系统。 项目将传感器数据采集、串口通信、图形界面设计、舵机控制和直流电机控制结合在一起,实现了较为完整的嵌入式人机交互系统。 在开发过程中,不仅掌握了DGUS Designer的基本使用方法,还深入理解了VP变量地址、串口通信协议、ADC采集、定时器PWM以及电机驱动等技术。 该项目结构清晰、功能完整,适合作为DGUS智能屏入门项目、单片机课程设计、实习实践项目或嵌入式系统综合实验。
|