找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机实现12864图形点阵显示C语言与汇编程序及资料

[复制链接]
跳转到指定楼层
楼主
                DATA  VISION 的12864图形点阵LCD屏
简介: STN,有LED背光,无控制芯片,驱动芯片为M5299/M5298,4位数据接口,无内部负压
/****************************************************************************************/
重要接口解析
CLP        CP    数据的移位时钟
LIP        LD    数据锁存信号,每移位一行数据锁存一次,高电平时间不能小于1.46uS
FRMB        DF    交替信号(LCD驱动所需的交替信号)
FRP        FLM    帧信号
/****************************************************************************************/

LCD接口
1.    LED+
2.    LED-
3.    VCC
4.    GND
5.    -VP             我接-15V直流电压,-20V到-5V都可以
6.    LD    I    5298的36脚(CP),5299的49脚(LOAD)
7.    DF    I    5298的35脚(DF)
8.    FLM    I    5298的37脚(IO1)
9.    CP    I    5299的47脚(CP)
10.    GND   
11.    D0        5299的43-46脚(D3-D0)
12.    D1
13.    D2
14.    D3
/****************************************************************************************/
编程思路:
         M5299是列驱动,本液晶使用了两片M5299
         M5298是行驱动,本液晶使用了一片M5298
数据线D0--D3是接到M5299上面的(看上面的LCD接口列表),所以就决定了点阵数据在液晶屏上面是横向填充的,这个很重要,你用软件对汉字和图片取模的时候要设置的,也就是设置为横向取模。
     编程的时候主要的接口是:CP,LD,FLM,D0--D3
具体是这样的:
     先给数据D0--D3,接着给移位时钟CP(下降沿),再给
数据D0--D3,再给时钟,……一直到给了32个时钟的时候(此时数据移满一行,32x4=128),给一个锁存信号LD将数据送出.这个M5299的锁存信号同时接到了M5298的CP端,而M5298是行驱动,其结果就是移到了下一行,又开始新一轮的送数据…….当送完整个一屏的时候,也就是一帧,给一个帧信号FLM.

要注意的地方:
      (1)要先给高4位数据,再给低4位数据
      (2)移位时钟是下降沿使能
      (3)移完128点一行后再移8个时钟再锁存
      (4)我用C写程序显示画面有点闪烁,用汇编就没有这个问题
         画面很清晰
/****************************************************************************************/
整个扫屏过程就像是电视机的显像管扫描,如果你看过电视机的
原理,那就很容易理解了.

             数据移位时钟CP    VS    显像管行扫描
             数据锁存信号LD    VS    显像管场扫描

制作出来的实物图如下:


