打印
[51单片机]

快速了解12864点阵液晶屏的使用方法(详细)

[复制链接]
1356|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tftlcd88|  楼主 | 2020-11-30 10:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

T12864C002是TRUSTYLCD.COM旗下目前使用率最高的一款COG结构的12864点阵液晶屏,其特点是质量可靠,功耗低,订货方便不停产,尺寸适中,可应用到多种行业设备上。现在就详细介绍这款产品的使用方法,让你能在最短的时间内搞定LCD液晶显屏能正常显示出文字和图片。(产品规格书及申请免费样品可联系18902455007微信同号)。
点阵数量: 128(w)*64(h)
显示模式: FSTN正显(白底黑字), 或STN正显(黄绿底黑字),或STN负显(蓝底白字)。
背光模式: LED白色(或其他色),背光结构有支架背光或平面背光(配套铁框使用)。
控制芯片:ST7565R。
通讯接口:FPC-36PIN焊接,可SPI串口或8位并口通讯。
工作电压:3.3V
工作温度: -20℃~70℃
外形尺寸: 69.0mm*46.0mm*2.8mm(不含背光时的尺寸)
视域尺寸: 65.5mm*38.0mm
单点大小: 0.45mm*0.49mm



Pin No.        Pin Name        Function
1、2、24、31、34、36        NC        空脚
3        /CS1        Chip selection input                片选
4        /RES        Rester                          复位
5        A0        Data/Command control             选择指令或数据
6        /WR        Write (/WR ) control signal input.       写
7        /RD        Read (/RD ) control signal input.       读
8~15        DB0-DB7        8bit Date bus                      数据
16        VDD        Power supply voltage (Positive)      电源3~3.3V
17        VSS        Negative power supply,0V           地
18        VOUT        positive voltage supply pin of the chip.  升压输出,对地接电容
19~23        C3+,C1-,C1+,C2+,C2-        When internal DC-DC voltage converter is used, external capacitor is connected between these pins.       升压电路接电容
25~29        V1,V2,V3,V4,V0        LCD driving voltages.                      分压电路
30        VR        Output voltage regulator terminal.  外部调对比度接电阻位
32        C86        MPU interface selection pin        选择8080或6800时序
33        P/S        Parallel data input/serial data input switch terminal 选择并口或串口
35        IRS        This terminal selects the resistors for the V0 voltage level adjustment.  选择内部调对比度或外部调比比度

接口定义说明:
了解了显示屏的基本参数及接口定义后,
首先设计硬件电路,这款LCD的硬件部份比较简单,按上图设计好PCB电路图,外围只需外加9颗无极性的1Uf/16V电容即可,这里注意一定要用无极性的,以免方向搞错造成损坏,耐压在16V以上(因为液晶内部升压后会到达13.5V左右,所以最低要耐压16V的才行),液晶屏的VDD供电电压是3.3V,在2.7V~3.3V之间的电压都可以(电压不同可能对比度需要软件调节一下),如果必需要用5V供电,那VDD可以接一个AMS1117-3.3降压三极管(5V降到3.3V),这仅仅是VDD降压到了3.3V,其他信号线还是5V也是不行的,这里有两种方法可以选用,最简单的是信号线上串一个1K的电阻,这样可以降低一点电压,不过这种信号线电流很小,串了电阻也就对IC起到了一定的保护作用,另一种就是用降压芯片降压到3.3V,这种成本较高一点,但是可靠性也更强。接下来就要确定好是选用8位并口通讯还是SPI串口通讯了,不管用哪一种接口,对于128*64点阵来讲,显示的速度要感受上不是很明显,除非要求很高的产品,一般产品均可以选用SPI串口,这样可以选用IO口较少的单片机,可以减少整体成本。在使用SPI串口时,其他不需要用到的PIN脚统一接到GND上,这样显示会更稳定。
如果觉得自己设计PCB太麻烦,也可以向LCD厂家(www.trustylcd.com)要求提供带PCB板的液晶模组,这样开发样机会更节省时间,质量也可靠。



