嵌入式实验二_实验嵌入式二

2020-02-28 其他范文 下载本文

嵌入式实验二由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“实验嵌入式二”。

1.实验二:利用中断实现 OLED 动态显示实验

1.1 实验名称

1.2 实验目的(1)深入学习、理解、掌握 OLED 字符显示方法

(2)深入学习、理解、掌握 OLED 图形显示方法(3)学习、理解、掌握中断使用方法

1.3 实验过程与分析

1.3.1 回答实验报告中的实验问题

(1)ISR是什么?简述一下中断的作用和使用方法

答:ISR是中断服务程序。作用是通过处理器执行事先编好的某个特定的程序。使用方法就是在main中写一个中断程序,然后在startup.s中进行注册。

(2)嵌入式系统中有哪些应用有定时性循环处理的要求?举几个例子

答:在各种网络的应用中,设计的一些部件,如计数器,时钟等。

(3)定时时间间隔如何修改?

(4)选作内容5-8的编程思路是什么?若做的话应该怎样实现? 答:编程思路:先画直线和竖线,组成一个正方形,将各个参数填写到函数答:通过改变SysTickPeriodSet(SysCtlClockGet()/100)后面的100这个参数。

RIT128x96x4ImageDraw(buf,,);

第6个选作:判断画的原点x,原点y,和画原点x+的长,画原点y+画宽的值要在0-128和0-96。

第7个选作:把RIT128x96x4StringDraw(“hello”,,);就是把画的灰度定义为一个变量x。最后就会出现由不同的亮度而形成的波浪。

第8个就是利用随机函数产生画的原点,随机的在屏幕上进行显示。

(5)拖影现象如何解决?计数值显示为什么没有拖影? 答:在程序结束后执行清屏语句:计数显示是每次重新赋值,所以不会出现拖影。

1.3.2 实验中遇到的问题及解决方法

(1)字符和下方横线,从左至右移动,无法同时到达

通过最大宽度128除以阀值,调整了字符和横线的速度,解决(2)附加字符循环移动,移动到一半,不见了

查看函数排错,得以解决

(3)基本问题做完时,字符显示完整,添加附加任务后,字符显示不全

未解决...1.4实验结果总结 实验结果(附照片)

总结(自己的收获)1.5心得体会

#include #include #include “rit128x96x4.h” int Event = 0;unsigned char buf1[] = {

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff };unsigned char buf2[] = {

0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00 };unsigned char buf3[] = {

0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff };unsigned char buf4[] = {

0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff };unsigned char buf5[] = {

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff };unsigned char buf6[] = {

0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff };unsigned char buf7[] = {

0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00, 0xff,0xff };unsigned char buf8[] = {

0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00, 0xff,0xff };

unsigned char r1[] = {

0xff, 0xff };unsigned char r2[] = {

0xf0, 0x0f };unsigned char r3[] = {

0xf0, 0x0f };unsigned char r4[] = {

0xff, 0xff };

unsigned char c1[] = {

0x0f, 0xf0 };unsigned char c2[] = {

0xf0, 0x0f };unsigned char c3[] = {

0xf0, 0x0f };unsigned char c4[] = {

0x0f, 0xf0 };void SysTick_Handler(void){ Event = 1;} void printX(){ }

int main(){

int count = 0,i,Light=0,x=0,z=0,y=0,zz=0,yy=0,c=0,cc=0,a=0,aa=0;unsigned char buf[5];

//存(数字)字符串

unsigned char name[20] = “”;unsigned char number[20] = “”;SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN SYSCTL_XTAL_8MHZ);RIT128x96x4Init(1000000);RIT128x96x4Clear();

SysTickPeriodSet(SysCtlClockGet()/ 10);

//调频率

SysTickEnable();SysTickIntEnable();while(1){

if(Event){

RIT128x96x4Clear();

Event = 0;

sprintf(buf,“%3i”,count);

//通过sprintf将数字转换为字符

| if(Light >= 15)

{

Light=0;

} else {

Light++;} RIT128x96x4StringDraw(name, 50, 55, 15-Light);RIT128x96x4StringDraw(number, 50, 65, Light);sprintf(buf,“%d”,count);;RIT128x96x4StringDraw(buf, 50, 75, 12);

count++;if(count>=200){

count=0;} RIT128x96x4ImageDraw(buf2,(int)(x*0.50), 5, 20, 1);RIT128x96x4ImageDraw(buf3,(int)(x*0.50), 7, 20, 1);RIT128x96x4ImageDraw(buf4,(int)(x*0.50), 9, 20, 1);RIT128x96x4ImageDraw(buf5,(int)(x*0.50), 11,20, 1);RIT128x96x4ImageDraw(buf6,(int)(x*0.50), 13, 20, 1);RIT128x96x4ImageDraw(buf7,(int)(x*0.50), 15, 20, 1);RIT128x96x4ImageDraw(buf8,(int)(x*0.50), 17, 20, 1);RIT128x96x4ImageDraw(buf1, 0, 20,(int)(x*0.60), 1);RIT128x96x4ImageDraw(c1,(int)(60+c*1.20),(int)(5+a*0.85), 4, 1);RIT128x96x4ImageDraw(c2,(int)(60+c*1.20),(int)(7+a*0.85), 4, 1);RIT128x96x4ImageDraw(c3,(int)(60+c*1.20),(int)(9+a*0.85), 4, 1);RIT128x96x4ImageDraw(c4,(int)(60+c*1.20),(int)(11+a*0.85), 4, 1);RIT128x96x4ImageDraw(r1,(int)(z*0.30),(int)(50+y*0.20), 4, 1);RIT128x96x4ImageDraw(r2,(int)(z*0.30),(int)(52+y*0.20), 4, 1);RIT128x96x4ImageDraw(r3,(int)(z*0.30),(int)(54+y*0.20), 4, 1);RIT128x96x4ImageDraw(r4,(int)(z*0.30),(int)(56+y*0.20), 4, 1);if(x=0)

//直线 {

x++;} if(x>=200){

x=0;} if(c=-50)

//圆形循环 {

if(cc==0)c++;

if(cc==1)c--;} if(c>=50){

cc=1;} if(c

cc=0;} if(a=0){

if(aa==0)a++;

if(aa==1)a--;} if(a>=100){

aa=1;} if(x

aa=0;} if(y=0){

if(yy==0)y++;

if(yy==1)y--;} if(y>=200){

yy=1;} if(y

yy=0;} if(z=0){

if(zz==0)z++;

if(zz==1)z--;} if(z>=400){

zz=1;} if(z

//矩形反弹

}

zz=0;

} } } return 0;

《嵌入式实验二.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
嵌入式实验二
点击下载文档
相关专题 实验嵌入式二 嵌入式 实验嵌入式二 嵌入式
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文