文档库 最新最全的文档下载
当前位置:文档库 › USB鼠标嵌入式驱动系统

USB鼠标嵌入式驱动系统

USB鼠标嵌入式驱动系统
USB鼠标嵌入式驱动系统

USB鼠标嵌入式驱动系统

朱娟光华长春大学

吉林省

E-mail:zhuj_guanghua@

https://www.wendangku.net/doc/1a5611480.html, 王帅中国科学院长春光

学精密机械与物理研究

吉林长春

张舒阳王津立李赵希

长春大学光华学院

吉林长春

摘要:该论文设计了一种USB鼠标基于AT89S52单片机的嵌入式驱动系统。这AT89S52控制USB的主控芯片,SL811HS实现控制USB鼠标的功能。硬件给出该系统的原理框图。软件介绍系统的实现原理和USB总线重新插入行动的装置检测、设备速度检测等。嵌入式USB驱动系统有重要的参考价值,USB主机系统的设计。

关键词——USB数目;SL811HS;AT89S52单片机

I.简介

USB设备因其便捷和高性价比特点,被广泛用于日常工作和生活中。例如,USB 磁盘,USB相机,USB鼠标,USB键盘,等等。单片机(SCM)有成熟的技术和高性价比,被广泛用于自动化领域中。但是单片机没有USB主机接口配置,从而导致直接控制USB外围设备有困难。如果我们在单片机系统中增加USB主机接口、通过接口控制USB从动装置设备,单片机系统的功能将大大扩展。该系统为单片机加上USB主机接口。使用常见的51单片机连接特殊解决USB接口芯片。这个解决方案具有良好的灵活性和简单的移植。它为低成本产品的开发提供了一个广阔的前景。系统选用Atmel公司的AT89S52单片机。USB的主控制芯片是芯片赛浦路斯的公司的SL811HS。SL811HS可以在任何一个主机或从动模型使用,它支持USB1.1的全速和低速数据传输。当在主机模式下工作时,就可以自动检测到嵌入SL811HS的行为。本论文介绍方法AT89S52控制SL811HS以完成USB控制的方法。例如,USB鼠标控制计划的情况。

II.系统硬件

系统的硬件如图一所示。AT89S52和SL811HS的电压分别为5V和3.3V。虽然电压不同,AT89S52和SL811HS的参数可以根据噪音容忍参数直接连接。

图1、总系统图

无需转换电压,当设计硬件时,需注意一下方面:

1、SL811HS的D引脚上拉电阻连接线与AT89S52单片机的P0引脚连接,应确保AT89S52对于SL811HS的读/写(R/W)控制。

2、用33欧的电阻在一个15K的下拉电阻在连接线上,连接AT89S52和SL811HS 的数据参数。

3、在这里,SL811HS用于主机模式下,所以控制存储器的参数必须设置为0。米每秒的必须设置为0。

4、晶体频率应为48赫兹

III.控制程序

A.SL811HS的读写控制

SL811HS的读写控制项目如下所示

图2、寻读功能图

图3、写函数

在图2和图3中,根据SL811HS 的读写时序,EZUSB 延时(1)代表延时一毫

秒。

B.初始化

当单片机控制SL811HS,首先,它会进行一些列初始化操作。初始化操作由SL811HS 芯片重置、USB 总线复位、插入检测装置、USB 数据传送速度检测装置等等组成。通过这些初始化操作,SL811HS 将建立一个基础的保护USB 接口作为从属装置的连接关系,这为接下来的数据传输做准备。重设是芯片状态的重设操作,包括了芯片内部存储器测试值的重设。该操作不需要读写内部寄存器,只需要输入一个效果产生脉冲到内部芯片。USB 总线复位是指让USB 数据可以输出到SE0状态,该状态保持超过10毫秒。当从属装置连接到USB 总线接受的重置信号,将为接下来的数据传输做准备。CtrlReg 的寄存器比特设置为3和4,并保持10毫秒以上,然后恢复至00.然后,内部芯片产生USB 总线复位信号。

在USB 协议的物理层,USB 设备是连接到USB 总线而不是检测总线电压。单片机也可以从电压处得到速度支持。在物理层电压处检测结果反映在SL811HS

的状

态寄存器数值上。单片机通过读出这些状态寄存器数值获得嵌入状态和装置速度。

https://www.wendangku.net/doc/1a5611480.html,B设备列举

主中心不断检测DATA+DATA-引脚中断两个信号线分别由15K电阻连接到地线。每个USB设备通过1.5K电阻连接在电源的D+引脚。当主机的尾端连接在一个USB装置上,USB装置的电阻将会使电压升高。所以主机中心意识到有USB装置嵌入。主机检测到一个新的USB装置,它会进行USB计算操作。Enumeration是一些USB设备连接到系统时从主机获得一个特殊的地址码所进行的操作。这地址码用于访问个别装置。当USB主机控制要查究某个装置属于哪类型的装置,它会绑定到项目的驱动装置上。在列举过程中,主机将发送一些基本命令给从属装置。设置地址,该命令会改变当前的设备地址。获取设备描述符号,该命令会获取该装置的信息,包括制造商、固件版本等等。

?设置地址,该命令会改变当前的设备地址。

?获取设备描述符号,该命令会获取该装置的信息,包括制造商、固件版本等等。

