《嵌入式系统课程设计---基于ARM微处理器的数码管驱动设计-任务书(1)课案(共11页)》由会员分享,可在线阅读,更多相关《嵌入式系统课程设计---基于ARM微处理器的数码管驱动设计-任务书(1)课案(共11页)(11页珍藏版)》请在金锄头文库上搜索。
1、精选优质文档-倾情为你奉上河南工业大学嵌入式课程设计课程设计题目:基于ARM微处理器的数码管驱动设计学 院: 信息科学与工程学院班 级: 电科1304姓 名: 学 号: 指导老师姓名:李智慧 13级电科 专业课程设计任务书学生姓名专业班级电科1304学院名称学号信息学院题 目基于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 ARM 标准/增
3、强型仿真器套件,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 1 0 1 6DH92H 6 0 1 1 1 1 1 0 1 7DH 82H 70 0 0 0 0 1 1 1 07H
7、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 个 I/O 脚来控制数码管的显示, 而是通过外接一个译码器来控制。最常用的译码器是 BCD译码器。如下图所示。4、程序设计流程图5、如何让驱动程序加载到内核( 1)添加步骤(括号内容为解释) :(以
8、添加 led.c 驱动程序为例) 在确定了自己的代码位置的前提下,建立自己的源代码目录,文件,Makefile , Config.in 等。(对于本程序中 Makefile 文件和 Config.in 文件已有,只需添加相关内容即可,无需更改); Makefile 文件:一个工程中的源文件不计其数,其按类型,功能,模块分别放在若干个目录中, makefile 定义了一系列的规则来指定,哪些文件需要先编译, 哪些文件需要后编译, 哪些文件需要重新编译, 或是进行更复杂的功能操作。当执行 make命令时,便会调用 makefile 文件,以告诉 make命令需要怎样的去编译和连接程序。 Confi
9、g.in 文件: 该文件可理解为内核的配置脚本, 在执行 make menuconfig命令时被调用,依靠各子目录的 config.in 文件,构成整个 linux 的配置菜单,在内核配置 make menuconfig 时从 config.in 中读出菜单,用户选择后保存到.config 的内核配置文件中。在内核编译时,主 makefile 调用这个 .config文件,就知道了用户的选择。 将自己的 led.c 源程序放入内核源码 drive/char 下 修改 driver/charConfig.in 文件,把自己的驱动加入内核配置系统中。在文件中的适当位置(任意,决定了 make me
10、nuconfig 窗口中的所在的位置)添 加 内 容 : 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,即把驱动程序编译为模块(不会编译到
11、内核)生成 .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)+=l
12、ed.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
13、动态添加驱动3)rmmod led 删除驱动详细步骤如下:建终端,进入 arm2410cl/kernel/linux-2.4.18-2410cl行命令 #make menuiconfig在窗口中选中“ character device ,进行相关配置后执行命令 #make clean( 把环境清理干净 )make dep ( 添加相关依赖文件 )make modules进入 driver/char 目录下,查看是否生成 .o 文件进入开发板 cd host/kernel/linux-2.4.18-2410cl/drivers/char执行命令 #insmod led.o执行命令 lsmod (
14、 查看驱动是否添加成功 )在开发板找到相应程序,进入该目录下,运行 ./led将写好的控制源程序(由汇编程序和 C程序共同构成) ,以及 makefile 文件,放到共享目录下的文件夹中。进入开发板的相关目录下,执行 make命令之后会生成 led.bin 文件;四、设计程序Main.c#include cvtpxa270.hunsigned 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;i