会TFT128*160彩色显示屏的进来看看
汉字的显示和图片是一样的,就是每个汉字对应一个点阵,把每个点都显示出来就是汉字了。
恩,现在我有点明白了。
void TFT_SHOW_HZ()
{
uchar x,y,i,flag,t1;
unsigned int num = 0;
TFT_WR_SING_COMM(0x42);//设置X地址
TFT_WR_DOUB_COMM(0X32,0X3E);
TFT_WR_SING_COMM(0x43);//设置Y地址
TFT_WR_DOUB_COMM(0X0A,0X16);
for(x=50;x<62;x++)
{
for(y=10;y<22;y++)
{
t1=hz12[num];
flag=t1&0x01;
t1=t1>>1;
i++;
if(flag==0X01)
TFT_WR_DOUB_DAT(0xF800);
else
TFT_WR_DOUB_DAT(0x001F);
if(i==7)
{
i=0;
num++;
}
}
}
}
程序中的t1为什么总是不变呢?
#include<reg52.h>
#include"MN.h"
#include"hz.h"
//#include"chinese.h"
#define TFT_DAT P0
#define uchar unsigned char
sbit TFT_CS = P2^1;
sbit RS = P2^2;
sbit EN = P2^3;
sbit RD1 = P2^4;
void delay(unsigned int t)
{
unsigned int n,m;
for(n=0;n<t;n++)
for(m=0;m<127;m++);
}
void TFT_WR_SING_COMM(uchar n1)//写入单字节命令
{
RS = 0;//低电平写入的为命令
TFT_CS = 0;//选中TFT显示屏
TFT_DAT = n1;
EN = 0; //WR的上升沿写入数据
EN = 1;
TFT_CS = 1;
}
void TFT_WR_DOUB_COMM(uchar x1,uchar y1) //写入两个字节的命令
{
TFT_WR_SING_COMM(x1);
TFT_WR_SING_COMM(y1);
}
void TFT_WR_SING_DAT(uchar dat)
{
RS = 1;//高电平写入的为数据
TFT_CS = 0;//选中TFT显示屏
TFT_DAT = dat;
EN = 0; //WR的上升沿写入数据
EN = 1;
TFT_CS = 1;
}
void TFT_WR_DOUB_DAT(unsigned int dat)
{
RS = 1;//高电平写入的为数据
TFT_CS = 0;//选中TFT显示屏
TFT_DAT = (uchar)(dat);
EN = 0; //WR的上升沿写入数据
EN = 1;
TFT_CS = 1;
RS = 1;//高电平写入的为数据
TFT_CS = 0;//选中TFT显示屏
TFT_DAT = (uchar)(dat>>8);
EN = 0; //WR的上升沿写入数据
EN = 1;
TFT_CS = 1;
}
void TFT_INIT(void) //初始化TFT显示屏
{
TFT_WR_SING_COMM(0X2C);//待命模式OFF
TFT_WR_DOUB_COMM(0x02,0x01); //设置TFT显示屏晶振
TFT_WR_DOUB_COMM(0X10,0X26);//设置TFT显示屏输出扫描方式
TFT_WR_DOUB_COMM(0X18,0X00);//设置TFT显示屏的显示信号......
TFT_WR_DOUB_COMM(0X20,0X0F);// 电源模式DC-DC
TFT_WR_DOUB_COMM(0X22,0X11);//偏离设置.....
TFT_WR_DOUB_COMM(0X24,0X01);//时钟分频设置
TFT_WR_DOUB_COMM(0X26,0X0F);//放大器升压
TFT_WR_DOUB_COMM(0X28,0X00);//温度补偿斜率
TFT_WR_DOUB_COMM(0X2A,0X9F);//对比度1
TFT_WR_DOUB_COMM(0X2B,0X98);//对比度2....
TFT_WR_DOUB_COMM(0X30,0X0D);//选择65535色/
TFT_WR_DOUB_COMM(0X32,0X0E);//行矢量设置....
TFT_WR_DOUB_COMM(0X34,0X05);//N-BLOCK INVERSATION SET.....
TFT_WR_DOUB_COMM(0X36,0X00);//框架频率设置
TFT_WR_DOUB_COMM(0X40,0X00);//总线模式/
TFT_WR_DOUB_COMM(0X53,0X00);//TFT显示模式
TFT_WR_DOUB_COMM(0X32,0X00);//行矢量设置....
TFT_WR_SING_COMM(0x42);//设置X地址
TFT_WR_DOUB_COMM(0X00,0X9F);
TFT_WR_SING_COMM(0x43);//设置Y地址
TFT_WR_DOUB_COMM(0X04,0X83);
TFT_WR_SING_COMM(0X51);//开TFT显示屏
}
void TFT_SHOW_PIC() //显示图片
{
uchar x,y;
unsigned int num;
for(x=0;x<160;x++)
{
for(y=0;y<128;y++)
{
TFT_WR_SING_DAT(gImage_a[num]);
TFT_WR_SING_DAT(gImage_a[num+1]);
num=num+2;
}
}
}
void TFT_SHOW_HZ()
{
uchar x,y,i,flag,x1;
unsigned int num = 0;
TFT_WR_SING_COMM(0x42);//设置X地址
TFT_WR_DOUB_COMM(0X32,0X3E);
TFT_WR_SING_COMM(0x43);//设置Y地址
TFT_WR_DOUB_COMM(0X0A,0X16);
for(x=50;x<62;x++)
{
for(y=10;y<22;y++)
{
x1=hz12[num];
flag=x1&0x01;
x=x>>1;
i++;
if(flag==0X01)
TFT_WR_DOUB_DAT(0xF800);
else
TFT_WR_DOUB_DAT(0x001F);
if(i==7)
{
i=0;
num++;
}
}
}
}
这是整个程序,但是不知道为什么t1和flag的值总是跟着要写入的地址一样,求大神给解答一下,小弟现在此谢过了!急急急