嵌入式系统课程设计---基于ARM微处理器的数码管驱动设计-任务书(1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
河南工业大学嵌入式课程设计
课程设计题目:基于ARM微处理器的数码管驱动设计学院:信息科学与工程学院
班级:电科1304
姓名:
学号:2013160304
指导老师姓名:李智慧
13级电科专业课程设计任务书
基于ARM微处理器的数码管驱动设计
一、设计要求
1.1实验内容:
1. 利用ARM微处理器实现数码管显示驱动;
2.能够显示0 1 2 3 4 5 6 7 8 9等数字,且循环显示;
3. 通过按键改变循环显示速度;
1.2实验设备:
硬件:PXA270 实验平台,PXA270 ARM 标准/增强型仿真器套件,PC 机。
软件:VMware Workstation、Ubuntu、win7。
二、设计方案
本次试验选用的芯片为 PXA270 ,使用的是 PXA270集成试验箱。基于 IntelXScale 架构的 PXA270处理器,集成了存储单元控制器、时钟和电源控制器、 DMA控制器、 LCD控制器、 AC97控制器、 I2S 控制器、快速红外线通信 (FIR) 控制器等外围控制器,可以实现丰富的外围接口功能。其低电源运行模式以及动态电源管理技术可以有效的降低电源的功耗。使用试验箱上的 4X4 的矩阵键盘作为输入,用来控制数码管显示的快慢速度,将需要输出的各个数码管状态从两个数码管中输出。
三、设计原理
1、数码管结构
七段数码管由 8 个发光二极管排列组成(包括小数点位)如下图所示:
这 8 个独立的二极管通常被命名: a.b.c.d.e.f.g.h 。 h 表示小数点。利用 7
段数码管能显示所有数字以及部分英文字母。
数码管有 2 种不同的形式:一种是 8 个发光二极管的阳极都连一起,成为共
阳极 8 段数码管如图所示:
共阳极 8 段数码管的 8 个发光二极管的正极一起接 VCC ,要控制数码管中的某一段亮,比如 A段,只须要控制数码管的 A 脚为低电平就可以了,反之熄灭 A 段就控制 A 脚为高电平。
另一种是 8 个发光二极管的阴极都连在一起,称为共阴极数码管,如图所示:
共阴极 8 段数码管的 8 个发光二极管的正极一起接 GND ,要控制数码管中的某一
段亮,比如 A段,只须要控制数码管的 A 脚为高电平就可以了,反之熄灭 A 段就控制 A 脚为低电平。
2、数码管显示方式
数码管的显示方式有静态和动态之分。分别介绍如下:
( 1)静态相示方式:
当 8 段数码管显示一个字符时,该字符对应的发光二极管控制信号一直保持有效;静态显示方式的每个数码管都需要一组控制信号。
( 2)动态显示方式:
动态的多组控制信号,轮流扫描这些数码管,十多个数码管可以同时动态显示(相对人眼)。
该字符对应的发光二极管是轮流点亮的,即控制信号按一定的周期有效,在点亮过程中,点亮时间是很短暂的,所以视觉看到的依然是很稳定的。
电平信号按照dp,g,e…a 的顺序组合形成的数据字称为该字符对应的段码,常用字
3、数码管驱动电路设计
以共阳极数码管为例:
用处理器的 8 个 GPIO分别控制数码管中的 8 段发光二极管,这样往 GPIO的引脚送一个低电平就能点亮该引脚对应的一段数码管,由于发光二极管能承受的电流大多是毫安级的,因此还需要外接一个限流电阻。
在实际设计中,处理器一般不是直接用 8 个 I/O 脚来控制数码管的显示,而是通过外接一个译码器来控制。最常用的译码器是 BCD译码器。如下图所示。
4、程序设计流程图
5、如何让驱动程序加载到内核
( 1)添加步骤(括号内容为解释):(以添加 led.c 驱动程序为例)
①在确定了自己的代码位置的前提下,建立自己的源代码目录,文件,Makefile ,Config.in 等。(对于本程序中 Makefile 文件和 Config.in 文件已有,只需添加相关内容即可,无需更改);
Makefile 文件:一个工程中的源文件不计其数,其按类型,功能,模块分
别放在若干个目录中, makefile 定义了一系列的规则来指定,哪些文件需要先
编译,哪些文件需要后编译,哪些文件需要重新编译,或是进行更复杂的功能操作。当执行 make命令时,便会调用 makefile 文件,以告诉 make命令需要怎样
的去编译和连接程序。
Config.in 文件:该文件可理解为内核的配置脚本,在执行 make menuconfig
命令时被调用,依靠各子目录的 config.in 文件,构成整个 linux 的配置菜单,在内核配置 make menuconfig 时从 config.in 中读出菜单,用户选择后保存到.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_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-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)测试驱动程序
①通常测试一个驱动程序都需要相应的应用程序,但对于一些只有标准输入
输出例如: 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