基于LINUX系统的嵌入式LED显示的设计.doc

上传人:wj 文档编号:1261583 上传时间:2023-04-30 格式:DOC 页数:26 大小:942.50KB
下载 相关 举报
基于LINUX系统的嵌入式LED显示的设计.doc_第1页
第1页 / 共26页
基于LINUX系统的嵌入式LED显示的设计.doc_第2页
第2页 / 共26页
基于LINUX系统的嵌入式LED显示的设计.doc_第3页
第3页 / 共26页
基于LINUX系统的嵌入式LED显示的设计.doc_第4页
第4页 / 共26页
基于LINUX系统的嵌入式LED显示的设计.doc_第5页
第5页 / 共26页
基于LINUX系统的嵌入式LED显示的设计.doc_第6页
第6页 / 共26页
基于LINUX系统的嵌入式LED显示的设计.doc_第7页
第7页 / 共26页
基于LINUX系统的嵌入式LED显示的设计.doc_第8页
第8页 / 共26页
基于LINUX系统的嵌入式LED显示的设计.doc_第9页
第9页 / 共26页
基于LINUX系统的嵌入式LED显示的设计.doc_第10页
第10页 / 共26页
基于LINUX系统的嵌入式LED显示的设计.doc_第11页
第11页 / 共26页
基于LINUX系统的嵌入式LED显示的设计.doc_第12页
第12页 / 共26页
基于LINUX系统的嵌入式LED显示的设计.doc_第13页
第13页 / 共26页
基于LINUX系统的嵌入式LED显示的设计.doc_第14页
第14页 / 共26页
基于LINUX系统的嵌入式LED显示的设计.doc_第15页
第15页 / 共26页
基于LINUX系统的嵌入式LED显示的设计.doc_第16页
第16页 / 共26页
基于LINUX系统的嵌入式LED显示的设计.doc_第17页
第17页 / 共26页
基于LINUX系统的嵌入式LED显示的设计.doc_第18页
第18页 / 共26页
基于LINUX系统的嵌入式LED显示的设计.doc_第19页
第19页 / 共26页
基于LINUX系统的嵌入式LED显示的设计.doc_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于LINUX系统的嵌入式LED显示的设计.doc

《基于LINUX系统的嵌入式LED显示的设计.doc》由会员分享,可在线阅读,更多相关《基于LINUX系统的嵌入式LED显示的设计.doc(26页珍藏版)》请在冰点文库上搜索。

基于LINUX系统的嵌入式LED显示的设计.doc

摘要

嵌入式系统是先进的计算机技术、半导体技术、电子技术以及各种具体应用相结合的产物,是技术密集、资金密集、高度分散、不断创新的新型集成知识系统。

本次课程设计的目的是在有C语言基础,掌握在Linux下常用编辑器的使用Makefile的编写和使用以及Linux下的程序编译与交叉编译过程需要部分数字电路的知识的基础上。

学习LED的相关知识,掌握74HC273芯片的工作原理以及了解SPI接口的相关知识。

主要内容是学习LED相关知识,了解74HC273芯片对LED点亮的工作机制,熟练阅读74HC273芯片资料,掌握对它的使用。

关键词:

嵌入式系统、LED、点阵

目录

一、引言 1

二、嵌入式系统的特点 2

1、概念 2

2、8段LED原理 3

3、点阵式LED原理 3

4、LED数码管电路图 4

5、74HC273在开发板上的连接 5

四、实验部分 6

1、实验设备及工具 6

2、实验基础 6

3、实验环境连接 7

五、实验步骤 12

1、阅读理解源码 12

2、编译应用程序 12

3、下载调试 13

六、心得体会 15

七、参考文献 16

附录:

17

一、引言

目前,嵌入式技术已成为通信和消费类产品的共同发展方向。

嵌入式系统几乎包括了生活中的所有电器设备,如掌上PDA、移动计算设备、电视机顶盒、手机上网、数字电视、多媒体、汽车、微波炉、数字相机、家庭自动化系统、电梯、空调、安全系统、自动售货机、蜂窝式电话、消费电子设备、工业自动化仪表与医疗仪器等。

