玩转SAM4S XPLAINED开发板+七寸触摸屏

作者: fengye5340
上传时间为: 2014-12-29 09:14 AM
2014-12-29
阅读:

     在手上有一个7寸的触摸屏,就有了在SAM4S XPLD上玩转它的想法。这个屏是串口驱动的,不用那么多的信号线,也省略了SAM4S XPLD的引脚空间。其实驱动TFT的实质都是一样的,只是最低层的驱动不同罢了,中间层和上层全是一些独立的东东。为此,利用UART1实现和屏的信号交互,利用USART1和PC机通信,在两个串口上都实现了中断方式,USART1只有串口回环,这样设置,是因为该演示中没有增加人机命令部分,后续有 需要可以再额外增加。此演示包括一个启动界面,一个欢迎界面,一个简单触摸界面和图片浏览显示。实现了一个按钮的触摸功能,用于进入图片浏览。

      下面是两个串口的驱动配置,一个采用了PB2/PB3端口,一个采用了PA21和PA22端口,串口的端口在这里是可映射的,意味着可以选择其它端口进行配置!

配置好串口驱动后,再实现驱动的驱动,因为是串口屏,底层已经做好了,直接调用串口发送命令即可。

主函数是这样配置的:

在里面有启动界面和欢迎界面以及触摸屏处理界面,这些代码分别截图如下:

在欢迎界面,调用了一个载入界面函数:

void Loading(void)

{

unsigned short int x=400,y=300,r=60,m=15,t;

unsigned char i;

t = 7*r/10;

SetBcolor(0x0000);//设置视图背景色--黑色

GUI_CleanScreen();// 清屏

SetFcolor(0XFC08);//文本显示-橙色

SetFont_Region(1, 800,60);

SetTextSpace(0,0);

DisText(0, 0, 0, 8, "ATMEL SAM4S XPLD"); //32*32字体

SetFcolor(0xF81F);//文本显示-粉红色

DisText(480, 536, 0, 8, "fengye5340"); //32*32字体

for(i=0;i<2;i++)

{

SetFcolor(0xF800);

GUI_CircleFill(x,y-r,m); //画第一个圆

delay_ms(200);

GUI_CircleFill(x+t,y-t,m); //画第二个圆

delay_ms(200);

SetFcolor(0x0000);

GUI_CircleFill(x, y-r, m); //删除第一个圆

delay_ms(200);

SetFcolor(0xF800);

GUI_CircleFill(x+r, y, m); //画第三个圆

delay_ms(200);

SetFcolor(0x0000);

GUI_CircleFill(x+t, y-t, m);//删除第二个圆

delay_ms(200);

SetFcolor(0xF800);

GUI_CircleFill(x+t, y+t, m);//画第四个圆

delay_ms(200);

SetFcolor(0x0000);

GUI_CircleFill(x+r, y, m); //删除第三个圆

delay_ms(200);

SetFcolor(0xF800);

GUI_CircleFill(x, y+r, m);//画第五个圆

delay_ms(200);

SetFcolor(0x0000);

GUI_CircleFill(x+t, y+t, m);//删除第四个圆

delay_ms(200);

SetFcolor(0xF800);

GUI_CircleFill(x-t, y+t, m);//画第六个圆

delay_ms(200);

SetFcolor(0x0000);

GUI_CircleFill(x, y+r, m);//删除第五个圆

delay_ms(200);

SetFcolor(0xF800);

GUI_CircleFill(x-r, y, m); //画第七个圆

delay_ms(200);

SetFcolor(0x0000);

GUI_CircleFill(x-t, y+t, m);//删除第六个圆

delay_ms(200);

SetFcolor(0xF800);

GUI_CircleFill(x-t, y-t, m);//画第八个圆

delay_ms(200);

SetFcolor(0x0000);

GUI_CircleFill(x-r, y, m);//删除第七个圆

delay_ms(200);

GUI_CircleFill(x-t, y-t, m);//删除第八个圆

delay_ms(200);

}

LCD_Progres_Bar();

delay_ms(500);

SetBcolor(0x0000);//设置视图背景色--黑色

GUI_CleanScreen();// 清屏

}

这个是一个圆点不断变化的效果,通过视频可以看到!

在触摸屏处理界面,通过获取坐标,然后显示图片,更复杂的演示没有再展示,这个可以自己扩展。

获取坐标函数:

演示图片函数:

下面是拍摄的图片和视频地址:

原图效果:

http://v.youku.com/v_show/id_XNTI1NzY3NTAw.html

全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示