嵌入式键盘控制实验
- 格式:doc
- 大小:1.40 MB
- 文档页数:5
按键中断实验实验目的:1掌握IO口的使用2掌握中断处理程序编写3掌握按键中断的使用实验器材:Sinosys-EA2440实验箱PC机实验原理:在SinoSys-EA2440a中,已经将EINT0、EINT2、EINT19、EINT11作为外部中断源和开发板上位号为SW1、SW2、SW3、SW4的这四个小按键相连,中断按钮的连接图如图1.1:1.1中断按钮结构电路在SinoSys-EA2440a 中,已将EINT0、EINT2、EINT19、EINT11 作为外部中断源和开发板上位号为SW1、SW2、SW3、SW4 的这四个小按键相连,其中,EINT0、EINT2、EINT11、EINT19 分别和GPF0、GPF2、GPG3、GPG11 复用,当GPFCON[5:4]=10、GPFCON[1:0]=10、GPGCON[7:6]=10、GPGCON[23:22]=10 时,I/O 为中断方式。
通过寄存器的控制,可以达到开启中断和控制中断的目的。
实验总结:将4个按键端口设置成EINT0、EINT2、EINT11、EINT19模式。
rGPGCON = rGPGCON & (~((3<<22)|(3<<6))) | ((2<<22)|(2<<6)) ;rGPFCON = rGPFCON & (~((3<<4)|(3<<0))) | ((2<<4)|(2<<0)) ;通过EXTINT寄存器对外部中断触发方式进行设置,这里设置下降沿触发。
rEXTINT0 &= ~(6|(6<<8));rEXTINT0 |= (0|(0<<8));// EINT0、EINT2rEXTINT1 &= ~(7<<12);rEXTINT1 |= (0<<12); // EINT11rEXTINT2 &= ~(0xf<<12);rEXTINT2 |= (0<<12); // EINT19对外部中断挂起寄存器清零,对外部中断屏蔽寄存器时能,同时设置中断服务程序的地址,将中断挂起寄存器清零,开启中断。
嵌入式中断按键实验报告本实验的目的是学习如何在嵌入式系统中使用中断来处理按键输入。
通过该实验,我们可以掌握如何配置和使用中断,以及如何编写中断服务程序来处理按键输入。
实验材料:1. 嵌入式开发板2. 按键模块3. 电源适配器实验步骤:1. 将按键模块连接到嵌入式开发板的GPIO引脚上,确保连接正确。
2. 打开开发板的开关,给开发板供电。
3. 在开发板上配置GPIO引脚作为中断输入,并使能中断。
4. 编写中断服务程序来处理按键输入。
当按键被按下时,中断服务程序将被调用,并执行相应的操作。
5. 在主程序中初始化中断服务程序,并进入一个无限循环。
在该循环中,可以进行其他的操作,并等待按键中断的发生。
实验结果:在实验中,我们成功地配置并使用了中断来处理按键输入。
当按键被按下时,中断服务程序被调用,并执行了相应的操作。
讨论与分析:通过该实验,我们学习到了中断的基本原理和使用方法。
中断是一种非常重要的机制,可以使嵌入式系统更高效地响应外部事件。
在实际的嵌入式应用中,按键输入是非常常见的操作,使用中断可以很好地处理按键输入,提高系统的响应速度和可靠性。
然而,中断也存在一些问题。
首先,中断处理需要一定的时间,在高速的系统中,中断的处理时间可能会影响到系统的性能。
另外,当系统存在多个中断源时,中断处理的优先级和调度也需要仔细设计,以确保系统的正常运行。
总结:通过本实验,我们成功地学习了嵌入式系统中使用中断处理按键输入的方法。
中断是一种重要的机制,可以使系统更高效地响应外部事件。
通过合理地设计和使用中断,可以提高系统的性能和可靠性。
在实际的嵌入式应用中,我们应该根据具体的需求和系统条件来选择最合适的中断处理方法,并进行适当的优化和调试。
实现了多键齐按和重复按键的嵌入式系统键盘驱动设计1 键盘驱动程序的设计随着电子信息技术飞速发展,嵌入式系统构成的各种设备得到了广泛的应用,嵌入式 Linux是一种开放源码、软实时、多任务的操作系统,是开发嵌入式产品的优秀操作系统平台,其中键盘是人机界面中人类监控计算机重要数据输入设备。
实现键盘有两种方法:一种是采用现有的一些芯片实现键盘扫描;二是用软件实现键盘扫描。
目前许多芯片可用来实现键盘扫描,但是键盘扫描的软件实现方法有助于缩减系统的重复开发成本,而只需很少的 CPU 开销。
嵌入式控制器的功能很强,可以充分利用这一资源。
本课题提出的键盘方案是以嵌入式 Linux和PXA255为软硬件平台,通过测试,表明其具有良好的稳定性和实时性。
2 矩阵式键盘的结构与工作原理本课题采用矩阵键盘,如图 1所示。
四根行线四根列线组成 4 *4矩阵键盘,分别用 CPU 的 4个GPIO口。
当有键按下,某个列 GPI O 口电平被下拉从而产生下降沿,触发中断。
其中按键行阵列必须提供上拉信号,列阵列加二极管,防止瞬间电流过大对 GPI O口造成冲击。
图 1 矩阵键盘原理图。
3 Linux键盘驱动简介在 Linux中,键盘驱动被划分成两层来实现。
上层是一个通用键盘抽象层,下层则是硬件处理层,主要对硬件进行直接的操作。
键盘驱动程序上层公共部分在driver /keyboard 。
c里。
文件中最重要的是内核用 EXPORT _SYM BOL 这个宏导出的 handle_scancode函数。
在这个文件中还定义了其它的几个回调函数,它们由键盘驱动程序中上层公共部分调用,并且由底层硬件处理函数实现。
键盘驱动程序的底层硬件处理部分则根据不同硬件有不同实现。
4 键盘驱动程序的实现 4.1 宏定义 module init和 module exit 通过宏定义 module init和module exit可以看出,驱动程序的入口从 kd_ctrl_init()开始。
嵌入式系统设计实验报告1 问题描述在Linux操作系统和ARM嵌入式实验系统环境下,分析linux下的键盘、数码管驱动程序,编写一个应用程序,实现以下功能:在ARM开发板上按下数字键1、2、3、4时,对应启动模拟量开发板上的模拟量输入端AIN0、AIN1、AIN2、AIN3采样,并把模数转换的结果从终端输出和数码管显示。
数码管显示格式:通道号转换的电压值;例如:2灭灭3.251.1设计目标在ARM开发板上按下数字键1、2、3、4时,对应启动模拟量AIN0、AIN1、AIN2、AIN3采样,并把A/D转换的结果从终端输出和LED显示。
显示格式:通道号转换的电压值。
1.2设计思路根据设计目标,该问题可分为六个模块进行设计,分别为驱动程序加载、打开设备、键盘扫描、A/D转换、数码管显示,总体设计方案如图1所示。
图1 总体设计方案(1)驱动程序加载用户的应用程序以设备文件方式访问驱动程序,即Linux把设备当文件,通过文件系统对设备进行访问。
针对这个实验,需要用到ADC0809芯片,LED显示数码管,小键盘。
为此,用lsmod命令加载这三个对应的驱动程序adc0809.c、led.c和keybd.c,再以insmod的方式加入内核。
驱动程序主要是设置一些寄存器的内容来确定端口的引脚输入输出方式以及键盘的扫描部分代码,LED控制显示函数等。
(2)打开各个设备在Linux系统下,各个设备都是通过文件来进行描述的,因此用open函数打开需要用到的LED、键盘、ADC0809芯片。
并且要有对应的出错处理。
(3)键盘扫描驱动程序加载进去以后,运行可执行文件,代码就进入到了按键按下等待的代码中了。
对于用户而言,只是在键盘中按下了某个键,在计算机里,通过驱动得到按下的键值并通过read(fd_kb,&result_kb,1)函数把值赋给变量result_kb中(其中fd_kb为键盘的文件描述符)。
(4)A/D转换启动ADC0809芯片对应的通道进行数据转换,这里主要通过iotcl和read 这两个函数实现,并把转化后的结果赋给result_ad这个变量。
嵌入式按键的实现方法因具体的硬件和软件环境而异,但通常涉及以下步骤:1. 硬件连接:将按键连接到嵌入式系统的电路板上。
这可以通过焊接或使用排针和电缆来完成。
通常,按键的一端是连接电源的公共端,另一端连接到电路板上的数字输入引脚。
2. 初始化硬件:在嵌入式系统中配置所需的硬件接口,以便能够读取和处理按键输入。
这可能涉及到设置GPIO(通用输入/输出)引脚的模式(例如,输入或输出),并启用适当的中断或DMA(直接内存访问)通道。
3. 按键识别:嵌入式系统通过检测特定引脚的电平变化来识别按键按下或释放。
这通常涉及使用中断或轮询来检查特定引脚的电压状态。
如果按键按下,该引脚的电压将降低或变为低电平。
4. 按键处理:一旦检测到按键按下,嵌入式系统需要识别按键的位置(按下的是哪一个键)并执行相应的操作。
这可能涉及激活菜单、发送信号到其他设备、记录数据或执行其他与用户交互的任务。
在处理按键后,嵌入式系统通常会重新设置引脚状态以指示按键已被释放。
5. 特殊按键处理:对于特殊按键(如锁定或解锁按钮),嵌入式系统可能需要配置额外的硬件或软件功能来识别和处理这些按键。
例如,可以使用额外的LED灯或传感器来检测特殊按键的状态,或者在软件中实现特定的识别算法。
6. 校准和测试:为了确保按键的正常工作,需要进行适当的校准和测试。
这可能涉及在开发环境中模拟按键按下和释放的测试,以确保系统能够正确识别和处理这些操作。
除了上述基本步骤外,嵌入式按键的实现还可能涉及其他因素,如按键的机械和电气特性、电路板的布局和布线、电源管理、软件优化等。
因此,具体的实现方法可能因嵌入式系统和应用场景而异。
请注意,上述步骤仅提供了一个大致的指导,并不适用于所有嵌入式系统和应用场景。
在实际应用中,可能需要根据具体情况进行调整和优化。
嵌入式KL25 键盘中断实验实验五键盘中断实验一、实验目的1.熟练运用CodeWarrior嵌入式开发系统环境、C语言、调试方式。
2.复习串行通信接口(SCI)的内容。
3.加强键盘中断基本原理及编程原理的理解。
4.理解“行扫描”法的原理并能进行键值识别和键值编码。
5.理解键盘接线原理图(如图5-1)。
二、知识要点本实验采用的是4×4矩阵式键盘(以下简称键盘)。
PTG4、PTD2、PTD3、PTD7分别接四根列线,定义为输入且上拉,PTG0~PTG3分别接四根行线,且定义为输出。
行扫描法是使键盘的某一行输出为低电平,其余行为高电平,然后读取列值,如果列值中有某位为低电平,则表明该行和列交点处的键被按下;若为全高则再扫描下一行,直至扫描完全部的行线为止。
这样就可以确定是哪一行哪一列交点的键被按下。
MCU与键盘接线原理图:键盘的c语言编程:1)初始化,先按IO口方式初始化,即定义列线为输入且上拉,行线为输出,然后依输入口的键盘功能初始化相应的寄存器。
2)定义键值表3)扫描一次,读取键值4)获得键盘定义值行扫描法是使键盘的某一行输出为低电平,其余行为高电平,然后读取列值,如果列值中有某位为低电平,则表明该行和列交点处的键被按下;若为全高则再扫描下一行,直至扫描完全部的行线为止。
这样就可以确定是哪一行哪一列交点的键被按下。
设置键盘中断允许寄存器,当键盘有键被按下时,立即产生中断,中断程序处理按键事件,比如确定哪个键被按下,然后转换为该键的定义值。
键盘的键面标示码(即定义值)与MCU 识别的键值对应关系通过列表对应起来,即键盘定义表对应表示。
当通过“行扫描”法获得某个键的键值时,通过查表法就可以得到它的定义值。
该键盘中断方式程序的主程序主体是一个死循环,且是一个空循环体,所有处理的过程代码放在中断程序中。
三、演示性实验在光盘资料中提供读者键盘实例程序文件夹。
编程采用规范要求编写,将键盘独立成一个构件,如C 语言中,形成key.h 头文件和key.c 源文件。
一、实验目的1. 理解键盘驱动程序的基本原理和设计流程。
2. 掌握键盘扫描矩阵的原理和实现方法。
3. 学习使用C语言进行键盘扫描驱动程序的开发。
4. 提高嵌入式系统开发能力和实际动手能力。
二、实验环境1. 开发平台:北邮嵌入式实验室提供的STM32开发板。
2. 编译工具:Keil uVision 5。
3. 实验软件:嵌入式Linux操作系统。
三、实验原理键盘扫描矩阵是一种常用的键盘输入方式,它通过行和列的交叉来检测按键的状态。
当按键被按下时,行和列的交叉点会形成一个特定的逻辑地址,该地址对应于键盘上的一个按键。
在嵌入式系统中,键盘驱动程序负责扫描键盘矩阵,识别按键状态,并将按键信息传递给上层应用程序。
本实验中,我们将使用C语言开发键盘驱动程序,实现以下功能:1. 初始化键盘硬件资源。
2. 扫描键盘矩阵,识别按键状态。
3. 将按键信息转换为ASCII码或其他编码格式。
4. 通过中断或轮询方式将按键信息传递给上层应用程序。
四、实验步骤1. 硬件连接将STM32开发板与键盘模块连接,确保键盘模块的行和列引脚正确连接到开发板的GPIO引脚。
2. 编写键盘驱动程序(1)初始化键盘硬件资源在驱动程序中,首先需要初始化键盘硬件资源,包括设置GPIO引脚的模式、上拉/下拉电阻等。
```cvoid keyboard_init(void) {// 设置GPIO引脚模式为输出GPIO_InitTypeDef GPIO_InitStruct = {0};__HAL_RCC_GPIOA_CLK_ENABLE();GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);// 设置GPIO引脚模式为输入__HAL_RCC_GPIOB_CLK_ENABLE();GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3;GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_PULLUP;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);}```(2)扫描键盘矩阵在驱动程序中,编写一个函数用于扫描键盘矩阵,识别按键状态。
嵌入式系统应用实验报告姓名:学号:学院:专业:班级:指导教师:实验1、流水灯实验1、1实验要求编程控制实验板上LED灯轮流点亮、熄灭,中间间隔一定时间。
1、2原理分析实验主要考察对STM32F10X系列单片机GPIO的输出操作。
参阅数据手册可知,通过软件编程,GPIO可以配置成以下几种模式: ◇输入浮空◇输入上拉◇输入下拉◇模拟输入◇开漏输出◇推挽式输出◇推挽式复用功能◇开漏式复用功能根据实验要求,应该首先将GPIO配置为推挽输出模式。
由原理图可知,单片机GPIO输出信号经过74HC244缓冲器,连接LED灯。
由于74HC244的OE1与OE2都接地,为相同电平,故A端电平与Y端电平相同且LED 灯共阳,所以,如果要点亮LED,GPIO应输出低电平。
反之,LED灯熄灭。
1、3程序分析软件方面,在程序启动时,调用SystemInit()函数(见附录1),对系统时钟等关键部分进行初始化,然后再对GPIO进行配置。
GPIO配置函数为SZ_STM32_LEDInit()(见附录2),函数中首先使能GPIO时钟:RCC_APB2PeriphClockCmd(GPIO_CLK[Led], ENABLE);然后配置GPIO输入输出模式:GPIO_InitStructure、GPIO_Mode = GPIO_Mode_Out_PP;再配置GPIO端口翻转速度:GPIO_InitStructure、GPIO_Speed = GPIO_Speed_50MHz;最后将配置好的参数写入寄存器,初始化完成:GPIO_Init(GPIO_PORT[Led], &GPIO_InitStructure)。
初始化完成后,程序循环点亮一个LED并熄灭其她LED,中间通过Delay()函数进行延时,达到流水灯的效果(程序完整代码见附录3)。
实验程序流程图如下:硬件方面,根据实验指南,将实验板做如下连接:1、3实验结果实验二、按键实验2、1实验要求利用STM32读取外部按键状态,按键按下一次产生一次外部中断在中断处理函数中使按键所对应的灯亮起。
嵌入式实验总结引言嵌入式系统已经成为当今科技发展的重要组成部分。
嵌入式系统可以在各种领域应用,如智能家居、汽车控制、医疗设备等。
在学习嵌入式系统的过程中,实验是一种重要的方式来提高对该领域的理解和应用能力。
本文将总结我在嵌入式实验中的学习经验和收获。
实验背景在学习嵌入式系统之前,我具备了一定的计算机基础知识,包括C语言编程和计算机组成原理等。
这些基础知识为我后续的嵌入式实验打下了坚实的基础。
实验过程实验一:LED灯控制在这个实验中,我学习了如何使用嵌入式开发板上的GPIO接口控制LED灯的亮灭。
通过编写简单的C程序,我成功地实现了LED灯按一定时间间隔闪烁。
这个实验让我初步了解了嵌入式系统的硬件控制和编程方法。
实验二:按键输入这个实验让我进一步学习了如何使用GPIO接口,但这次是用来读取开发板上的按键输入。
通过编写C程序,我成功地实现了按键输入的检测和相应的处理。
这个实验让我理解了如何与外部设备进行交互,为后续的实验打下了基础。
实验三:PWM信号控制PWM(Pulse Width Modulation)信号控制是嵌入式系统常用的一种技术。
在这个实验中,我学习了如何使用PWM输出来控制舵机的角度。
通过编写C程序,我成功地实现了舵机在不同角度之间的平滑运动。
这个实验让我对PWM信号的原理和应用有了更深入的理解。
实验四:串口通信串口通信在嵌入式系统中具有广泛的应用。
在这个实验中,我学习了如何使用开发板上的串口接口与计算机进行通信。
通过编写C程序,我成功地实现了开发板和计算机之间的数据传输。
这个实验让我掌握了串口通信的基本原理和操作方法。
实验五:温湿度传感器温湿度传感器是嵌入式系统中常用的传感器之一。
在这个实验中,我学习了如何使用温湿度传感器读取环境的温度和湿度值。
通过编写C程序,我成功地实现了温湿度传感器的数据采集和显示。
这个实验让我对传感器的原理和使用有了更深入的认识。
实验总结通过以上一系列的实验,我在嵌入式系统方面的理论知识和实践操作能力得到了显著的提高。
《嵌入式系统》课程实验报告学生姓名:所在班级:指导教师:记分及评价:一、实验名称按键中断实验二、实验目的通过实验掌握S3C2410X的中断控制寄存器的使用;通过实验掌握S3C2410X处理器的中断响应过程;通过实验掌握ARM处理器的中断方式和中断处理过程;通过实验掌握ARM处理器中断处理的软件编程方法。
三、实验内容编写程序,当用户在实验箱按下KEY1键或KEY2键时在中断服务子程序中将相关信息打印到串口中,显示在超级终端上。
四、实验原理在本实验平台的主板上设计了两个外部按键,电路原理图如下:EXINT0和EXINT1信号作为CPLD芯片的输入信号。
CPLD内部逻辑图:五、实验结果超级终端上显示以下信息:按下KEY1键或KEY2键,超级终端上显示以下信息。
六、练习题编写程序实现:按下KEY1或KEY2后点亮实验系统的LEDs一段时间后熄灭。
任务:按下KEY1键后LED1点亮一段时间后熄灭;按下KEY2键后点亮LED2一段时间后熄灭。
#define rCPLDIntControl (*(volatile unsigned char*)0x22600000)#define rCPLDIntStatus (*(volatile unsigned char*)0x22200000)#define rCPLDLEDADDR (*(volatile unsigned char*)0x21180000)void __irq int_int(void){unsigned char Status;int i;Status = rCPLDIntStatus;Status = ~(Status & 0x6);if(Status & 0x2){uart_printf(" Eint0 interrupt occurred.\n");rCPLDLEDADDR = (rCPLDLEDADDR | 0xFF )& 0xFE;for(i = 0; i < 100000; i++);rCPLDLEDADDR = rCPLDLEDADDR | 0xFF ;}else if(Status & 0x4){uart_printf(" EINT1 interrupt occurred.\n");rCPLDLEDADDR =(rCPLDLEDADDR | 0xFF) & 0xFD;for(i = 0; i < 100000; i++);rCPLDLEDADDR = rCPLDLEDADDR | 0xFF ;}rEINTPEND=(1<<9);ClearPending(BIT_EINT8_23);}。
第1篇一、实验背景随着科技的不断发展,嵌入式系统在各个领域得到了广泛的应用。
嵌入式系统是指将计算机技术应用于特定场合,以实现特定功能的计算机系统。
它具有体积小、功耗低、成本低等特点,是现代电子设备中不可或缺的部分。
为了让学生更好地掌握嵌入式系统的基础知识和实践能力,本实验课程旨在通过一系列实验,使学生了解嵌入式系统的基本原理和开发方法。
二、实验目的1. 理解嵌入式系统的基本概念和组成。
2. 掌握嵌入式系统硬件平台的基本操作。
3. 熟悉嵌入式软件开发流程,包括编程、调试和部署。
4. 培养学生的实际操作能力和创新意识。
三、实验原理1. 嵌入式系统概述嵌入式系统是指将计算机技术应用于特定场合,以实现特定功能的计算机系统。
它通常由硬件和软件两部分组成。
硬件主要包括微处理器、存储器、输入/输出接口等;软件则包括操作系统、驱动程序、应用程序等。
2. 嵌入式系统硬件平台嵌入式系统硬件平台是嵌入式系统的物理基础,主要包括以下几部分:(1)微处理器:嵌入式系统的核心,负责执行指令和处理数据。
(2)存储器:包括ROM(只读存储器)、RAM(随机存储器)和Flash存储器等,用于存储程序和数据。
(3)输入/输出接口:用于实现嵌入式系统与外部设备之间的数据交换。
(4)外设:如显示器、键盘、鼠标、传感器等,用于实现人机交互。
3. 嵌入式软件开发嵌入式软件开发主要包括以下几个阶段:(1)需求分析:明确嵌入式系统的功能需求和性能指标。
(2)硬件选型:根据需求选择合适的硬件平台。
(3)软件开发:包括操作系统、驱动程序和应用程序的开发。
(4)编译与调试:将源代码编译成可执行文件,并在开发环境中进行调试。
(5)部署:将编译后的程序部署到嵌入式系统中。
4. 嵌入式系统调试嵌入式系统调试是软件开发过程中的重要环节,主要包括以下几种方法:(1)代码调试:通过设置断点、单步执行等方式,观察程序执行过程。
(2)逻辑调试:通过打印语句或调试工具,观察程序执行过程中的变量值和程序流程。
实验四·ARM860_3530增加键盘驱动到内核一、实验目的1.掌握linux驱动程序的编写方法2.掌握驱动程序动态模块的调试方法3.掌握驱动程序填加到内核的方法二、实验内容1. 学习linux驱动程序的编写流程2. 学习驱动程序动态模块的调试方法3. 学习驱动程序填加到内核的流程三、实验设备1. PentiumII以上的PC机,LINUX操作系统,EL-ARM860实验箱四、实验步骤1.准备驱动文件《Ds7279_860.c》,修改Makefile及Kconfig找到ARM860连接超级终端重启目标版,查看数值输入cd..cd hdfslscd E找到驱动文件然后再ls查看ARM860+Keyboard文件进去文件夹,然后再ls可以看到Ds7279这个文件夹然后复制这个文件接着#kwrite弹出超级终端输入实验书上的红色内容·把驱动文件Ds7279_860.c复制到“linux-2.6.28-omap/drivers/input/keyboard/”目录下,然后修改“linux-2.6.28-omap/drivers/input/keyboard/”的Makefile,在最后添加如下红色一行:obj-$(CONFIG_KEYBOARD_MAPLE) += maple_keyb.oobj-$(CONFIG_KEYBOARD_BFIN) += bf54x-keys.oobj-$(CONFIG_KEYBOARD_SH_KEYSC) += sh_keysc.oobj-$(CONFIG_KEYBOARD_Ds7279) += Ds7279.o再修改“linux-2.6.28-omap/drivers/input/keyboard/”下的Kconfig,添加如下红色内容:config KEYBOARD_Ds7279tristate "Ds7279 keypad support"helpTo compile this driver as a module, choose M here: themodule will be called Ds7279.Endif注意:每个文件修改后记得保存。
《嵌入式系统》实验考核表实验名称:实验五:嵌入式Linux应用程序开发-按键控制LED灯2015级班时间: 2017年11月28日组号:表二注:●每组1-2人,必须在一个教学班中,学生自由组合完成本课程所有实验,实验过程中不允许换人换组。
●表1除“成绩”栏外由学生填写,表2由老师填写。
每个成员在表1的“分工情况”一栏中详细填写实验中的分工。
●本页打印,附在实验报告正文前。
●实验报告如发现雷同,一律以0分计。
实验报告一、实验目的编写程序运行LED和按键控制程序。
二、实验内容1. 在Linux的开发环境下,使用GCC、VI、Makefile、GDB等工具完成简单程序开发2. 基本要求如下:a. 运行已有的Led程序和按键Key程序;b.合并Led和Key程序,完成以下功能:在开发板上按键,控制开发板上的灯点亮,再次按开发板上按键,控制开发板上的灯熄灭。
c. 在ARM端运行可执行程序;d. 观测实验结果。
三、实验要求实验报告中体现全部实验内容,可以粘贴代码,运行结果图等。
四、实验步骤1.进入目录/UP-CPU210-II /SRC/KERNEL/LINUX-2.6.35.7/2.使用make menuconfig 指令来配置内核对LED模块的支持3.退出保存配置,重新编译内核,执行make命令Scripts/kconfig/comf -s arch/arm/KconfigCHK include/linux/version/hSYMLINK include/asm-arm/arch -> include/agm-arm/arch-s3c2410Make[1]: ‘include/asm-arm/mach-types.h’ is up to dateCHK include/linux/compile.h编译LED应用测试程序1.进入实验目录2.清除中间代码重新编译3.生成可执行程序test_led1、启动Contex-A8的开发板,连上电源线、连好网线、串口线。
嵌入式控制系统及应用实验报告学期:2015-2016-1[第组] 嵌入式控制系统及应用实验报告基于ARM Cortex-M3 LPC1788目录实验一熟悉实验环境 (1)实验二嵌入式系统软件设计 (2)实验三矩阵键盘实验 (4)实验四RS-232串行通信实验 (8)实验四RS-232串行通信实验 (13)实验五A/D 转换实验 (16)实验六D/A 转换实验 (19)分数:实验一熟悉实验环境一、实验目的熟悉并掌握Keil μVersion 4开发环境,学会构建ARM Cortex-M3 LPC1788工程,学会使用JLINKv8下载器,编译与调试嵌入式系统软件。
二、实验内容1.熟悉Keil μVersion 4开发环境。
2. 阅读LPC1788芯片数据手册与用户手册,了解LPC1788的GPIO相关寄存器及其功能。
3.编程实现一个LED闪烁实验,使用JLINK下载灯闪烁代码到目标板。
三、实验设备硬件部分:PC计算机(宿主机)、LPC1788实验系统、JLINK仿真器。
软件部分:PC机WINDOWS系统、KEIL MDK μVersion 4软件、JLINK仿真调试驱动程序。
四、实验步骤1.启动PC机,进入keil环境。
2. 创建和打开项目。
3. 源程序编辑4 运行程序,观察并记录实验结果。
分数:实验二嵌入式系统软件设计一、实验目的1.了解实验系统的128*64液晶显示接口电路。
2.掌握LPC1788 GPIO口的使用方法。
3.掌握LPC1788的软件基本框架及设计技术。
二、实验内容1. 阅读128*64液晶显示模块的文档,掌握128*64液晶显示模块的工作原理。
2. 阅读SN74LVC4245A芯片文档,掌握SN74LVC4245A芯片的工作原理。
3. 完成128*64液晶显示模块程序的设计与调试。
三、实验设备硬件部分:PC机(宿主机)、LPC1788实验系统(目标板)、JLINK仿真器。
软件部分:PC机WINDOWS系统、MDK KEIL软件、JLINK仿真调试驱动程序。
嵌入式系统
键盘控制实验
日期: 报告分:
一、实验目的
1.学习键盘及LED 驱动原理。
2.掌握ZLG7289 芯片的使用方法
。
二、实验内容
通过ZLG7289 芯片驱动17 键的键盘和8 个共阴极LED,将按键值在LED 上显示出来。
三、实验步骤
1.新建工程
2.定义ZLG7289 寄存器(ZLG7289.h)
#define ZLG7289_CS (0x20) //GPB5
#define ZLG7289_KEY (0x10) //GPG4
3.编写ZLG7289 驱动函数
图2-2 ZLG7289 复位 图2-3 读取键值
4.定义键盘映射表
unsigned char KeyBoard_Map[]=
{4,8,11,0,0,0,0,0,5,9,12,15,1,0,0,0,6,10,13,16,2,3,0,0,7,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//64 键值映射表,通过查找键盘映射表来确定键盘扫描码对应的按键值
5.定义键值读取函数,流程图如图2-4 所示
精选文库
—
2
图2-4 键值读取函数
6.编写主函数,将按键值在数码管上显示,流程图如图2-5 所示。
图2-5 主函数
四、实验主要过程截图:
精选文库
—
3
实验结果拍照:
添加LCD320.H
和lcd320.c文件
精选文库
—
4
五、实验关键代码(有注释,最好有流程图)
#include"uhal.h"
#include"keyboard.h"
#include"zlg7289.h"
#include"44b.h"
#include"LCD320.H"
#pragma import(__use_no_semihosting_swi) // ensure no functions that use semihosting
extern int Zlg7289SIOBand;
extern int Zlg7289SIOCtrl;
int main(void)
{
U32 key;
ARMTargetInit(); //开发版初始化
LCD_Init();
LCD_ChangeMode(DspTxtMode);//转换LCD显示模式为文本显示模式
Uart_Printf("\nArm Target Init OK.");
Zlg7289_Reset();//zlg7289复位
while(1)
{ key=GetKey();//得到按键值
if(key==1) LCD_printf("/ \n");
if(key==2) LCD_printf("* \n");
if(key==3) LCD_printf("- \n");
if(key==4) LCD_printf("7 \n");
if(key==5) LCD_printf("8 \n");
if(key==6) LCD_printf("9 \n");
if(key==7) LCD_printf("+ \n");
if(key==8) LCD_printf("4 \n");
if(key==9) LCD_printf("5 \n");
if(key==10) LCD_printf("6 \n");
if(key==11) LCD_printf("1 \n");
if(key==12) LCD_printf("2 \n");
if(key==13) LCD_printf("3 \n");
精选文库
—
5
if(key==14) LCD_printf("Enter \n");
if(key==15) LCD_printf("0 \n");
if(key==0) LCD_printf("NumLock \n");
Delay(1);
ZLG7289_ENABLE();//使zlg7289占有同步串口
Delay(10);//延时
WriteSDIO(ZLG7289_CMD_DATA0|0);//数码管以方式0译码,第一个数码管亮
WriteSDIO(key%10);//显示个位
Delay(3000);//延时
if(key>9)
{//键值大于9显示十位
WriteSDIO(ZLG7289_CMD_DATA0|1);//发送十位数据
WriteSDIO((unsigned char)(key/10));
Delay(1);
WriteSDIO(ZLG7289_CMD_HIDE);//使一、二两位数码管显示
WriteSDIO(3);
}
else
{//键值小于10不显示十位
WriteSDIO(ZLG7289_CMD_HIDE);//使个位数码管显示
WriteSDIO(1);
}
ZLG7289_DISABLE();//zlg7289放弃同步串口控制权
}
return 0;
}
六、遇到的问题及解决方法
每次做实验都是要改代码。首先在没有改代码之前,在按键的时候,我按1,出现的不是对应
的数字,并且在显示屏上也没有出现数字。所以需要联系实验1中的代码,让按键出来的数字显
示在显示屏上。所以一开始就需要把实验1中的LCD320.H和lcd320.c文件加入到本实验里。最
后修改完代码后,我去做了试验。我按了一个1数字键,发现屏幕上出现了有7个1,难道是我
按的太慢了?我很快地又按了一遍,还是出现了4个。后来发现是因为延时的原因,所以又在代
码里加入了延时代码。再试一遍,果然,我按得慢,屏幕上也只出现一个相对应的数字。