嵌入式系统是先进的计算机技术、半导体技术、电子技术和各个行业的具体应用相结合的产物,这就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。

嵌入式系统一般指非PC系统。

它是以应用为中心、软硬件可裁减的、能适应应用系统对功能、可靠性、成本、体积、功耗等综合性要求的专用计算机系统。

简单地说,嵌入式系统是集系统的应用软件与硬件于一体,类似于PC中BIOS的工作方式,具有软件代码小、高度自动化、响应速度快等特点,因此特别适合于要求实时和多任务的系统。

嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成。

二、嵌入式系统的特点

嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可剪裁,适应引用系统对功能、可靠性、成本、体积、功耗严格要求的计算机系统。

1)嵌入式系统通常是面向特定应用的,嵌入式CPU与通用型的最大不同就是,嵌入式CPU大多工作在为特定用户群设计的系统中,它通常都具有低功耗、小体积、高集成度等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,因此,器件的移动能力大大增强,同时跟网络的耦合也越来越紧密。

2)嵌入式系统的硬件和软件都必须高效地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力。

3)因为嵌入式系统和具体应用有机地结合在一起,它的升级换代也和具体产品同步进行,所以,嵌入式系统产品一旦进入市场,一般都具有较长的生命周期。

4)为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机之中,而不是存贮于磁盘等载体中。

嵌入式系统本身不具备自举开发能力,即使在设计完成后,用户也不能对其中的程序进行修改,而是必须有一套开发工具和环境才能进行开发。

三、LED基本原理

1、概念

在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。

PN结加反向电压,少数载流子难以注入,故不发光。

这种利用注入式电致发光原理制作的二极管叫发光二极管,通称LED。

LED的发光颜色和发光效率与制作LED的材料和工艺有关,目前广泛使用的有红、绿、蓝三种。

由于LED工作电压低(仅1.5-3V),能主动发光且有一定亮度,亮度又能用电压(或电流)调节,本身又耐冲击、抗振动、寿命长(10万小时),所以在大型的显示设备中,目前尚无其他的显示方式与LED显示方式匹敌。

把红色和绿色的LED放在一起作为一个像素制作的显示屏叫双基色屏或伪彩色屏;把红、绿、蓝三种LED管放在一起作为一个像素的显示屏叫三基色屏或全彩屏。

制作室内LED屏的像素尺寸一般是2-10毫米,常常采用把几种能产生不同基色的LED管芯封装成一体,室外LED屏的像素尺寸多为12-26毫米,每个像素由若干个各种单色LED组成,常见的成品称像素筒或像素模块。

LED显示屏如果想要显示图象,则需要构成像素的每个LED的发光亮度都必须能调节,其调节的精细程度就是显示屏的灰度等级。

灰度等级越高,显示的图像就越细腻,色彩也越丰富,相应的显示控制系统也越复杂。

在当前的技术水平下,256级灰度的图像,颜色过渡已十分柔和,图像还原效果比较令人满意。

资料显示,LED光源比白炽灯节电87%、比荧光灯节电50%,而寿命比白炽灯长20~30倍、比荧光灯长10倍。

LED光源因具有节能、环保、长寿命、安全、响应快、体积小、色彩丰富、可控等系列独特优点,被认为是节电降能耗的最佳实现途径。

2、8段LED原理

LED的7个字段分别称为a、b、c、d、e、f、g,有时还有一个小数点段h,图1(a)所示。

通过7个(或8个)发光段的不同组合,显示0~9和A~F共16个字母数字,从而实现十六进制的显示。

为使7段显示器显示数字或字符,就需点亮相应的段,每个段分别由数据线进行控制,通常数据线D0~D7顺序控制a~h段,如图11-34(b)所示,所需的控制信号称为段码。

由于数字与段码之间没有规律性,因此必须进行数字与段码之间的转换以便显示数字。

常用的转换方法是将要显示字形的段码列成一个表,称为段码表。

显示时,根据字符查段码表,取出其对应的段码送到数据线上来控制显示。

3、点阵式LED原理

