嵌入式系统课程设计基于ARM微处理器的数码管驱动设计任务书1课案_第1页
嵌入式系统课程设计基于ARM微处理器的数码管驱动设计任务书1课案_第2页
嵌入式系统课程设计基于ARM微处理器的数码管驱动设计任务书1课案_第3页
嵌入式系统课程设计基于ARM微处理器的数码管驱动设计任务书1课案_第4页
嵌入式系统课程设计基于ARM微处理器的数码管驱动设计任务书1课案_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、河南工业大学嵌入式课程设计课程设计题目:基于ARM微处理器的数码管驱动设计学 院: 信息科学与工程学院班 级: 电科1304姓 名: 学 号: 2013160304指导老师姓名:李智慧 13级电科 专业课程设计任务书学生姓名专业班级电科1304学院名称学号信息学院2013160304题 目基于ARM微处理器的数码管驱动设计课题性质工程设计课题来源自拟指导教师李智慧同组姓名主要内容设计一个嵌入式系统,实现数码管驱动设计。要求:1. 利用ARM微处理器实现数码管显示驱动;2.能够显示0 1 2 3 4 5 6 7 8 9等数字,且循环显示;3. 通过按键改变循环显示速度;任务要求1 设计系统的总体

2、方案,并进行论证。 2 说明数码管显示器、按键和ARM 微处理器控制板工作原理及组成,画出电路的总体方框图和电路原理图。3 说明系统工作原理,对系统进行调试。4 写出课程设计报告。参考文献1 嵌入式系统技术有关教材2 电路设计手册3 其他资料审查意见指导教师签字: 李智慧 教研室主任签字: 焦素敏 2017 年 1 月 6 日 基于ARM微处理器的数码管驱动设计一、设计要求1.1实验内容:1. 利用ARM微处理器实现数码管显示驱动;2.能够显示0 1 2 3 4 5 6 7 8 9等数字,且循环显示;3. 通过按键改变循环显示速度;1.2实验设备:硬件:PXA270 实验平台,PXA270 A

3、RM 标准/增强型仿真器套件,PC 机。软件:VMware Workstation、Ubuntu、win7。二、设计方案本次试验选用的芯片为 PXA270 ,使用的是 PXA270集成试验箱。基于 IntelXScale 架构的 PXA270处理器, 集成了存储单元控制器、 时钟和电源控制器、 DMA控制器、 LCD控制器、 AC97控制器、 I2S 控制器、快速红外线通信 (FIR) 控制器等外围控制器, 可以实现丰富的外围接口功能。 其低电源运行模式以及动态电源管理技术可以有效的降低电源的功耗。使用试验箱上的 4X4 的矩阵键盘作为输入, 用来控制数码管显示的快慢速度, 将需要输出的各个数

4、码管状态从两个数码管中输出。三、设计原理1、 数码管结构七段数码管由 8 个发光二极管排列组成(包括小数点位)如下图所示:这 8 个独立的二极管通常被命名: a.b.c.d.e.f.g.h 。 h 表示小数点。 利用 7段数码管能显示所有数字以及部分英文字母。数码管有 2 种不同的形式: 一种是 8 个发光二极管的阳极都连一起, 成为共阳极 8 段数码管如图所示:共阳极 8 段数码管的 8 个发光二极管的正极一起接 VCC , 要控制数码管中的某一段亮, 比如 A段, 只须要控制数码管的 A 脚为低电平就可以了, 反之熄灭 A 段就控制 A 脚为高电平。另一种是 8 个发光二极管的阴极都连在一

5、起, 称为共阴极数码管, 如图所示:共阴极 8 段数码管的 8 个发光二极管的正极一起接 GND , 要控制数码管中的某一段亮, 比如 A段, 只须要控制数码管的 A 脚为高电平就可以了, 反之熄灭 A 段就控制 A 脚为低电平。2、数码管显示方式数码管的显示方式有静态和动态之分。分别介绍如下:( 1) 静态相示方式: 当 8 段数码管显示一个字符时, 该字符对应的发光二极管控制信号一直保持有效;静态显示方式的每个数码管都需要一组控制信号。( 2)动态显示方式: 动态的多组控制信号,轮流扫描这些数码管,十多个数码管可以同时动态显示(相对人眼) 。 该字符对应的发光二极管是轮流点亮的, 即控制信