?获取配置描述符,将会恢复使用该端口。

?获取内部描述符,将会通过该装置的内部接口。

?获取字符串描述符,将得到制造商、产品名称的统一格式符号。

?设置配置

?设置内部

和一个USB装置连接到主机,上述的基本过程都是必须的,如果USB装置没有列举,这个设置将不能被操作系统使用。

D、传输的实现

传输由发送每个指令和以下数据传输而实现。根据USB1.1协议,传输事件通常由三个数据包组成。他们分别是指令包,数据包和数据包助手。指令包负责传输的类型,传输数据的长度和数据存储空间地址等等。指令包由USB主机和从属装置发出,USB从属装置会发出和USB主机指令一致的传输数据。如果传输成功,主机会发送握手信号给USB从属装置。所有类型的USB传输操作都通过SL811HS

内部存储器的读写而实现。

例如,获取装置描述符号的指令应包括5个存储器的读写。分别是EP0状态,EP0计算,EP0地址,EP0Xferlen和EP0控制。获取装置描述符号的指令如下所示:

表1、获取设备运行命令符号

每个

寄存器设计如下:

EP0Status =0xD0;//十六进制的D 赋予PID_SETUP,0端口等于0.EP0Counter =0x00;//USB 地址是十六进制的0.EP0Address =0x10;//数据的起始地址是十六进制的10也称为date0.

EP0XferLen =0x08;//8段数据长度。

EP0Control =0x07;//数据传送的方向是主动机到从动机.

设置了上述5个寄存器后,前面储存的数据“8006000100001200”将会用data00x10写成8位进制,建立过程完成。阅读EP0S 状态寄存器的数据,当牵手完成,SL811HS 以0x10为开始地址。储存设备描述符号。单片机用SL811HS 读取数据,从而获得完整数据。

IV.

鼠标的指令

如果USB鼠标和主机连接在一起,主机会发送以下指令。用一个

鼠标联合

在我们的系统中为例。A.

获取设备描述符

输入指令“8006000100001200”,然后系统会获得USB的描述信息。

数据是“120100020000000822340007058103049D 9F”,另一个数据是08,用十八进制。这对接下来的指令有用。

B.设置地址

输入指令“0005010000000000,系统接下来会建立一个地址为01,代表USB中心。

C.再次获得描述符号

这个地址对接下来的指令有帮助。用新地址“01”再次获得USB鼠标的描述符,描述数据从第一次到第九次,会有小的变化。使用的鼠标给出的数据是“12010002000000086D 040E C0101101020001”。

D.获得设备配置

输入指令“800600020000FF 00”,It is “09(长度是9),02(是设备

请求求求评估索引长度

80

06

00

01

00

00

12

00

配置描述符号)2200010100A03109(长度是9)04(04是接触面描述符)00(00是接触面数字)0001(端点数量)03(人工接口设备(HID))0102(协议代码)00 09(9长度是9)21(人工接口设备描述符)1001000122340007(长度是7)05(端点描述符)81(10000001:终端数字是001)03(中断传输)04(传送数据的最大值) 000A(时间间隔是10毫秒)”。

E.设置配置

输入指令0009010000000000,设置配置01。

F.获取界面

输入指令810A010*********,系统获取界面值00。

G.设置界面

输入指令810A010*********,设置界面。

这些操作后,USB鼠标设置完成,可以进行一般使用。如果进行一些操作,单片机会接收到对应的数据。下列数据时这个鼠标操作数据的一部分,每个数字都是一组鼠标的操作。

TABLE II.鼠标工作的数据章节

数据功效0100000000000000按击左部按钮

0200000000000000按击右部按钮

0400000000000000按击中间按钮

00010000向右边方向移动

00FF0000向左边方向移动

0000FF00向前移动

00000100向后移动

00010100向右后方向移动

0001FE00向右后方向移动

00FE0100向左后方向移动

00FF FE00向左后方向移动

总结

当单片机控制SL811HS,寄存器对于SL811HS的读写是最低的工作。为确保数据传

输,单片机会读写五个寄存器。USB列举是使用这个USB设备的第一步,接下来单片机系统可以喝USB设备进行沟通。

感谢书

我衷心感谢在完成本次论文期间所有给予我帮助的人,包括长春机械印刷有限公司。本文作者衷心感谢吉林教育研究部对于本次研究的资金支持。

参考文献

[1]赛赛普拉斯半导体公司,SL811HS嵌入式USB主机/从机控制器,数据表。

[2]周立功PDIUSB12USB《软件程序运用和驱动发展》北京航空航天大学出版社

2003(中文版)

[3]陈志荣李斌51《单片机控制》《USB主机根本设备》《电子设计运用》2003(中

文版)

[4]钱浩《USB设备列举过程和代码设计》《电脑知识和技术》2010(中文版)

[5]https://www.wendangku.net/doc/1a5611480.html,/developers/wusb/docs

[6]https://www.wendangku.net/doc/1a5611480.html,/view/dc3e56d376a20029bd642dc5.html

