嵌入式实验报告数码管显示实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告

课程名称嵌入式系统编程实践

实验仪器清华同方辰源嵌入式系统实验箱实验名称实验四:数码管显示实验

系别__计算机学院_

专业 _

班级/学号

学生姓名

实验日期 2013年10月11日

成绩___________________

指导教师

实验四:数码管显示实验

一、实验问题回答

(1)如何设置功能3,4中的循环速度?

答:利用系统SysTick Handler中断,控制循环速度

void SysTick_Handler (void)

{

Event = 1;

}

(2)若是想实现类似实验(三)通过键盘动态控制循环速度,考虑一下应该如何设计?

答:SysTickPeriodSet(SysCtlClockGet() / X)

//设置x的大小就可以控制循环的速度。

void Reset_Counter_Speed(int x)

{

SysTickIntDisable();

SysTickDisable();

SysTickPeriodSet(SysCtlClockGet() / x);

// 设置x,控制计数频率,值与频率成正比SysTickEnable();

SysTickIntEnable();

}

,达到预期的效果。

二、实验目的和效果(效果即是否达到实验目的,达到的程度如何)

学习、了解和掌握数码管工作原理和使用方法

实验结果及检查

(1)默认在在OLED屏幕上分行显示自己的学号、姓名、项目序号、时间,如“2010011001”、“zhangsan”、“work4”、“2012-11-”

(2)首先在屏幕上显示四个功能选单,通过键盘A-F键选择不同功能,选择后屏幕显示相关功能提示,接受键盘输入的数字键0-9并在数码管上显示。如:开始显示:“please choose the function:”“A: …”“B: …”“C: …”“D: …”

按下“A”键后,显示”now you choose function A”

(3)按下键盘后,根据不同功能在数码管上显示按键字符。

其中“A”功能表示键盘输入的字符在数码管最右端显示,

“B”功能表示键盘输入的字符在数码管最左端显示,

“C”功能表示键盘输入的字符在数码管上从最右端到最左端循环显示,

“D”功能表示键盘输入的字符在数码管从最左端到最右端循环显示,

“E”功能表示键盘输入的字符会依次从最右端往左端移动显示,如按下“1”、“2”、“1”、“3”,在数码管上显示“空空空空空1”到“空空空空 1 2”

到“空空空 1 2 1”到“空空 1 2 1 3”,超过6个以后,最左端的丢掉。(4)扩展:根据自己的想法,扩展“F”按键,在数码管上显示与上面不同的效果。

(5)扩展:根据自己的想法,扩展“F”+“A”按键,即先按F再按A才有该功能。

三、实验内容和步骤(重点阐述自己的思路及遇到的问题)

(一)Keil开发环境中对项目Project配置

(1)建立项目

1、新建一个project;

2、选择CPU中的Luminary LM3S 8962;

3、加载库文件;

4、项目相关配置项修改。

加载必要程序:

本次实验提供了几个源程序rit128x96x4.h,rit128x96x4.c,startup.s,utility.c,utility.h,definition.h。

其中,definition.h文件中定义了一些宏定义,用于将整个工程中的宏定义放在一起,目的是为了程序的可读性更好。本例中定义了五个不同的功能模式,可以根据自己习惯进行修改。

Utility.c和utility.h中包含了数码管显示处理函数。其函数声明如下:void disp(char x,int location);使用方法:第一个参数表示要显示的字符,在本例中,就是键盘中断服务程序执行完后保存在oledkey[0]里的字符,第二个参数表示显示的位置,其中1表示数码管的最右端,6表示数码管的最左端,2-4依次表示中间4个数码管。

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

新建一个文件,保存为main.c,把main.c也加载到项目中。

本次实验需要增加以下头文件

#include

#include

#include

#include

#include

#include

#include

#include

#include "rit128x96x4.h"

#include "utility.h"

#include "definition.h"

(二)嵌入式C程序开发

(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_PIN_7, GPIO_RISING_EDGE);

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

(4)利用系统SysTick Handler中断,控制循环速度

本步骤与实验(二)对应部分一样,不再重复。

(5)修改主函数,实现本次实验要求的功能

(5)-(1)在主函数中对七段数码管进行相关配置和初始化,如下所示:SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);

/*配置GPIO端口为输出*/

// 7segd1(PB6);7segd2(PB4);7segd3(PB5)

GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6);

// bitcode0(PC5);bitcode1(PC6);bitcode2(PC7)

GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7);

// 7segd0(PD4);7segdot(PD5);rst(PD6)

GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6);

(5)-(2)系统启动后,首先通过键盘输入选择不同功能,并在屏幕上显示不同提示信息。

“A”功能表示键盘输入的字符在数码管最右端显示

“B”功能表示键盘输入的字符在数码管最左端显示

“C”功能表示键盘输入的字符在数码管上从最右端到最左端循环显示

“D”功能表示键盘输入的字符在数码管从最左端到最右端循环显示

“E”功能表示键盘输入的字符会依次从最右端往左端移动显示,如按下“1”、“2”、“1”、“3”,在数码管上显示“空空空空空1”到“空空空空1 2”到“空空空 1 2 1”到“空空 1 2 1 3”,超过6个以后,最左端的丢掉。

相关文档
最新文档