硬件做好后,那就写程序调试显示了,下面以51单片机为基础介绍一下编写显示程序:

指令表:
No.        Instrctions        Code        Function
                A0        /RD        /WR        D7        D6        D5        D4        D3        D2        D1        D0       
1        Display ON/OFF        0        1        0        1        0        1        0        1        1        1        DON        DON=0,display off
DON=1,display on
2        Display start line set        0        1        0        0        1        Display start address        Set the display RAM display start line address
3        Set Page Address        0        1        0        1        0        1        1        Page  address        Set the display RAM Page address
4        Ser Column Address
(Upper-4 bits)        0        1        0        0        0        0        1        Col. Add        Set the upper-4-bit of column address counter
        Ser Column Address
(Lower-4 bits)        0        1        0        0        0        0        0        Col. Add        Set the low-4-bit of column address counter
5        Read Staus        0        0        1        Status        0        0        0        0        Read the status data
6        Write Display Data        1        1        0        Write Data        Write data into the display RAM
7        Read Display Data        1        0        1        Read Data        Read data from the display RAM
8        ADC Select        0        1        0        1        0        1        0        0        0        0        ADC        Set the display RAM address SEG output
Correspondence
ADC = 0,Normal. ADC = 1,Reverse
9        Normal/Reverse Display        0        1        0        1        0        1        0        0        1        1        REV        REV = 0, Normal
REV = 1, Reverse
10        Entire Display ON/OFF        0        1        0        1        0        1        0        0        1        0        EON        EON = 0, Normal
EON = 1, Entire display ON
11        Set LCD Bias        0        1        0        1        0        1        0        0        0        1        BIAS        Bias = 0, 1/9 Bias
Bias = 1, 1/7 Bias
12        Set Read-Modify-Write        0        1        0        1        1        1        0        0        0        0        0        Enter the “Read-Modify-Write” mode
13        Reset Read-Modify-Write        0        1        0        1        1        1        0        1        1        1        0        Clear the “Read-Modify-Write” mode
14        Reset        0        1        0        1        1        1        0        0        0        1        0        Resets the LCD module
15        SHL S elect        0        1        0        1        1        0        0        SHL        *        *        *        Set the COM scanning direction
SHL = 0, Normal
SHL = 1, Flipped in y-direction
* = don’t care terms
16        Power Control Set        0        1        0        0        0        1        0        1        VC        VR        VF        Set the power circuit operation mode
VF : LCD  Supply Voltage Follower
VR : LCD  Supply Voltage Regulator
VF : LCD  Supply Voltage Converter
(1 = ON, 0 = OFF)
17        Regulator Resistor Select        0        1        0        0        0        1        0        0        Ratio        Set the built-in resistor ratio (Rb/Ra)
18        Electronic volume mode set        0        1        0        1        0        0        0        0        0        0        1        Set reference voltage mode
        Electronic volume register set        0        1        0        *        *        Electronic
Control value        Set reference voltage register
19        Power Save                -        -        -        -        -        -        -        -        -        -        Compound instruction
Display OFF + Entire Display ON
20        NOP        0        1        0        1        1        1        0        0        0        1        1        Non-operation command






实测显示效果

下面是具体显示程序(SPI串口,实测可正显示显示)
#include <reg51.h>
#include <intrins.h>
#include <absacc.h>
#define uchar unsigned char
#define  uint unsigned int
                                                                                          
sbit        R_S=        P3^5;//指令/数据选择信号
sbit        RES=        P3^4;//复位信号
sbit        SCK= P1^6;
sbit        SDA=P1^7;
sbit CS1=P3^7;//片选
bit Flage1=0;

void LcdInit();       
void Clear();       
void Delayms(uint ms);       
void Comwrite(uchar cmd);       
void Datwrite(uchar dat);       