译文原文出处:重庆大学数字图书馆IEEE/IET Electronic Library(网址

嵌入式点亮一个LED灯的程序

飞凌OK6410开发板(裸板)第一个点亮LED灯程序,主要的C程序,完整程序请下载附件。 #define rGPMCON (*(volatile unsigned *)(0x7F008820)) #define rGPMDAT (*(volatile unsigned *)(0x7F008824)) #define rGPMPUD (*(volatile unsigned *)(0x7F008828)) void msDelay(int time) { volatile unsigned int i,j; for(i = 0; i < 2000000; i++) for(j=0; j

1.设计要求 EM-STM3210E开发板上有一个LED灯D1,编写程序点亮该灯。 2.硬件电路连接 在开发板上,D1与STM32F103ZE芯片上的引脚PF6相连,如下图所示。 3.软件程序设计

根据任务要求,程序内容主要包括: 1、配置Reset and clock control (RCC)以使能GPIOF端口模块的时钟 2、配置GPIOF端口的PF6引脚(50MHz,推挽输出) 3、调用STM32标准固件库函数GPIO_WriteBit以令PF6引脚输出高电平,从而点亮LED灯D1。 整个工程用户只需要实现源代码文件:main.c,其他工程文件由MDK和STM32标准固件库提供。 main.c文件的内容如下: [cpp] /** ********************************************************** ******************** * @file main.c * @author Max Liao * @version * @date 02-Novenber-2012 * @brief Main program body ********************************************************** ******************** */ /* Includes ------------------------------------------------------------------*/ #include "stm32f10x.h" /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/

USB鼠标嵌入式驱动系统

USB鼠标嵌入式驱动系统 朱娟光华长春大学 吉林省 E-mail:zhuj_guanghua@ https://www.wendangku.net/doc/1a5611480.html, 王帅中国科学院长春光 学精密机械与物理研究 所 吉林长春 张舒阳王津立李赵希 长春大学光华学院 吉林长春 摘要:该论文设计了一种USB鼠标基于AT89S52单片机的嵌入式驱动系统。这AT89S52控制USB的主控芯片,SL811HS实现控制USB鼠标的功能。硬件给出该系统的原理框图。软件介绍系统的实现原理和USB总线重新插入行动的装置检测、设备速度检测等。嵌入式USB驱动系统有重要的参考价值,USB主机系统的设计。 关键词——USB数目;SL811HS;AT89S52单片机 I.简介 USB设备因其便捷和高性价比特点,被广泛用于日常工作和生活中。例如,USB 磁盘,USB相机,USB鼠标,USB键盘,等等。单片机(SCM)有成熟的技术和高性价比,被广泛用于自动化领域中。但是单片机没有USB主机接口配置,从而导致直接控制USB外围设备有困难。如果我们在单片机系统中增加USB主机接口、通过接口控制USB从动装置设备,单片机系统的功能将大大扩展。该系统为单片机加上USB主机接口。使用常见的51单片机连接特殊解决USB接口芯片。这个解决方案具有良好的灵活性和简单的移植。它为低成本产品的开发提供了一个广阔的前景。系统选用Atmel公司的AT89S52单片机。USB的主控制芯片是芯片赛浦路斯的公司的SL811HS。SL811HS可以在任何一个主机或从动模型使用,它支持USB1.1的全速和低速数据传输。当在主机模式下工作时,就可以自动检测到嵌入SL811HS的行为。本论文介绍方法AT89S52控制SL811HS以完成USB控制的方法。例如,USB鼠标控制计划的情况。 II.系统硬件 系统的硬件如图一所示。AT89S52和SL811HS的电压分别为5V和3.3V。虽然电压不同,AT89S52和SL811HS的参数可以根据噪音容忍参数直接连接。

LED驱动程序设计

LED驱动程序设计 分类:ARM系统进阶班(arm裸机程序)2012-08-24 13:23 1561人阅读评论(0) 收藏举报 首先声明,此文章是基于对国嵌视频教程中tiny6410有关视频教程的总结,为方便大家的复习。再次予以感谢,感谢国嵌各位老师为我们提供如此好的视频教程,为对于想要迈入嵌入式大门却迟迟找不到合适方法的学子们指引一条光明的方向。好了,接下来步入正题,此处将介绍tiny6410 LED驱动程序的设计。

2 下面来看看tiny6410关于LED 的原理图如图(1)所示:

图1 LED原理图 3 LED实例,代码如下所示:(代码摘自\光盘4\实验代码\3-3-1\src\main.c) main.c [cpp]view plaincopy 1./********************************************************** 2.*实验要求:用Tiny6410上的4个LED资源实现跑马灯程序。 3.*功能描述: Tiny6410用下面4个引脚连接了LED发光二极管,分别是 4.* GPK4--LED1 5.* GPK5--LED2 6.* GPK6--LED3 7.* GPK7--LED4 8.* 本程序将控制这四个管脚的输出电平,实现跑马灯的效果 9.*日期: 2011-3-10 10.*作者:国嵌 11.**********************************************************/ 12.#include "def.h" 13.#include "gpio.h" 14. 15.#define LED1_ON ~(1<<4) 16.#define LED2_ON ~(1<<5) 17.#define LED3_ON ~(1<<6) 18.#define LED4_ON ~(1<<7) 19. 20.#define LED1_OFF (1<<4)

eink嵌入式驱动

起因 2007年,苹果公司推出了第一代的iPhone,后来这款产品完全改变了人们对于智能手机的理解和认识,智能手机以及衍生的后PC产品功能不断强化,正在一步步取代着原本PC 才能做的事情。而就是这样一个背景下,亚马逊公司却反其道而行,推出了一款功能无比单一的产品:Kindle。Kindle不但软件上设计成只能用来看书,就连硬件上也选用了一块基本只能用来看书的屏幕:黑白EPD屏幕。这种屏幕只能显示黑白颜色(或者灰阶),响应速度也非常慢(大约400ms-1s),而且还不能主动发光,必须要借助环境光才能显示……然而这种屏幕却也有一些非常重要的优点,比如显示效果非常接近纸张,不刺眼,只有在刷新时耗电等等。几年后,国产厂家也进军了这一领域,把这类使用EPD屏幕的电纸书的价格做到了千元以下。当时我就买了一台,着实是被这种显示屏的效果给吸引住了。当时我就想着要是能自己用单片机驱动起来玩一玩就好了。无奈当时自己技术差,屏幕也贵,没能顺利实施。最近发现大尺寸(6英寸,型号ED060SC4)的E-Ink屏幕价格已经降到了50以内,于是决定开始研究下它的驱动,也顺便做个最简单的应用:台历。 初步研究 首先,为了各位方便阅读,先来区分几个名词,首先是EPD,EPD并非是E-Paper Display (电子纸显示器)的缩写,而应该是Electrophoretic Display即电泳显示器的缩写。E-Ink 则是PVI公司的注册商标,用于指代他们旗下的EPD产品。但是并非只有PVI公司生产电子纸,天马、龙亭、友达、佳显和LG等公司都在生产类似且兼容的EPD产品,所以最好称他们为EPD而非E-Ink。电子纸这个概念就比较笼统了,EPD是一种电子纸,但是也有很多基于其它技术的电子纸,比如说Ch-LCD、PN-LCD、HR-TFT LCD等等,比如Pebble 所使用的HR-TFT LCD也被宣传为电子纸,但实际上并非EPD。

嵌入式LED灯显示

【设计题目】 矩阵LED字符显示控制系统设计 【设计目的】 1.掌握无操作系统下的硬件软件设计原理和方法; 2.进一步熟悉ARM 处理器的基本结构、指令集、存储系统以及基本接口编程; 3.熟悉嵌入式系统各部件的硬件初始化过程以及基本IO控制方法。 4.掌握矩阵LED 的应用原理 【设计内容】 1.利用sys_init初始化程序,利用串口实现PC和开发板的数据通信; 2.编写S3C2410X 处理器的点阵屏驱动程序; 3.编写S3C2410X 处理器的点阵屏应用程序。 4. 当程序运行等待要求从串口输入学生姓名的字符串在矩阵LED上显示出来。【实验环境】 硬件:Embest EduKit-IV 平台,ULINK2 仿真器套件,PC 机; 软件:μVision IDE for ARM 集成开发环境,Windows XP。 【相关知识综述】 背景知识、原理算法等 一、硬件部分 1.点阵屏的结构电路

图1点阵屏的结构电路 图上QL1-QL16为行驱动信号,每个信号控制一行, LR1~LR16 是点阵屏的列驱动信号,每一个信号控制一列。当行信号为高电平而列信号为低电平,对应的LED 就会亮。 2,S3C2410与点阵屏的连接 LL1 LL8 LL7 LL9

图2 S3C2410ARM处理器与两片CD4094连接得到16位行选信号图以上电路可以通过S3C2410GPIO口把CPU的并行数据(16位两个字节的数据)打入到两个CD4094芯片中并锁存起来变成LL1-LL16的行选信号。 各信号的作用如下表1;

3.点阵屏的保护电路 图3 点阵屏的保护电路图 为了保护LED 屏加了对应的电阻实现行限流作用,即LL1-LL16变为RQ1-RQ16 4.LED 的驱动 加入行驱动电路的目的是实现LED 灯的驱动。这样由RQ1-RQ16变为行驱动信号QL1-QL16。Q11-QL16为图1中的行驱动信号。

编写嵌入式Linux设备驱动程序的实例教程

编写嵌入式Linux设备驱动程序的实例教程 一、Linux device driver 的概念 系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,它完成以下的功能: 1、对设备初始化和释放; 2、把数据从内核传送到硬件和从硬件读取数据; 3、读取应用程序传送给设备文件的数据和回送应用程序请求的数据; 4、检测和处理设备出现的错误。 在linux操作系统下有三类主要的设备文件类型,一是字符设备,二是块设备,三是网络设备。字符设备和块设备的主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般就紧接着发生了,块设备则不然,它利用一块系统内存作缓冲区,当用户进程对设备请求能满足用户的要求,就返回请求的数据,如

果不能,就调用请求函数来进行实际的I/O操作。块设备是主要针对磁盘等慢速设备设计的,以免耗费过多的CPU时间来等待。 已经提到,用户进程是通过设备文件来与实际的硬件打交道。每个设备文件都都有其文件属性(c/b),表示是字符设备还是块设备?另外每个文件都有两个设备号,第一个是主设备号,标识驱动程序,第二个是从设备号,标识使用同一个设备驱动程序的不同的硬件设备,比如有两个软盘,就可以用从设备号来区分他们。设备文件的的主设备号必须与设备驱动程序在登记时申请的主设备号一致,否则用户进程将无法访问到驱动程序。 最后必须提到的是,在用户进程调用驱动程序时,系统进入核心态,这时不再是抢先式调度。也就是说,系统必须在你的驱动程序的子函数返回后才能进行其他的工作。如果你的驱动程序陷入死循环,不幸的是你只有重新启动机器了,然后就是漫长的fsck。 二、实例剖析 我们来写一个最简单的字符设备驱动程序。虽然它什么也不做,但是通过它可以了解Linux的设备驱动程序的工作原理。把

嵌入式键盘及LED驱动实验

《嵌入式系统设计》 实验报告 (2011-2012学年第2学期)

实验三键盘及LED驱动实验—C语言实现方法 一、实验目的 1.学习键盘及LED驱动原理。 2.掌握ZLG7289芯片的使用方法。 二、实验内容 通过ZLG7289芯片驱动17键的键盘和8个共阴极LED,将按键值在LED上显示出来。 三、预备知识 1.掌握在ARM SDT 2.5或ADS1.2集成开发环境中编写和调试程序的基本过程。2.了解ARM应用程序的框架结构。 3.了解μC/OS-II多任务的原理。 四、实验设备及工具 硬件:ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上。 软件:PC机操作系统win98、Win2000或WinXP、ARM SDT 2.51或ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序 五、实验原理 ZLG7289A是一片具有串行接口的,可同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成LED显示﹑键盘接口的全部功能。 ZLG7289A内部含有译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式。此外,还具有多种控制指令,如消隐﹑闪烁﹑左移﹑右移﹑段寻址等。 ZLG7289A具有片选信号可方便地实现多于8位的显示或多于64键的键盘接口。其特点如下: a.串行接口无需外围元件可直接驱动LED。 b.各位独立控制译码/不译码及消隐和闪烁属性。 c.(循环)左移/(循环)右移指令。 d.具有段寻址指令方便控制独立LED。 e.键盘控制器内含去抖动电路。 表2-5 引脚说明 引脚名称说明 1 , 2 VDD 正电源 3 ,5 NC 悬空 4 VSS 接地 6 /CS 片选输入端,此引脚为低电平时,可向芯片发送指令及读取键盘数据

嵌入式实验四(Linux 内核移植及 LED 驱动测试)

实验四 Linux 内核移植及 LED 驱动测试 一、实验目的: 1.熟悉 Linux 内核基本目录结构,为后续 Linux 底层开发做准 备,熟悉 Linux 内核的配置及编译过程。 2.了解嵌入式 Linux 驱动开发基本方法,熟悉嵌入式 Linux 字 符设备驱动的开发框架。 二、实验内容: 1.下载或拷贝 Linux-3.14 源码。 2.针对实验箱配置内核。 3.编译内核并测试。 4.利用 Exynos4412 的 GPX2_7、GPX1_0、GPX2_4、GPX3_0 这 4 个 I/O 引脚控制 4 个 LED 发光二极管,使其闪烁。 三、实验原理: 1.Linux内核是Linux操作系统的核心,也是整个Linux功能 体现。它是用C语言编写,符合POSIX标准。Linux最早是由芬兰 黑客 Linus Torvalds为尝试在英特尔X86架构上提供自由免费的类Unix操作系统而开发的。该计划开始于1991年,这里有一份Linus Torvalds当时在Usenet新闻组comp.os.minix所登载的帖子,这份著名的帖子标志着Linux计划的正式开始。在计划的早期有一些Minix黑客提供了协助,而今天全球无数程序员正在为该计划无偿提供帮助。 Linux内核源代码非常庞大,随着版本的发展不断增加。它使用

1

目录树结构,并且使用Makefile组织配置编译。顶层目录的Makefile 是整个内核配置编译的核心文件,负责组织目录树中子目录的编译管理,还可以设置体系结构和版本号等。 嵌入式系统中内核移植需根据具体硬件配置对内核源码进行相应地修改、配置。 2. 如图所示,LED2~LED5分别与GPX2_7、GPX1_0、GPX2_4、 GPF3_5相连,通过GPX2_7、GPX1_0、GPX2_4、GPX3_0引脚的高低电平来控制三极管的导通性,从而控制LED的亮灭。 当这几个引脚输出高电平时发光二极管点亮;反之,发光二极管熄灭。 四、实验步骤及过程: 1.建立工作目录,将 Linux-3.14 内核源码解压到工作目录中。$ tar xvf linux-3.14.tar.xz $ cd linux-3.14 2.修改顶层 makefile 文件,指定体系结构及交叉编译工具。$ vim Makefile 修改: ARCH?= $(SUBARCH) CROSS_COMPILE?= $(CONFIG_CROSS_COMPILE:"%"=%)

嵌入式系统课程设计--基于ARM的LCD显示屏驱动程序设计

前言 (1) 1.系统设计 (1) 1.1涉及的软硬件简介 (1) 1.1.1 Proteus 7.8简介 (1) 1.1.2 RVDS简介 (2) 1.1.3 芯片LPC2106简介 (2) 1.2 LCD显示原理和初始化流程图 (3) 1.2.1 LCD显示简介 (3) 1.2.2 LCD相关参数 (4) 1.3 Proteus仿真电路 (7) 1.3.1 Proteus仿真元件清单 (7) 1.3.2 Proteus仿真电路图截图 (7) 1.4 程序代码分模块介绍 (8) 2.实验(测试)结果 (18) 3.总结 (19) 参考文献......................................................................................................... 错误!未定义书签。 前言 近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。嵌入式系统无疑成为当前最热门最有发展前途的IT应用领域之一。 液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。通过显示器同步显示元器件的状态可以更深刻地理解控制的原理。 通过Proteus模拟ARM7芯片设计,可以增强我们的自学能力和思考能力,掌握科学研究的方法,提高信息检索的能力以及获取与时俱进知识的能力。同时,使我们深刻学习了ARM的相关知识,增强对实际电路的感性认识,提高了分析问题,处理问题的能力。 运用Keil编译C语言,连接生成Hex文件和Axf文件。使用PROTEUS 7.8SP2仿真,选用ARM7 LPC2106 芯片和LCD1602,导入Hex或文件,然后进行软件仿真调试。 1.系统设计 1.1涉及的软硬件简介 设计中软件主要用到了模型仿真软件Proteus和编译套件RVDS(RealView Development Suite),硬件主要采用了NXP公司的LPC2106微控制器。 1.1.1 Proteus 7.8简介 Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件

嵌入式系统VGA显示驱动实现

嵌入式系统VGA显示驱动实现 【摘要】本文在分析VGA显示时序的基础上,提出一种使用利用MCU自带的LCD控制器产生出VGA显示时序的方法,使图片的RGB数据按VGA时序输出;同时结合一个权电阻网络来实现VGA接口的RGB信号数模转换,完成VGA接口的显示驱动工作。经测试表明,该方法能可靠地实现VGA接口的显示驱动功能。 【关键词】VGA显示时序;LCD控制器;RGB信号 Abstract:The paper based on analysis of VGA displaying time,we proposed a method that the user can use a kind of LCD controller,owned by the MCU,to output the RGB image according to the VGA timing. Meanwhile,this design has designed a resister network to achieve the RGB signal digital-analog conversion,finally to achieve the VGA display.Repeated tests showed that the method can drive picture display reliably. Key words:VGA timing;LCD controller;RGB signal 1.引言 目前越来越多的嵌入式处理器上集成了LCD控制器。典型的如三星的S3C2440,Intel的Xscale系列。这样可方便地外接大屏幕的LCD。但是大屏幕LCD的价格都比较昂贵。另一方面,普通计算机的VGA接口显示器,保有量巨大、技术成熟,如果能通过接口转换手段,让嵌入式处理器直接支持VGA显示器,则能很大地利用现有资源,节约系统成本。 2.VGA接口与时序 VGA(Video Graphics Array)接口信号为模拟信号。其关键信号有5个,分别是Horizontal Sync水平同步信号(也叫行同步信号),垂直同步信号Vertical Sync(也叫场同步信号),Red红色Green绿色和Blue蓝色。电子枪从左至右,从上至下地进行扫描,每行结束时,用行同步信号进行同步;扫描完所有行后用场同步信号进行场同步。因电子枪偏转需要时间,所以扫完回转中,要对电子枪进行消隐控制;在每行结束后的回转过程中进行行消隐;在每场结束后的回转过程中进行场消隐,消隐过程中不发送电子束。 2.1 VGA接口 5.结论 本文提出了一种采用S3C2440的LCD控制器来实现VGA显示的方法。经测试表明,该方法能够很好的实现VGA显示。而今大部分的嵌入式处理器都包

嵌入式硬件---通过点亮LED分析嵌入式裸机程序的开发步骤

S3C2440A has 130 multi-functional input/output port pins and there are eight ports as shown below: - Port A(GPA): 25-output port - Port B(GPB): 11-input/out port - Port C(GPC): 16-input/output port - Port D(GPD): 16-input/output port - Port E(GPE): 16-input/output port - Port F(GPF): 8-input/output port - Port G(GPG): 16-input/output port - Port H(GPH): 9-input/output port - Port J(GPJ): 13-input/output port 端口控制描述 端口控制寄存器(GPACON-GPJCON) 端口数据寄存器(GPADAT-GPJDAT) 端口上拉寄存器(GPBUP-GPJUP) 复用控制寄存器 外部中断控制寄存器 假设,有4个LED灯,分别接在GPF0~GPF3上,低电平点亮 GPF有7个I/O口,三组寄存器GPFCON,GPFDAT,GPFUP //包含头文件区 #include "2440addr.h" //系统文件 #include "2440lib.h" #include "def.h"

#include "uart.h" void Main(){ //第一步,设置系统时钟 memcpy((unsigned char *)0x0,(unsigned char *)0x30000000,1000); //调用2440lib.c中的函数 SetSysFclk(FCLK_200M);//设置系统时钟为200M ChangeClockDivider(1,1);//设置分频为1:2:4 CalcBusClk(); //计算总线频率 //第二步:初始化串口 Uart_Select(0); Uart_Init(0,115200); //第三步:配置GPF寄存器 rGPFCON = (rGPFCON | 0xffff) & 0xffffff55; //设置GPF为输出口rGPFUP &= 0xfff0; //使能上拉 rGPFDAT = 0xff; //初始化 //第四步:进入大循环 while(1){ rGPFDAT = 0xFE; //点亮 } } 编译工程,点击工具栏上的【make】按钮开始编译,如果没有错误,就可以下载到开发板上运行,这时,就需要使用AXD工具。点击【Debug】工具按钮,运行AXD。需要指定HJTAG工具连接到开发板上,选择【Options】菜单下载的【Configure Target】,

嵌入式LED灯显示

v .. . .. 【设计题目】 矩阵LED字符显示控制系统设计 【设计目的】 1.掌握无操作系统下的硬件软件设计原理和方法; 2.进一步熟悉ARM 处理器的基本结构、指令集、存储系统以及基本接口编程;3.熟悉嵌入式系统各部件的硬件初始化过程以及基本IO控制方法。 4.掌握矩阵LED 的应用原理 【设计内容】 1.利用sys_init初始化程序,利用串口实现PC和开发板的数据通信; 2.编写S3C2410X 处理器的点阵屏驱动程序; 3.编写S3C2410X 处理器的点阵屏应用程序。 4. 当程序运行等待要求从串口输入学生姓名的字符串在矩阵LED上显示出来。【实验环境】 硬件:Embest EduKit-IV 平台,ULINK2 仿真器套件,PC 机; 软件:μVision IDE for ARM 集成开发环境,Windows XP。 【相关知识综述】 背景知识、原理算法等 一、硬件部分 1.点阵屏的结构电路

图1点阵屏的结构电路 图上QL1-QL16为行驱动信号,每个信号控制一行,LR1~LR16 是点阵屏的列驱动信号,每一个信号控制一列。当行信号为高电平而列信号为低电平,对应的LED就会亮。 2,S3C2410与点阵屏的连接 LL1 LL7 LL8 LL9 LL15 LL16

图2 S3C2410ARM处理器与两片CD4094连接得到16位行选信号图以上电路可以通过S3C2410GPIO口把CPU的并行数据(16位两个字节的数据)打入到两个CD4094芯片中并锁存起来变成LL1-LL16的行选信号。 3.点阵屏的保护电路 图3 点阵屏的保护电路图 为了保护LED屏加了对应的电阻实现行限流作用,即LL1-LL16变为RQ1-RQ16 4.LED的驱动 加入行驱动电路的目的是实现LED灯的驱动。这样由RQ1-RQ16变为行驱动信号QL1-QL16。Q11-QL16为图1中的行驱动信号。

基于嵌入式Linux的LCD背光调节及驱动的实现

摘要:为了减少手持式设备地功耗并满足背光调节地应用需求,在嵌入式下,设计了一种用按键来调节输出方波占空比以实现背光调节地解决方案.该方案采用地定时器产生信号,系统根据使用情况和外界光线强度地变化,用传入地按键触发次数来控制定时器输出信号地占空比,通过软件实现背光状态地实时调节,并完成了背光驱动程序地设计.测试结果表明,该方法可以降低设备地功耗并能满足背光调节地要求,具有良好地稳定性及通用性. 关键词:嵌入式系统;;按键;背光调节 引言 在手持式设备中,液晶显示屏地使用越来越广泛.由于自身是不能发光地,它需要一个强劲地光源来给它提供背光,以便清晰地显示信息.这样地光源是非常耗电地,通常液晶显示屏地功耗常常占到系统总功耗地以上[].以群创地寸屏为例,通常背光灯地功耗为,而地功耗只有[].由此可见,背光光源地功耗在整个电源中地比重是相当高地.如果系统在不用显示屏时,也全功率地运行,系统地电池能量将很快被耗光.所以,调节地背光源,降低系统在不用显示屏时地能耗是十分必要地工作.另外,由于手持式设备工作环境地变化,也需要根据外界光线强度地变化,对背光地亮度做出相应地调节,以适合人眼观看地舒适度. 基于上述种原因,考虑到设备功耗地降低以及使用地便利性,本文在嵌入式下,设计了一种使用地定时器产生( )信号,根据设备实际使用需要,和外界光线强度地变化用按键调节背光亮度地解决方案. 基于地背光调节原理 在中小尺寸液晶显示屏中,一般采用白光作为显示屏地背光光源.即脉宽调制,调光就是利用人眼地视觉暂停原理,以一定地频率和占空比地方波来控制地导通.正向电流在零电流到额定工作电流之间来回切换,通过高速开关背光,周期循环地提供不同占空比地方波,实现亮度地调节.只要导通时正向电流大小是恒定地,发出地白光就不会发生色偏,而且只要频率大干,人眼看到地将是连续地光源[]. 图是脉宽调制信号地波形.假设高电平代表打开背光,低电平代表关闭背光,背光打开和关闭时间地比例不同会得到不同占空比地方波.从输出地波形来看,波地平均功率是不一样地,这样就得到了不同地亮度,实现了背光地调节. 图地波形背光调节地硬件实现方案 []是三星公司推出地一款基于内核地位嵌入式微处理器.其内部有个位地定时器,其中前个定时器()具有功能,第个定时器()是一个没有输出引脚地内部定时器,另外定时器有一个死区发生器,通常用于大电流设备控制. 信号可以用硬件产生,也可以由软件产生.由于用软件定时产生信号外围电路简单,脉冲宽度精度高,控制灵活,所以本方案用地定时器,软件定时产生信号,通过改变端口输出脉冲信号占空比,控制背光地开关. 背光调节电路如图所示. 图背光调节电路图图中[]是一个电感式地( )升压转换器,用于驱动白光.当正常工作时,地端被置高电平时,输出端将得到驱动背光源所需地工作电压.将地端口与地使能端相连,通过信号使能,可以使背光工作在较低地功率下. 图中按键用于调高背光亮度,用于调低背光亮度.和所用到地外部中断分别是和.当按键按下时,系统根据传入地按键编号控制输出信号占空比,由此完成了对设备背光地软件控制,实现背光亮度地调节. 背光调节地软件设计 背光调节地软件部分主要是驱动程序地设计,设备驱动程序是连接硬件和操作系统内核地桥梁,它为应用程序屏蔽了硬件地细节,应用程序将使用统一地系统调用接口来访问设备[].系统将设备分为种基本类型,即字符设备、块设备和网络设备.本文涉及地背光驱动属于字

嵌入式系统开发实验五LED驱动实验

实验项目:实验五LED驱动实验实验类型:验证性指导老师:杜经纬实验地点:硬件实验室时间:2013年4月15日14:00-16:00 一、实验目的: 1、掌握Windows CE 6.0 流驱动程序架构以及流驱动的编写方法; 2、学习如何在Windows CE系统下添加流驱动程序。 二、实验内容: 1、编写Windows CE 6.0 下的LED驱动,控制相应LED灯的亮灭; 2、编译添加了LED驱动的Windows CE系统工程,下载固化NK.bin,并在实验平台上运行LED控制应用程序,观看LED灯控制效果; 3、认识Windows CE 6.0驱动开发中常用的配置文件。 三、实验方案设计: Windows CE驱动的功能就是在底层实现对硬件的操作,向上导出接口函数给操作系统和应用层。从驱动功能来看,在软件上要完成的工作包含了如何操作硬件,如何导出接口函数。通过前面的章节可以了解到,Windows CE的流驱动可以分为两层:MDD层和PDD层。MDD层是与硬件平台无关的,向上层导出驱动接口给应用层调用;PDD层是与硬件平台相关的,在软件上就是操作硬件的代码层。 四、实验步骤: 1)将光盘DISK2_PXA270\03-Codes\01-WinCE\01-BSP目录下的MINI270-IV文件夹复制 到%_WINCEROOT%\PLATFORM\目录下。在将光盘DISK2_PXA270\03-Codes\01-WinCE目录下的 02-Application文件夹拷贝到D:\Embest目录下。 2)首先屏蔽掉原来的LED驱动。把%_WINCEROOT%\PLATFORM\MINI270-IV\ SRC\DRIVERS\下的EduLed文件夹改名,改为EduLed_(当然你也可以改为其它名字,但不要带中文)。 图6-1-3 将原来的EduLed驱动目录改名 3)在%_WINCEROOT%\PLATFORM\MINI270-IV\SRC\DRIVERS\下新建一个文件夹,该文件夹用来存放LED的驱动代码。将文件夹命名为EduLed(因为这里是重现驱动的创建过程,所以命名为原来的驱动文件夹名称,如果你是创建其它驱动,你可以自己指定名称)。

