专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
51单片机
会TFT128*160彩 {MOD}显示屏的进来看看
2019-07-15 19:03
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
10326
3
1649
本人最近正在研究TFT液晶显示屏,弄了半天终于能显示图片了,可是到了显示汉字的时候就懵了,根本不知道怎么下手,希望哪位大侠能给具体讲解一下,越详细越好,本人有点小白!谢谢
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
来自远方
2019-07-16 06:27
#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 {MOD}/
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的值总是跟着要写入的地址一样,求大神给解答一下,小弟现在此谢过了!!急急急
加载中...
查看其它3个回答
一周热门
更多
>
相关问题
【东软载波ESF0654 PDS开发板活动】开箱
1 个回答
东软载波ESF0654 PDS开发板外部中断
1 个回答
东软载波ESF0654 PDS开发板高级控制定时器AD16C4T
1 个回答
用串口调试助手为什么只能在hex模式接收发送而在文本模式不行
9 个回答
触摸芯片SC02B/SC04B在地砖灯的设计方案
1 个回答
相关文章
51单片机与蓝牙模块连接
0个评论
51单片机的硬件结构
0个评论
基于51单片机的无线遥控器制作
0个评论
51单片机 AD转换
0个评论
51单片机数码管递增显示
0个评论
如何实现对单片机寄存器的访问
0个评论
基于51单片机的指纹密码锁
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
51单片机
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
#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 {MOD}/
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的值总是跟着要写入的地址一样,求大神给解答一下,小弟现在此谢过了!!急急急
一周热门 更多>