查看: 1561|回复: 0

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

[复制链接]
  • TA的每日心情
    开心
    2018-9-18 06:28
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2014-12-29 09:14:00 | 显示全部楼层 |阅读模式
    分享到:
    在手上有一个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
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-12-19 03:19 , Processed in 0.126194 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.