void Setadd(uchar xl,uchar yl);
void disp_str(unsigned char *p,unsigned char uCol,uPage);       
unsigned char CurOffset;
#define ASC_CHR_WIDTH        8
#define ASC_CHR_HEIGHT        12

typedef struct typFNT_ASC16       
{
    char Index[1];
    char Msk[16];
};

code struct typFNT_ASC16  ASC_16[] =
{       
"1",0x00,0x00,0x08,0x08,0xFC,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x07,0x04,0x04,0x00,
"2",0x00,0x00,0x08,0x04,0x84,0x44,0x38,0x00,0x00,0x00,0x06,0x05,0x04,0x04,0x04,0x00,
"3",0x00,0x00,0x08,0x04,0x44,0x44,0xB8,0x00,0x00,0x00,0x02,0x04,0x04,0x04,0x03,0x00,
"4",0x00,0x00,0x80,0x60,0x18,0xFC,0x00,0x00,0x00,0x00,0x01,0x01,0x05,0x07,0x05,0x00,
"5",0x00,0x00,0x7C,0x44,0x44,0x44,0x84,0x00,0x00,0x00,0x02,0x04,0x04,0x04,0x03,0x00,
"6",0x00,0x00,0xF0,0x48,0x44,0x44,0x80,0x00,0x00,0x00,0x03,0x04,0x04,0x04,0x03,0x00,
"7",0x00,0x00,0x0C,0x04,0x84,0x64,0x1C,0x00,0x00,0x00,0x00,0x06,0x01,0x00,0x00,0x00,
"8",0x00,0x00,0xB8,0x44,0x44,0x44,0xB8,0x00,0x00,0x00,0x03,0x04,0x04,0x04,0x03,0x00,
"9",0x00,0x00,0x38,0x44,0x44,0x44,0xF8,0x00,0x00,0x00,0x00,0x04,0x04,0x02,0x01,0x00,
"0",0x00,0x00,0xF8,0x04,0x04,0x04,0xF8,0x00,0x00,0x00,0x03,0x04,0x04,0x04,0x03,0x00,
};


#define ASC_HZ_WIDTH        16
typedef struct typFNT_GB16       
{
        char Index[2];
        char Msk[32];
};

