嵌入式系统概论综合设计报告书Word文件下载.docx
- 文档编号:21915905
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:24
- 大小:415.14KB
嵌入式系统概论综合设计报告书Word文件下载.docx
《嵌入式系统概论综合设计报告书Word文件下载.docx》由会员分享,可在线阅读,更多相关《嵌入式系统概论综合设计报告书Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
其原理图如图3:
(图3)
键盘扫描程序的流程图如图4:
(图4)
(图5)
(图6)
如图5为键盘的真实布线图,如图6只是将线拉直,以便您更好的理解程序扫描所代表的含义,我们说,若要让程序确定您所按下的键是哪个,分别是要在扫描四列四行后,然后再通过扫描所得数据来判断具体是哪个键。
程序是先扫描第0列,依次第1列,第2列,第3列。
在扫描第0列的过程中,再先后扫描第0行,第1行,第2行,第3行,第4行,第5行。
若在扫描完第0列后,没有扫描到任何键按下。
则再扫描第1列,在这过程中,再先后扫描第0行,第1行,第2行,第3行,第4行,第5行。
若在扫描完第1列后,没有扫描到任何键按下。
则再扫描第2列,在这过程中,再先后扫描第0行,第1行,第2行,第3行,第4行,第5行。
若在扫描完第2列后,没有扫描到任何键按下。
则再扫描第3列,在这过程中,再先后扫描第0行,第1行,第2行,第3行,第4行,第5行。
在扫描过程中,只要在符合某种条件下,则会停止后续列的扫描操作,而退出程序。
通过上面二维表19~1判断,将定您现在按下数字9键,则此时对应In1位为0,且Out2位为0。
若您按下数字2键,则此时对应的In2位为0,且Out4位为0。
其它按键的判断结果是以相同的方法判断。
In3,In2,In1,In0的值是通过outbyte=值,outb(outbyte,ioremap_addr)来指定值。
Out5,Out4,Out3,Out2,Out1,Out0的值是通过函数inbyte=inb(ioremap_addr)来获取。
例如:
outbyte=0xfe;
outb(outbyte,ioremap_addr);
则:
。
In3In2In1In0
11111110
此时:
通过inbyte=inb(ioremap_addr)获取值,若读出的值为inbyte=0xef,则:
Out5Out4Out3Out2Out1Out0
11101111
很显然,这时有In0=0,Out4=0,所以查表,此时,系统判断应该是Enter键被按下。
2、设计过程:
根据对贪吃蛇游戏结构和步骤的分析设计出相应的贪吃蛇流程,设计在目标板上的8*8LED点阵上显示贪吃蛇游戏的主要过程包括:
(1)游戏开始(有3、2、1倒计时的显示);
(2)随机出现食物,定点出现初始贪吃蛇;
(3)贪吃蛇移动;
(4)贪吃蛇吃食物;
(5)暂停游戏;
(6)恢复游戏;
(7)贪吃蛇碰边界游戏结束重新开始;
(8)数码管显示分数。
三、设计方案
1、贪吃蛇游戏源程序如下:
#include<
stdio.h>
string.h>
stdlib.h>
//#include<
pthread.h>
///开线程
fcntl.h>
//open()close()
unistd.h>
//read()write()
#defineDEVICE_NAME"
/dev/led_ary_ctl"
math.h>
#defineDEVICE_NAME1"
/dev/keypad"
#defineDEVICE_NAME_SERIAL_LED"
/dev/serial_led"
unsignedshortpo[8]={1,2,4,8,16,32,64,128};
//pthread_ttid;
intfd_led,fd_key;
intscore;
unsignedshortout[64];
//表示8*8点阵
shortgetx(shortz)
{
returnz%8;
}
shortgetz(shortx,shorty)
returnx+(y<
<
3);
//x+y*8
unsignedshortck;
//ck置为3时,暂停游戏;
如果蛇正常的移动了一步,它的值置为0;
若蛇死了,它的值置为1;
若蛇吃了某个食物,它的值置为2
unsignedshortfx;
//行进方向0123上下左右
unsignedshortfod;
//food
shortscd;
//蛇长度
typedefstructsn
shortwzz;
//位置z坐标
structsn*nxt;
//下一个位置
}Snk;
Snk*stz;
//蛇头坐标
intgetrandom(intmax)//取得在[0,max]的随机整数
intnum=-1;
intran;
while(num<
0)
num=rand();
ran=num%(max+1);
//取余得随机数法
returnran;
}//01
voidledouta(shortx,shorty)//x表示行号y表示该行亮的灯的编码,例子:
x=0y=3则第一行第0,1个亮,x-[0,7],y[0-255]
//intfd;
//intret;
unsignedcharbuf[2];
buf[0]=(y);
buf[1]=~(1<
x);
return;
voidledout()
shorti,j;
shortlia;
for(i=0;
i<
8;
i++)
{
lia=0;
for(j=0;
j<
j++)
{
if(out[getz(j,i)]==1)
{
lia+=po[j];
}
}
ledouta(i,lia);
}
voidserialled(intcount)
intfd;
intret;
//0123456789
intbuf[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
intdata[2];
fd=open(DEVICE_NAME_SERIAL_LED,O_RDWR);
if(fd==-1)
printf("
opendevice%serror\n"
DEVICE_NAME_SERIAL_LED);
else
{
if(count>
=10)
data[0]=0x00;
ret=write(fd,data,1);
data[0]=buf[count/10];
data[0]=buf[count%10];
else
{if(count<
0){
printf("
=================================="
);
data[0]=0x40;
data[0]=buf[0-count];
else{
data[0]=0x00;
ret=write(fd,data,1);
data[0]=buf[count];
ret=close(fd);
voidin_it()//初始化全局变量
shorti;
64;
out[i]=0;
//ck=1;
ck=0;
stz=(Snk*)malloc(sizeof(Snk));
stz->
nxt=NULL;
wzz=0;
voidloadsnk()//per显示蛇
Snk*tmp;
tmp=stz;
while(tmp->
nxt!
=NULL)
out[tmp->
wzz]=1;
tmp=tmp->
nxt;
voidnewfood()//per显示食物,也可以理解为产生食物
shortran;
ran=46;
/////////////////////////////////
while
(1)
if(out[ran]!
=1)
out[ran]=1;
fod=ran;
return;
ran=getrandom(63);
voiddspl()//display
loadsnk();
voidinitGame()//初始化游戏
in_it();
score=0;
fx=3;
scd=3;
wzz=getz(2,5);
//初始化蛇头位置;
nxt=(Snk*)malloc(sizeof(Snk));
nxt->
wzz=getz(1,5);
wzz=getz(0,5);
newfood();
serialled(score);
voiderro()
---ERROR---\n"
voideat()
---EATFOOD---\n"
scd++;
score++;
voiddie()
---GAMEOVER---\n"
stz=stz->
while(stz->
free(tmp);
tmp=stz;
stz=stz->
free(tmp);
free(stz);
shortmove()//正常返回0,死了返回1,吃了返回2
Snk*nst,*tmp;
nst=(Snk*)malloc(sizeof(Snk));
nst->
nxt=stz;
switch(fx)//方向
case0:
nst->
wzz=stz->
wzz-8;
if(nst->
wzz<
{die();
return1;
break;
case1:
{nst->
wzz+8;
if(nst->
wzz>
63){die();
}break;
case2:
wzz-1;
if((nst->
wzz)%8==7||nst->
0){die();
case3:
wzz+1;
wzz)%8==0){die();
default:
erro();
stz=nst;
if(stz->
wzz==fod)//吃了
eat();
return2;
if(out[stz->
wzz]==1)//吃了自己
die();
return1;
nst=stz->
while(nst->
tmp=nst;
nst=nst->
out[tmp->
wzz]=0;
free(tmp->
nxt);
tmp->
return0;
voidto_up()
fx=0;
voidto_down()
fx=1;
voidto_lift()
fx=2;
voidto_right()
voidreset()
initGame();
voidds3()//显示3
out[0]=0;
out[1]=1;
out[2]=1;
out[3]=1;
out[4]=1;
out[5]=1;
out[6]=1;
out[7]=0;
out[8]=0;
out[9]=0;
out[10]=0;
out[11]=0;
out[12]=0;
out[13]=0;
out[14]=1;
out[15]=0;
out[16]=0;
out[17]=0;
out[18]=0;
out[19]=0;
out[20]=0;
out[21]=0;
out[22]=1;
out[23]=0;
out[24]=0;
out[25]=1;
out[26]=1;
out[27]=1;
out[28]=1;
out[29]=1;
out[30]=1;
out[31]=0;
out[32]=0;
out[33]=0;
out[34]=0;
out[35]=0;
out[36]=0;
out[37]=0;
out[38]=1;
out[39]=0;
out[40]=0;
out[41]=0;
out[42]=0;
out[43]=0;
out[44]=0;
out[45]=0;
out[46]=1;
out[47]=0;
out[48]=0;
out[49]=0;
out[50]=0;
out[51]=0;
out[52]=0;
out[53]=0;
out[54]=1;
out[55]=0;
out[56]=0;
out[57]=1;
out[58]=1;
out[59]=1;
out[60]=1;
out[61]=1;
out[62]=1;
out[63]=0;
voidds2()
out[33]=1;
out[38]=0;
out[41]=1;
out[46]=0;
out[49]=1;
out[54]=0;
voidds1()
out[1]=0;
out[2]=0;
out[3]=0;
out[5]=0;
out[6]=0;
out[11]=1;
out[12]=1;
out[14]=0;
out[20]=1;
out[22]=0;
out[25]=0;
out[26]=0;
out[27]=0;
out[29]=0;
out[30]=0;
out[36]=1;
out[44]=1;
out[52]=1;
out[57]=0;
out[58]=0;
out[62]=0;
voidrepat_dis(inttimes)
inti;
for(i=0;
times;
ledout();
voiddisplay_321()
ds3();
repat_dis(10);
ds2();
ds1();
voidpause1()
ck=3;
voidresume1()
intmain(void)
inti=4;
intret_led,ret_key;
unsignedcharbuf[2];
doublex;
charpre_scancode=0xff;
//fd=open(DEVICE_NAME1,O_RDWR);
fd_led=open(DEVICE_NAME,O_RDWR);
fd_key=open(DEVICE_NAME1,O_RDWR);
if(fd_key==-1)
printf("
DEVICE_NAME1);
elseif(fd_led==-1)
DEVICE_NAME);
else
buf[0]=0x22;
reset();
dspl();
while
(1)
{
if(ck==0||ck==2)
if(i==4)
{
i=0;
ck=move();
}
i++;
//usleep(100000);
read(fd_key,buf,1);
if(buf[0]!
=pre_scancode)
if(buf[0]!
=0xff)
{
switch(buf[0])
{
case0x08:
to_up();
break;
case0x04:
to_lift();
case0x05:
to_down();
case0x06:
to_right();
break
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 概论 综合 设计 报告书
![提示](https://static.bdocx.com/images/bang_tan.gif)