找回密码
 注册
关于网站域名变更的通知
查看: 497|回复: 1
打印 上一主题 下一主题

单片机彩屏例程 含程序,原理图,取模软件等资料

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-11 05:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
单片机彩屏例程 含程序,原理图,取模软件等资料; ?: C+ ^+ Q% W6 g6 w

0 P8 Y, T" e' K0 `" j* d/ C
3 ^/ g8 v; g, J% h2 ~
彩屏例程,含2.2寸,2.4寸,2.8寸和3.5寸彩屏程序及彩屏测试转接原理图.
9 q% C6 i; T5 w1 }1 I( ]( t 9 G8 U# r) H1 f9 H& R, }

7 h# [0 }9 l% J5 y6 s$ e  u% K9 s
TFT彩屏实验
V2.2和V3.0的板子使用彩屏的方式是一致的,这里我们以V3.0的板子为例。注意了,下载程序若无反应的,请反复核对彩屏的型号与下载程序是否一致。
因为板子配有不同的彩屏,所以在做彩屏实验需要确认自己彩屏的型号。具体型号请看彩屏的背面。确认好型号下载相对应的例程程序。
   
实验现象:
下载不同的程序,对应彩屏显示相应内容
实验步骤:
  • 连接实验相关模块电路
    $ f% U0 F0 k, I0 i9 Z) T6 J- H
必须先将JP595,JP1302,J11,JP165,红外接收头的跳线帽断开,若不断开可能出现花屏,无显示的现象  如图:
把彩屏插上开发板,注意:两排排针都要插进去
如图:
' ^; I" y6 b6 K% E. j
  • 下载彩屏程序
    % V6 V1 w: U$ ?( D  Y: h1 ?
下载之前先判断您手上的彩屏型号,屏后面有标明型号
如图:
确定型号后,下载对应型号的程序如图
下载成功后程序自动运行,彩屏显示对应程序的内容。
常见问题处理方法:
  • 程序下载成功后无法显示
    3 _' `8 B3 E" C
将彩屏拔下来重新插下,重启开发板
将单片机拆下来重新安装下,重启开发板
将后面的排线重新卡一下,后面的排线扣是可以拆的
如图:
靠排线的一面是可以掰起来的!
将排线平整的插进去后,将排扣按下,装好后再装上开发板试试,能否显示!
  • 触摸屏无法使用
    6 N  R5 j0 U" u6 e7 C$ s) B
请检查JP595,JP1302,J11跳线帽是否断开
重新插拔下彩屏,重启开发板
注意:由于51单片机处理速度较慢,所以在进行触摸划线的时候只有显示点,这个是正常的,您可以慢点画!
/ f- Z; K( Z4 g1 Q5 V7 c6 Y& F7 a$ I6 y- P/ R

  r" R# T$ x& Z+ m& w8 ]& f) o彩屏显示的部分单片机源码预览:
#include"gui.h"
0 H/ {! L% C; a+ r& v" {
//---汉字的字库头文件---//
#include"charcode.h"
. @# R1 ^$ E! d# Z) f, j
//---如果要显示图片就添加这个头文件---//
#ifdef PICTURE_SHOW

; L- q0 d) c) ]1 k+ R7 T2 e
#include"picture.h"

  e: i' N- I4 y& v7 Q- I
#endif

