嵌入式实验一人机交互接口显示实验.docx
《嵌入式实验一人机交互接口显示实验.docx》由会员分享,可在线阅读,更多相关《嵌入式实验一人机交互接口显示实验.docx(24页珍藏版)》请在冰豆网上搜索。
嵌入式实验一人机交互接口显示实验
实验报告
课程名称嵌入式系统设计
实验仪器清华同方辰源嵌入式系统实验箱
实验名称实验一:
人机交互接口-显示实验
系别计算机学院
专业计算机科学与技术
班级/学号
学生姓名
实验日期
成绩
指导教师
实验一:
人机交互接口-显示实验
1、实验问题回答
(1)介绍以下四个函数的作用、参数涵义及使用方法。
RIT128x96x4StringDraw
RIT128x96x4ImageDraw
RIT128x96x4Clear
RIT128x96x4Init
答:
函数名称
作用
参数含义
使用方法
RIT128x96x4StringDraw
显示一个字符串在OLED显示屏上。
pcStr:
需要显示的字符串
ulX:
显示字符串的横坐标
ulY:
显示字符串的纵坐标
ucLevel:
灰度级
直接调用,参数pcStr为所需显示的字符串。
RIT128x96x4ImageDraw
显示一个位图图形在OLED显示屏上。
pucImage:
所需显示图像的数据
ulX:
显示图像的横坐标
ulY:
显示图像的纵坐标
ulWidth:
明确规定图像所需列数
ulHeight;明确规定图像所需行数
在buf里为所需显示图形赋值
以行为单位显示每个buf里的内容来得到所需图像。
RIT128x96x4Clear
清除OLED屏上的内容。
无参
直接调用。
RIT128x96x4Init
初始化OLED显示
ulFrequency:
指定使用SSI的时钟频率。
直接调用
(2)实验平台OLED显示屏的最大宽度和高度,超出范围会怎么样
答:
最大宽度128,最大高度96,超出范围的部分会无法显示。
(3)比较KeiluVision4上开发嵌入式C程序与VisualC++中开发C程序的异同。
答:
同:
都是生成CPU可执行的二进制文件。
异:
VC生成的程序可在PC机上执行,而Keil上的程序能在pc机上编译但不能执行。
VC一般不考虑内存、字长和ROM的大小等因素,而keil则需要考虑。
(4)描述一下你的项目从开始创建到下载的整个流程
答:
1、新建一个project
2、选择CPU,LuminaryLM3S8962,新建一个Group,加载库文件DriverLib.lib。
3、项目相关配置项修改,修改Target选项单,UserMircoLIB前勾选,修改Output选项单,CreateHEXFile前勾选,修改Debug选项单,选择右侧上栏的Use,选择ULINKCortexDebugger。
加载c程序开发必要的程序,rit128x96x4.h,rit128x96x4.c,startup.s。
4、创建主函数,编写主函数,并调试错误
5、编译、连接,生成可执行程序文件
6、硬件连接
7、联调
(5)每个像素是怎么表示的?
答:
0x00表示最暗,0xff表示最亮。
(6)画线时,为什么要定义数组?
答:
要用数组表示每一行像素的亮暗。
(7)如何使显示的字符变亮?
变暗?
答:
通过改变字符显示函数的最后一个参数灰度级来改变字符的亮度值。
(8)如何使显示的图形变亮?
变暗?
答:
通过改变数组buf的值来使图形变亮变暗,0最暗,f最亮。
(9)如何使显示的图形变宽?
变窄?
变高?
变矮?
答:
改变定义的数组buf中元素的个数同时改变图形显示函数的宽度值来使图形变宽变窄。
改变数组的个数或者改变纵坐标间的距离来使图形变高变矮。
(10)汉字如何显示?
答:
通过图形进行汉字的拼接。
实验问题补充:
(1)本例中,为什么每个buf要设置2*5=20个元素?
答:
因为5*7的比例比较美观且显示的比较清晰。
(2)为什么要画七行线显示字符?
答:
5*7的比例显示字符比较美观。
(3)什么时候赋值为0xff,什么时候赋值为0x00?
答:
0xff表示最亮,0x00表示最暗。
需要显示出来的部分赋值0xff,不需要显示的部分赋值0x00.
(4)RIT128x96x4ImageDraw(buf2,80,60,20,1);中第四个参数为什么是20?
答:
第四个参数表示图形的宽度,因为buf里有20个像素点,所以是20。
2、实验目的和效果
实验目的:
(1)初步学习、理解、掌握OLED字符显示方法
(2)初步学习、理解、掌握OLED图形显示方法
实验截图:
3、实验内容和步骤
实验思路:
首先对OLED进行初始化和清屏操作。
输出学号、日期、姓名拼音等可直接调用RIT128x96x4StringDraw
进行输出,需计算好坐标。
输出字符图形汉字等需要事先设计好,然后在buf里设置好每行亮暗的变化,然后使用RIT128x96x4ImageDraw一行一行的画出图形。
输出最小字符需要缩小buf中元素的个数(六个元素比较合适),RIT128x96x4ImageDraw中纵坐标之间的距离也减小为一。
实验步骤:
1、新建一个project
2、选择CPU,LuminaryLM3S8962,新建一个Group,加载库文件DriverLib.lib。
3、项目相关配置项修改,修改Target选项单,UserMircoLIB前勾选,修改Output选项单,CreateHEXFile前勾选,修改Debug选项单,选择右侧上栏的Use,选择ULINKCortexDebugger。
加载c程序开发必要的程序,rit128x96x4.h,rit128x96x4.c,startup.s。
4、创建主函数,编写主函数,并调试错误
5、编译、连接,生成可执行程序文件
6、硬件连接
7、联调
实验代码:
#include
#include
#include"rit128x96x4.h"
unsignedcharbuf0[]=
{
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
};
unsignedcharbuf1[]=
{
0xff,0xff,
0xff
};
unsignedcharbuf2[]=
{
0xff,0x00,
0x00
};
unsignedcharbuf3[]=
{
0xff,0x00,
0x00
};
unsignedcharbuf4[]=
{
0xff,0xff,
0x00
};
unsignedcharbuf5[]=
{
0xff,0x00,
0x00
};unsignedcharbuf6[]=
{
0xff,0x00,
0x00
};
unsignedcharbuf7[]=
{
0xff,0x00,
0x00
};
unsignedcharbuf8[]=//D?
D?
{
0x00,0x00,
0xff,0xff,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0xff,0xff,
0x00,0x00
};
unsignedcharbuf9[]=
{
0xff,0xff,
0xff,0xff,
0xff,0xff,
0x00,0x00,
0xff,0xff,
0xff,0xff,
0xff,0xff
};
unsignedcharbuf10[]=
{
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff
};
unsignedcharbuf11[]=
{
0x00,0x00,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0x00,0x00
};
unsignedcharbuf12[]=
{
0x00,0x00,
0x00,0x00,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0x00,0x00,
0x00,0x00
};
unsignedcharbuf13[]=
{
0x00,0x00,
0x00,0x00,
0x00,0x00,
0xff,0xff,
0x00,0x00,
0x00,0x00,
0x00,0x00
};
unsignedcharbuf14[]=//D?
?
?
{
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0x00,0x00,
0x00,0x00
};
unsignedcharbuf15[]=
{
0x00,0x00,
0x00,0x00,
0xff,0xff,
0xff,0xff,
0x00,0x00,
0x00,0x00,
0xff,0xff,
0xff,0xff,
0x00,0x00,
0x00,0x00
};
unsignedcharbuf16[]=
{
0x00,0x00,
0x00,0x00,
0xff,0xff,
0xff,0xff,
0x00,0x00,
0x00,0x00,
0xff,0xff,
0xff,0xff,
0x00,0x00,
0x00,0x00
};
unsignedcharbuf17[]=
{
0x00,0x00,
0x00,0x00,
0xff,0xff,
0xff,0xff,
0x00,0x00,
0x00,0x00,
0xff,0xff,
0xff,0xff,
0x00,0x00,
0x00,0x00
};
unsignedcharbuf18[]=
{
0x00,0x00,
0x00,0x00,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff
};
unsignedcharbuf19[]=
{
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0xff,0xff,
0xff,0xff
};
unsignedcharbuf20[]=
{
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff
};
unsignedcharbuf21[]=
{
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff
};
unsignedcharbuf22[]=//êú?
?
{
0xff,0xff,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
};
unsignedcharbuf23[]=
{
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff
};
unsignedcharbuf24[]=
{
0xff,0xff,
0xff,0xff,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00
};
unsignedcharbuf25[]=
{
0xff,0xff,
0xff,0xff,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00
};
unsignedcharbuf26[]=
{
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0xff,0xff,
0x00,0x00,
0x00,0x00
};
unsignedcharbuf27[]=
{
0xff,0xff,
0xff,0xff,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00
};
unsignedcharbuf28[]=
{
0xff,0xff,
0xff,0xff,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00
};
unsignedcharbuf29[]=
{
0xff,0xff,
0xff,0xff,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00,
0x00,0x00
};
unsignedcharbuf30[]=
{
0xff,
0x00,0xff
};
unsignedcharbuf31[]=
{
0xff,
0x00,0xff
};
unsignedcharbuf32[]=
{
0xff,
0x00,0xff
};
unsignedcharbuf33[]=
{
0xff,
0xff,0xff
};
unsignedcharbuf34[]=
{
0xff,
0x00,0xff
};
unsignedcharbuf35[]=
{
0xff,
0x00,0xff
};
unsignedcharbuf36[]=
{
0xff,
0x00,0xff
};
unsignedcharl1[]={
0x0f,0xff,0xf0
};
unsignedcharl2[]={
0x0f,0x00,0x00
};
unsignedcharl3[]={
0x00,0xf0,0x00
};
unsignedcharl4[]={
0x0f,0xff,0xf0
};
unsignedcharl5[]={
0x00,0x00,0xf0
};
unsignedcharl6[]={
0x0f,0x00,0xf0
};
unsignedcharl7[]={
0x0f,0xff,0xf0
};
/*SettheclockingtorunfromPLLat50MHz*/
intmain(){SysCtlClockSet(SYSCTL_SYSDIV_4|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_8MHZ);
RIT128x96x4Init(1000000);
RIT128x96x4Clear();
while
(1){
/*RIT128x96x4StringDraw("20140111111",0,6,15);
RIT128x96x4StringDraw("admin",0,12,15);
RIT128x96x4StringDraw("work1",0,18,15);
RIT128x96x4StringDraw("2016-9-21",50,18,15);
RIT128x96x4ImageDraw(buf0,10,24,20,1);//oá?
?
RIT128x96x4ImageDraw(buf22,3,36,2,5);//êú?
?
?
RIT128x96x4ImageDraw(buf22,3,37,2,5);
RIT128x96x4ImageDraw(buf22,3,38,2,5);
RIT128x96x4ImageDraw(buf22,3,39,2,5);
RIT128x96x4ImageDraw(buf22,3,40,2,5);
RIT128x96x4ImageDraw(buf22,3,41,2,5);
RIT128x96x4ImageDraw(buf22,3,42,2,5);
RIT128x96x4ImageDraw(buf22,3,43,2,5);
RIT128x96x4ImageDraw(buf22,3,44,2,5);
RIT128x96x4ImageDraw(buf22,3,45,2,5);
RIT128x96x4ImageDraw(buf22,3,46,2,5);
RIT128x96x4ImageDraw(buf1,10,30,6,1);//bigF
RIT128x96x4ImageDraw(buf2,10,33,6,1);
RIT128x96x4ImageDraw(buf3,10,36,6,1);
RIT128x96x4ImageDraw(buf4,10,39,6,1);
RIT128x96x4ImageDraw(buf5,10,42,6,1);
RIT128x96x4ImageDraw(buf6,10,45,6,1);
RIT128x96x4ImageDraw(buf7,10,48,6,1);
RIT128x96x4ImageDraw(buf23,65,30,40,2);//middleF
RIT128x96x4ImageDraw(buf24,65,35,40,2);
RIT128x96x4ImageDraw(buf25,65,40,40,2);
RIT128x96x4ImageDraw(buf26,65,45,40,2);
RIT128x96x4ImageDraw(buf27,65,50,40,2);
RIT128x96x4ImageDraw(buf28,65,55,40,2);
RIT128x96x4ImageDraw(buf29,65,60,40,2);
RIT128x96x4ImageDraw(buf1,10,30,20,2);//bigF
RIT128x96x4ImageDraw(buf2,10,35,20,2);
RIT128x96x4ImageDraw(buf3,10,40,20,2);
RIT128x96x4ImageDraw(buf4,10,45,20,2);
RIT128x96x4ImageDraw(buf5,10,50,20,2);
RIT128x96x4ImageDraw(buf6,10,55,20,2);
RIT128x96x4ImageDraw(buf7,10,60,20,2);*/
/*RIT128x96x4ImageDraw(buf8,0,65,28,1);//heart
RIT128x96x4ImageDraw(buf9,0,70,28,1);
RIT128x96x4ImageDraw(buf10,0,75,28,1);
RIT128x96x4ImageDraw(buf11,0,80,28,1);
RIT128x96x4ImageDraw(buf12,0,85,28,1);
RIT128x96x4ImageDraw(buf13,0,90,28,1);
RIT128x96x4ImageDraw(buf14,0,5,40,1);//ma
RIT128x96x4ImageDraw(buf15,0,10,40,1);
RIT128x96x4ImageDraw(buf16,0,15,40,1);
RIT128x96x4ImageDraw(buf17,0,20,40,1);
RIT128x96x4ImageDraw(buf18,0,25,40,1);
RIT128x96x4ImageDraw(buf19,0,30,40,1);
RIT128x96x4ImageDraw(buf20,0,35,40,1);
RIT128x96x4ImageDraw(buf21,0,40,40,1);
/RIT128x96x4StringDraw("h",0,12,15);
RIT128x96x4ImageDraw(b