找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 21808|回复: 35
打印 上一主题 下一主题
收起左侧

89c52单片机仿真ILI9341液晶屏驱动程序

  [复制链接]
跳转到指定楼层
楼主
ILI9341的单片机仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)



给各位做了参考.ILI9341 8位模式,16位色

ILI9341单片机源程序如下:
  1. //#include <REGX52.H>
  2. #include <REGX55.H>

  3. #include <intrins.h>
  4. #include "map.h"

  5. //#define     RED          0XF800          //红色
  6. //#define     GREEN        0X07E0          //绿色
  7. //#define     BLUE         0X001F          //蓝色
  8. //#define     WHITE        0XF785          //白色


  9. #define DATA_H P2
  10. #define DATA_L P1

  11. sbit LCD_CS = P3^1;
  12. sbit LCD_RS = P3^2;
  13. sbit LCD_WR = P3^3;
  14. sbit LCD_RD = P3^4;
  15. sbit LCD_RESET = P3^0;

  16. void Delay1ms()                //@12.000MHz
  17. {
  18.         unsigned char i, j;

  19.         i = 12;
  20.         j = 169;
  21.         do
  22.         {
  23.                 while (--j);
  24.         } while (--i);
  25. }

  26. void delay_ms(unsigned int ms)
  27. {
  28.         while(ms--)
  29.         {
  30.                 Delay1ms();
  31.         }
  32. }

  33. void LCD_WR_DATA(unsigned char val)
  34. {  
  35.         LCD_RS=1;  //RS=1;
  36.         LCD_CS=0;        //CS=0;
  37.         DATA_L=val;                                       
  38.         LCD_WR=0;        //WR=0;
  39.         LCD_WR=1;        //WR=1;
  40.         LCD_CS=1;        //CS=1;       
  41. }

  42. void LCD_WR_REG(unsigned char reg)               
  43. {       
  44.           LCD_RS=0;        //RS=0;
  45.         LCD_CS=0;        //CS=0;       
  46.         DATA_L=reg;       
  47.         LCD_WR=0;        //WR=0;
  48.         LCD_WR=1;        //WR=1;
  49.         LCD_CS=1;        //CS=1;               
  50. }

  51. void LCD_Init()
  52. {
  53.         LCD_RESET=0;
  54.         delay_ms(10);
  55.         LCD_RESET=1;
  56.         delay_ms(120);
  57.         LCD_WR_REG(0xCF);  
  58.         LCD_WR_DATA(0x00);
  59.         LCD_WR_DATA(0xC1);
  60.         LCD_WR_DATA(0X30);
  61.         LCD_WR_REG(0xED);  
  62.         LCD_WR_DATA(0x64);
  63.         LCD_WR_DATA(0x03);
  64.         LCD_WR_DATA(0X12);
  65.         LCD_WR_DATA(0X81);
  66.         LCD_WR_REG(0xE8);  
  67.         LCD_WR_DATA(0x85);
  68.         LCD_WR_DATA(0x10);
  69.         LCD_WR_DATA(0x7A);
  70.         LCD_WR_REG(0xCB);  
  71.         LCD_WR_DATA(0x39);
  72.         LCD_WR_DATA(0x2C);
  73.         LCD_WR_DATA(0x00);
  74.         LCD_WR_DATA(0x34);
  75.         LCD_WR_DATA(0x02);
  76.         LCD_WR_REG(0xF7);  
  77.         LCD_WR_DATA(0x20);
  78.         LCD_WR_REG(0xEA);  
  79.         LCD_WR_DATA(0x00);
  80.         LCD_WR_DATA(0x00);
  81.         LCD_WR_REG(0xC0);    //Power control //电源控制
  82.         LCD_WR_DATA(0x1B);   //VRH[5:0]
  83.         LCD_WR_REG(0xC1);    //Power control
  84.         LCD_WR_DATA(0x01);   //SAP[2:0];BT[3:0]
  85.         LCD_WR_REG(0xC5);    //VCM control
  86.         LCD_WR_DATA(0x30);          //3F
  87.         LCD_WR_DATA(0x30);          //3C
  88.         LCD_WR_REG(0xC7);    //VCM control2
  89.         LCD_WR_DATA(0XB7);
  90.         LCD_WR_REG(0x36);    // Memory Access Control (存储器访问控制)
  91.         LCD_WR_DATA(0x48);
  92.         LCD_WR_REG(0x3A);   //像素格式设置
  93.         LCD_WR_DATA(0x55);
  94.         LCD_WR_REG(0xB1);   
  95.         LCD_WR_DATA(0x00);   
  96.         LCD_WR_DATA(0x1A);
  97.         LCD_WR_REG(0xB6);    // Display Function Control
  98.         LCD_WR_DATA(0x0A);
  99.         LCD_WR_DATA(0xA2);
  100.         LCD_WR_REG(0xF2);    // 3Gamma Function Disable
  101.         LCD_WR_DATA(0x00);
  102.         LCD_WR_REG(0x26);    //Gamma curve selected
  103.         LCD_WR_DATA(0x01);
  104.         LCD_WR_REG(0xE0);    //Set Gamma
  105.         LCD_WR_DATA(0x0F);
  106.         LCD_WR_DATA(0x2A);
  107.         LCD_WR_DATA(0x28);
  108.         LCD_WR_DATA(0x08);
  109.         LCD_WR_DATA(0x0E);
  110.         LCD_WR_DATA(0x08);
  111.         LCD_WR_DATA(0x54);
  112.         LCD_WR_DATA(0XA9);
  113.         LCD_WR_DATA(0x43);
  114.         LCD_WR_DATA(0x0A);
  115.         LCD_WR_DATA(0x0F);
  116.         LCD_WR_DATA(0x00);
  117.         LCD_WR_DATA(0x00);
  118.         LCD_WR_DATA(0x00);
  119.         LCD_WR_DATA(0x00);                  
  120.         LCD_WR_REG(0XE1);    //Set Gamma
  121.         LCD_WR_DATA(0x00);
  122.         LCD_WR_DATA(0x15);
  123.         LCD_WR_DATA(0x17);
  124.         LCD_WR_DATA(0x07);
  125.         LCD_WR_DATA(0x11);
  126.         LCD_WR_DATA(0x06);
  127.         LCD_WR_DATA(0x2B);
  128.         LCD_WR_DATA(0x56);
  129.         LCD_WR_DATA(0x3C);
  130.         LCD_WR_DATA(0x05);
  131.         LCD_WR_DATA(0x10);
  132.         LCD_WR_DATA(0x0F);
  133.         LCD_WR_DATA(0x3F);
  134.         LCD_WR_DATA(0x3F);
  135.         LCD_WR_DATA(0x0F);
  136.         LCD_WR_REG(0x2B);
  137.         LCD_WR_DATA(0x00);
  138.         LCD_WR_DATA(0x00);
  139.         LCD_WR_DATA(0x01);
  140.         LCD_WR_DATA(0x3f);
  141.         LCD_WR_REG(0x2A); //列地址设定
  142.         LCD_WR_DATA(0x00); //第一个参数
  143.         LCD_WR_DATA(0x00);        //第二参数
  144.         LCD_WR_DATA(0x00);                //第三参数
  145.         LCD_WR_DATA(0xef);                 //第四参数
  146.         LCD_WR_REG(0x11); //Exit Sleep
  147.         delay_ms(120);
  148.         LCD_WR_REG(0x29); //display on       
  149. }

  150. void LCD_SetArea(unsigned int stx,unsigned int sty,unsigned int endx,unsigned int endy)
  151. {//分别四个参数来设置起使X,起使Y,结整X,结束Y
  152.         LCD_WR_REG(0x2A);          //列地址
  153.         LCD_WR_DATA(stx>>8);   
  154.         LCD_WR_DATA(stx&0xff);           
  155.         LCD_WR_DATA(endx>>8);
  156.         LCD_WR_DATA(endx&0xff);       

  157.         LCD_WR_REG(0x2B);        //页地址
  158.         LCD_WR_DATA(sty>>8);
  159.         LCD_WR_DATA(sty&0xff);       
  160.         LCD_WR_DATA(endy>>8);
  161.         LCD_WR_DATA(endy&0xff);       
  162. }

  163. void LcdWirteColorData(unsigned int color)
  164. {
  165. //        LCD_RS=1;  //RS=1;
  166. //        LCD_CS=0;        //CS=0;
  167. //         DATA_H=color>>8;       
  168. //        DATA_L=color;                                       
  169. //        LCD_WR=0;        //WR=0;
  170. //        LCD_WR=1;        //WR=1;
  171. //        LCD_CS=1;        //CS=1;       
  172.        
  173.         LCD_RS=1;  //RS=1;
  174.         LCD_CS=0;        //CS=0;
  175.         DATA_L=color>>8;                                               
  176.         LCD_WR=0;        //WR=0;
  177.         LCD_WR=1;        //WR=1;
  178.         DATA_L=color;                                       
  179.         LCD_WR=0;        //WR=0;
  180.         LCD_WR=1;        //WR=1;
  181.         LCD_CS=1;        //CS=1;       
  182. }

  183. //void LCD_Clear(unsigned int color)
  184. //{  
  185. //        unsigned int i,j;

  186. //        LCD_SetArea(0,0,180,240); //设置行列起使与结束
  187. //  LCD_WR_REG(0x2C); //写存储器
  188. //        for(i=0;i<320;i++)
  189. //        {
  190. //                for(j=0;j<360;j++)
  191. //                {
  192. //                        LcdWirteColorData(color);
  193. //                }
  194. //        }
  195. //}

  196. void main()
  197. {                unsigned int i;
  198.         unsigned int *image;
  199.         image=(unsigned int*)gImage_map;
  200. ……………………

  201. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
ii1394for89c52.rar (296.15 KB, 下载次数: 410)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏8 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:44037 发表于 2018-1-20 19:33 | 只看该作者
谢谢分享   学习一下  这是16bit 程序   8bit 程序?  3线?   4线?
回复

使用道具 举报

板凳
ID:265954 发表于 2018-1-21 14:54 | 只看该作者
by64214 发表于 2018-1-20 19:33
谢谢分享   学习一下  这是16bit 程序   8bit 程序?  3线?   4线?

16bit 8条线,由于仿真屏只支持8线16色
回复

使用道具 举报

地板
ID:321958 发表于 2018-5-4 14:48 | 只看该作者
请问这是用哪个版本打开的?7.5和8.0都没打开
回复

使用道具 举报

5#
ID:377565 发表于 2018-7-24 06:48 | 只看该作者
请问里边包括TFT LCD Arduino Mega Shield吗?谢谢
回复

使用道具 举报

6#
ID:82043 发表于 2018-8-23 09:23 | 只看该作者
谢谢!正需要呢。。。。。。
回复

使用道具 举报

7#
ID:387638 发表于 2018-8-23 10:54 | 只看该作者
论坛有你更精彩,希望今后彩屏方面的文章更多些出现在本坛,谢谢楼主!
回复

使用道具 举报

8#
ID:402167 发表于 2018-9-28 11:55 | 只看该作者
顶一个先!!!
回复

使用道具 举报

9#
ID:316561 发表于 2019-1-8 17:28 | 只看该作者
黑屏是什么原因呢?
回复

使用道具 举报

10#
ID:448730 发表于 2019-2-26 11:31 | 只看该作者
谢谢大佬分享
回复

使用道具 举报

11#
ID:489992 发表于 2019-3-13 15:15 | 只看该作者
顶一下,是好东西
回复

使用道具 举报

12#
ID:490975 发表于 2019-3-16 13:29 | 只看该作者
ei2003 发表于 2018-5-4 14:48
请问这是用哪个版本打开的?7.5和8.0都没打开

8.6版本的protues
回复

使用道具 举报

13#
ID:470412 发表于 2019-4-1 10:18 | 只看该作者
大佬,图片的代码是通过什么转化的
回复

使用道具 举报

14#
ID:480951 发表于 2019-4-1 11:34 | 只看该作者
非常感谢,学习一下
回复

使用道具 举报

15#
ID:138247 发表于 2019-4-15 21:50 | 只看该作者
谢谢分享。。。
回复

使用道具 举报

16#
ID:20793 发表于 2019-4-20 17:55 | 只看该作者
求问, 图片是如何转化的, 格式是什么?
回复

使用道具 举报

17#
ID:20793 发表于 2019-4-20 17:57 | 只看该作者
是用什么软件转化的图片到c数组呢,
格式是什么呢?
回复

使用道具 举报

18#
ID:312300 发表于 2019-6-7 09:35 | 只看该作者
谢谢分享!!!!!!!!!!!
回复

使用道具 举报

19#
ID:482614 发表于 2019-7-18 08:37 | 只看该作者
请帮老大们帮我看看是怎么回事,输入的是单张小黄鸭,仿真出来颜色却变了,还变成了3只鸭,不知道是哪里设置错了,请老大们指点一下,谢谢!



回复

使用道具 举报

20#
ID:324611 发表于 2019-8-26 16:36 | 只看该作者
好东西,学习下。
回复

使用道具 举报

21#
ID:602210 发表于 2019-9-20 17:08 | 只看该作者
正在学习
回复

使用道具 举报

22#
ID:643346 发表于 2019-11-18 19:45 | 只看该作者
楼主太棒啦
回复

使用道具 举报

23#
ID:643346 发表于 2019-11-18 19:47 | 只看该作者
touya 发表于 2018-7-24 06:48
请问里边包括TFT LCD Arduino Mega Shield吗?谢谢

proteus里面有例程,打开主页搜ssd就可以出来了
回复

使用道具 举报

24#
ID:643346 发表于 2019-11-18 23:42 | 只看该作者
楼主可以教一下怎么用32在proteus里用tftLCD显示图片吗
回复

使用道具 举报

25#
ID:645719 发表于 2020-1-31 21:31 | 只看该作者
谢谢分享谢谢分享谢谢分享
回复

使用道具 举报

26#
ID:577001 发表于 2020-2-22 19:50 | 只看该作者
你这个代码跟电路都不匹配哎,DC是个啥?
回复

使用道具 举报

27#
ID:577001 发表于 2020-2-22 21:33 | 只看该作者
确定8位模式是用低8位吗?
回复

使用道具 举报

28#
ID:514250 发表于 2020-2-27 15:11 | 只看该作者
正好需要這個東西
回复

使用道具 举报

29#
ID:514250 发表于 2020-2-27 15:14 | 只看该作者
目前正在學習
回复

使用道具 举报

30#
ID:641995 发表于 2020-3-7 20:58 | 只看该作者
请问楼主 用的PROTEUS是哪个版本的,我的8.7的,仿真会出现错误,说是严重仿真错误,没有已经创建好的ILI9341电器模型
回复

使用道具 举报

31#
ID:714063 发表于 2020-3-23 16:25 | 只看该作者
cs999 发表于 2019-7-18 08:37
请帮老大们帮我看看是怎么回事,输入的是单张小黄鸭,仿真出来颜色却变了,还变成了3只鸭,不知道是 ...

哈哈哈有意思
回复

使用道具 举报

32#
ID:405166 发表于 2020-4-6 16:13 | 只看该作者
优秀
回复

使用道具 举报

33#
ID:503018 发表于 2020-4-8 12:05 | 只看该作者
非常有用,,感谢
回复

使用道具 举报

34#
ID:358211 发表于 2020-4-19 14:11 | 只看该作者
怎么显示文字啊
回复

使用道具 举报

35#
ID:282431 发表于 2020-4-19 15:45 | 只看该作者
顶一下,是好东西
回复

使用道具 举报

36#
ID:701852 发表于 2020-8-8 16:06 | 只看该作者
设置怎么调都这样啊。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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