5 D5 D" x/ u: G4 g& ]7 _/ ^
/****************************************************************************
*函数名:GUI_Dot
*输  入:x:点的X坐标;
*      * y:点的Y坐标
*      * color:点的颜色
*输  出:
*功  能:给单个像素涂上颜色。
****************************************************************************/         
6 d) t: Y* s9 b( D$ s- v
void GUI_Dot(uint x, uint y, uint color)
{  
        uchar i;
7 k/ I( R, Z7 R3 m
        TFT_SetWindow(x-1, y, x+2, y+2);  //单个像素

2 |' u: ^" ]2 ]
        for(i=0; i<16; i++)
        {
                TFT_WriteColorData(color)        ;
                //TFT_WriteData(color);
        }
}

9 j% T! q/ F/ c
///****************************************************************************
//*函数名:GUI_Box
//*输  入:sx:起始X坐标, sy:其实Y坐标,
//*      * ex:终止X坐标, ey:终止Y坐标,
//*      * color:方框的颜色
//*输  出:
//*功  能:给一个区域涂上颜色。
//****************************************************************************/         
//void GUI_Box(uint sx, uint sy, uchar ex, uint ey, uint color)
//{
//        uint temp;   
//        TFT_SetWindow(sx, sy, ex, ey);
//  sx = ex - sx + 1;
//        sy = ey - sy + 1;
//        while (sx--)
//        {
//                 temp = sy;
//                while (temp--)
//                 {        
//                        TFT_WriteData(color);
//                }
//        }
//}

7 c$ r! n( ~/ j' O7 X* Z' @
/****************************************************************************
*函数名:GUI_Line
*输  入:xStart:线的起始X坐标,
*      * yStart:线的其实Y坐标,
*      * xEnd:线的终止X坐标,
*      * yEnd:线的终止Y坐标,
*      * color:线条的颜色
*输  出:
*功  能:画一条直线
****************************************************************************/         

( D: Y0 X. f2 ]; s% f% N- n  p
void GUI_Line(uint xStart, uint yStart, uchar xEnd, uint yEnd, uint color)
{
        uint t;  
        int xerr = 0, yerr = 0, delta_x, delta_y, distance;  
        int incx, incy;  
        uint row, col;  
        delta_x = xEnd - xStart;//计算坐标增量  
        delta_y = yEnd - yStart;  
        col = xStart;  
        row = yStart;  
        if (delta_x > 0)
        {
                incx=1;//设置单步方向
        }           
        else   
        {  
            if (delta_x == 0)
                {
                        incx = 0;//垂直线
                }                  
            else
                        {
                                incx = -1;
                                delta_x = -delta_x;
                        }  
        }  
        if (delta_y > 0)
        {
                incy = 1;
        }         
        else  
        {  
            if (delta_y == 0)
                {
                        incy = 0;//水平线  
                }
            else
                {
                        incy = -1;
                        delta_y = -delta_y;
                }  
        }  
        if (delta_x > delta_y)
        {
                distance = delta_x;//选取基本增量坐标轴  
        }
        else
        {
                distance = delta_y;
        }         
        for (t=0; t<=distance+1; t++)  
        {                                     //画线输出  
            GUI_Dot(col, row, color);
            xerr += delta_x;  
            yerr += delta_y;  
                  if(xerr > distance)  
            {  
                xerr -= distance;  
                col += incx;  
            }  
            if(yerr > distance)  
            {  
                yerr -= distance;  
                row += incy;  
            }  
        }  
}
8 x, @3 G/ D: C1 r5 Z: O( J, u
/****************************************************************************
*函数名:GUI_WriteCnChar
*输  入:x:显示起始X坐标
*      * y:显示起始Y坐标
*      * *cn:要显示的字符串
*      * wordColor:字体的颜色
*      * backColor:背景颜色
*输  出:
*功  能:写二号楷体汉字
****************************************************************************/         
; |+ W8 a) g, P% Z8 {) n
#ifdef CHAR32_SHOW

! J: s- F1 R- [* D
void GUI_Write32CnChar(uint x, uint y, uchar *cn, uint wordColor, uint backColor)         
+ W  u1 Q/ F$ B) @, c3 o& c
…………限于本文篇幅 余下代码请下载附件…………
' O  S" ?. i2 a. O' r' O
游客,如果您要查看本帖隐藏内容请回复
, @& }9 N% F. P) @5 n; C
/ Y9 {2 ?+ E) V

该用户从未签到

2#
发表于 2019-1-11 15:14 | 只看该作者
这个很好,谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-18 15:20 , Processed in 0.093750 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表