基于ARM微处理器的数码管驱动设计

上传人:沈*** 文档编号:140161810 上传时间:2022-08-23 格式:DOC 页数:10 大小:276KB
收藏 版权申诉 举报 下载
基于ARM微处理器的数码管驱动设计_第1页
第1页 / 共10页
基于ARM微处理器的数码管驱动设计_第2页
第2页 / 共10页
基于ARM微处理器的数码管驱动设计_第3页
第3页 / 共10页
资源描述:

《基于ARM微处理器的数码管驱动设计》由会员分享,可在线阅读,更多相关《基于ARM微处理器的数码管驱动设计(10页珍藏版)》请在装配图网上搜索。

1、 嵌入式课程设计课程设计名称: 基于ARM微处理器的数码管驱动设计 专业班级: 电科1103班 学生姓名: 张 学 号: 2011160303 指导教师: 金广锋 11级电科 专业课程设计任务书学生姓名张专业班级 电科1103 班学号2011160303题 目基于ARM微处理器的数码管驱动设计课题性质A课题来源D指导教师金广锋 同组姓名主要内容1. 利用ARM微处理器实现数码管显示驱动;2.能够显示0 1 2 3 4 5 6 7 8 9等数字,且循环显示;3. 通过按键改变循环显示速度;任务要求1 设计出具体电路,列出所用器件及布线图。2 画出程序流程图,画出子程序或中断流程图。3 说明系统工

2、作原理,对系统进行调试。4 写出课程设计报告。参考文献1 嵌入式系统有关教材2 电路设计手册3 其他资料审查意见指导教师签字: 教研室主任签字: 2014 年 11 月 28 日 说明:本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页. 基于ARM微处理器的数码管驱动设计一、 设计要求 1、利用ARM微处理器实现数码管显示驱动; 2、能够显示0 1 2 3 4 5 6 7 8 9等数字,且循环显示; 3、通过按键改变循环显示速度;二、 设计方案本次试验选用的芯片为PXA270,使用的是PXA270集成试验箱。基于Intel XScale架构的PXA270处理器,集成

3、了存储单元控制器、时钟和电源控制器、DMA控制器、LCD控制器、AC97控制器、I2S控制器、快速红外线通信 (FIR)控制器等外围控制器,可以实现丰富的外围接口功能。其低电源运行模式以及动态电源管理技术可以有效的降低电源的功耗。使用试验箱上的4X4的矩阵键盘作为输入,用来控制数码管显示的快慢速度,将需要输出的各个数码管状态从两个数码管中输出。三、 设计原理1、数码管结构七段数码管由8个发光二极管排列组成(包括小数点位)如下图所示:这8个独立的二极管通常被命名:a.b.c.d.e.f.g.h。h表示小数点。利用7段数码管能显示所有数字以及部分英文字母。数码管有2种不同的形式:一种是8个发光二极

4、管的阳极都连一起,成为共阳极8段数码管如图所示:共阳极8段数码管的8个发光二极管的正极一起接VCC,要控制数码管中的某一段亮,比如A段,只须要控制数码管的A脚为低电平就可以了,反之熄灭A段就控制A脚为高电平。另一种是8个发光二极管的阴极都连在一起,称为共阴极数码管,如图所示:共阴极8段数码管的8个发光二极管的正极一起接GND,要控制数码管中的某一段亮,比如A段,只须要控制数码管的A脚为高电平就可以了,反之熄灭A段就控制A脚为低电平。2、 数码管显示方式数码管的显示方式有静态和动态之分。分别介绍如下:(1) 静态相示方式:当8段数码管显示一个字符时,该字符对应的发光二极管控制信号一直保持有效;静

5、态显示方式的每个数码管都需要一组控制信号。 (2)动态显示方式:动态的多组控制信号,轮流扫描这些数码管,十多个数码管可以同时动态显示(相对人眼)。该字符对应的发光二极管是轮流点亮的,即控制信号按一定的周期有效,在点亮过程中,点亮时间是很短暂的,所以视觉看到的依然是很稳定的。3、 数码管驱动电路设计以共阳极数码管为例:用处理器的8个GPIO分别控制数码管中的8段发光二极管,这样往GPIO的引脚送一个低电平就能点亮该引脚对应的一段数码管,由于发光二极管能承受的电流大多是毫安级的,因此还需要外接一个限流电阻。vcc 在实际设计中,处理器一般不是直接用8个I/O脚来控制数码管的显示,而是通过外接一个译