uchar code Hanzi[]={
/*--  调入了一幅图像:C:\Documents and Settings\Administrator\桌面\12864.bmp  --*/
/*--  宽度x高度=128x64  用取模软件取模,取模方式为:纵向取模,字节倒序--*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0xC0,0xC0,0xE0,0xE0,0xE0,0xF0,0xF0,
0xF8,0xF8,0xF8,0xFC,0xFC,0xFE,0xFE,0xFE,0xFC,0xF8,0xE0,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x03,0x06,0x0C,0x18,0x30,0x60,0xC0,0x80,0x00,
0x00,0x00,0x03,0x1E,0xF8,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x07,0xFE,0xE0,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x80,0x80,0x80,0xC0,0xC0,0xE0,0xE0,0xF0,0xF0,0x78,0xF8,0xF8,0xFC,
0xFC,0xFC,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xF8,0xE0,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x61,0x23,
0x3E,0x1C,0x10,0x00,0x00,0x07,0x06,0x06,0x06,0x02,0x02,0x03,0x03,0x03,0x03,0x01,
0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x03,0x03,0x03,0x02,0x06,0x06,0x0E,
0x0C,0x1C,0x18,0x18,0x30,0x60,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x01,0x03,
0x03,0x07,0x0F,0x0F,0x1F,0x1F,0x3F,0x3F,0x3F,0x3F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,
0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,
0x3E,0xF8,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0x38,0x1C,0x0E,0x07,0x83,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x40,0xF0,0xC0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x07,0x0F,0x3C,0xF0,0xC0,0x00,0x00,0x00,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x0F,0x03,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x70,0x30,0x38,0x38,0x18,0x1C,0x1C,
0x1C,0x0E,0x0F,0x3E,0xFE,0x86,0x06,0x07,0x07,0x03,0x02,0x70,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xFC,0x3F,0x03,0xC0,0x00,0xE0,0x78,0x8E,0xDF,0x6E,0x68,0x6C,0x6C,
0xFC,0x8C,0x84,0x4C,0x24,0x04,0x04,0x07,0x04,0x07,0x07,0x04,0x64,0xC4,0xCC,0x74,
0x34,0x34,0x34,0x34,0x7C,0xE4,0xC4,0x47,0x67,0x0C,0xFC,0xFC,0x00,0x00,0x00,0xFF,
0x00,0x00,0x00,0x00,0x80,0x7E,0x00,0x00,0x00,0x00,0x00,0x87,0xFF,0x7E,0x00,0x00,
0xAF,0xFF,0xFF,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xC0,
0xC0,0xE0,0x70,0x70,0x70,0x38,0x3C,0x1C,0x1C,0x0E,0x0E,0x07,0x07,0x07,0x03,0x03,
0x03,0x0C,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x1E,0xC0,0x00,0x00,0x00,0x00,0xC0,
0x60,0x20,0x00,0x00,0x07,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,
0x00,0x00,0x00,0x3F,0xF8,0x8E,0x78,0x8F,0xFF,0xA0,0x73,0xF0,0x00,0x00,0x00,0x00,
0x00,0x03,0x07,0x00,0x00,0x00,0x00,0x04,0xC4,0x02,0x00,0x00,0x00,0x03,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xAE,0x10,0x00,0xFF,0xFF,0x00,0x00,0xE0,0x3F,
0x00,0x80,0xE0,0x3C,0x07,0x00,0x00,0x80,0x40,0x20,0x18,0x07,0x03,0x00,0x00,0x00,
0xFF,0xFF,0xFF,0xFF,0x78,0xF8,0x38,0x1C,0x1C,0x0E,0x0E,0x07,0x07,0x03,0x03,0x01,
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x87,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xA6,0x08,0x30,0x40,0x47,
0x80,0x80,0x00,0x80,0xF0,0x3F,0x03,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x03,0x0E,0x1B,0x1C,0x73,0xEC,0xF8,0xF0,0x30,0x60,0x60,
0x40,0xC0,0xC0,0x80,0x80,0x80,0x80,0x88,0x93,0x80,0x90,0x80,0x88,0x84,0x84,0x80,
0x80,0x80,0xC0,0xC0,0x40,0x40,0x60,0x20,0x30,0x30,0x3F,0xF7,0xF0,0xFE,0x5B,0x2C,
0x36,0x11,0x18,0x08,0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x13,0x1F,0x18,0x31,0x26,0x38,0x23,0x2C,0x30,0x60,0xC0,0x80,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x07,0x00,0x00,0x03,0x0C,0x00,0x80,
0x40,0x30,0x0C,0xC3,0xC0,0xC0,0xC0,0xE0,0x20,0x00,0x00,0x80,0xC0,0xC0,0x60,0x30,
0x18,0x1C,0x0F,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x81,0xF1,0x39,0x1D,0xE5,0x7F,0x7F,0xFF,0xBC,0x58,0x7D,0xD7,
0xFC,0x9C,0xF8,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x86,0x86,
0x84,0x84,0xFC,0xB8,0xF8,0x78,0xF8,0xD8,0x78,0x38,0xFC,0x54,0xCA,0x7A,0xF9,0xF8,
0xF8,0xF8,0xFC,0xFC,0xFD,0x7D,0xFD,0xFE,0xFA,0xDF,0xFF,0xE1,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7E,0x7F,0x01,0x40,0x4F,0x67,0x33,0x11,0x31,0x38,0x1C,0x34,0x22,
0x65,0x47,0x00,0x1F,0x7E,0x7C,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

void Display(unsigned char sda,unsigned char sda1)
{
   unsigned char  i,j,k=0;
   for(i=0;i<8;i++)   
    {
     Comwrite(0xb0+k);           
         Comwrite(0x10);
         Comwrite(0x01);  //设置起始例,0x00=SEG0,0x01=SEG1          
       for(j=0;j<64;j++)
          { Datwrite(sda);
            Datwrite(sda1);
          }
    k++;
    }
}

void Hanzi_Disp(void)
{
   unsigned char  i,j,k=0;
   for(i=0;i<8;i++)   
    {
     Comwrite(0xb0+k);           
         Comwrite(0x10);
         Comwrite(0x01);        //0x00=seg0,0x01=seg1  
       for(j=0;j<128;j++)
          {Datwrite(Hanzi[i*128+j]);
          }         
    k++;
    }
}     

void main()
{       
   P1M1=0x00;
   P1M0=0xff;
   P3M1=0x00;
   P3M0=0xff;
   CLK_DIV=0x02;
   LcdInit();
   while(1)
        {
          Clear();
      Display(0xff,0xff);
          Delayms(5000);
      Display(0x55,0xaa);
          Delayms(5000);
      Display(0x00,0xff);
          Delayms(5000);
      Display(0xaa,0xaa);
          Delayms(5000);
      Display(0x55,0x55);
          Delayms(5000);          
         Hanzi_Disp();
         Delayms(5000);
         Delayms(5000);
        }       
}

void Delayms(uint ms)
{       
        uchar j;
        while(ms--)
          for(j=0;j<=20;j++);                              
}               
       
void Comwrite(uchar cmd)
{
    uchar data i,j;
            CS1=0;
            R_S=0;  
        SCK=1;
        for(i=0;i<8;i++)
            {
                 j=cmd;
                 SCK=0;
                 SDA=cmd&0x80;
         SCK=1;             
                 cmd=j<<1;
                }
            CS1=1;
                R_S=1;
}

void Datwrite(uchar dat)       
{                                                       
    uchar data i,j;
            CS1=0;
            R_S=1;  
        SCK=1;
        for(i=0;i<8;i++)
            {
                 j=dat;
                 SCK=0;
                 SDA=dat&0x80;
         SCK=1;             
                 dat=j<<1;
                }
            CS1=1;
                R_S=0;
}

void Clear()
{
   unsigned char  i,j,m=0;
   for(i=0;i<8;i++)   
    {
     Setadd(0,i);                     
     for(j=0;j<128;j++)
          Datwrite(0x00);
     }
}

void Setadd(uchar xl,uchar yl)
{    uchar i;
     i=(xl+4)&0x0f;    //i=(xl+0)&0x0f;(SEG0~SEG127)  // i=(xl+4)&0x0f;(SEG4~SEG131)
     xl=(xl>>4)+0x10;

     Comwrite(0xb0+yl);           
         Comwrite(xl);
         Comwrite(i);       
}

void LcdInit()
{
     RES=1;
     Delayms(50);
     RES=0;
     Delayms(50);
     RES=1;
     Delayms(50);

    Comwrite(0xE2);          //Software Reset
     Delayms(50);
     Comwrite(0xA2);          //Set Bias     0xA3 1/7bias,  0xA2 1/9 bias
     Comwrite(0xA0);          //Segment Direction Select       bit0=0,normal ,=1,reverse
     Comwrite(0xC8);          //Common Direction Select        bit3=0,normal ,=1,revese
     Comwrite(0xA8);
     Comwrite(0xA6);
     Comwrite(0xA4);
     Comwrite(0x25);          //调电压 对比度  Set internal rb/ra        0x24
     Comwrite(0x81);          //Set Contrast     
     Comwrite(0x1a);          //调电压 对比度 1a>1f
     Comwrite(0x2F);          //Power Control Set
     Delayms(5000);                        //delay 40mS
   
     Comwrite(0x60);          //Set Display Start Line   
     Comwrite(0xAF);          //Display ON

}       

void disp_ch(unsigned char c,uCol,uPage)
{
        unsigned char k,j,ch_w;
        unsigned char width;
        unsigned char len;

        len=sizeof(ASC_16)/sizeof(ASC_16[0]);
        for(k=0;k<len;k++)
        {
                if(c == ASC_16[k].Index[0] ) break;
        }
        if(k<len)
        {
               
                if(c=='-'||c==':')
                        width=ASC_CHR_WIDTH-2;
                else if(c=='|')
                        width=ASC_HZ_WIDTH-ASC_CHR_WIDTH;
                else
                        width=ASC_CHR_WIDTH;
               
                   Setadd(uCol,uPage);
                        for(j=0;j<width;j++)
                        {
                                ch_w=ASC_16[k].Msk[j];                               
                                Datwrite(ch_w);
                        }

                        Setadd(uCol,uPage+1);
                        for(j=0;j<width;j++)
                        {
                                ch_w=ASC_16[k].Msk[ASC_CHR_WIDTH+j];
                                Datwrite(ch_w);
                        }               
        }
}

void disp_str(unsigned char *p,unsigned char uCol,uPage)
{
        unsigned char i=0;
        while(p[i]>0)
        {
                if(p[i] < 128)
                {       
                        disp_ch(p[i],uCol,uPage);
            uCol+=8;
                }
                if(Flage1==1) Delayms(200);
                i++;
        }
}

//如有不明可联系18902455007微信号同。

使用特权

评论回复

相关帖子

沙发
lgwd| | 2020-11-30 14:09 | 只看该作者
建议真不要在这类液晶屏上下功夫。目前800×480分辨率的4寸屏不超过60元。液晶屏的程序一般不通用。在低性价比的屏上花费力气不如学习性价比更高的屏的程序。

使用特权

评论回复
板凳
tftlcd88|  楼主 | 2020-12-2 15:51 | 只看该作者
lgwd 发表于 2020-11-30 14:09
建议真不要在这类液晶屏上下功夫。目前800×480分辨率的4寸屏不超过60元。液晶屏的程序一般不通用。在低性 ...

目前彩屏货源紧张

使用特权

评论回复
地板
xyz549040622| | 2020-12-3 19:24 | 只看该作者
lgwd 发表于 2020-11-30 14:09
建议真不要在这类液晶屏上下功夫。目前800×480分辨率的4寸屏不超过60元。液晶屏的程序一般不通用。在低性 ...

要看什么场合了吧,在有些场合,还真用不到大屏,而且LCD屏的低温性应该是比TFT屏好的。不过这种12864确实很贵的。

使用特权

评论回复
5
想跳水的朱| | 2020-12-29 14:33 | 只看该作者
驱动IC和分辨率一样的话,程序驱动基本也一样,另外再调整下接口方式和对比度参数就可以了, 这种12864用ST7565的非常通用,另外驱动IC是UC1601的程序也是通用的,他们也都是兼容早期日本的一些驱动IC;不过用瑞佑的RA8816就不太一样,瑞佑RAIO的有带中文字库,指令集也完全不同。

使用特权

评论回复
6
lgwd| | 2020-12-29 17:19 | 只看该作者
现在各种屏很多,驱动芯片完全不同。使用各类屏都要针对各自的驱动芯片,特别是高分辨率的屏。

使用特权

评论回复
7
qiang7260| | 2020-12-30 21:04 | 只看该作者
谢谢分享,请问该模式下怎么实现画水平/垂直线段?

使用特权

评论回复
8
lgwd| | 2020-12-31 15:01 | 只看该作者
每种屏厂家都提供了配套的测试层序包,先通过厂家程序学习。最基本的写入和读出程序,还有画点、画线、画圆、区域填充子程序等。在读懂和熟悉的基础上,尝试修改和编制自己的功能模块。一些分辨率较高和功能强大的高分屏,屏的初始化程序(主要就是写寄存器、写参数等),可能有大几十条。最好使用厂家提供的初始化程序,芯片手册上没有这些初始化指令的详细说明,靠自己摸索几乎不可能。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