6、号按一定的周期有效, 在点亮过程中,点亮时间是很短暂的,所以视觉看到的依然是很稳定的。电平信号按照 dp,g,ea 的顺序组合形成的数据字称为该字符对应的段码,常用字符的段码表如下:字段dpgfedcba共阴极共阳极0 0 0 1 1 1 1 1 1 3FHC0H 1 0 0 0 0 0 1 1 0 06H F9H 2 0 1 0 1 1 0 1 1 5BH A4H 3 0 1 0 0 1 1 1 1 4FH B0H 4 0 1 1 0 0 1 1 0 66H99H 50   1   1   0   1  

7、; 1   0   1 6DH92H 6 0 1 1 1 1 1 0 1 7DH 82H 70 0 0 0 0 1 1 1 07H F8H 80   1   1   1   1   1   1   1 7FH 80H 9 0 1 1 0 1 1 1 1 6FH 90H3、数码管驱动电路设计 以共阳极数码管为例: 用处理器的 8 个 GPIO分别控制数码管中的 8 段发光二极管,这样往 GPIO的引脚送一个低

8、电平就能点亮该引脚对应的一段数码管, 由于发光二极管能承受的电流大多是毫安级的,因此还需要外接一个限流电阻。 在实际设计中, 处理器一般不是直接用 8 个 I/O 脚来控制数码管的显示, 而是通过外接一个译码器来控制。最常用的译码器是 BCD译码器。如下图所示。4、程序设计流程图5、如何让驱动程序加载到内核( 1)添加步骤(括号内容为解释) :(以添加 led.c 驱动程序为例) 在确定了自己的代码位置的前提下,建立自己的源代码目录,文件,Makefile , Config.in 等。(对于本程序中 Makefile 文件和 Config.in 文件已有,只需添加相关内容即可,无需更改); M

9、akefile 文件:一个工程中的源文件不计其数,其按类型,功能,模块分别放在若干个目录中, makefile 定义了一系列的规则来指定,哪些文件需要先编译, 哪些文件需要后编译, 哪些文件需要重新编译, 或是进行更复杂的功能操作。当执行 make命令时,便会调用 makefile 文件,以告诉 make命令需要怎样的去编译和连接程序。 Config.in 文件: 该文件可理解为内核的配置脚本, 在执行 make menuconfig命令时被调用,依靠各子目录的 config.in 文件,构成整个 linux 的配置菜单,在内核配置 make menuconfig 时从 config.in 中

10、读出菜单,用户选择后保存到.config 的内核配置文件中。在内核编译时,主 makefile 调用这个 .config文件,就知道了用户的选择。 将自己的 led.c 源程序放入内核源码 drive/char 下 修改 driver/charConfig.in 文件,把自己的驱动加入内核配置系统中。在文件中的适当位置(任意,决定了 make menuconfig 窗口中的所在的位置)添 加 内 容 : dep_tristate s3c2410 led support CONFIG_S3C2410_GPIO_LED $ CONFIG_ARCH_S3C2410代码解释:只要定义了 CONFIG_

11、ARCH_S3C2410 为 y 或是 m(即在 makemenuconfig 之后的窗口中选择 y 或是 m) character 分类下就会出现 s3c2410led support 选项,它对应了 CONFIG_S3C2410_GPIO_LED 的定义。当定义 s3c2410 led support 为 m,即把驱动程序编译为模块(不会编译到内核)生成 .O 文件,然后手动用 insmod 加载。当定义 s3c2410 led support 为 y, 即把驱动程序生成 .O 文件并且连接到内核,启动时自动加载。执行 make编译时 makefile 文件会根据 obj-m 和 obj-

