嵌入式实验三人机交互接口-键盘操作实验(2)

2020-02-21 02:47

实验内容:

(1)默认在在OLED屏幕上分行显示自己的学号、姓名,如“2010011001”、“zhangsan”。

思路:RIT128x96x4StringDraw直接显示。

(2)按下键盘的任意键,在OLED屏幕正中显示该键字符,如“0”、“A”等。

思路:通过oledkey得到键盘的值,利用RIT128x96x4StringDraw显示在屏幕上。

(3)按下键盘的偶数键时,在OLED屏幕上显示“Now Show Char!”提示信息,并在OLED屏幕上显示实验一的字符,并根据按下的键值,确定字符的位置,按“0”、“2”、“4”、“6”、“8”、“A”、“C”、“E”分别在最左端,距左端1/8屏幕宽度处、距左端2/8屏幕宽度处、距左端3/8屏幕宽度处、距左端1/2屏幕宽度处、距右端3/8屏幕宽度处、距右端2/8屏幕宽度处、距右端1/8屏幕宽度处、最右端显示。要保证字符可以全部显示。

思路:通过switch语句进行判断,当键盘值为上述字符时调用Draw_Char_F(ulx)在相应位置显示字符图形。

(4)按下键盘的奇数键时,在OLED屏幕上显示“Now Reset Speed!”提示信息,在OLED屏幕上显示实验二的效果,即根据自己分配的阈值和移动路线上对字符进行移动,并根据按下的键值,确定频率的快慢,按“1”、“3”、“5”、“7”、“9”、“B”、“D”、“F”由慢到快(速度可以逐个递增2倍或5倍)。

思路:通过switch语句进行判断,当键盘值为上述字符时调用Reset_Counter_Speed(x)设置字符的不同移动速度。

(5)根据自己的想法,选用一个按键,在OLED屏幕上显示与上面不同的效果。

思路:一朵花从花盆中长出花茎、叶子、花朵。通过不同的按键长出花的不同部分。

实验步骤:

(一)Keil开发环境中对项目Project配置 见实验一(一)步骤 (二)嵌入式C程序开发 (1)加载必要程序

本次实验提供了几个源程序rit128x96x4.h,rit128x96x4.c,startup.s,都压在work3_code.zip中,与实验一(二)(1)步骤类似。

(2)新建主函数程序,并加载到项目中

新建一个文件,保存为main.c,把main.c也加载到项目中,与实验一(二)(2)步骤类似。 本次实验需要增加以下头文件 #include #include #include #include #include #include #include

#include #include \

本次实验显示的内容实验(二)已完成,故可在实验(二)基础上进一步开发。

(3)利用中断,接收键盘输入

(3)--(1)在主函数中 开启键盘中断,示例如下: /*使能外设GPIO*/

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);

/*设置GPIO为输入*/

GPIOPinTypeGPIOInput(GPIO_PORTD_BASE, GPIO_PIN_7); GPIOPinTypeGPIOInput(GPIO_PORTC_BASE, GPIO_PIN_4);

/*使能中断*/

IntEnable(INT_GPIOD); IntMasterEnable();

GPIOPinIntEnable(GPIO_PORTD_BASE, GPIO_PIN_7); GPIOIntTypeSet(GPIO_PORTD_BASE, GPIO_RISING_EDGE);

GPIO_PIN_7,

注意:其中,GPIO_PORTC用于传输按下的键值,GPIO_PORTD用于向CPU发起中断请求。

(3)--(2)设置全局变量oledkey用于保存键盘输入的按键 char oledkey[2];

(3)--(3)设计实现并注册键盘中断处理函数

键盘每次按键都会触发四次中断,中断信号源为GPIO Port D,修改startup.s中GPIO Port D项对应的中断服务处理函数,与实验(二)设置中断流程类似,这里不再重复。

键盘中断处理函数示例如下:

int i=0; // i定义为全局变量,因为只有1根线GPIO_PIN_4与CPU相联,所以一个按键(16种,4bit表示)需要四次中断才能传给CPU。

unsigned char ucValue=0x00; //ucValue定义为全局变量,该值存储输入的按键值的中间结果。

/*中断服务函数ISR*/ void GPIO_PORT_D_ISR(void) {

unsigned char ucKey;

unsigned long ulStatus;

ulStatus = GPIOPinIntStatus(GPIO_PORTD_BASE, true); GPIOPinIntClear(GPIO_PORTD_BASE, ulStatus);

if(ulStatus & GPIO_PIN_7) {

ucKey = GPIOPinRead(GPIO_PORTC_BASE, GPIO_PIN_4); ucKey = ucKey>>1;

ucValue = ucValue + ucKey; ucValue = ucValue<<1; i++; if(i==4) { i=0;

oledkey[1]='\\0'; if((ucValue>>4)<10)

oledkey[0] = (ucValue>>4) + 48; else

oledkey[0] = (ucValue>>4) - 10 + 'A'; } }


嵌入式实验三人机交互接口-键盘操作实验(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:质量样板引路施工方案交底 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: