矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
楼主: 中国机器

TFT真彩屏研究的差不多了,可以做个彩色屏的万年历,进来看看,帮忙规划一下界面吧!

[复制链接]
     
发表于 2010-12-13 23:53:54 | 显示全部楼层

回复 28# 中国机器 的帖子

C 的看不懂~~~~~~~~~~~有汇编的吗?
回复 支持 反对

使用道具 举报

     
发表于 2010-12-14 15:24:27 | 显示全部楼层
玩单片机这么多年了,还没写过彩色屏幕,失败呀。。
回复 支持 反对

使用道具 举报

     
发表于 2010-12-15 14:00:54 | 显示全部楼层
技术帖,顶起来!
回复 支持 反对

使用道具 举报

发表于 2010-12-16 09:59:42 | 显示全部楼层
技术贴,顶顶顶。。。。。。顶!!!!
回复 支持 反对

使用道具 举报

     
发表于 2010-12-17 01:23:15 | 显示全部楼层
回复 28# 中国机器 的帖子
C 的看不懂~~~~~~~~~~~有汇编的吗?
回复 支持 反对

使用道具 举报

     
发表于 2010-12-17 13:22:46 | 显示全部楼层
回复 28# 中国机器 的帖子
C 的看不懂~~~~~~~~~~~有汇编的吗?
-------------------------------------------------------------------------------------
TFT可不像12864那样简单哦,用汇编很难解决问题的。

TFT的初始化程序都非常长,写错一个参数都不好检查,比如这个ILI9481控制器的TFT的初始化代码:
void lcd_int(void)
        {
                GPIOA->BSRR=1<<RT;        //RT = 1;
                   Delay(1000000);
                   GPIOA->BRR=1<<RT;        //RT = 0;
                   Delay(1000000);
                   GPIOA->BSRR=1<<RT;        //RT = 1;
                   Delay(1000000);

                //CMO3.5+ILI9481
                wr_comm(0x0011);                //退出睡眠模式
                Delay(500000);
                wr_comm(0x0013);                //进入常规模式
                 
                wr_comm(0x00D0);                //电源设置
                wr_dat(0x0007);
                wr_dat(0x0040);                //41   
                wr_dat(0x001c);                //1e
                    
                wr_comm(0x00D1);                //VCOM控制
                wr_dat(0x0000);
                wr_dat(0x0018);
                wr_dat(0x001d);
                  
                wr_comm(0x00D2);                //常规模式电源设置
                wr_dat(0x0001);
                wr_dat(0x0011);//11
               
                wr_comm(0x00C0);                //面板驱动设定
                wr_dat(0x0000);
                wr_dat(0x003B);
                wr_dat(0x0000);
                wr_dat(0x0002);
                wr_dat(0x0011);
               
                wr_comm(0x00C1);
                wr_dat(0x0010);
                wr_dat(0x000B);
                wr_dat(0x0088);
                  
                wr_comm(0x00C5);
                wr_dat(0x0001);
                  
                wr_comm(0x00C8);
                wr_dat(0x0000);
                wr_dat(0x0030); //30
                wr_dat(0x0036);
                wr_dat(0x0045);
                wr_dat(0x0004);
                wr_dat(0x0016);
                wr_dat(0x0037);
                wr_dat(0x0075);
                wr_dat(0x0077);
                wr_dat(0x0054);
                wr_dat(0x000f);
                wr_dat(0x0000);
                  
                wr_comm(0x00E4);                        //??
                wr_dat(0x00A0);
                  
                wr_comm(0x00F0);                //??
                wr_dat(0x0001);
                  
                wr_comm(0x00F3);                        //?
                wr_dat(0x0040);
                wr_dat(0x000A);
                  
                wr_comm(0x00F7);                        //?
                wr_dat(0x0080);
                  
                wr_comm(0x0036);                        //设置地址模式:显示控制
                wr_dat(0x006A);                                // b5=1,
                  
                wr_comm(0x003A);                        //设置点格式
                wr_dat(0x0055);                                   //16位色
                  
                wr_comm(0x002B);                        // 列地址设置(320列,定义为X)
                wr_dat(0x0000);
                wr_dat(0x0000);
                wr_dat(0x0001);
                wr_dat(0x003F);                                // 0x13F=319
               
                wr_comm(0x002A);                        // 行地址设置(480行,定义为Y)
                wr_dat(0x0000);
                wr_dat(0x0000);
                wr_dat(0x0001);
                wr_dat(0x00DF);                                // 0x1DF=479
                  
                Delay(6000000);
                wr_comm(0x0029);                        //打开显示
                wr_comm(0x002C);                        //写入显示数据
        }

很恐怖吧?所以还是用C来写了。

这是我用的ILI9481的TFT屏,用STM32F103RBT6控制,刷新速度勉强能接受。

[ 本帖最后由 Paktu 于 2010-12-17 13:24 编辑 ]
ALIM1515.JPG
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2010-12-18 01:34:18 | 显示全部楼层
是的,TFT驱动用汇编写会累坏的,其实有汇编基础,找一本“单片机C语言”看看,再看几个别人的程序,就入门了,比汇编形象,易懂
回复 支持 反对

使用道具 举报

     
发表于 2010-12-18 18:11:10 | 显示全部楼层
回复楼上2位朋友
我老了
学不进去C语言了
一直用的都是汇编
所以还是想用汇编解决问题
呵呵
回复 支持 反对

使用道具 举报

     
发表于 2010-12-18 20:46:41 | 显示全部楼层
学不进去C语言了
一直用的都是汇编
所以还是想用汇编解决问题
-------------------------------------------------------
那么,1.23456789×9.87654321该怎么办呢?
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2010-12-18 21:51:24 | 显示全部楼层
呵呵,大家帮我一个忙,帮我规划一下这个万年历的界面吧。

突然感觉自己的艺术细胞太少了,有点后悔没有学一点美术功底
回复 支持 反对

使用道具 举报

     
发表于 2010-12-19 17:55:06 | 显示全部楼层
原帖由 Paktu 于 2010-12-18 20:46 发表
学不进去C语言了
一直用的都是汇编
所以还是想用汇编解决问题
-------------------------------------------------------
那么,1.23456789×9.87654321该怎么办呢?

让51去计算这个也太为难51了吧?
回复 支持 反对

使用道具 举报

     
发表于 2010-12-19 17:56:35 | 显示全部楼层
原帖由 中国机器 于 2010-12-18 21:51 发表
呵呵,大家帮我一个忙,帮我规划一下这个万年历的界面吧。

突然感觉自己的艺术细胞太少了,有点后悔没有学一点美术功底


建议背景用一个山水画或属相动物什么的
然后在其中叠加上万年历时间等
可好?
回复 支持 反对

使用道具 举报

发表于 2010-12-19 18:34:15 | 显示全部楼层
原帖由 lxa000 于 2010-12-19 17:55 发表

让51去计算这个也太为难51了吧?


这不算什么,早先苹果II那会也是8位机,不一样干.这个用汇编来作比较麻烦,但如果编好了子程序也可以.用C就很方便,一个表达式就行了,后面怎么变成机器指令那是编译程序的事儿了.
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2010-12-19 21:24:59 | 显示全部楼层
原帖由 lxa000 于 2010-12-19 17:56 发表


建议背景用一个山水画或属相动物什么的
然后在其中叠加上万年历时间等
可好?


呵呵,这下子有事干了,在图片上叠加显示内容要研究一下,属相显示是应该有的,一年刷新一次,就算刷新速度慢,也没关系。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2010-12-19 21:26:39 | 显示全部楼层
原帖由 cosine 于 2010-12-19 18:34 发表


这不算什么,早先苹果II那会也是8位机,不一样干.这个用汇编来作比较麻烦,但如果编好了子程序也可以.用C就很方便,一个表达式就行了,后面怎么变成机器指令那是编译程序的事儿了.


还有c语言的程序,移植性好,网上搜来的程序,稍作修改就可以用,甚至整个一个文件套用,编程省心多了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2024-6-17 08:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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