基于ARM9的风扇控制系统_第1页
基于ARM9的风扇控制系统_第2页
基于ARM9的风扇控制系统_第3页
基于ARM9的风扇控制系统_第4页
基于ARM9的风扇控制系统_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式课程设计实验报告组号: 第 35 组 组员: 项目:基于 ARM9 的风扇控制系统 指导老师: 2017 年 12 月 6 日目录一 实验目的 .1二 实验环境 .1三 设计功能 .2四 实验原理分析 .34.1 液晶屏显示 .34.2 直流电机控制 .34.3 键盘控制 .44.4 蜂鸣器控制 .44.5 LED 控制 .5五 软件设计方案 .65.1 计时模块 .65.2 液晶显示模块 .75.3 键盘模块 .85.4 直流电机控制模块 .85.5 LED 模块 .95.6 蜂鸣器模块 .10六 调试与结果 .116.1 程序编译与安装 .116.2 实验结果 .11七 个人工作自我评估 .177.1 方立超个人工作报告 .177.2 周超个人工作报告 .177.3 程文博个人工作报告 .18八 程序附件 .20嵌入式课程设计实验报告1一 实验目的此次嵌入式控制系统综合实验,我们小组以直流电机为主要控制对象,以 TI 公司推出的新一代 OMAPL138 高速处理器为控制器模拟了电风扇的基本功能,并在此基础之上扩展了时间显示、LED 灯装饰、定时等功能。通过本次综合设计,我们主要达到以下主要目的: 了解 Linux 系统中屏幕显示的接口,及访问方法;1、 熟悉 Linux 下 Frame Buffer 技术的概念和应用;2、 学习使用 Omapl138 在 Linux + QT 下访问键盘的方法,了解 Linux + QT 下键盘的使用原理及编程方法;3、 了解 Linux 系统中标准键盘的接口,及访问方法;4、 了解蜂鸣器的发声原理;学习 Linux 下非标准设备的访问控制方法;5、 熟悉嵌入式系统开发软硬件设计的基本过程;6、 大体实现期望的风扇控制系统的基本功能。7、 了解 PWM 控制直流电机的基本原理;二 实验环境硬件:PC 兼容机一台、ICETEKOMAPL138-A 实验箱一只。其中实验箱主要由 4 部分组成:(1)实验箱部分:一个独立的数字信号源,可提供四种波形、三路输出;信号的波形、频率、幅度可调;+5V(5A)、+12V(1A)、+9 V (0.5A)多种直流电源输出;底板插座完成 A/D 信号输入和 D/A 输出; 一个测试模块,包括 18个测试点,可以测量 PWM 输出、AD 输入和 DA 输出波形;一个双信号发生器,方便对许多实际情况中的两个信号进行分析。 (2) 通用 DSP 开发系统部分: 一个 USB2.0 接口开发系统,支持C2000/VC33/C5000/C6000 的开发应用。(3) 通用控制及显示模块:一块 12864 点阵图形显示 LCD 屏;四组嵌入式课程设计实验报告2发光二极管,每组三个红黄绿 LED 灯;一个可由 DSP I/O 脚控制的蜂鸣器进行音频输出;一个 D/A 输出音频插座,可直接接插耳机; 9 个键数字键盘(19) ;4 个拨动开关(DIP) ,可实现复位和设置 DSP 应用板参数。 (4) DSP 主处理板部分:支持:ICETEK-F2812-A 板、ICETEK-VC5509-A板、 ICETEK-VC5416-A 板、ICETEK-VC33-AR 板、ICETEK-C6713-A 板、ICETEK-LF2407-A 板等。 图 2.1 ICETEK-OMAPL138-A 评估模块接口布局软件:PC 兼容机安装 windows7,并通过 virtualbox 虚拟机平台安装Ubuntu 版本的 Linux 系统以及超级终端。三 设计功能本次综合实验我们讲主要实现风扇的以下功能:1. 风扇的开机/关机;2. 风扇开关状态及挡位的显示;3. 时间的显示,并可以分别对时、分、秒进行设置;4. 定时时间和计时时间的设置;5. 蜂鸣器报时;6. 十二个 led 灯的流水闪烁。嵌入式课程设计实验报告3四 实验原理分析本次设计实验以 ICETEK-OMAPL138-A 的双核处理器扩展评估板为核心,它通过扩展接口与实验箱的显示/控制模块连接,可以控制其各种外围设备,也可以接收外设发送的各种数据、信息。CTR 设备连接在 EMIFA 的片选 4 上,所以通过操作以片选 4 为基地址(0x64000000)的空间再加上设备控制寄存器的偏移就可以访问到实验箱上的 CTR 设备。4.1 液晶屏显示液晶显示模块中有两片显示缓冲存储器,分别对应 128*64 液晶屏上的每一个像素点,向其中写入“1” “0”控制其显示和不显示。首先利用命令控制字选择操作位置(页数、列数)后,再将需要显示的数据写入到液晶显示模块的缓存中,将数据发送到相应的数据控制地址即可。4.2 直流电机控制本次实验中应用的直流电机采用的是定频调宽法。PWM 输入对应ICETEK-OMAPL138-A 板上 P4 外扩插座第 26 引脚的 UHPI_HCNTL1 信号,DSP 将此引脚配置成 GPIO,并在此引脚上给出 PWM 信号用来控制直流电机的转速; 图中的 DIR 输入对应 ICETEK-OMAPL138-A 板上 P4 外扩插座第 29 引脚的 MMCSD1_D0 信号,DSP 将此引脚配置成 GPIO,并在此引脚上给出高电平或低电平来控制直流电机的方向。从 DSP 输出的 PWM 信号和转向信号先经过 2 个与门和 1 个非门再与各个开关管的栅极相连。当电动机要求正转时,MMCSD1_D0 给出高电平信号,该信号分成 3 路:第 1 路接与门 Y1 的输入端,使与门 Y1 的输出由 PWM 决定,所以开关管 V1 栅极受 PWM 控制;第2 路直接与开关管 V4 的栅极相连,使 V4 导通;第 3 路经非门 F1 连接到与门 Y2 的输入端,使与门 Y2 输出为 0,这样使开关管 V3 截止;从非门 F1 输出的另一路与开关管 V2 的栅极相连,其低电平信号也使 V2 截止。同样,当电动机要求反转时,MMCSD1_D0 给出低电平信号,经过 2 个与门和 1 个非门组成的逻辑电路后,使开关管 V3 受 PWM 信号控制, V2 导通,V1 、V4 全部截止。嵌入式课程设计实验报告4图 4.2 电机控制电路图在 ICETEK-OMAPL138-A 套件的 Linux 内核里集成了 ICETEK-CTR V6.2 的驱动,驱动中给 CTR 上的直流电机配置了 Linux2.6 下驱动属性接口,通作属性文件可实现对电机的起动、占空比和转向的控制。4.3 键盘控制在 ICETEK-OMAPL138-A 套件的 Linux 内核里集成了 ICETEK-CTR V6.2 的驱动,驱动中将 CTR 上的 keypad 做为一个标准的 keypad 进行挂载,并将按键值映射成了标准的 1 到 9 的按键值,这样在 Linux 下对这个 keypad 的操作就可以用通用的 Linux 控制和读写函数来完成。本实验也是基于 QT 下对 1-9的按键响应的封装完成的。图 4.3 键盘连接示意图4.4 蜂鸣器控制在 ICETEK-OMAPL138-A 套件的 Linux 内核里集成了 ICETEK-CTR V6.2 嵌入式课程设计实验报告5的驱动,驱动中将 CTR 上的蜂鸣器做为一个标准的拨声器进行注册挂载,这样在 Linux 下对这个蜂鸣器的操作就可以用通用的 Linux 控制和读写函数来完成。图 4.4 蜂鸣器连接示意图4.5 LED 控制CTR 上的发光二极管显示阵列的显示是由扩展端口控制,由扩展在 EMIFA的地址空间接口的两个寄存器提供具体控制。在 ICETEK-OMAPL138-A 套件的 Linux 内核里集成了 ICETEK-CTR V6.2 的驱动,驱动中将 CTR 上的发光二极管做为一个标准的 led 进行挂载,这样在 Linux 下对这些 led 的操作就可以用通用的 Linux 控制和读写函数来完成。嵌入式课程设计实验报告6五 软件设计方案本次综合设计主要涉及到计时模块、液晶显示模块、键盘模块、直流电机控制模块、LED 模块和蜂鸣器模块。在设计的过程中需要将各个模块分别设计,然后整合到一起再进行调试与运行。主要分为三个方面:1、时钟显示与调时的实现,2、风扇定时开关的实现,3、风扇档位控制的实现。具体功能描述,显示当前的时间并对时间的小时分钟进行调整;并可以对风扇开关定时时间进行设置,当电机在定时时间以前是关闭状态时,到达设定时间电机以最低档转动,当电机在定时时间以前是开启状态,到达设定时间电机停止转动;并且在电机处于转动状态时可以对电机档位进行调节;同时有整点报时功能与 led 灯的随秒循环闪烁功能。5.1 计时模块实验中各个模块的工作都是基于计时模块来运行,在计时模块中通过对定时器周期的设置,并以定时器周期为基础,控制其他各个模块的运行。实验中设置定时器周期为 1s,并利用定时器实现时间的秒数增加,利用时间的进位关系实现分钟和时钟数的增加。分别定义了秒钟增加函数 secadd( )、分钟增加函数 minadd( )、时钟增加函数 houradd( )和整合函数 addOneSecond( )。本实验程序利用 QTimer 设置了一个时间周期为 1s 的定时器,每 1s 产生一个 timeout( )信号,将这个信号连接到相应的槽中,调用 drawgraph( )函数,在程序中定义了 addOneSecond( )子函数,在 drawgraph( )中调用 addOneSecond( )子函数实现时间的增加。另外定义了 secadd( )子函数实现秒钟加 1,当设置的秒钟加到 60s 时调用minadd( )子函数实现分钟数加 1,同理通过 houradd( )实现小时数加 1。具体的子程序见附录中的程序。嵌入式课程设计实验报告7开始设置频率秒 = 5 9 ? & 分 5 9 ?分和秒 = 5 9 & 时 2 3 ?秒和分 = 5 9 ? & 时 = 2 3 ?调用 s e c a d d ( )调用m i n a d d ( )Z d = t r u e , 调用h o u r a d d ( )Z d = t r u e , b u z ze r = 1 , c l e a r .结束YNYNYN图 5.1 计时流程图5.2 液晶显示模块液晶显示模块显示主要显示开机画面、时间的时钟、分钟和秒钟、电机开关状态和电机档位的显示。在液晶显示中主要通过调用液晶屏显示实验中中画线函数 CTR_lcd,实现数字 1-9 的显示及电机的开关状态 ON 和 OFF 显示。定义函数 drawnumber(int num, int position)和 drawmininum(int mininum, int mposition)通过输入数字参数来调用 ctr_lcd.cpp 中画线子函数 LCDDrawLine(unsigned int x0, unsigned int y0, unsigned int x1, unsigned int y1,unsigned char color),实现数字显示。图 5.2.1 开机画面 128*64.bmp嵌入式课程设计实验报告8图 5.2.2 二进制文件生成过程5.3 键盘模块键盘模块主要实现电机风扇的开关控制、档位控制和计时时间和定时时间的设置。各按键功能定义如下表:按键 功能1 直流电机的启动/停止2 挡位循环增加3 时间清零4 小时十位加 15 小时个位加 16 分钟十位加 17 分钟个位加 18 定时时钟个位加 19 定时时钟十位加 1在具体程序中通过对函数 keyPressEvent(QKeyEvent *e) 中各个按键功能的定义实现各个参数的设置。在上述按键功能中,当设置定时时间时需要使液晶屏转换到定时时间节目并显示设置的定时时间,此处利用 sleep(1)函数挂起1s,使前面调用的显示定时时间的程序能够在液晶屏上显示 1s 的时间,并通过add

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论