点阵式LED的显示单元一般由8行8列LED组成,其外形及内部连接如图3所示,可以再由这8行8列的LED拼成更大的LED阵列。

点阵式LED显示器能显示各种字符、汉字及图形、图像,并具有色彩。

点阵式LED中,每个LED表示一个像素,通过每个LED的亮与灭来构造出所需的图形,各种字符及汉字也是通过图形方式来显示的。

对于单色点阵式LED,每个像素需要1位二进制数表示,1表示亮,0表示灭。

对于彩色点阵式LED,则每个像素需要更多的二进制位表示,通常需要一个字节。

点阵式LED显示器的显示控制采用扫描方式,在数据存储器中开辟若干个存储单元作为显示缓冲区,缓冲区中存有所需显示图形的控制信息。

显示时依次通过列信号驱动器输出一行所需所有列的信号,然后再驱动对应的行信号,控制该行显示。

只要扫描速度适当,显示的图形就不会出现闪烁

4、LED数码管电路图

其中各个引脚的功能在下面都有描述。

图1.LED数码管电路图

5、74HC273在开发板上的连接

74HC273在8字数码管中开发板中的连接如下图所示:

图2.开发板上的7段LED的连接

开发板设置2个数码管,由74HC273控制。

74HC273是同步串行转并行的锁存器,在此通过SPI总线和CPU连接,锁存数据后驱动数码管发光。

图3.开发板上点阵式LED的连接

四、实验部分

1、实验设备及工具

硬件:

UP-TECHS2410/P270DVP嵌入式实验平台、PC机Pentium500以上,硬盘10G以上。

软件:

PC机操作系统REDHATLINUX9.0+MINICOM+ARM-LINUX开发环境

2、实验基础

目的是为后续实验搭建好软、硬件环境,配置好相关的协议、服务,并通过编写最简单的HelloWorld程序进行测试。

由于实验都要依靠前面的配置,本段只着重叙述实验的具体实现。

3、实验环境连接

(1)、建立工作目录

[root@zxtsmile]#mkdirhello

[root@zxtsmile]#cdhello

(2)、编写程序源代码

用下面的命令来编写hello.c的源代码,进入hello目录使用vi命令来编辑代码:

[root@zxthello]#vihello.c

按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按Esc键进入命令状态,再用命令“:

wq”保存并退出。

这样我们便在当前目录下建立了一个名为hello.c的文件。

进入/arm2410cl/exp/basic/10_led目录,使用vi编辑器或

其他编辑器阅读理解源代码

(3)、编译应用程序

运行make产生test_led可执行文件test_led

(4)、编写Makefile

(5)、编译应用程序

在hello目录下运行“make”来编译我们的程序了。

如果进行了修改,重新编译则运行:

[root@zxthello]#makeclean

[root@zxthello]#make

(6)、下载调试

在宿主PC计算机上启动NFS服务,并设置好共享的目录,在建立好NFS共享目录以后,我们就可以进入MINICOM中建立开发板与宿主PC机之间的通讯了。

其步骤如下:

①服务器设置,输入命令”setup”分别进行对系统服务及防火墙配置。

图1服务器配置

②为宿主PC机配置了NFS服务

NFS(NetworkFileSystem)指网络文件系统,它实现了文件在不同的系统间使用。

当我们想用远端档案时,只需调用“mount”就可以远端系统挂接在自己的档案系统之下。

每次重启宿主PC机时,先输入命令”serviceportmaprestart”和”servicenfsrestart”,以启动nfs服务。

③启动vi编辑器查看网段

输入命令”Vi/etc/exports”查看网段为”192.168.0.*”,按键”ESC”,输入”:

wp”存盘退出。

④重新启动NFS服务,输入”ifconfigeth0192.168.0.110”完成主机IP地址设置。

图2NFS服务器配置

⑤进入共享文件”cd/root/share/exp/basic/10_led”,输入”ls”查看10_led

下的两个.c文件。

输入”makeclean”,”make”生成两个.0文件。

转入超级终端

<1>硬件连接:

连接宿主机和UP-TECHS2410/P270DVP嵌入式实验平台。