嵌入式LED实验

石家庄铁道大学 《嵌入式系统》实验报告 --实验四 LED 驱动及控制实验 实验者姓名:崔乐乐 实验者学号:20122792 同组人:孔维春 实验者班级:信1201-2 所在学院:信息科学与技术学院课程编号:L090211 指导教师:刘展威 报告完成日期:2015年4月 19 日

1. 实验目的 ?了解 ARM 设备外围电路结构与接口原理 ?熟悉 Linux 系统下硬件驱动编程 ?编程实现对嵌入式设备上 LED 灯的控制 2. 实验内容 ?阅读 UP-Magic6410 平台硬件文档,熟悉 ARM 处理硬件外围接口电路 ?编程实现 UP-Magic6410 平台设备上 LED 驱动及应用测试程序 3. 实验环境 ?硬件:UP-Magic6410 型嵌入式实验平台,PC 机 Pentium 500 以上, 硬盘 40G 以上,内存大于 256M ?软件:Vmware Workstation +Fedora Core 8 + MiniCom/Xshell + ARM-LINUX 交叉编译开发环境 4. 实验原理 4.1 硬件接口原理 ? UP-Magic6410 魔法师实验套件 LED 硬件接口 UP-Magic6410 魔法师实验套件上共有 5 个 LED 显示灯,分别接在 S3C6410X 处理器的 GPQ2、GPQ3、GPQ4、GPQ5、 GPQ6 上。5 个 LED 显示灯分别共阳极 3.3V 电压,因此相应 GPIO 低电平点亮,高电平熄灭。如图 4.1.1 所示: ? S3C6410 处理器 GPIO 寄存器 S3C6410X 处理器的 GPIO 作为控制 I/O 要进行必要的设置才能对外设进行正确控制,此实验将相应 I/O 设置为输出模式,并向相应 I/O 数据寄存器进行写入数据便可控制 LED 的开关。如下表 4.1.2 给出的 S3C6410X GPIO 寄存器配

相关文档