|
楼主 |
发表于 2011-11-2 12:59:28
|
显示全部楼层
完成SD卡和TFT屏的底层程序,等不及了,先刷几张图看看先
(原文件名:Snapshot_20111018_11.jpg)
(原文件名:Snapshot_20111018.jpg)
(原文件名:Snapshot_20111018_5.jpg)
(原文件名:Snapshot_20111018_9.jpg)
(原文件名:Snapshot_20111018_10.jpg)
WAV播放和图片浏览视频及目前所有源码在30楼.
按键测试~~
按键测试截图 (原文件名:Snapshot_20111103_1.jpg)
按键测试视频ourdev_691282QA2Y0T.avi视频文件大小:15.62M) (原文件名:keytest.avi)
目前按键测试有点小问题,那就是left键和A键发生串键,A键弹起的瞬间left键会有动作(在上面测试视频可以看到)。键盘是用74LS165弄的,left键对应下图key1,A键对应下图key8.估计是软件问题。大家帮分析下~~
按键部分的电路图 (原文件名:key.jpg)
这是按键部分的代码
#include"KEY_HC165.h"
#include"reg52.h"
sbit KEY_PL=P1^4;
sbit KEY_CLK=P1^5;
sbit KEY_OUT=P1^6;
uchar KeyVal;
void KeyInit(void)
{
TMOD=0x01; // T0工作于模式1:十六位定时器
TH0=0; //计数器赋值
TL0=0;
ET0=1; //T0中断允许
EA=1; //总中断允许
TR0=1; //开定时器
KEY_CLK=1;
KEY_OUT=1;
KEY_PL=1;
KeyVal=0;
}
void delaya(void)
{
xdata uint i=30;
while(i--) ;
}
void time0_interserve(void) interrupt 1 using 1 //T0的中断编号为1,使用第一组寄存器
{
xdata uchar i;
TR0=0; //关定时器
KEY_PL=0; //置数
delaya();
KEY_PL=1;
delaya();
for(i=0;i<7;i++)
{
if(KEY_OUT) KeyVal=KeyVal|0x01;
KeyVal=KeyVal<<1;
KEY_CLK=0;
delaya();
KEY_CLK=1;
delaya();
}
if(KEY_OUT) KeyVal=0x01;
delaya();
TH0=0;
TL0=0;
TR0=1; //开定时器
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++
main函数里面的按键测试部分
while(1)
{ Dis_String(0,0," KEY testing....",0x0ff0,0x0000);
Dis_String(b,c-16," * ",i,0x0000);
Dis_String(b,c, " **0** ",i,0x0000);
Dis_String(b,c+16," * ",i,0x0000);
if(KeyVal&0x80) {Dis_String(68,30,"1",0x01f80,0x0000); b--;}
else Dis_String(68,30,"0",0x0ff00,0x0000);
if(KeyVal&0x40) {Dis_String(84,30,"2",0x01f80,0x0000); c--;}
else Dis_String(84,30,"0",0x0ff00,0x0000);
if(KeyVal&0x20) {Dis_String(100,30,"3",0x01f80,0x0000); b++;}
else Dis_String(100,30,"0",0x0ff00,0x0000);
if(KeyVal&0x10) {Dis_String(116,30,"4",0x01f80,0x0000); c++;}
else Dis_String(116,30,"0",0x0ff00,0x0000);
if(KeyVal&0x08) {Dis_String(132,30,"5",i,0x0000); i=0xf800;}
else Dis_String(132,30,"0",0x0ff00,0x0000);
if(KeyVal&0x04) {Dis_String(148,30,"6",i,0x0000); i=0x1f80;}
else Dis_String(148,30,"0",0x0ff00,0x0000);
if(KeyVal&0x02) {Dis_String(164,30,"7",i,0x0000); i=0xff60;}
else Dis_String(164,30,"0",0x0ff00,0x0000);
if(KeyVal&0x01) {Dis_String(180,30,"8",i,0x0000); i=0xffff;}
else Dis_String(180,30,"0",0x0ff00,0x0000);
if(c==0) c=0;
if(c>240) c=240;
if(b==0) b=0;
if(b>320) b=320;
//if(c==0) b=1;
//if(c==240) b=0;
//if(b==1) c++;
//else c--;
} |
|