12、y 编译并连接对应的源码。 如果在配置内核时被驱动编译为模块, 则 CONFIG_S3C2410_GPIO_LED 被定义为 m,在 makefile 脚本对应的 obj-m 中,就会编译 led.o 为内核可加载的模块修改 driver/char/makefile 件添加内容: obj-$( CONFIG_S3C2410_GPIO_LED)+=led.o执行命令: make modules( 在 linux 2.4.18 2410cl 下执行 )执行命令: make menuconfig配置好后进入开发板执行命令: insmod led.o( 2)测试驱动程序 通常测试一个驱动程序都需要相应

13、的应用程序, 但对于一些只有标准输入输出例如: open,close(release),read,write 等调用的驱动程序,有简单的办法,即使用 linux 现有的命令例如: cat,echo 等实现对设备的访问和控制。 通过编写应用程序来测试驱动程序6、动态加载驱动1)lsmod 查看是否有驱动程序即 .o 文件2)insmod led.o 动态添加驱动3)rmmod led 删除驱动详细步骤如下:建终端,进入 arm2410cl/kernel/linux-2.4.18-2410cl行命令 >#make menuiconfig在窗口中选中“ character device ,进行

14、相关配置后执行命令 >#make clean( 把环境清理干净 )make dep ( 添加相关依赖文件 )make modules进入 driver/char 目录下,查看是否生成 .o 文件进入开发板 cd host/kernel/linux-2.4.18-2410cl/drivers/char执行命令 #insmod led.o执行命令 lsmod ( 查看驱动是否添加成功 )在开发板找到相应程序,进入该目录下,运行 ./led将写好的控制源程序(由汇编程序和 C程序共同构成) ,以及 makefile 文件,放到共享目录下的文件夹中。进入开发板的相关目录下,执行 make命令之后

15、会生成 led.bin 文件;四、设计程序Main.c#include "cvtpxa270.h"unsigned char seg7table21 = 0xc0,0xf9, 0xa4, 0xb0, 0x99, 0x92,0x82, 0xf8,0x80, 0x90,0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e,0xf9, 0xb0, 0x92,0xf8, 0x90;void delay(int count)while(count -);int Main(int argc, char* argv)int i;int ch;int num;Uart_Se

16、lect(FFUART);Uart_Init(115200);LibCommInit();Uart_Printf("Keyboard Testrn");for(i=0;i<0x15;i+)ch=Key_GetKey();switch(ch)case 1:num=num-0.19;break;case 2:num+; break;case 3:num=1;break;default:break;*(unsigned char *) 0x04006000)= seg7tablei;*(unsigned char *) 0x04007000) = seg7tablei;de

17、lay(0xffffff*num);for(i=0x15;i>=0x00;i-)ch=Key_GetKey();switch(ch)case 1:num=num-0.19;break;case 2:num+; break;case 3:num=1; break;default:break;*(unsigned char *) 0x04006000) = seg7tablei;*(unsigned char *) 0x04007000) = seg7tablei;delay(0xffffff*num);return 0; 一、 调试结果在完成将上述程序烧入系统之后将会在试验箱上看到试验结果, 数码管会依次显示数值,并且按下按键数码管的显示频率将会改变。六、心得体会 通过这次课程设计, 我学到了不少课本上学不到的知识, 我加深了对嵌入式系列知识及其系统的认识, 同时也锻炼了自己的动手能力。 此次综合课程设计主要涉及硬件和软件两方面的内容, 通过这些我的硬件和软件开发能力都获得了提高, 首先硬件方面, 基本了解了电子产品的开发流程和所要做的工作, 在这次课程设计中,不仅对于以前的上理论课中一些不清楚的地方有了新的认识,对于ARM 微处理器有了一定的了解, 而且对于如何将理论转化成程序有了些更深刻的体会, 编程中处理问题的能力也有所增强。 虽

温馨提示

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

评论

0/150

提交评论