单片机c语言源程序如下:
  1. //************************************************
  2. //                DATA  VISION 的12864图形点阵LCD屏
  3. //简介: STN,有LED背光,无控制芯片,驱动芯片为M5299/M5298,4位数据接口,无内部负压
  4. //************************************************
  5. //程序功能:显示图片,AT89s51,用20MHz有源晶振
  6. //单位:桂林电子科技大学/电子工程学院/8201班
  7. //作者:覃秋霖
  8. //2008.5
  9. //************************************************

  10. #include "reg51.h"
  11. #define    DATA_POR   P0
  12. #define    uchar      unsigned char
  13. #define    uint       unsigned int

  14. sbit     LOAD     =  P0^0;
  15. sbit     DF       =  P0^1;
  16. sbit     FLM      =  P0^2;
  17. sbit     CLK      =  P0^3;

  18. uchar code  logo[]={
  19. /*--  宽度x高度=128x64  --*/
  20. 0x00,0x00,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  21. -------------------------见附件
  22. };

  23. //*******************************************
  24. //函数名称:void disyPicture(uchar *Ptr)
  25. //函数功能:扫描显示
  26. //形式参数:uchar *Ptr
  27. //行参说明:数组地址
  28. //返回参数:无
  29. //使用说明:无                  
  30. //*******************************************       
  31. void disyPicture(uchar *Ptr)
  32. {       
  33.         uchar  i,j;
  34.                 uchar  dataTemp1,dataTemp2;
  35.                 bit  DF_b;
  36.                 DF_b  =  0;

  37.        for(j=1;j<=64;j++) {
  38.        for(i=1;i<=16;i++) {  
  39.         dataTemp1  =  *(Ptr++);
  40.         DATA_POR = 0;
  41.         CLK = 1;
  42.          dataTemp2  = DATA_POR & 0x0f;
  43.         DATA_POR = (dataTemp1 & 0xf0) | dataTemp2;
  44.         CLK = 0;

  45.         CLK = 1;
  46.         dataTemp2  = DATA_POR & 0x0f;
  47.         DATA_POR = (dataTemp1 << 4) | dataTemp2;
  48.         CLK = 0;
  49.         }
  50.      DATA_POR  = DATA_POR & 0x0f;

  51.          i = 8;                
  52.      while(i--) {
  53.         CLK = 1;
  54.         CLK = 0;
  55.      }
  56.      LOAD  = 1;
  57.      LOAD  = 1;
  58.      LOAD  = 1;
  59.      LOAD  = 1;
  60.      LOAD  = 0;
  61.        
  62.     }
  63.      LOAD  =  1;
  64.      FLM   =  1;
  65.      DF    = ~DF_b;
  66.      LOAD  =  0;
  67.      CLK = 1;
  68. ……………………

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

单片机汇编语言源程序:
  1. //************************************************
  2. //                DATA  VISION 的12864图形点阵LCD屏
  3. //简介: STN,有LED背光,无控制芯片,驱动芯片为M5299/M5298,4位数据接口,无内部负压
  4. //************************************************
  5. //程序功能:显示图片,AT89s51,用20MHz有源晶振
  6. //单位:桂林电子科技大学/电子工程学院/8201班
  7. //作者:覃秋霖
  8. //2008.5
  9. //************************************************
  10. LOAD                BIT          P0.0                ;每行数据锁存,每40个CLK执行一个LOAD
  11. DF                        BIT                     P0.1                        ;交流驱动信号
  12. FLM                        BIT                     P0.2                        ;帧信号,每64个LOAD执行一个FLM
  13. CLK                        BIT                     P0.3                        ;数据移位时钟
  14. DATA_PORT       EQU          P0

  15.                 ORG                0000H
  16.                 LJMP             MAIN
  17.                 ORG                30H
  18. MAIN:        MOV                DATA_PORT ,#0
  19. LOOP3:        MOV                DPTR, #0400H-1       
  20.               MOV                R0, #64                        ;液晶64行
  21. LOOP4:          MOV                R1, #16                        ;16x8=128,8是下面送出的数据位数
  22. LOOP1:        INC                DPTR
  23.                 CLR                 A
  24.                 SETB         CLK
  25.                 MOVC         A, @A+DPTR                 ;读数据
  26.                 ANL                 A, #0F0H            ;保留高4位     
  27.                 ANL                 DATA_PORT , #0FH         ;保留低4位       
  28.                 ORL                 DATA_PORT , A                 ;高低位相并输出(输出高4bit数据)
  29.                 CLR                 CLK                         ;数据移位               
  30.                 CLR                 A
  31.                 MOVC           A, @A+DPTR
  32.                 SWAP           A                          ;交换A中的高低4bit
  33.                 SETB           CLK                ;
  34.                 ANL           A, #0F0H               ;-----同上-------
  35.                 ANL           DATA_PORT , #0FH       ;               
  36.                 ORL           DATA_PORT , A              ;高低位相并输出(输出低4bit数据)
  37.                 CLR           CLK

  38.                 DJNZ        R1, LOOP1
  39.                 ANL        P1, #0FH

  40.                 SETB        CLK                ;;;;;;;;;;;;;;;;;8个移位时钟(无数据)
  41.                      CLR                CLK                     ;
  42.                 SETB        CLK                             ;
  43.                      CLR                CLK                            ;
  44.                 SETB        CLK                             ;
  45.                      CLR                CLK                     ;
  46.                 SETB        CLK                             ;
  47.                      CLR                CLK                     ;
  48.                 SETB        CLK                             ;
  49.                      CLR                CLK                     ;
  50.                 SETB        CLK                             ;
  51.                      CLR                CLK                            ;
  52.                 SETB        CLK                             ;
  53.                      CLR                CLK                     ;
  54.                 SETB        CLK                             ;
  55.                      CLR                CLK     ;;;;;;;;;;;;;;;;;
  56.        
  57.                 DJNZ        R0, LOOP2
  58.                 SETB        LOAD                 
  59.                 SETB        FLM
  60.                 CPL        DF          ;按位取反
  61.                 CLR        LOAD
  62.                 SETB        CLK
  63.                 CLR        FLM
  64.                 LJMP        LOOP3
  65. LOOP2:        SETB        LOAD
  66.              NOP
  67.               NOP
  68.             CLR            LOAD
  69.             LJMP        LOOP4               

  70.                
  71.                 ORG                0400H
  72. //字库
  73. DB   000H, 000H, 000H, 03FH, 0F8H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  74. DB   000H, 000H, 000H, 0FFH, 0FCH, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  75. DB   000H, 000H, 001H, 0FFH, 0FFH, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  76. DB   000H, 000H, 003H, 0FFH, 0FFH, 080H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  77. DB   000H, 000H, 007H, 0FFH, 0FFH, 0C0H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  78. DB   000H, 000H, 00FH, 0FFH, 0FFH, 0C0H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  79. DB   000H, 000H, 01FH, 0FFH, 0FFH, 0E0H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  80. DB   000H, 000H, 01FH, 0FFH, 0FFH, 0E0H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  81. DB   000H, 000H, 03FH, 0FFH, 0FFH, 0F0H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  82. DB   000H, 000H, 03FH, 0FFH, 0FFH, 0F0H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  83. DB   000H, 000H, 03FH, 0FFH, 0FFH, 0F0H, 000H, 000H, 000H, 000H, 007H, 0FFH, 0FFH, 0FFH, 080H, 000H
  84. DB   000H, 000H, 03FH, 0FFH, 0FFH, 0F0H, 000H, 000H, 000H, 000H, 0FFH, 0FFH, 0FFH, 0FFH, 0FEH, 000H
  85. DB   000H, 000H, 03FH, 0FFH, 0FFH, 0F0H, 000H, 000H, 000H, 007H, 0F8H, 000H, 000H, 000H, 01FH, 080H
  86. DB   000H, 000H, 03FH, 0FFH, 0FFH, 0F0H, 000H, 000H, 000H, 00FH, 080H, 000H, 000H, 000H, 001H, 0E0H
  87. DB   000H, 000H, 01FH, 0FFH, 0FFH, 0F0H, 000H, 000H, 000H, 01CH, 000H, 000H, 000H, 000H, 000H, 070H
  88. DB   000H, 000H, 01FH, 0FFH, 0FFH, 0E0H, 000H, 000H, 000H, 018H, 000H, 000H, 000H, 000H, 000H, 018H
  89. DB   000H, 000H, 00FH, 0FFH, 0FFH, 0C0H, 000H, 000H, 000H, 038H, 080H, 090H, 000H, 000H, 010H, 09CH
  90. DB   000H, 000H, 00FH, 0FFH, 0FFH, 0FFH, 080H, 000H, 000H, 030H, 081H, 0B0H, 000H, 000H, 030H, 08CH
  91. DB   000H, 000H, 00FH, 0FFH, 0FFH, 0FFH, 0E0H, 000H, 000H, 070H, 080H, 090H, 008H, 020H, 010H, 086H
  92. DB   000H, 000H, 003H, 0FFH, 0FFH, 0FFH, 0FCH, 000H, 000H, 060H, 0EEH, 097H, 008H, 020H, 090H, 086H
  93. DB   000H, 000H, 001H, 0FFH, 0FFH, 0FFH, 0FFH, 000H, 000H, 060H, 0AAH, 095H, 008H, 02EH, 0D7H, 086H
  94. DB   000H, 000H, 000H, 0FFH, 0FFH, 0FFH, 0E7H, 080H, 000H, 060H, 0AEH, 095H, 009H, 02AH, 094H, 086H
  95. DB   000H, 000H, 000H, 03FH, 0FFH, 007H, 0E1H, 0C0H, 000H, 020H, 0A8H, 095H, 005H, 04AH, 094H, 086H
  96. DB   000H, 000H, 000H, 00FH, 0FEH, 000H, 0E0H, 0E0H, 000H, 030H, 0AEH, 097H, 002H, 08EH, 097H, 086H
  97. DB   000H, 000H, 000H, 01FH, 0FCH, 000H, 070H, 070H, 000H, 038H, 000H, 000H, 000H, 000H, 000H, 006H
  98. DB   000H, 03FH, 080H, 03FH, 0F8H, 000H, 010H, 038H, 000H, 018H, 000H, 000H, 000H, 000H, 000H, 00CH
  99. DB   000H, 0FFH, 0E0H, 07FH, 0F8H, 000H, 000H, 03CH, 000H, 00CH, 000H, 000H, 000H, 000H, 000H, 01CH
  100. DB   003H, 0FFH, 0F8H, 07FH, 0F0H, 000H, 001H, 09CH, 00FH, 086H, 000H, 000H, 000H, 000H, 000H, 070H
  101. DB   007H, 0FFH, 0FCH, 0FFH, 0F0H, 000H, 0E3H, 0CEH, 01FH, 0C7H, 000H, 000H, 000H, 000H, 01FH, 0C0H
  102. DB   00FH, 0FFH, 0FFH, 0FFH, 0F0H, 001H, 0F3H, 0EEH, 03FH, 0E3H, 000H, 000H, 001H, 0FFH, 0FFH, 080H
  103. DB   01FH, 0FFH, 0FFH, 0FFH, 0F0H, 001H, 0FBH, 0F6H, 07FH, 0F1H, 080H, 000H, 07FH, 0FFH, 0E0H, 000H
  104. DB   01FH, 0FFH, 0FFH, 0FFH, 0F0H, 001H, 0FDH, 0F7H, 07FH, 0F1H, 080H, 000H, 0FEH, 000H, 000H, 000H
  105. DB   03FH, 0FFH, 0FFH, 0FFH, 0F8H, 000H, 0FFH, 0FFH, 07FH, 0F1H, 080H, 003H, 0C0H, 000H, 000H, 000H
  106. DB   03FH, 0FFH, 0FFH, 0FFH, 0F8H, 000H, 0FEH, 01BH, 07FH, 0F1H, 080H, 007H, 080H, 000H, 000H, 000H
  107. DB   03FH, 0FFH, 0FFH, 0FFH, 0F8H, 000H, 00EH, 07BH, 0FFH, 0F1H, 080H, 00EH, 000H, 000H, 000H, 000H
  108. DB   03FH, 0FFH, 0FFH, 0FFH, 0FCH, 000H, 01FH, 07FH, 0FFH, 0F1H, 080H, 01CH, 000H, 000H, 000H, 000H
  109. DB   03FH, 0FFH, 0FFH, 0FFH, 0FCH, 000H, 03FH, 07FH, 0FFH, 0E1H, 080H, 018H, 000H, 000H, 000H, 000H
  110. DB   03FH, 0FFH, 0FFH, 0FFH, 0FEH, 000H, 03FH, 07CH, 0FFH, 0C1H, 080H, 070H, 000H, 000H, 000H, 000H
  111. DB   03FH, 0FFH, 0FFH, 0FFH, 0FFH, 000H, 01FH, 038H, 07FH, 081H, 000H, 0E0H, 000H, 000H, 000H, 000H
  112. DB   03FH, 0FFH, 0FFH, 0FFH, 0FFH, 080H, 00FH, 070H, 03FH, 083H, 001H, 0C0H, 000H, 000H, 000H, 000H
  113. DB   03FH, 0FFH, 0FFH, 0FFH, 0FFH, 0C0H, 006H, 040H, 01DH, 086H, 007H, 000H, 000H, 000H, 000H, 000H
  114. DB   01FH, 0FFH, 0FFH, 0FFH, 0FFH, 0E0H, 000H, 000H, 001H, 084H, 01CH, 000H, 000H, 000H, 000H, 000H
  115. DB   01FH, 0FFH, 0FFH, 0FEH, 000H, 020H, 000H, 000H, 003H, 08CH, 070H, 000H, 000H, 000H, 000H, 000H
  116. DB   01FH, 0FFH, 0FFH, 0F8H, 000H, 000H, 000H, 000H, 003H, 09BH, 0C0H, 000H, 000H, 000H, 000H, 000H
  117. DB   00FH, 0FFH, 0FFH, 0F0H, 03CH, 000H, 000H, 000H, 007H, 01EH, 000H, 000H, 000H, 000H, 000H, 000H
  118. DB   007H, 0FFH, 0FDH, 0E0H, 07CH, 000H, 000H, 000H, 007H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  119. DB   003H, 0FFH, 0F8H, 0E0H, 0E0H, 000H, 000H, 000H, 00EH, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  120. DB   000H, 0FFH, 0E0H, 0E0H, 0F0H, 000H, 000H, 000H, 01CH, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  121. DB   000H, 03FH, 080H, 061H, 0BCH, 000H, 000H, 000H, 038H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  122. DB   000H, 000H, 000H, 061H, 09EH, 000H, 000H, 000H, 070H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  123. DB   000H, 000H, 000H, 030H, 01FH, 080H, 000H, 001H, 0E0H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  124. DB   000H, 000H, 000H, 030H, 00FH, 0F0H, 000H, 007H, 0C0H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  125. DB   000H, 000H, 000H, 018H, 00FH, 0FFH, 0E7H, 0FFH, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  126. DB   000H, 000H, 000H, 00CH, 01FH, 0FFH, 0FFH, 0FCH, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  127. DB   000H, 000H, 000H, 006H, 00FH, 0FFH, 0FFH, 0E0H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  128. DB   000H, 000H, 000H, 003H, 0C7H, 0FFH, 0FEH, 0E0H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  129. DB   000H, 000H, 000H, 000H, 0F3H, 08FH, 0FDH, 0C0H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  130. DB   000H, 000H, 000H, 000H, 073H, 0C7H, 01FH, 080H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  131. DB   000H, 000H, 000H, 000H, 01FH, 0E3H, 07FH, 080H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  132. DB   000H, 000H, 000H, 000H, 00FH, 0FBH, 0FEH, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  133. DB   000H, 000H, 000H, 000H, 003H, 0FFH, 0FCH, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  134. DB   000H, 000H, 000H, 000H, 001H, 0FFH, 0F8H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  135. DB   000H, 000H, 000H, 000H, 000H, 07FH, 0E0H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H
  136. DB   000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H

  137. END
复制代码


所有资料51hei提供下载:
51单片机实现的12864图形点阵LCD控制器.rar (271.08 KB, 下载次数: 33)

评分

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

查看全部评分

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

使用道具 举报

沙发
ID:94449 发表于 2020-2-19 17:57 | 只看该作者
天天家里蹲,翻出个吃灰的12864,下楼主程序来点亮下,谢谢了。
回复

使用道具 举报

板凳
ID:333807 发表于 2020-2-21 09:57 | 只看该作者
下楼主程序来点亮下,谢谢了。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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