<2>打开宿主PC机电源,进入Linux操作系统。

(7)、启动实验平台

①硬件连接:

连接电源,将12V电源线的连到UP-NETARM2410-CL的电源接口;连接串口线,一端连接PC的串口,另一端连接到UP-NETARM2410-CL的串口(RS232-0);连接网线,将随机附带的交叉网线把UP-NETARM2410-CL靠近于电源接口的网口和PC机的网口连接好。

②建立超级终端:

运行Windows系统下(以WindowsXP为例)开始→所有程序→附件→通讯→超级终端(HyperTerminal)。

③新建一个通信终端。

如果要求输入区号、电话号码等信息请随意输入,出现如图所示对话框时,为所建超级终端取名为arm,可以为其选一个图标。

单击“确定”按钮

图3新建超级终端

④在接下来的对话框中选择ARM开发平台实际连接的PC机串口(如COM1),按确定后出现如图所示的属性对话框,设置通信的格式和协议。

这里波特率为115200,数据位8,无奇偶校验,停止位1,无数据流控制。

按确定完成设置。

完成新建超级终端的设置以后,可以选择超级终端文件菜单中的另存为,把设置好的超级终端保存在桌面上,以备后用。

用串口线将PC机串口和平台UART0正确连接后,就可以在超级终端上看到程序输出的信息了。

图4超级终端端口设置

⑤启动实验平台:

:

打开电源开关,系统会由VIVI开始引导。

正常启动时会显示启动信息到“PressReturntostarttheLINUXnow,anyotherkeyforvivi”,按除回车键外的其它键则进入vivi控制台。

图5启动超级终端平台

图6超级终端命令输入

⑥输入”ping192.168.0.122”和”192.168.0.121”查看是否连通,若成功连接,”Ctrl+C”结束,在进行挂载后,查找根目录下的文件”cd/host/exp/basic/10_led”,通过“ls”查看文件,然后使用“insmods3c2410-led.o”命令完成将一个可动态加载的模块加载到内核中。

输入”lsmod”显示当前内核加载的模块,输入命令”./test_led”进行程序测试。

图7下位机运行

五、实验步骤

1、阅读理解源码

进入/arm2410cl/exp/basic/10_led目录,使用vi编辑器或其他编辑器阅读理解源代码

2、编译应用程序

运行make产生test_led可执行文件test_led

[root@BCexp/basic]#cd10_led

[root@BC10_led]#make

armv4l-unknown-linux-gcc-c-I..-Wall-O-D__KERNEL__-DMODULE

-I/home/kernel/linux-2.4.18-2410cl/includes3c2410-led.c-os3c2410-led.o

armv4l-unknown-linux-gcc-I..-Wall-O-D__KERNEL__-DMODULE

-I/home/kernel/linux-2.4.18-2410cl/include-c-otest_led.otest_led.c

[root@BC2410-ClassicsLED]#ls

Makefilereadmes3c2410-led.cs3c2410-led.otest_ledtest_led.c

test_led.o

3、下载调试

切换到minicom终端窗口,使用NFSmount开发主机的/arm2410cl到/host目录,然后进入/host/exp/basic/10_led目录,用insmods3c2410-led.o命令插入led驱动,并用lsmod命令查看是否已经插入。

[/mnt/yaffs]mount-tnfs-onolock192.168.0.189:

/arm2410cl/host

[/host/exp/basic]cd10_led/

[/host/exp/10_led]ls

Makefilereadmes3c2410-led.cs3c2410-led.otest_ledtest_led.c

test_led.o

[/host/exp/10_led]insmods3c2410-led.o

Usings3c2410-led.o

0-numerictube:

Dprintkdeviceopen

s3c2410-hc273initializedUsingexio.o

[/host/exp/10_led]lsmod

ModuleSizeUsedbyTainted:

P

s3c2410-led20480(unused)

[/host/exp/10_led]./test_led

即可以看到8字数码管和点阵数码管工作。

六、结果分析

七、心得体会