6、码器来控制。最常用的译码器是BCD译码器。如下图所示。1H G F E D C B Acom 2 8 Gpio1 Gpio2 Gpio3 gpio 8ABCDEFGAD 数码管与7段数码管的连接4、程序设计流程图 5、 如何让驱动程序加载到内核(1)添加步骤(括号内容为解释):(以添加led.c驱动程序为例)在确定了自己的代码位置的前提下,建立自己的源代码目录,文件,Makefile,Config.in等。(对于本程序中Makefile文件和Config.in文件已有,只需添加相关内容即可,无需更改)Makefile文件:一个工程中的源文件不计其数,其按类型,功能,模块分别放在若干个目录中,m

7、akefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,或是进行更复杂的功能操作。当执行make命令时,便会调用makefile文件,以告诉make命令需要怎样的去编译和连接程序。Config.in文件:该文件可理解为内核的配置脚本,在执行 make menuconfig 命令时被调用,依靠各子目录的config.in文件,构成整个linux的配置菜单,在内核配置make menuconfig时从config.in中读出菜单,用户选择后保存到.config的内核配置文件中。在内核编译时,主makefile调用这个.config文件,就知道了用户的选

8、择。将自己的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(即在make menuconfig之后的窗口中选择y或是m)character分类下就会出现s3c2410 led support选项,它

9、对应了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/makefil

10、e文件添加内容:obj-$( CONFIG_S3C2410_GPIO_LED)+=led.o执行命令:make modules(在linux2.4.182410cl下执行)执行命令:make menuconfig配置好后进入开发板执行命令:insmod led.o2测试驱动程序(1) 通常测试一个驱动程序都需要相应的应用程序,但对于一些只有标准输入输出例如:open,close(release),read,write等调用的驱动程序,有简单的办法,即使用linux现有的命令例如:cat,echo等实现对设备的访问和控制。(2)通过编写应用程序来测试驱动程序 6、 动态加载驱动1)lsmod 查

11、看是否有驱动程序即.o文件2)insmod led.o 动态添加驱动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

12、.o执行命令lsmod (查看驱动是否添加成功)在开发板找到相应程序,进入该目录下,运行./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, 0

13、x92, 0xf8, 0x90;void delay(int count)while(count -);int Main(int argc, char* argv)int i;int ch; int num; Uart_Select(FFUART);Uart_Init(115200);LibCommInit();Uart_Printf(Keyboard Testrn);for(i=0;i=0x00;i-)ch=Key_GetKey();switch(ch)case 1:num=num-0.19;break;case 2:num+; break;case 3:num=1; break;defau

14、lt:break; *(unsigned char *) 0x04006000) = seg7tablei; *(unsigned char *) 0x04007000) = seg7tablei; delay(0xffffff*num); return 0; 五、 调试结果 在完成将上述程序烧入系统之后将会在试验箱上看到试验结果,数码管会依次显示数值,并且按下按键数码管的循环显示速度将会发生改变。六、 心得体会这次课程设计虽然经历了很多的困难,但通过和老师以及同学的交流并查找资料,最终完成了课程设计。通过这次课程设计,我学会了很多的东西。一方面,通过这次课程设计,我学会并熟悉了PXA270,

15、巩固了自己的嵌入式知识,通过电路的设计再一次熟悉了数字电路以及模拟电路的知识,并且锻炼了自己查找资料的能力,强化了自己的专业技能;另一方面,我也有了更多的和老师以及同学交流的机会,锻炼了自己的语言表达能力,从软实力上提高了自己,这对于找工作,以及今后的生活与学习都是很有帮助的。通过这次课程设计,我觉得我应该努力的学好自己的专业课知识,这是对于人们生活的丰富大有帮助的,这就是科技,今后还要更加关注细节的处理,在生活中学习,在生活中实践。七、 参考文献1、UP-CUP S2410经典 linux 实验指导书 北京博创科技2.、嵌入式linux系统实例教程 李仁发主审 人民邮电出版社3、嵌入式系统接口设计与linux驱动程序开发 刘淼 编著

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!