基于12864液晶显示图片(6)

2019-04-10 10:28

武汉理工大学《能力拓展训练》说明书

lcd_wcmd(0x36); //写完数据,开图形显? while(flag==0) if(flag==6)flag=2;//图像停止 if(flag!=2)return; delay1(1000); clr_screen(); bmp33-=16*line; //每次移动8行--16*line字节 } }

/********************************************************* * 图像左移函数 */ void picture_mov_Left(uchar *bmp1,uchar *bmp2) { uchar i,j,m=0,n; uchar *bmp11=bmp1,*bmp22=bmp2; for(n=0;n<16;n++) { lcd_wcmd(0x34); //写数据时,关闭图形显示 bmp1=bmp11+m; //保存图片地址 bmp2=bmp22; for(i=0;i<32;i++) //写上半屏 { lcd_wcmd(0x80+i); //先写入水平坐标值 lcd_wcmd(0x80); //写入垂直坐标值 for(j=m;j<16;j++) //再写入两个8位元的数据 lcd_wdat(*bmp1++); bmp1+=m; for(j=0;j

26

武汉理工大学《能力拓展训练》说明书

lcd_wcmd(0x36); //写完数据,开图形显? while(flag==0) if(flag==6)flag=3;//图像停止 if(flag!=3)return; delay1(1000); clr_screen(); //清屏 m++; } }

/********************************************************* * 图像右移函数 */ void picture_mov_Right(uchar *bmp1,uchar *bmp2) { uchar i,j,m=0,n; uchar *bmp11=bmp1,*bmp22=bmp2; for(n=0;n<16;n++) { lcd_wcmd(0x34); //写数据时,关闭图形显示 bmp1=bmp11+16-m; //保存图片地址 bmp2=bmp22; for(i=0;i<32;i++) //写上半屏 { lcd_wcmd(0x80+i); //先写入水平坐标值 lcd_wcmd(0x80); //写入垂直坐标值 for(j=16-m;j<16;j++) lcd_wdat(*bmp1++); bmp1+=(16-m); for(j=0;j<16-m;j++) //再写入两个8位元的数据 lcd_wdat(*bmp2++); bmp2+=m; delay1(1); } for(i=0;i<32;i++) //写下半屏 { lcd_wcmd(0x80+i); //先写入水平坐标值 lcd_wcmd(0x88); //写入垂直坐标值 for(j=16-m;j<16;j++) lcd_wdat(*bmp1++); bmp1+=(16-m); for(j=0;j<16-m;j++) //再写入两个8位元的数据 lcd_wdat(*bmp2++); bmp2+=m; delay1(1); }

27

武汉理工大学《能力拓展训练》说明书

lcd_wcmd(0x36); //写完数据,开图形显? while(flag==0) if(flag==6)flag=4;//图像停止 if(flag!=4)return; delay1(1000); clr_screen(); //清屏 m++; } }

void init_display() { uchar i; lcd_init(); lcd_pos(1,0); for(i=0;i<16;i++) { lcd_wdat(DIS1[i]); delay1(20); } lcd_pos(2,0); for(i=0;i<16;i++) { lcd_wdat(DIS2[i]); delay1(20); } lcd_pos(3,0); for(i=0;i<16;i++) { lcd_wdat(DIS3[i]); delay1(20); } lcd_pos(4,0); for(i=0;i<16;i++) { lcd_wdat(DIS4[i]); delay1(20); } delay1(1000); lcdflag(time); photodisplay(Photo1); delay1(1000); photodisplay(Photo2);

//初始化LCD //设置显示位置为第一行 //设置显示位置为第二行 //设置显示位置为第三行 //设置显示位置为第四行 //闪烁函数time为闪烁时间 //显示图片1 //显示图片2

28

武汉理工大学《能力拓展训练》说明书

}

delay1(1000);

5、结果分析

5.1仿真电路图

仿真电路图如图5.1.1所示。

C130pFRP1U1X119XTAL1CRYSTAL18XTAL2P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.0P2.1P2.2P2.3P2.4P2.5P2.61234567891KLCD2AMPIRE128X64+5vC230pFRV1VO9RSTC320uf293031PSENALEEACS1CS2GNDVCCV0RSR/WEDB0DB1DB2DB3DB4DB5DB6DB7RST-Vout1kR180012345678P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7AT89C52P2.0P2.1V+VOP2.2P2.3P2.4P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.73U2:A74092UpP3.0DownP3.11VO123456789101112131415161718 5.1.1 仿真电路图

5.2 运行结果及分析

硬件电路运行效果图如下所示:

图5.3.1 图像上移图5.3.2图像下移

29

武汉理工大学《能力拓展训练》说明书

图5.3.3图像左移图5.3.4 图像右移

硬件电路上电后,先显示初始化界面及两幅图像,然后停止显示第二幅图像,

等待下一步操作,即红外的输入。当按下红外遥控器的1、2、3、4(其中一个)后,可看到图像的上、下、左、右移动。在以上过程中改变移动方向时,首先出现图像停止移动,等待一段时间后,图像才响应按下的键。这是由于每次刷屏需要消耗几百毫秒时间,而中断返回后可能仍处于刷新上一次图像的过程,而且每次刷新一幅图像的中间有软件延时过程,同时,由于按键的检测是采用外部中断0服务程序中响应红外遥控的方法,每次红外的解码大约又要消耗个100毫秒左右,这些都可能导致图像的停滞状态的出现。

在之前的调试过程中发现,当每按下一方向按键,图像会停止移动大约1s

左右,当然有时更长,有时短些。这是由于图像的移动需要MPU每时每刻向CGRAM写入数据,然后开显示,图像才会有移动的效果。而当接收到红外数据时,程序进入到外部中断0中断服务程序,因此会出现图像静止。而图像移动方向改变反应过慢,主要是因为每次图像移动函数要执行约8s(上下移动)或16s(左右移动),之后才会回到主函数判断flag值。当我在每次移动完一行或者一列之后,加一句判断flag值是否改变时,可以看到按下按键后,图像移动方向改变的速度变快了,反应更加及时了。

该设计能够实现红外控制其图像的上、下、左、右循环移动,并有图像的静

止及继续移动的功能。

30


基于12864液晶显示图片(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:评选推荐先进典型活动方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: