完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本人最近正在研究TFT液晶显示屏,弄了半天终于能显示图片了,可是到了显示汉字的时候就懵了,根本不知道怎么下手,希望哪位大侠能给具体讲解一下,越详细越好,本人有点小白!谢谢
|
|
相关推荐
3个回答
|
|
汉字的显示和图片是一样的,就是每个汉字对应一个点阵,把每个点都显示出来就是汉字了。
|
|
|
|
恩,现在我有点明白了。
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
#include"MN.h" #include"hz.h" //#include"chinese.h" #define TFT_DAT P0 #define uchar unsigned char ***it TFT_CS = P2^1; ***it RS = P2^2; ***it EN = P2^3; ***it RD1 = P2^4; void delay(unsigned int t) { unsigned int n,m; for(n=0;n } 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的值总是跟着要写入的地址一样,求大神给解答一下,小弟现在此谢过了!!急急急 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
464 浏览 0 评论
478 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
439 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
994 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1056 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11780 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 09:18 , Processed in 0.689988 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号