1、实验一 数码管显示嵌 入 式 系 统 实 验 报 告指导教师: 学科专业: 班 级: 学 号: 姓 名: 2014年6月前 言从20世纪七十年代单片机的出现到各式各样的嵌入式微处理器,微控制器的大规模应用,嵌入式系统已经有了近30年的发展历史,并在全世界各行业得到广泛应用。嵌入式系统产品的研制和应用已经成为我国信息化带动工业化、工业化促进信息化发展的新的国民经济增长点。经过几十年的发展,嵌入式系统已经在很大程度改变了人们的生活、工作和娱乐方式,而且这些改变还在加速。嵌入式系统具有无数的种类,每类都具有自己独特的个性。例如,MP3、数码相机与打印机就有很大的不同。汽车中更是具有多个嵌入式系统,使
2、汽车更轻快、更干净、更容易驾驶,机顶盒、高清电视、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等,都是典型的嵌入式系统。事实上,几乎所有带有一点“智能”的家电(全自动洗衣机、电脑电饭煲)都是嵌入式系统。嵌入式系统广泛的适应能力和多样性,使得视听、工作场所甚至健身设备中到处都有嵌入式系统。高端的嵌入式系统和工业软件的发展, 实际上与我们对该行业最先进的科学技术前沿的掌握有关,换言之,与我国该行业的科学技术水平有关。学习和研究嵌入式系统,具有重大意义。这学期的嵌入式系统的学习过程中我们在2410RP这一实验开发平台上进行了诸多嵌入式的基础实验。
3、在本报告中,将把其中两个具有代表性的实验的原理、内容、结果以及驱动和测试程序写出来。目 录实验一 数码管显示1.1 实验目的学习串并转换的相关知识,并编写驱动程序。1.2 实验内容1)了解数码管显示的工作原理;2)掌握数码管驱动的编写及测试过程;3)对zlg7289A的驱动程序进行编写;4)驱动数码管并显示个人学号。1.3 实验原理1.3.1 LED的发光原理LED(Light Emitting Diode),即发光二极管。是一种半导体固体发光器件。它是利用固体半导体置于一个有引线的架子上,然后四周用环氧树脂密封,起到保护内部芯线的作用,所以LED的抗震性能好。发光二极管的核心部分是由p型半导
4、体和n 型半导体组成的晶片,如图所示,在p型半导体和n型半导体之间有一个过渡层,称为p-n结。在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。PN结加反向电压,少数载流子难以注入,故不发光。这种利用注入式电致发光原理制作的二极管叫发光二极管,通称LED。当它处于正向工作状态时(即两端加上正向电压),电流从LED阳极流向阴极时,半导体晶体就发出从紫外到红外不同颜色的光线,光的强弱与电流有关。图1-1 LED发光原理图1.3.2 八段LED显示器八段LED显示器由8个发光二极管组成,如图1-2、图1-3所示。基中7个长条形的
5、发光管排列成“日”字形,另一个贺点形的发光管在显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。LED显示器有两种不同的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED 显示器。共阴和共阳结构的LED显示器各笔划段名和安排位置是相同的。当二极管导通时,相应的笔划段发亮,由发亮的笔划段组合而显示的各种字符。8个笔划段hgfedcba 对应于一个字节(8位)的D7 D6 D5 D4 D3 D2 D1 D0,于是用8位二进制码就可以表示欲显示字符的字形代码。例如,对于共阴LED显示器,当共阴极接地(为零
6、电平),而阳极hgfedcba各段为0111011时,显示器显示P字符,即对于共阴极LED 显示器,“P”字符的字形码是73H。如果是共阳LED显示器,共阳极接高电平,显示“P”字符的字形代码应为10001100(8CH)。这里必须注意的是:很多产品为方便接线,常不按规则的方法去对应字段与位的关系,这时字形码就必须根据接线来自行设计了。图1-2 LED数码管组成图图1-3 LED数码管原理图1.3.3 芯片zlg7289A的介绍zlg7289A是一片具有串行接口的可同时驱动8位共阴式数码管或64只独立LED的智能显示驱动芯片该芯片同时还可连接多达64 键的键盘矩阵单片即可完成LED显示键盘接口
7、的全部功能。zlg7289A内部含有译码器可直接接受BCD码或16进制码并同时具有2 种译码方式参看后文此外还具有多种控制指令如消隐闪烁左移右移段寻址等zlg7289A具有片选信号可方便地实现多于8位的显示或多于64键的键盘接口。芯片zlg7289A的典型应用:仪器仪表、工业控制器、条形显示器、控制面板。芯片zlg7289A的特点:1)串行接口无需外围元件可直接驱动LED; 2)各位独立控制译码/不译码及消隐和闪烁属性;3))循环左移/ 循环右移指令;4)具有段寻址指令方便控制独立LED; 5)64键键盘控制器内含去抖动电路。1.3.4 数码管的连接电路图1-4 数码管连接电路1.4 实验步骤
8、1)连接号宿主PC机与一台S3C2410-RP目标板;2)编写数码管驱动程序spi_led.c文件;3)启动系统终端设置S3C2410-RP目标板的地址;4)将宿主PC机的根目录挂载到S3C2410-RP目标板的mnt目录下;5)加载驱动程序;6)执行并测试程序。1.5 实验源代码解释与说明A. 头文件keypad.h#ifndef _KEYPAD_H_#define _KEYPAD_H_/Keypad 扫描码#define KEYPADNUMLK 0x33#define KEYPADDIV 0x34#define KEYPADMUL 0x35#define KEYPADSUB 0x3d#de
9、fine KEYPADADD 0x2e#define KEYPADENTER 0x1e#define KEYPADDOT 0x15 /DEL#define KEYPAD0 0x14 /INS#define KEYPAD1 0x1b /END#define KEYPAD2 0x1c /DOWN#define KEYPAD3 0x1d /PDN#define KEYPAD4 0x23 /LEFT#define KEYPAD5 0x24 #define KEYPAD6 0x25 /RIGHT#define KEYPAD7 0x2b /HOME#define KEYPAD8 0x2c /UP#defi
10、ne KEYPAD9 0x2d /PUP#endif 头文件定义了嵌入式开发板上输入键盘各个按键的逻辑地址。B. 驱动程序源文件spi_led.c#include /config.h内核配置头文件#include /kernel.h定义了经常用到的函数原型及宏定义#include /module.h定义了内核模块相关的函数、变量及宏#include /sched.h为调度程序头文件,定义了任务结构#include /interrupt.h中包含了与操作系统中断相关的大部分宏及struct结构的定义 #include #include /init.h中定义了驱动的初始化和退出相关的函数#incl
11、ude #include #include /version.h里定义了Linux内核的版本,用于版本检查#include /I/O头文件,定义对I/O端口操作的函数#include #include /访问系统硬件的头文件/-#include #include /自旋锁,防止多处理器并发#include #include #include #include #include #include #include #include /miscdevice结构体成员变量设备#include #include #include #include #include #include #include
12、#include /包含copy_to_user、copy_from_user等内核访问用户进程内存地址的函数定义#include /系统头文件,定义了设置或修改描述符/中断门等的嵌入式汇编宏/-#define HR_DEBUG 1/-#define IRQ_spi_led_INT IRQ_EINT4#define GPIO_SimpleINT_EINT4 (GPIO_MODE_ALT0 | GPIO_PULLUP_EN | GPIO_F4)#define ONEBIT 0x1#define KEYPADCSDIS (GPGDAT |=(ONEBIT 3)#define KEYPADCSEN (GPGDAT &=(ONEBIT 3)#define KEYPADDIRMO (GPBDAT &=(ONEBIT 0)#define KEYPADDIRMI (GPBDAT |=(ONEBIT 0)#define spi_led_MAJOR 104 /定义led_ary_MAJOR设备的主设备号devfs_handle_t spi_led_handle; /系统支持devfs的数据结构int spi_led_temp_count=0; /定义的系统全局变量,防止文件被多重打开static int DELAY_TIME=100; /时间延迟为100int pu