嵌入式键盘控制实验(骄阳教育)
《嵌入式技术应用开发项目教程》项目4 嵌入式键盘与中断控制
嵌入式键盘与中断控制
教学目标
知识目标
技能目标
素质目标
1.了解独立式和矩阵式键盘结构;2.掌握键盘的接口电路和程序设计的方法;3.掌握LK32T102单片机外部中断的设置;4.掌握外部中断的编程方法和中断服务程序编写。
能完成独立式和矩阵式键盘电路设计,能应用C语言程序完成对键盘的按键识别程序设计,实现中断方式的按键控制设计、运行及调试。
任务11 矩阵键盘设计
任务11 矩阵键盘设计
4×4矩阵键盘行线依次连接到LK32T102单片机PB口的PB8~PB11引脚上,列线依次连接到PB12~PB15引脚上。
4×4矩阵键盘的程序设计,本任务采用常见的行列反转扫描方法。(1)判断有无键按下方法是:PB口输出0x0f00,既PB12~PB15输出低电平、PB8~PB11输出高电平;然后读PB口,若高8位的低4位PB8~PB11全为1,则键盘上没有键按下,若PB8~PB11不全为1,则有键按下。(2)消除按键的抖动方法是:当判断到键盘上有键按下后,先延时一段时间,再判断键盘的状态,若仍为有键按下状态,则认为有一个键按下,否则当作按键抖动来处理。(3)保存按键的行号方法是:消除按键的抖动后,仍有行线为低电平“0”,该行线既为按键按下的所在行,保存该按键所在的行号。
任务11 矩阵键盘设计
编写矩阵键盘设备文件
02
任务11 矩阵键盘设计
(1)矩阵键盘设备头文件keyboard4x4.h
编写矩阵键盘设备文件
02
任务11 矩阵键盘设计
(2)矩阵键盘设备驱动文件keyboard4x4.c
修改oledfont.h头文件
02
任务11 矩阵键盘设计
根据任务描述要求,需要在OLED显示屏在显示“矩阵键盘测试、按键被按下、朗迅科技公司”等汉字、显示“0~9、A~D、*、#”等字符。ASCII常用字符集的点阵数据不需要提取,只要更换“按键被按下”等汉字的点阵数据即可,修改的oledfont.h头文件。
嵌入式ARM键盘控制LED灯实验报告【范本模板】
实验六键盘控制LED灯实验1实验目的(1) 通过实验掌握中断式键盘控制与设计方法;(2) 熟练编写S3C2410中断服务程序。
2 实验设备(1) S3C2410嵌入式开发板,JTAG仿真器.(2) 软件:PC机操作系统Windows XP,ADS1.2集成开发环境,仿真器驱动程序,超级终端通讯程序.3 实验内容编写中断处理程序,处理一个键盘中断,并在串口打印中断及按键显示信息。
4 实验步骤(1) 参照模板工程,新建一个工程keypad,添加相应的文件,并修改keypad 的工程设置;(2)创建keypad。
c并加入到工程keypad中;(3)编写键盘中断程序;参考代码如下:①串口初始化程序void uart_init()/* UART串口初始化*/{GPHCON |= 0xa0; //GPH2,GPH3 used as TXD0,RXD0GPHUP = 0x0;//GPH2,GPH3内部上拉ULCON0 = 0x03;//8N1UCON0 = 0x05; //查询方式为轮询或中断;时钟选择为PCLKUFCON0 = 0x00;//不使用FIFOUMCON0 = 0x00;//不使用流控UBRDIV0 = 26; //波特率为57600,PCLK=12Mhz}②发送数据while(!(UTRSTAT0 &TXD0READY));UTXH0 = c;③接收数据while( ! (UTRSTAT0 &RXD0READY));return URXH0;④打印数据int i = 0;while(str[i] ){putc((unsigned char)str[i++]);}return i;⑤按键初始化int key_init()/* 按键初始化*/{GPFCON = 0x55aa;GPFUP = 0xff;printk(”按键初始化OK\r\n”);return 0;}⑥中断初始化void irq_init()/*中断初始化*/{INTMSK &= ~(3〈<2);printk("中断初始化OK\r\n”);}(5) 编译keypad;(6)运行超级终端,选择正确的串口号,并将串口设置位:波特率(115200)、奇偶校验(None)、数据位数(8)和停止位数(1),无流控,打开串口;(7)运行程序,在超级终端中输入的数据将回显到超级终端上,结果如图5。
键盘的锁定实验报告
键盘的锁定实验报告1. 引言键盘锁定是指用户通过按下特定组合键使键盘上的一些键无法使用,这可以避免意外按键操作,尤其对于游戏玩家和写作人员而言尤为重要。
本实验旨在探索不同的键盘锁定方式对用户体验的影响,并寻找最佳的解决方案。
2. 方法2.1 实验器材本实验所用到的器材如下:- 一台个人电脑- 一把标准的键盘- 键盘锁定软件2.2 实验设计本实验设计了三种不同的键盘锁定方式,分别是:1. 软件实现:通过使用键盘锁定软件,在特定的按键组合下,锁定键盘上的某些按键。
2. 硬件实现:在键盘上安装物理开关,通过打开或关闭开关来锁定特定按键。
3. 整合实现:结合软件和硬件的方式,既可以使用键盘锁定软件,也可以通过物理开关来控制。
2.3 实验步骤1. 在个人电脑上安装键盘锁定软件。
2. 对于软件实现和整合实现的实验组,使用键盘锁定软件,将某些按键锁定起来,并记录用户在锁定状态下的体验和表现。
3. 对于硬件实现和整合实验组,使用键盘上的物理开关控制键盘锁定,并记录用户在锁定状态下的体验和表现。
2.4 实验指标本实验使用以下指标来评估键盘锁定方式的效果:- 用户自述的体验感受- 键盘锁定的易用性- 锁定和解锁的速度3. 结果与分析根据实验结果,我们得出以下结论:1. 软件实现的键盘锁定方式可以灵活地选择锁定的按键,但在解锁时需要通过软件操作,略显麻烦。
2. 硬件实现的键盘锁定方式操作简单方便,但需要额外的硬件支持,不够灵活。
3. 整合实现结合了软件和硬件的优点,可以自由选择按键锁定和使用物理开关进行解锁,操作相对简单且灵活。
4. 总结本实验通过比较不同键盘锁定方式对用户体验的影响,得出整合实现是最佳的解决方案。
它可以在用户需要锁定按键时提供简单、灵活的操作方式,并在解锁时通过物理开关实现快速解锁。
然而,需要进一步研究和改进的问题还有:- 如何减少解锁过程中的等待时间- 如何提高整合实现的易用性通过对键盘锁定方式的研究和改进,可以进一步提升用户的体验和效率,满足不同用户对键盘锁定的需求。
嵌入式实训课实验报告
一、实验背景嵌入式系统在现代工业、消费电子、智能家居等领域扮演着越来越重要的角色。
为了让学生深入了解嵌入式系统的设计原理和开发过程,提高学生的实践能力和创新精神,我们开设了嵌入式实训课程。
本次实验报告将针对实训课程中的部分实验进行总结和分析。
二、实验目的1. 掌握嵌入式系统的基本原理和开发流程。
2. 熟悉嵌入式开发工具和环境。
3. 熟练使用C语言进行嵌入式编程。
4. 学会调试和优化嵌入式程序。
三、实验内容本次实训课程共安排了五个实验,以下是每个实验的具体内容和实验步骤:实验一:使用NeoPixel库控制RGB LED灯带1. 实验目的:学习使用NeoPixel库控制RGB LED灯带,实现循环显示不同颜色。
2. 实验步骤:(1)搭建实验平台,连接NeoPixel LED灯带。
(2)编写程序,初始化NeoPixel库,设置LED灯带模式。
(3)通过循环,控制LED灯带显示不同的颜色。
实验二:使用tm1637库控制数码管显示器1. 实验目的:学习使用tm1637库控制数码管显示器,显示数字、十六进制数、温度值以及字符串,并实现字符串滚动显示和倒计时功能。
2. 实验步骤:(1)搭建实验平台,连接tm1637数码管显示器。
(2)编写程序,初始化tm1637库,设置显示模式。
(3)编写函数,实现数字、十六进制数、温度值的显示。
(4)编写函数,实现字符串滚动显示和倒计时功能。
实验三:使用ds18x20库和onewire库读取DS18B20温度传感器的数据1. 实验目的:学习使用ds18x20库和onewire库读取DS18B20温度传感器的数据,并输出温度值。
2. 实验步骤:(1)搭建实验平台,连接DS18B20温度传感器。
(2)编写程序,初始化ds18x20库和onewire库。
(3)编写函数,读取温度传感器的数据,并输出温度值。
实验四:使用ESP32开发板连接手机热点,并实现LED1作为连接指示灯1. 实验目的:学习使用ESP32开发板连接手机热点,并通过LED1指示灯显示连接状态。
嵌入式实验三 键盘检测控制实验
2
ቤተ መጻሕፍቲ ባይዱ
嵌入式技术及应用 实验三
实验三 键盘实验
一、 实验目的 掌握单片机系统中矩阵键盘的编程控制方法,学会实时程序的调试技巧。
二、 实验原理 键盘是单片机应用中常用的输入设备,在应用系统中,操作人员可通过键盘
向系统输入指令、地址和数据,实现简单的人机通信。 键盘实际上是一组按键开关的集合,平时总是处于断开状态,当按下键时它
才闭合。按键在闭合和断开时,触点会存在抖动现象,抖动时间一般为 5-10ms, 如下图示:
键盘的处理主要涉及以下 3 个方面的内容: 按键的识别
所接 I/O 口线是高还是低电平(根据连接情况) 抖动的消除
硬件消抖 软件消抖(延时) 判断键值 独立式键盘 矩阵式键盘 实验板电路原理图如下:
1
嵌入式技术及应用 实验三
三、 实验内容 按下 16 个矩阵键盘依次在数码管上显示 1-16 的平方。如按下第一个显示 1,
第二个显示 4...
四、
实验步骤 1、 按实验内容要求在 µ Vision 中创建项目,编辑、调试、编译程序。 2、 将编译生成的目标码文件(后缀为.Hex)下载到实验板上。 3、 观察实验运行结果并记录。
嵌入式课程三个实验结合
嵌入式课程三个实验结合
这是一个嵌入式课程的三个实验结合的示例:
1. LED闪烁控制实验
说明:在这个实验中,我们将使用C语言编程控制LED灯闪烁。
实验步骤:
- 连接电路:将LED连接到开发板的GPIO口。
- 编写程序:在开发板上使用C语言编写程序,使LED从亮到灭闪烁。
- 调试程序:在开发板上运行程序,观察LED是否从亮到灭闪烁。
- 利用按键控制LED闪烁频率:使用按键来控制LED闪烁的频率。
例如,按下按键后,闪烁频率变快,再按下按键后,闪烁频率变慢。
2. 蜂鸣器控制实验
说明:在这个实验中,我们将使用C语言编程控制蜂鸣器发出声音。
实验步骤:
- 连接电路:将蜂鸣器连接到开发板的GPIO口。
- 编写程序:在开发板上使用C语言编写程序,使蜂鸣器发出声音。
- 调试程序:在开发板上运行程序,听取蜂鸣器发出的声音。
- 利用按键控制蜂鸣器的声音:使用按键来控制蜂鸣器发出的声音。
例如,按下按键后,蜂鸣器发出高频声音,再按下按键后,蜂鸣器发出低频声音。
3. 温度传感器实验
说明:在这个实验中,我们使用温度传感器来测量环境温度。
实验步骤:
- 连接电路:将温度传感器连接到开发板的GPIO口。
- 编写程序:在开发板上使用C语言编写程序,读取温度传感器测量到的环境温度,并将其显示在开发板上。
- 调试程序:在开发板上运行程序,并读取显示温度的值。
- 利用LED显示温度:使用LED来显示温度。
例如,当温度达到一定值时,LED会亮起来,表示环境温度过高或过低。
嵌入式键盘及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 片选输入端,此引脚为低电平时,可向芯片发送指令及读取键盘数据7 CLK 同步时钟输入端,向芯片发送数据及读取键盘数据时,此引脚电平上升沿表示数据有效8 DATA 串行数据输入/输出端,当芯片接收指令时此引脚为输入端,当读取键盘数据时此引脚在读指令最后一个时钟的下降沿变为输出端9 /KEY 按键有效输出端,平时为高电平,当检测到有效按键时,引脚变为低电平10-16 SG-SA 段g—段a 驱动输出17 DP 小数点驱动输出18-25 DIG0-DIG7 数字0—数字7驱动输出26 OSC2 振荡器输出端27 OSC1 振荡器输入端28 /RESET 复位端ZLG7289A的控制指令分为二大类——纯指令和带有数据的指令:1.纯指令(1)复位(清除)指令,如表2-6所示:表2-6 复位指令格式D7 D6 D5 D4 D3 D2 D1 D01 0 1 0 0 1 0 0当ZLG7289A收到该指令后,将所有的显示清除,所有设置的字符消隐、闪烁等属性也被一起清除。
实验9 嵌入式按键程序测试
#include <fcntl.h>
#include <sys/select.h>
#include <sys/time.h>
#include <errno.h>
int main(void)
{
int buttons_fd;
char buttons[8] = {'0', '0', '0', '0', '0', '0', '0', '0'};
count_of_changed_key++;
}
}
if (count_of_changed_key) {
printf("\n");
}
}
close(buttons_fd);
return 0;
}
4.保存文件,编译源代码:
arm-linux-gcc buttons_test.c -obuttons_test
int i;
if (read(buttons_fd, current_buttons, sizeof current_buttons) != sizeof current_buttons)
{
perror("read buttons:");
exit(1);
}
for (i = 0, count_of_changed_key = 0; i < sizeof buttons / sizeof buttons[0]; i++) {
《嵌入式接口技术》实验报告5-键盘阵列扫描1107012150陈晓霞
{
IO0CLR=col1|col2|col3|col4|col5|col6;//全清零
return key;
}
//--------------扫描第2列-------------------
IO0CLR=col2;
IO0SET=col1|col3|col4|col5|col6;
if((IO0PIN & row2)==0) key=26;
if((IO0PIN & row3)==0) key=27;
if((IO0PIN & row4)==0) key=28;
if((IO0PIN & row5)==0) key=29;
if((IO0PIN & row6)==0) key=30;
1搭建实验平台
2根据要求编写程序
3在仿真平台上,画图连接线路
4导入程序运行
四、实验结果与数据处理
1.运行结果
2.源程序
#include "config.h"
uint32 key;
//引脚定义
#define col1 (1<<0) //col1连接p0.0
#define col2 (1<<1)
#define col3 (1<<2)
if(key != 0)
{
IO0CLR=col1|col2|col3|col4|col5|col6;
return key;
}
//--------------扫描第5列-------------------
IO0CLR=col5;
IO0SET=col1|col2|col3|col4|col6;
实验的三4x4键盘控制实验的
实验报告课程名称嵌入式系统实验名称4x4键盘控制实验姓名王闯学号200907040318 专业班级软件0903实验日期年月日成绩指导教师王彩玲一、实验目的1 、通过实验掌握中断式键盘控制与设计方法;2 、掌握中断式键盘检测程序的设计思路;3 、熟练编写ARM 核处理器S3C44B0X 中断程序;二、实验设备1 、硬件:EMBEST S3CEV40 实验平台,Embest ARM 标准/ 增强型仿真器套件,PC 机;2 、软件:Embest IDE 2003 集成开发环境,Windows 98/2000/NT/XP 操作系统。
三、实验内容使用实验板上4 ×4 用户键盘,编写程序通过中断的方式读入键值,并在实验板的LE D数码管上显示读到的键值。
四、实验原理键盘接口电路如图所示,板上扩展了一个4×4行列式矩阵键盘接口。
该键盘是采用中断扫描的方式进行工作,行线选用了4个数据线,列线选用了4个地址线。
行线接上拉电阻保持高电平,并通过与门74HC08将输出信号与MCU 的中断EXINT1连接;列线接下拉电阻保持低电平。
当有键盘按下时,该行线被拉为低电平,使得EXINT1输入也为低电平,MCU 产生中断。
中断产生后通过对键盘的行和列进行扫描的方法可以计算出是哪个键按下,并跳到相应的键盘处理程序中去。
芯片74HC541是通过片选信号nGCS3来选通的,这样可以保证在键盘不使用的情况下MCU 读不到行线的输入信息。
123456784*4KEYBOARDCON7VDD33121311U13D 74HC089108714U13C74HC08456U13B 74HC08VDD33L0L1L2L3EXINT1R354.7K R364.7K R374.7K R384.7KD71N4148D81N4148D91N4148D101N4148G11A12A23A34Y217Y118G219VCC 20A45A56A67A78Y613Y514Y415Y316A89GND 10Y811Y712U10074HC541VDD33D0D1D2D3A1A2A3A4L0L1L2L3NGCS3GNDGND 1A11Y 22A32Y 45A116Y 126A13VCC 143A53Y 6GND74Y 84A95Y 10U10174HC17R20010K R20110K R20210K R20310K R20410KR20510K GND GND VDD33GNDGND五、实验操作步骤(1 )准备实验环境。
湖南工程学院嵌入式实验报告键盘的应用
实验报告课程名称嵌入式系统实验名称键盘的应用专业计算机技术与科学班级学号姓名指导教师胡瑛年月日实验二键盘的应用实验名称键盘的应用评分实验日期年月日指导教师胡瑛姓名专业班级学号一、实验目的掌握键盘的工作原理及应用二实验内容按下KEY0键,LED0灯闪烁一次,按下WK_UP键,LED1灯闪烁一次。
原理图如图1、2所示:图1 LED灯电路原理图图2 键盘的电路原理图Led.h:void LED_Init(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //使PE端口时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //LED0-->PB.5端口配置GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHZ GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_6); //PE.6输出高GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //推挽输出GPIO_Init(GPIOE, &GPIO_InitStructure);GPIO_SetBits(GPIOE,GPIO_Pin_5);}Led.c:void KEY_Init(void) //初始化{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENAB LE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; //KEY0GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入GPIO_Init(GPIOE, &GPIO_InitStructure); //初始化,下拉输入GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0设置成输入默认下拉GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIOA.0}main.c:int main(void){vu8 key=0;delay_init(); //延时函数初始化LED_Init(); //LED端口初始化KEY_Init(); //初始化与按键连接的硬件端口while(1){key=KEY_Scan(0); //得到键值if(key){switch(key){case WKUP_PRES: //控制LED0闪烁LED0=!LED0delay_ms(300);LED0=!LED0;break;case WKUP_PRES: //控制LED1闪烁LED1=!LED1delay_ms(300);LED1=!LED1;break;}}else delay_ms(10);}}三实验结果实现按键闪烁,按下KEY0键,LED0灯闪烁一次,按下WK_UP键,LED1灯闪烁一次.四.实验体会成功编写了按键闪烁程序,明白了实验的原理,更加深入的理解了嵌入式。
嵌入式实验报告编程实验(3篇)
第1篇一、实验目的1. 熟悉嵌入式系统开发环境。
2. 掌握嵌入式编程的基本方法。
3. 理解嵌入式程序的结构和运行机制。
4. 提高实际编程能力,为后续嵌入式系统开发打下基础。
二、实验环境1. 操作系统:Windows 102. 开发工具:Keil uVision53. 嵌入式平台:STM32F103C8T64. 编程语言:C语言三、实验内容本次实验主要完成以下任务:1. 创建工程,配置工程参数。
2. 编写嵌入式程序,实现基本功能。
3. 编译、下载程序到目标板。
4. 观察程序运行效果,调试程序。
四、实验步骤1. 创建工程(1)打开Keil uVision5,点击“Project”菜单,选择“New uVision Project”。
(2)选择目标芯片型号STM32F103C8T6,点击“OK”。
(3)在弹出的对话框中,选择项目保存路径,输入项目名称,点击“Save”。
(4)点击“OK”,完成工程创建。
2. 配置工程参数(1)双击“Target 1”,打开目标配置界面。
(2)在“Device”下拉列表中选择STM32F103C8T6。
(3)根据实际情况配置时钟、中断、外设等参数。
(4)点击“OK”,保存配置。
3. 编写嵌入式程序(1)在工程目录下,找到“User”文件夹,打开“main.c”文件。
(2)根据实验要求,编写嵌入式程序代码。
以下为示例代码:```cinclude "stm32f10x.h"void delay(unsigned int ms){unsigned int i, j;for (i = ms; i > 0; i--)for (j = 720; j > 0; j--);}int main(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 使能GPIOA 时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // 设置PA0GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化GPIOAwhile (1){GPIO_SetBits(GPIOA, GPIO_Pin_0); // PA0输出高电平delay(500);GPIO_ResetBits(GPIOA, GPIO_Pin_0); // PA0输出低电平delay(500);}}```4. 编译、下载程序(1)点击“Project”菜单,选择“Build Target”编译程序。
嵌入式软件开发基础实验报告 4×4键盘控制
上海电力学院嵌入式软件开发基础实验报告题目:【ARM】 4x4 键盘控制实验专业:电子科学与技术年级:姓名:学号:一、实验目的通过实验掌握键盘控制与设计方法。
熟练编写ARM 核处理器S3C44B0X 中断处理程序。
二、实验设备硬件:Embest EduKit-III 实验平台,Embest ARM 标准/增强型仿真器套件,PC 机。
软件:Embest IDE Pro ARM 集成开发环境,Windows 98/2000/NT/XP三、实验内容使用实验板上5x4 用户键盘,编写程序接收键盘中断。
通过IIC 总线读入键值,并同将读到的键值发送到串口。
四、实验原理用户设计行列键盘接口,一般常采用三种方法读取键值。
一种是中断式,另两种是扫描法和反转法。
中断式在键盘按下时产生一个外部中断通知CPU,并由中断处理程序通过不同的地址读取数据线上的状态,判断哪个按键被按下。
本实验采用中断式实现用户键盘接口。
扫描法对键盘上的某一行送低电平,其他为高电平,然后读取列值,若列值中有一位是低,表明该行与低电平对应列的键被按下。
否则扫描下一行。
反转法先将所有行扫描线输出低电平,读列值,若列值有一位是低,表明有键按下;接着所有列扫描线输出低电平,再读行值。
根据读到的值组合就可以查表得到键码。
五、实验设计1. 键盘硬件电路设计(1) 键盘控制电路(2) 工作过程键盘动作由芯片ZLG7290 检测,当键盘按下时,芯片检测到后在INT 引脚产生中断触发电平通知处理器,处理器通过IIC 总线读取芯片中保存的键值。
六、实验操作步骤1. 准备实验环境使用Embest 仿真器连接目标板,使用Embest EduKit-III 实验板附带的串口线,连接实验板上的UART0 和PC 机的串口。
2. 串口接收设置在PC 机上运行windows 自带的超级终端串口通信程序(波特率115200、1 位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。
嵌入式系统开发2 按键实验
河南机电高等专科学校《嵌入式系统开发》课程实验报告系部:电子通信工程系班级:电信@@@姓名: @@@@@@学号: @@@@@@@@@实验二按键实验(查询方式)一.实验简介在实验一的基础上,使用按键控制流水灯速度,及使用按键控制流水灯流水方向。
二.实验目的熟练使用库函数操作GPIO,掌握利用查询方式控制按键的程序编写方法。
三.实验内容实现初始化GPIO,并配置中断,在中断服务程序中通过修改全局变量,达到控制流水灯速度及方向。
四.实验设备硬件部分:PC计算机(宿主机)、STM32实验板。
软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。
五.实验步骤1在实验一代码的基础上,编写按键控制部分代码2编写完成主程序4编译代码,下载到实验板5.单步调试6记录实验过程,撰写实验报告六.实验结果及测试通过软件设置寄存器,打开GPIO的时钟,设置其速率为50MHz,设置相应LED灯引脚PB0,PC4,PC3为推挽模式,使引脚能够驱动较大电流,然后通过软件延时的方式改变引脚的关断与开启,使led灯亮与灭。
呈现流水灯的效果。
实验程序的主函数的文件内容如下:#include "stm32f10x.h"#include "bsp_led.h"void Delay(__IO u32 nCount);int main(void){/* LED 端口初始化*/LED_GPIO_Config();while (1){LED1( ON ); // 亮Delay(0x0FFFFF);LED1( OFF ); // 灭LED2( ON ); // 亮Delay(0x0FFFFF);LED2( OFF ); // 灭LED3( ON ); // 亮Delay(0x0FFFFF);LED3( OFF ); // 灭}}void Delay(__IO uint32_t nCount) //简单的延时函数{for(; nCount != 0; nCount--);}七.实验总结做实验时,老师还会根据自己的亲身体会,将一些课本上没有的知识教给我们,拓宽我们的眼界,使我们认识到这门课程在生活中的应用是那么的广泛。
嵌入式实验报告
实验名称:嵌入式系统开发与调试实验日期:2021年10月15日实验地点:实验室一、实验目的1. 熟悉嵌入式系统的基本组成和原理。
2. 掌握嵌入式系统开发的基本流程和工具。
3. 学习嵌入式系统调试的方法和技巧。
4. 提高实际操作能力,为以后从事嵌入式系统开发打下基础。
二、实验内容1. 嵌入式系统概述2. 嵌入式系统开发环境搭建3. 嵌入式系统编程4. 嵌入式系统调试三、实验步骤1. 嵌入式系统概述(1)了解嵌入式系统的定义、特点和应用领域。
(2)分析嵌入式系统的组成,包括硬件、软件和中间件。
(3)学习嵌入式系统的分类,如按处理器架构、操作系统和应用领域等。
2. 嵌入式系统开发环境搭建(1)安装开发工具,如Keil、IAR等。
(2)搭建硬件开发平台,如STM32、ARM等。
(3)配置开发环境,包括编译器、链接器、调试器等。
3. 嵌入式系统编程(1)学习C语言编程,掌握基本语法和数据结构。
(2)学习嵌入式系统编程技巧,如中断、定时器、串口通信等。
(3)编写示例程序,如LED控制、按键检测等。
4. 嵌入式系统调试(1)学习调试器的基本操作,如设置断点、单步执行、观察变量等。
(2)掌握调试技巧,如逻辑分析、代码优化等。
(3)调试示例程序,找出并修复程序中的错误。
四、实验结果与分析1. 嵌入式系统概述(1)掌握了嵌入式系统的定义、特点和应用领域。
(2)了解了嵌入式系统的组成,包括硬件、软件和中间件。
(3)熟悉了嵌入式系统的分类,如按处理器架构、操作系统和应用领域等。
2. 嵌入式系统开发环境搭建(1)成功搭建了Keil开发环境。
(2)完成了STM32硬件开发平台的搭建。
(3)配置了编译器、链接器、调试器等开发工具。
3. 嵌入式系统编程(1)掌握了C语言编程基本语法和数据结构。
(2)学会了嵌入式系统编程技巧,如中断、定时器、串口通信等。
(3)编写了LED控制、按键检测等示例程序,并成功运行。
4. 嵌入式系统调试(1)熟悉了调试器的基本操作,如设置断点、单步执行、观察变量等。
嵌入式系统原理实验五按键实验
实验五按键输入实验实验目的:利用板载的 4 个按键,来控制板载的两个LED 的亮灭和蜂鸣器的开关。
通过本实验,将了解到STM32F1 的IO 口作为输入口的使用方法。
内容要点:1.STM32 IO 口简介STM32F1 的IO 口在上一章已经有了比较详细的介绍,这里我们不再多说。
STM32F1 的IO口做输入使用的时候,是通过调用函数GPIO_ReadInputDataBit()来读取IO 口的状态的。
了解了这点,就可以开始我们的代码编写了。
这一个实验,我们将通过ALIENTEK 战舰STM32 开发板上载有的 4 个按钮(WK_UP、KEY0、KEY1 和KEY2),来控制板上的2 个LED(DS0 和DS1)和蜂鸣器,其中WK_UP 控制蜂鸣器,按一次叫,再按一次停;KEY2 控制DS0,按一次亮,再按一次灭;KEY1 控制DS1,效果同KEY2;KEY0 则同时控制DS0 和DS1,按一次,他们的状态就翻转一次。
有源蜂鸣器自带了震荡电路,一通电就会发声2.硬件设计本实验用到的硬件资源有:1)指示灯 DS0、 DS12) 4 个按键: KEY0、 KEY1、 KEY2、和 WK_UP。
DS0、 DS1 以及蜂鸣器和 STM32 的连接在上两章都已经分别介绍了,在战舰 STM32 开发板上的按键 KEY0 连接在 PE4上、KEY1 连接在 PE3上、KEY2 连接在 PE2上、WK_UP 连接在 PA0上。
如图所示:按键与STM32 连接原理图这里需要注意的是: KEY0、 KEY1 和 KEY2 是低电平有效的,而 WK_UP 是高电平有效的,并且外部都没有上下拉电阻,所以,需要在 STM32 内部设置上下拉。
3.软件设计key.h#ifndef __KEY_H#define __KEY_H#include "sys.h"#define KEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)//读取按键0#define KEY1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)//读取按键1#define KEY2 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)//读取按键2#define WK_UP GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)//读取按键3(WK_UP)#define KEY0_PRES 1 //KEY0 按下#define KEY1_PRES 2 //KEY1 按下#define KEY2_PRES 3 //KEY2 按下#define WKUP_PRES 4 //WK_UP 按下(即WK_UP/WK_UP)void KEY_Init(void); //IO 初始化u8 KEY_Scan(u8); //按键扫描函数#endif这段代码里面最关键就是 4 个宏定义:#define KEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4) //读取按键0#define KEY1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3) //读取按键1#define KEY2 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2) //读取按键2#define WK_UP GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) //读取按键3(WK_UP)然后我们打开USER 文件夹Template. uvprojx,按新建按钮新建一个文件,然后保存在HARDWARE->BEEP 文件夹下面,保存为key.c。
键盘实验报告
键盘检测实验报告一、实验目的掌握嵌入式系统的原理,尤其是键盘、串口、显示等器件的接口原理;熟悉小型嵌入式系统的设计方法和程序的编写;掌握软件与硬件的调试技术。
二、实验原理及实验线路具体的嵌入式系统的原理这里不赘述,同时实验使用的也是深圳某公司的基于S3C44B0X的成套教学板,且本次实验是在系统提供的例程的基础上扩展。
三、实验内容结合中断系统的工作原理,编程实现双键同时按下时键盘的检测,并分别将两个键值在8段数码管显示,同时通过UART串口输出。
四、实验步骤1、系统连接将实验板通过JTAG仿真器与PC机相连,同时将实验板的串口与PC机串口连接。
2、程序输入实验板上电后,启动PC机,在Embest-IDE for ARM里面创建、配置好工程,然后编辑该程序,如无错误,可以将目标程序连接、下载到实验板上。
3、程序调试用单步、断点、连续方式调试程序,检查程序运行结果是否正确,排除软件错误,观察输入按键和输出指示灯的状态,直至达到本实验的要求为止。
五、程序框图及部分源代码程序框图如下:系统初始化进入while循环等待中断按顺序循环检测16个按键当检测到有两个键按下后,产生中断在LED上显示检测到的两个键,并通过串口输出由于是在例程基础上拓展,这里只给出修改后的关于键盘检测和显示、串口输出的函数源代码:void KeyboardInt(void){int value;rI_ISPC = BIT_EINT1; // clear pending bitint i;int j=0;int k;int m=10;int a[2]={-1,-1};char temp;for(i=1;i<=4;i++){if(i==1)temp= *(keyboard_base+0xfd);else if(i==2)temp= *(keyboard_base+0xfb);else if(i==3)temp= *(keyboard_base+0xf7);else if(i==4)temp= *(keyboard_base+0xef);if(( temp & KEY_V ALUE_MASK) != KEY_V ALUE_MASK){if( (temp&0x1) == 0 ){a[j] = (4*i-1);j++;if(j==2) break;}else if( (temp&0x2) == 0 ){a[j] = (4*i-2);j++;if(j==2) break;}else if( (temp&0x4) == 0 ){a[j] = (4*i-3);j++;if(j==2) break;}else if( (temp&0x8) == 0 ){a[j] = 4*(i-1);j++;if(j==2) break;}/*while(( temp & KEY_V ALUE_MASK) != KEY_V ALUE_MASK) // release{if(i==1)temp= *(keyboard_base+0xfd);else if(i==2)temp= *(keyboard_base+0xfb);else if(i==3)temp= *(keyboard_base+0xf7);else if(i==4)temp= *(keyboard_base+0xef);}*/}}value=a[0];if(value > -1){Digit_Led_Symbol(value);Uart_Printf("Key is:%x \r",value);}for(k=10000;k>=0;k--){while(m--)}value=a[1];if(value > -1){Digit_Led_Symbol(value);Uart_Printf("Key is:%x \r",value);}}六、实验结果实验不时很成功,没有得到的预期的效果,这个程序还需要进一步改进,当前的结果是按下两个键可以显示之,当按下一个不松,在按下另一个后,可以显示第二个,松开第二个键后重新显示第一个,当然串口可以输出同样的现实内容。
嵌入式远程控制实训报告
一、实训目的本次实训旨在使学生掌握嵌入式系统设计的基本方法,熟悉嵌入式远程控制技术的原理和应用,提高学生的实际动手能力和团队协作能力。
通过本次实训,使学生能够:1. 了解嵌入式系统的基本组成和原理;2. 掌握嵌入式远程控制系统的设计方法;3. 熟悉常用嵌入式开发工具和调试方法;4. 提高团队协作和沟通能力。
二、实训内容1. 嵌入式系统概述嵌入式系统是一种具有特定功能的计算机系统,它通常由微处理器、存储器、输入/输出接口等组成。
嵌入式系统广泛应用于工业控制、消费电子、医疗设备等领域。
2. 嵌入式远程控制系统设计(1)系统需求分析根据实际应用场景,确定嵌入式远程控制系统的功能需求。
例如,设计一个基于Wi-Fi的远程控制系统,实现对智能家居设备的远程监控和控制。
(2)系统架构设计根据需求分析,设计嵌入式远程控制系统的整体架构。
主要包括以下模块:①微处理器模块:负责整个系统的核心处理功能;②无线通信模块:实现设备与远程主控计算机之间的数据传输;③传感器模块:采集设备运行状态和环境参数;④执行器模块:根据采集到的数据,实现对设备的控制;⑤用户界面模块:提供设备运行状态和参数的显示。
(3)硬件设计根据系统架构设计,选择合适的硬件设备。
例如,微处理器可以选择STM32系列;无线通信模块可以选择ESP8266;传感器和执行器模块根据实际需求进行选择。
(4)软件设计①嵌入式操作系统:选择合适的嵌入式操作系统,如FreeRTOS、uc/OS等;②通信协议:设计数据传输协议,如TCP/IP、MQTT等;③应用程序:开发设备监控和控制应用程序。
(5)系统集成与调试将各个模块进行集成,并完成系统调试。
确保系统功能正常、稳定运行。
3. 实训过程(1)分组讨论:每组讨论确定实训项目,明确分工;(2)硬件采购与组装:根据设计需求,采购所需硬件,并完成组装;(3)软件设计:根据系统架构设计,编写软件代码;(4)系统集成与调试:将各个模块进行集成,并完成系统调试;(5)撰写实训报告:总结实训过程,分析遇到的问题及解决方案。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式系统
键盘控制实验
日期:报告分:
一、实验目的
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-4 键值读取函数6.编写主函数,将按键值在数码管上显示,流程图如图2-5 所示。
图2-5 主函数
四、实验主要过程截图:。