通过做这次ARM嵌入式课程设计我深深的体会到,专心投入去完成一件事情是多么让人激动不已的,当某个环节的问题被你解决后,那种成就感能带给自己更大的信心和激发你对学习的热情,可能这是大学最后一个课程设计的原因,我把大量的精力和激情都投入到这次课程设计中,所以在整个学习过程中,我解决了一些平时没有碰到的问题,这更让我对技术这个行业产生强烈的兴趣,下面是我这两周的课程设计心得。

这次课程设计我们做的是在ARM嵌入式平台上通过LED显示不同的符号,这是一个具有挑战性的功课,我们组分完每个人的任务后,接下来查资料,设计,分析,和同学讨论,在电脑上用软件仿真,这几天,紧张而又充实。

这次课程设计是对我所学知识的全面检验。

我们在课堂上掌握的仅仅是专业基础课的理论面,如何去面对实际的设计是一个值得我们思考的问题,又如何把我们学的书本内容运用到实际中呢?

我想做本次课程设计就给我们提供了良好的实践平台。

在本次课程设计中我感触很深的就是要查阅很多指导书籍。

在此次设计中,我学会了自上而下的系统设计思想,掌握了综合应用所学理论的能力,而且对我的毅力是个考验,我是连续将近两周周做下来的。

对我而言,知识上的收获重要,精神上的丰收喜。

挫折是一份财富,经历是一份拥有。

此次课程设计将对我今后的进步产生积极影响。

最后由衷感谢老师的指导,同学的帮助。

 

八、参考文献

【1】赵宏,曹洁.Linux系统指南.成都:

西南交通大学出版社,2008

【2】张晓林,崔迎炜.嵌入式系统设计与实现。

北京:

北京航空航天大学出版社,2006

【3】杨刚.嵌入式基础实验教程.北京:

北京大学出版社,2007

【4】陈文智.嵌入式系统开发原理与实践.北京:

清华大学出版社,2005

【5】杜春雷.ARM体系结构与编程.清华大学出版社,2007

【6】博创公司.2410经典实验指导书3.2.北京博创兴业科技有限公司,2007

【7】郑慕德.嵌入式微型计算机系统实例教程.北京:

科学出版社,2006

【8】刘洪涛,孙天泽.嵌入式技术与设计.北京:

人民邮电出版社,2009

【9】

【10】,2009.8.6

【11】http:

//wwww.broadex-,2009.1.2

附录:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

/*debugmacros*/

//#undefDEBUG

#defineDEBUG

#ifdefDEBUG

#defineDPRINTK(x...) printk("s3c2410-led:

"x)

#else

#defineDPRINTK(x...)

#endif

#defineDEVICE_NAME"s3c2410led"

#defineLED_TUBE_PHY_START0x08000110

#defineLED_DIG_PHY_START0x08000100

#defineLED_TUBE_IOCTRL0x11

#defineLED_DIG_IOCTRL0x12

staticintledMajor=0;

#defineLED_MINOR1

#ifdefCONFIG_DEVFS_FS

staticdevfs_handle_tdevfs_led_dir,devfs_led;

#endif

staticu32s3c2410_led_tube_addr=IDE_BASE+0x100;

staticu32s3c2410_led_dig_vaddr=IDE_BASE+0x110;

staticints3c2410_led_ioctl(structinode*inode,structfile*filp,unsignedintcmd,unsignedintarg)

{

//printk("DOTbufferis%x\n",arg>>8);

switch(cmd){

caseLED_DIG_IOCTRL:

return*(volatileunsignedlong*)s3c2410_led_dig_vaddr=(arg>>8)|arg<<16;;

default:

returnprintk("yourcommandisnotexist");

}

return0;

}

staticssize_ts3c2410_led_write(structfile*filp,constchar*buf,size_tcount,loff_t*f_pos)

{

inti;

unsignedcharmdata[16];

if(copy_from_user(mdata,buf,10)){

return-EFAULT;

}

for(i=0;i<8;i++){

// printk(":

:

%d",mdata[i]);

// *((volatileunsignedchar*)(s3c2410_led_tube_addr+i))=0xff;

*((volatileunsignedchar*)(s3c2410_led_tube_addr+i*2))=mdat

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 小学教育

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2