TA的每日心情 | 开心 2018-9-18 06:28 |
---|
签到天数: 2 天 连续签到: 1 天 [LV.1]初来乍到
|
在手上有一个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();// 清屏
}
这个是一个圆点不断变化的效果,通过视频可以看到!
在触摸屏处理界面,通过获取坐标,然后显示图片,更复杂的演示没有再展示,这个可以自己扩展。
获取坐标函数:
演示图片函数:
下面是拍摄的图片和视频地址:
原图效果:
https://v.youku.com/v_show/id_XNTI1NzY3NTAw.html |
|