嵌入式系统实验报告
- 格式:doc
- 大小:19.11 MB
- 文档页数:25
嵌入式系统实习报告一、嵌入式系统实习报告1、实习项目简介(1)在实习期间,我参与了一项嵌入式系统开发项目。
该项目的目标是设计和开发一个嵌入式系统,用于控制并监测一个温室的环境参数,如温度、湿度和光照强度等。
为了实现这个目标,我需要进行硬件设计、嵌入式编程和外设控制等方面的实践。
2、硬件设计经验和成果展示(1)在硬件设计方面,我负责选择和设计相应的传感器和执行器,并与其他团队成员进行紧密合作,确保系统的整体性能和稳定性。
我了解了传感器的工作原理和选择方法,并根据项目的需求选择了适合的温度、湿度和光照传感器。
在执行器方面,我选择了合适的风扇和灯光控制器,以便对温室内的环境进行调控。
(2)在设计过程中,我还学习了相关的电路原理和布局设计。
我根据传感器和执行器的要求,设计了相应的电路,并进行了仿真和测试。
通过这个过程,我熟悉了硬件设计的流程和方法,并深入了解了嵌入式系统的硬件架构。
3、嵌入式编程经验和成果展示(1)在嵌入式编程方面,我使用C语言进行了嵌入式系统的软件开发。
我根据项目的需求,编写了相应的程序,实现了对传感器和执行器的数据读取和控制。
我学习了嵌入式系统的基本编程思想和方法,如中断处理、定时器和IO口控制等。
(2)在编程过程中,我遇到了一些困难,如如何优化程序的运行效率和内存开销,以及如何处理实时数据的采集和处理等。
为了解决这些困难,我查阅了相关的资料并与导师和同事进行了讨论和交流。
最终,我通过对程序的优化和对数据采集时间的控制,成功解决了这些问题,并达到了预期的效果。
4、外设控制经验和成果展示(1)为了实现对温室环境的控制,我学习并实践了外设控制的方法。
我使用了GPIO接口来控制风扇和灯光的开关,通过PWM信号来控制风扇和灯光的转速和亮度。
我还学习了串口通信和I2C总线通信等方法,以实现与其他设备的数据交换和控制。
(2)在外设控制过程中,我也遇到了一些问题,如如何正确配置和使用外设引脚、如何处理外设的中断和异常等。
嵌入式系统实验报告在本学期的嵌入式系统课程中,我与我的实验伙伴进行了多次实验。
在这篇报告中,我将分享我们实验的过程和结果。
实验一:GPIO控制LED灯在这个实验中,我们使用了Raspberry Pi 3B+开发板和一根杜邦线。
我们在电路板上将一盏LED灯与GPIO引脚连接起来,并编写了一个程序来控制这个引脚的电平状态。
在这个实验中,我们学习了GPIO的基本概念以及如何使用Python编程语言编写GPIO控制程序。
我们成功地让LED灯在不同的时间间隔内闪烁,并且了解了如何使用GPIO.setup()和GPIO.output()函数来控制GPIO引脚的输入和输出。
实验二:串口通信在第二个实验中,我们使用了两个Raspberry Pi 3B+开发板和两根串口线。
我们连接了两个板子的GPIO引脚,使得它们可以通过串口进行通信。
我们使用Python编写了两个程序来进行通信。
一个程序将发送一条消息,另一个程序将接收这个消息并将其打印出来。
通过使用串口通信,我们学会了如何使用Python编写程序来完成数据交换,并掌握了串口通信的基本概念。
实验三:Pi camera模块在第三个实验中,我们使用了Pi camera模块和一个Raspberry Pi 3B+开发板。
我们将摄像头连接到开发板上,并编写了一个程序来捕捉摄像头图像。
我们学习了如何使用Python编程语言来控制Pi camera模块,包括如何设置摄像头参数并如何捕捉静态图像。
我们还尝试了使用OpenCV库来处理图像。
实验四:蓝牙控制在最后一个实验中,我们使用了一个蓝牙透传模块、Raspberry Pi 3B+开发板和一些电路元件。
我们将蓝牙透传模块连接到GPIO引脚,并编写了一个程序来通过蓝牙信号控制电机。
在这个实验中,我们学习了如何使用蓝牙模块进行无线控制。
我们通过使用Python编写控制程序,成功地将蓝牙信号转换成GPIO引脚的电平信号来控制电机。
总结在这个嵌入式系统的实验中,我们学习了许多关于嵌入式系统的知识和技能。
嵌入式实验报告总结嵌入式实验报告总结近年来,嵌入式系统在各个领域中得到了广泛的应用。
嵌入式系统是指将计算机系统嵌入到其他设备或系统中,以实现特定功能的一种计算机系统。
在本次嵌入式实验中,我深入学习了嵌入式系统的原理和应用,并通过实际操作,加深了对嵌入式系统的理解。
实验一:嵌入式系统的基本概念和发展历程在本实验中,我们首先了解了嵌入式系统的基本概念和发展历程。
嵌入式系统的特点是紧凑、高效、实时性强,并且适用于各种各样的应用场景。
通过学习嵌入式系统的发展历程,我们了解到嵌入式系统在不同领域的应用,如智能家居、医疗设备、汽车电子等。
这些应用领域的嵌入式系统都有着各自的特点和需求,因此在设计嵌入式系统时需要根据具体应用场景进行优化。
实验二:嵌入式系统的硬件平台与软件开发环境在本实验中,我们学习了嵌入式系统的硬件平台和软件开发环境。
硬件平台是嵌入式系统的基础,包括处理器、内存、外设等。
而软件开发环境则提供了开发嵌入式系统所需的工具和库函数。
我们通过实际操作,搭建了嵌入式系统的硬件平台,并使用软件开发环境进行程序的编写和调试。
通过这个实验,我深刻理解了硬件平台和软件开发环境对嵌入式系统的影响,以及它们之间的协同工作。
实验三:嵌入式系统的实时操作系统在本实验中,我们学习了嵌入式系统的实时操作系统。
实时操作系统是嵌入式系统中非常重要的一部分,它能够保证系统对外界事件的响应速度和可靠性。
我们通过实际操作,学习了实时任务的创建和调度,以及实时操作系统的中断处理机制。
实时操作系统的学习让我更加深入地了解了嵌入式系统的实时性要求和相关的调度算法。
实验四:嵌入式系统的通信与网络在本实验中,我们学习了嵌入式系统的通信与网络。
嵌入式系统通常需要与其他设备或系统进行通信,以实现数据的传输和共享。
我们学习了嵌入式系统的通信协议和网络协议,如UART、SPI、I2C、TCP/IP等。
通过实际操作,我掌握了这些通信和网络协议的使用方法,以及在嵌入式系统中如何进行数据的传输和处理。
嵌入式系统实习报告首先,我要感谢实习单位给我提供了这次宝贵的实习机会,让我对嵌入式系统有了更深入的了解和实践。
在这段实习期间,我学到了很多关于嵌入式系统的知识和技能,也积累了宝贵的实践经验。
以下是我在实习期间的学习和实践总结。
一、实习单位简介实习单位是一家专注于嵌入式系统研发的高科技公司,主要业务涵盖了嵌入式系统设计、开发、测试和维护等领域。
公司拥有一支经验丰富的研发团队,为我提供了良好的学习环境和实践机会。
二、实习目的和意义此次实习旨在让我了解嵌入式系统的基本概念、原理和应用,掌握嵌入式系统设计方法和开发流程,提高我的实际动手能力和解决问题的能力。
通过实习,我能够将所学的理论知识与实际应用相结合,为将来的工作打下坚实的基础。
三、实习内容和过程1. 嵌入式系统基础学习在实习初期,我首先学习了嵌入式系统的基本概念、原理和常见硬件平台。
通过学习,我了解了嵌入式系统的发展历程、特点和应用领域,掌握了嵌入式系统的基本组成部分,如微处理器、存储器、输入输出接口等。
2. 嵌入式系统开发环境搭建为了进行嵌入式系统开发,我学习了如何搭建开发环境,包括交叉编译工具链、操作系统和编程语言等。
通过实践,我掌握了交叉编译工具链的使用方法,熟悉了嵌入式操作系统的基本操作,并学会了使用编程语言进行嵌入式系统开发。
3. 实际项目参与在实习过程中,我参与了一个实际项目,负责部分模块的设计和开发。
在项目中,我学会了如何分析需求、设计方案、编写代码和调试程序。
通过与团队成员的合作,我了解了团队协作的重要性,并提高了自己的沟通能力和解决问题的能力。
4. 嵌入式系统调试和优化在项目开发过程中,我遇到了一些调试和优化问题。
通过查阅资料、请教同事和不断实践,我学会了使用调试工具进行程序调试,掌握了嵌入式系统性能优化的方法,如内存管理、功耗优化等。
四、实习收获和反思通过这次实习,我收获了以下几点:1. 掌握了嵌入式系统的基本概念、原理和应用,了解了嵌入式系统的发展趋势。
嵌入式系统实验报告引言嵌入式系统作为一种广泛应用于各行各业的计算机系统,其本身具有一定的难度与挑战。
本实验报告将围绕嵌入式系统的设计、开发以及应用展开讨论,旨在总结并分享在实验中所获得的经验与知识。
一. 实验背景嵌入式系统是指以特定功能为目标的计算机系统,其设计与开发过程相较于传统的计算机系统更为复杂和精细。
本次实验的主要目标是通过设计一个基于嵌入式系统的智能家居控制器,来探索嵌入式系统的应用与实践。
二. 实验内容2.1 硬件设计嵌入式系统的硬件设计是整个实验的基础,其合理性与稳定性直接影响系统的性能和可靠性。
在本次实验中,我们选择了一块主频为xx的处理器作为核心,配备了丰富的外设接口,如GPIO、串口等。
我们还为系统增加了一块液晶显示屏和一组按键,以实现简单的用户交互。
2.2 软件开发在硬件设计完成后,我们开始进行软件开发。
首先,我们需要选择一个合适的操作系统作为嵌入式系统的基础。
针对本次实验,我们选择了xx操作系统,其具备较强的实时性和稳定性,能够满足我们对系统性能的要求。
接着,我们进行了嵌入式系统的驱动程序开发。
通过编写各个外设的驱动程序,我们实现了与液晶显示屏和按键的交互,并将其与处理器进行了适当的接口配置。
另外,我们还开发了嵌入式系统的应用程序。
通过编写智能家居控制器的代码,我们成功实现了对家居设备的远程控制和监测。
用户可以通过液晶显示屏和按键进行交互,实现对家居设备的开关、调节和状态查看等操作。
三. 实验结果与分析经过实验测试,我们发现嵌入式系统在智能家居领域的应用具有较高的可行性与实用性。
通过嵌入式系统的控制,用户可以方便地实现对家居设备的远程操控,提升了家居智能化的程度。
同时,嵌入式系统的实时性和稳定性使得智能家居控制器具备了较高的安全性和可靠性。
然而,在实验过程中我们也遇到了一些挑战。
其中,系统的驱动程序开发是较为复杂的一环,需要仔细理解硬件接口和协议,并进行合理的配置。
此外,系统的稳定性和功耗管理也是需要重点关注的问题。
精选嵌入式系统实习报告3篇嵌入式系统实习报告篇1ARM嵌入式系统综合设计一.实习时间和地点安排1.实习时间:20xx年XX月03 日—— 20xx年XX月14日,共两周的时间。
2.每天的实习时间安排:上午:8:30——11:30下午:13:30——15:303.实习地点:校内。
二.实习目的1.掌握电子元器件的焊接原理和方法。
2.掌握ARM7 LPC2132控制程序的编写方法。
3.掌握调试软件和硬件的方法。
三.实习内容与要求1.根据设计要求焊接好电路板并测试焊接无误。
2.绘制流程图并编写程序。
3.编译通过后,将程序下载到LPC2132进行调试。
4.调试成功后编写实习报告。
四.LPC2132芯片介绍LPC2132最小系统图及其介绍概述LPC2132是基于一个支持实时仿真和嵌入式跟踪的32/16 位 ARM7TDMI-STM CPU 的微控制器,并带有 32kB、64kB、512 kB 的嵌入的高速Flash 存储器。
128 位宽度的存储器接口和独特的加速结构使 32 位代码能在最大时钟速率下运行。
对代码规模有严格控制的应用可使用 16 位 Thumb?模式将代码规模降低超过 30%,而性能的损失却很小。
较小的封装和极低的功耗使 LPC2131/2132/2138 可理想地用于小型系统中,如访问控制和 POS 机。
宽范围的串行通信接口和片内 8/16/32kB 的 SRAM 使LPC2131/2132/2138 非常适用于通信网关、协议转换器、软 modem 、声音辨别和低端成像,为它们提供巨大的缓冲区空间和强大的处理功能。
多个 32 位定时器、1 个或 2 个 10 位 8 路 ADC 、10 位 DAC 、PWM 通道和 47 个 GPIO 以及多达9 个边沿或电平触发的外部中断使它们特别适用于工业控制和医疗系统。
特性1.小型 LQFP64 封装的 16/32 位 ARM7TDMI-S 微控制器。
嵌入式报告实验报告1. 引言嵌入式系统作为一种特殊的计算机系统,应用广泛且日益重要。
嵌入式报告实验是对嵌入式系统进行实际操作和测试的过程,旨在验证嵌入式系统的功能和性能,以评估其是否满足设计要求。
本报告将详细介绍嵌入式报告实验的设计与实施,并对实验结果进行分析与总结。
2. 实验设计2.1 实验目的嵌入式报告实验的目的是通过设计和实施一系列测试来评估嵌入式系统的性能和功能。
具体目标包括但不限于:验证系统的实时性、稳定性和可靠性;测试系统的各种输入输出功能;评估系统对异常情况的处理能力。
2.2 实验环境实验使用的嵌入式系统硬件为XX处理器,集成了XX模块和XX接口。
软件方面,使用XX嵌入式操作系统和XX开发工具进行系统开发和测试。
2.3 实验步骤1) 配置硬件环境:将嵌入式系统与外部设备连接,确保硬件环境正常。
2) 编写测试程序:根据实验目标,编写相应的测试程序,包括输入输出测试、性能测试和异常情况测试等。
3) 软件调试:通过软件调试工具对测试程序进行调试,确保程序逻辑正确。
4) 硬件调试:通过硬件调试工具对嵌入式系统进行调试,确保硬件模块正常工作。
5) 实验运行:将测试程序下载到嵌入式系统中,运行测试程序并记录实验数据。
6) 数据分析与总结:对实验数据进行分析和总结,评估嵌入式系统的性能和功能是否满足设计要求。
3. 实验结果与分析3.1 输入输出测试通过设计一系列输入输出测试用例,测试嵌入式系统的输入输出功能。
测试包括但不限于:按键输入、传感器数据采集、外部设备通信等。
实验结果表明,嵌入式系统的输入输出功能正常,能够准确获取和处理各种输入信号,并成功输出相应的结果。
3.2 性能测试通过设计一系列性能测试用例,测试嵌入式系统的处理能力和实时性。
测试包括但不限于:任务切换速度、响应时间、系统负载等。
实验结果表明,嵌入式系统具有较高的处理能力和实时性,能够快速响应各种任务并保持系统的稳定性。
3.3 异常情况测试通过设计一系列异常情况测试用例,测试嵌入式系统对异常情况的处理能力。
嵌入式系统实验报告学院:计算机科学与工程姓名:___________学号:_______________专业:_______________指导老师:______________完成日期:______________实验一:流水灯案例、8位数码管动态扫描案例一、实验目的1.1 进一步熟悉Keil C51集成开发环境调试功能的使用;1.2 学会自己编写程序,进行编译和仿真测试;1.3 利用开发板下载hex 文件后验证功能。
二、实验原理2.1 :实验原理图030B 〜I ।卜RSI I ™Hi 」 口 UICDR Hr hJJK RR 18q U I. 海水灯电浒周LhE U_EEM^Li > > 第 X > k >n - » =白 L a £0EBS2.2:工作原理2.2.1:流水灯电路中有LO,1,L2,L3,4,L5,L6,L7共八个发光二极管,当引脚LED_ SEL输入为1,对于A、B、C、D、E、F、G、H引脚,只要输入为1,则点亮相连接的发光二极管。
A〜H引脚连接STM32F108VB芯片的PE8〜PE15,程序初始化时,对其进行初始设置。
引脚LED_SEL为1时,发光二极管才工作,否则右边的数码管工作。
注意,LED SEL 连接于PB3,该引脚具有复用功能,在默认状态下,该引脚的I0不可用,需对AFIO_ MAPR寄存器进行设置,设置其为10可用。
2.2.2: 8位数码管数码管中的A~G、DP段分别连接到电路图中的A~G、H线上,当某段上有一-定的电压差值时,便会点亮该段。
当£3输入为1,也就是LED_ 5£1输入为0时,根据SELO〜SEL2的值确定选中的数码管,即位选,再根据A~H引脚的高低电平,点亮对应段,即段选。
三、实验结果3.1:流水灯对于给出的流水灯案例,下载HEX文件后,在开发板上可观察到L0-L7从左至右依次点亮,间隔300ms。
嵌入式实训报告范文嵌入式实训报告范文精选2篇(一)嵌入式实训报告一、实训目的和背景嵌入式实训的目的是通过设计和实现一个嵌入式系统,培养学生的嵌入式系统开发才能和团队协作才能。
本次实训的背景是为了满足社会对嵌入式系统开发人才的需求,进步学生的实际动手才能。
二、实训内容1. 硬件平台的选择和搭建:选择了一款ARM开发板作为硬件平台,并搭建了相应的开发环境。
2. 系统设计和分析:根据实训要求,我们团队设计了一个智能门锁系统,包括用户认证、门锁控制和远程监控功能。
3. 软件开发:使用C语言和嵌入式开发工具进展软件开发,实现了用户认证、门锁控制和远程监控等功能。
4. 硬件连接和调试:将开发板和相关传感器、执行器等硬件设备进展连接和调试,确保系统可以正常运行。
5. 功能测试和调优:对系统进展全面测试,发现并修复了一些问题,并对系统进展了性能优化。
三、实训心得和体会通过本次实训,我深入认识到嵌入式系统开发的复杂性和挑战性。
在实训过程中,我们团队遇到了许多问题,比方硬件和软件的兼容性、性能优化等方面。
但是通过团队的努力和合作,我们成功解决了这些问题,并完成了一个功能完善的嵌入式系统。
此外,我还学到了许多软件开发和硬件调试的技巧,进步了自己的实际动手才能。
在团队协作方面,我们团队成员之间互相配合,共同解决问题,形成了良好的协作机制。
总结起来,本次嵌入式实训让我受益匪浅,学会了许多实际应用的技能和知识,并进步了自身的综合才能。
四、实训成果展示在实训完毕后,我们团队成功完成了一个智能门锁系统,具备用户认证、门锁控制和远程监控等功能。
系统的稳定性和可靠性得到了验证,并且在实际使用中得到了积极的反应。
附图:〔展示系统界面、硬件设备连接示意图等〕五、实训改良意见尽管本次实训获得了良好的成果,但仍有一些方面需要改良。
首先,实训的时间安排可以更合理一些,以便更充分地利用时间进展理论操作。
其次,可以增加一些真实场景的案例分析和解决方案的设计,以提升学生的实际应用才能。
嵌入式系统实验报告姓名:班级:学号:实验一:流水灯实验要求:编写一个程序,是开发板上的的3个LED灯按流水灯方式闪烁。
实验工具:ADSv1.2,超级终端,DNW.exe,MY-2440开发板,电脑实验程序如下:;汇编指令实验;定义端口E寄存器预定义rGPBCON EQU 0x56000010rGPBDAT EQU 0x56000014rGPBUP EQU 0x56000018AREA Init,CODE,READONLY ;该伪指令定义了一个代码段,段名为Init,属性只读ENTRY ;程序的入口点标识ResetEntry;下面这三条语句,主要是用来设置I/O口GPB5、GPB6、GPB7为输出属性ldr r0,=rGPBCON ;将寄存器rPCONB的地址存放到寄存器r0中ldr r1,=0x5400str r1,[r0] ;将r1中的数据存放到寄存器rPCONB中;下面这三条语句,主要是禁止GPB端口的上拉电阻ldr r0,=rGPBUPldr r1,=0xffffstr r1,[r0]ldr r2,=rGPBDAT ;将数据端口B的数据寄存器的地址附给寄存器r2ledloopldr r1,=0xdfstr r1,[r2] ;使GPB5输出低电平,LED1亮bl delay ;调用延迟子程序ldr r1,=0xbfstr r1,[r2] ;使GPB5输出低电平,LED1亮bl delay ;调用延迟子程序ldr r1,=0x7fstr r1,[r2] ;使GPB5输出低电平,LED1亮bl delay ;调用延迟子程序b ledloop;下面是延迟子程序delayldr r3,=0xbffff ;设置延迟的时间delay1sub r3,r3,#1 ;r3=r3-1cmp r3,#0x0 ;将r3的值与0相比较bne delay1 ;比较的结果不为0(r3不为0),继续调用delay1,否则执行下一条语句mov pc,lr ;返回END ;程序结束符实验程序说明:要实现三个LED闪烁,须设置GPB5、GPB6、GPB7为输出属性,所以“ldr r1,=0x5400”,将r1的地址设置为0x5400。
实验报告课程名称:嵌入式系统学院:信息工程专业:电子信息工程班级:学生姓名:学号:指导教师:开课时间:学年第一学期实验名称:IO接口(跑马灯)实验时间:11.16 实验成绩:一、实验目的1.掌握 STM32F4 基本IO口的使用。
2.使用STM32F4 IO口的推挽输出功能,利用GPIO_Set函数来设置完成对 IO 口的配置。
3.控制STM32F4的IO口输出,实现控制ALIENTEK 探索者STM32F4开发板上的两个LED实现一个类似跑马灯的效果。
二、实验原理本次实验的关键在于如何控制STM32F4的IO口输出。
IO主要由:MODER、OTYPER、OSPEEDR、PUPDR、ODR、IDR、AFRH和AFRL等8个寄存器的控制,并且本次实验主要用到IO口的推挽输出功能,利用GPIO_Set函数来设置,即可完成对IO口的配置。
所以可以通过了开发板上的两个LED灯来实现一个类似跑马灯的效果。
三、实验资源实验器材:探索者STM32F4开发板硬件资源:1.DS0(连接在PF9)2.DS1(连接在PF10)四、实验内容及步骤1.硬件设计2.软件设计(1)新建TEST工程,在该工程文件夹下面新建一个 HARDWARE文件夹,用来存储以后与硬件相关的代码。
然后在 HARDWARE 文件夹下新建一个LED文件夹,用来存放与LED相关的代码。
(2)打开USER文件夹下的test.uvproj工程,新建一个文件,然后保存在 LED 文件夹下面,保存为 led.c,在led.c中输入相应的代码。
(3)采用 GPIO_Set 函数实现IO配置。
LED_Init 调用 GPIO_Set 函数完成对 PF9 和 PF10 ALIENTEK 探索者 STM32F407 开发板教程 119 STM32F4 开发指南(寄存器版) 的模式配置,控制 LED0 和 LED1 输出 1(LED 灭),使两个 LED 的初始化。
(4)新建一个led.h文件,保存在 LED 文件夹下,在led.h中输入相应的代码。
3.下载验证使用 flymcu 下载(也可以通过JLINK等仿真器下载),如图 1.2所示:图1.2运行结果如图1.3所示:图1.3五、实验源程序相关代码如下所示:(1) led.c文件#include "led.h"void LED_Init(void){RCC->AHB1ENR|=1<<5;//GPIO_Set(GPIOF,PIN9|PIN10,GPIO_MODE_OUT,GPIO_OTYPE_PP, GPIO_SPEED_100M,GPIO_PUPD_PU); //PF9,PF10 设置LED0=1;//LED0 关闭LED1=1;//LED1 关闭}(2)led.h文件#ifndef __LED_H#define __LED_H#include "sys.h"//LED 端口定义#define LED0 PFout(9) // DS0#define LED1 PFout(10) // DS1void LED_Init(void); //初始化#endif(3)main函数#include "sys.h"#include "delay.h"#include "led.h"int main(void){Stm32_Clock_Init(336,8,2,7);//设置时钟,168Mhzdelay_init(168); //初始化延时函数LED_Init(); //初始化 LED 时钟while(1){LED0=0; //DS0 亮LED1=1; //DS1 灭delay_ms(500);LED0=1; //DS0 灭LED1=0; //DS1 亮delay_ms(500);}}六、实验总结本次实验过程中,由于第一次实验,对实验器件,还有实验过程都不大了解,使得做实验过程中遇到很大的问题。
也花费了不少时间,不过在慢慢的摸索中,以及老师的指导和同学的帮助下,最终也了解了探索者STM32F4开发板的外部结构,以及各个引脚的作用,还有各个串口和并口的具体使用,还观察了跑马灯的运行状态,以及它的运行程序。
七、预习思考题八、注意事项(1)新建文件夹时,区分不同的文件夹之间的关系。
(2)编写代码时,注意格式和符号,在英文环境下输入。
一、实验目的1.掌握触摸屏的工作原理。
2.通过外接带触摸屏的LCD模块,来实现触摸屏控制。
3.通过对电阻触摸和电容触摸的学习,实现触摸屏驱动,最终实现一个手写板的功能。
二、实验原理电阻式触摸屏原理:当手指触摸屏幕时,两层导电层在触摸点位置就有了接触,控制器检测到这个接通点并计算出X、Y轴的位置。
特点:精度高、价格便宜、抗干扰能力强、稳定性好;易被划伤、透光性差、不支持多点触摸。
电容式触摸屏原理:利用人体的电流感应进行工作。
当手指触摸金属层时,由于人体电场,用户和触摸屏表面形成一个耦合电容。
对于高频电流来说电容是直接导体,于是手指从接触点吸走一个很小的电流。
这个电流分别从触摸屏的4个角的电极流出,并且流经4个电极的电流与手指到4角的距离成正比。
控制器通过对电流比例的计算,得到触摸点的位置。
特点:手感好、无需校正、透光性好、支持多点触摸;成本高、精度不高、抗干扰力差。
三、实验资源实验器材:探索者STM32F4开发板硬件资源:1、DS0(连接在PF9)2、串口1(波特率:115200,PA9/PA10连接在板载USB转串口芯片CH340上面)3、ALIENTEK 2.8/3.5/4.3/7寸TFTLCD模块(通过FSMC驱动,FSMC_NE4接LCD片选/A6 接RS)4、按键KEY0(PE4)四、实验内容及步骤1.硬件设计图2.1触摸屏与 STM32F4 连接原理图2.软件设计(1)打开上一章的工程,由于本次实验不要用到USMART和CAN相关代码,所以,先去掉USMART相关代码和can.c(此时HARDWARE组剩下:led.c、ILI93xx.c和key.c)。
不过,本次实验要用到24C02,所以要添加myiic.c和24cxx.c到HARDWARE组下。
(2)然后,在HARDWARE文件夹下新建一个TOUCH文件夹。
然后新建一个touch.c、touch.h、ctiic.c等十个文件,并保存在TOUCH文件夹下,并将这个文件夹加入头文件包含路径。
其中,touch.c和touch.h是电阻触摸屏部分的代码,顺带兼电容触摸屏的管理控制,其他则是电容触摸屏部分的代码。
3.下载验证使用 flymcu 下载(也可以通过JLINK等仿真器下载),如图 2.2所示:图2.2运行结果如图2.3所示:图2.3五、实验源程序(1)main函数int main(void){Stm32_Clock_Init(336,8,2,7); //设置时钟,168Mhzdelay_init(168); //延时初始化uart_init(84,115200); //初始化串口波特率为115200LED_Init(); //初始化 LEDLCD_Init(); //LCD 初始化KEY_Init(); //按键初始化tp_dev.init(); //触摸屏初始化POINT_COLOR=RED; //设置字体为红色LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");LCD_ShowString(30,70,200,16,16,"TOUCH TEST");LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");LCD_ShowString(30,110,200,16,16,"2014/5/7");if(tp_dev.touchtype!=0XFF)LCD_ShowString(30,130,200,16,16,"PressKEY0toAdjust");delay_ms(1500);Load_Drow_Dialog();if(tp_dev.touchtype&0X80)ctp_test(); //电容屏测试else rtp_test(); //电阻屏测试}(2)//电阻触摸屏测试函数void rtp_test(void){u8 key; u8 i=0;while(1){key=KEY_Scan(0);tp_dev.scan(0);if(tp_dev.sta&TP_PRES_DOWN) //触摸屏被按下{if(tp_dev.x[0]<lcddev.width&&tp_dev.y[0]<lcddev.height) {if(tp_dev.x[0]>(lcddev.width-24)&&tp_dev.y[0]<16)Load_Drow_Dialog();else TP_Draw_Big_Point(tp_dev.x[0],tp_dev.y[0],RED); //画图}}else delay_ms(10); //没有按键按下的时候if(key==KEY0_PRES) //KEY0 按下,则执行校准程序{LCD_Clear(WHITE); //清屏TP_Adjust(); //屏幕校准TP_Save_Adjdata();Load_Drow_Dialog();}i++;if(i%20==0)LED0=!LED0;}}(3) //电容触摸屏测试函数void ctp_test(void){u8 t=0; u8 i=0;u16 lastpos[5][2]; //最后一次的数据while(1){tp_dev.scan(0);for(t=0;t<5;t++){if((tp_dev.sta)&(1<<t)){if(tp_dev.x[t]<lcddev.width&&tp_dev.y[t]<lcddev.height){if(lastpos[t][0]==0XFFFF){lastpos[t][0] = tp_dev.x[t];lastpos[t][1] = tp_dev.y[t];}lcd_draw_bline(lastpos[t][0],lastpos[t][1],tp_dev.x[t],tp_ dev.y[t],2,POINT_COLOR_TBL[t]); //画线lastpos[t][0]=tp_dev.x[t];lastpos[t][1]=tp_dev.y[t];if(tp_dev.x[t]>(lcddev.width-24)&&tp_dev.y[t]<20){Load_Drow_Dialog(); //清除}}}else lastpos[t][0]=0XFFFF;}delay_ms(5);i++;if(i%20==0)LED0=!LED0;}}六、实验总结基本达到实验的要求,了解触摸屏基本概念与原理,以及通过编程实现对触摸屏的控制,以及知道如何验证实验结果是否属于预期目标,并了解实验原理,为今后嵌入式的学习打下一定的学习基础。