运动控制器21:12864T2液晶的SPI控制

SPI-12864液晶简介

控制器项目因为用于低端流水线上,市面上的同款产品用到的也是小型液晶显示屏,经查后选用的是TX_12864液晶模块,该模块的参数列表如下:
手册的链接如下TX12864-T2手册:

  1. 低功耗:5 - 100mW(不带背光5mW,带背光不大于100mW);
  • 128*64 点阵单色图片;
  • 可选用1616 点阵或其他点阵的图片来自编汉字,按照1616 点阵汉字来计算可显示8字/行4 行。按照1212 点阵汉字来计算可显示10 字/行*4 行。
  1. 指令功能强:可组合成各种输入、显示、移位方式以满足不同的要求;
  2. 接口简单方便:可采用4 线SPI 串行接口。
序号 引脚名称 功能
1 ROM_IN 字库芯片用
2 ROM_OUT 字库芯片用
3 ROM_SCK 字库芯片用
4 ROM_CS 字库芯片用
5 LEDA0
6 VSS GND
7 VDD 3.3V
8 SCK SPI
9 SDA SPI
10 RS 数据/指令
11 RESET 复位
12 CS CS

TX_12864内部集成了一个UC1701X的芯片,此芯片功耗低,可以通过SPI进行通信。可显示8字4行的汉字(16*16)。
引脚的定义如下:

序号 引脚名称 功能
1 ROM_IN 字库芯片用
2 ROM_OUT 字库芯片用
3 ROM_SCK 字库芯片用
4 ROM_CS 字库芯片用
5 LEDA0
6 VSS GND
7 VDD 3.3V
8 SCK SPI
9 SDA SPI
10 RS 数据/指令
11 RESET 复位
12 CS CS

字库芯片价格约在1.2元,JLC价格在1.77元,产品的型号为16S1Y,由高通生产,数据手册的链接如下:
16S1Y数据手册

UC1701X通信的时序如下:


1X.png

STM32的SPI相关库函数

初始化配置

uint16_t  SPI_BaudRatePrescaler //波特率分频,SPI模块的最大速度为36M,SPI_BaudRatePrescaler_4,液晶的SPI支持60ns,也就是16M,我们设置为9M
uint16_t  SPI_CPHA  //SPI_CPHA_2Edge
uint16_t  SPI_CPOL  //待机为高电平SPI_CPOL_High
uint16_t  SPI_CRCPolynomial //默认为7,我们不用,可以不设置
uint16_t  SPI_DataSize //数据大小,我们这里选8位SPI_DataSize_8b
uint16_t  SPI_Direction  //方向一共有四种模式,我们这里用到了SPI_Direction_2Lines_FullDuplex,也就是全双工通信的模式
uint16_t  SPI_FirstBit  //液晶为高位在前SPI_FirstBit_MSB
uint16_t  SPI_Mode //两种模式,主机和从机,我们这里选SPI_Mode_Master
uint16_t  SPI_NSS  //不使用SPI_NSS_Soft

这样,我们的初始化函数如下:

void LCD_GPIOInit(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ,ENABLE);
    
    //SCK 
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;   
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
    GPIO_Init(GPIOA,&GPIO_InitStructure);
    
    //SDA
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;   
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
    GPIO_Init(GPIOA,&GPIO_InitStructure);   
    
    //普通输出CS
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;  
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  
  GPIO_Init(GPIOA, &GPIO_InitStructure); 
}

void SPI1_Init(void)
{
    SPI_InitTypeDef SPI_InitStucture;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);
    
    SPI_InitStucture.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_4;
    SPI_InitStucture.SPI_CPHA=SPI_CPHA_2Edge;
    SPI_InitStucture.SPI_CPOL=SPI_CPOL_High;
    SPI_InitStucture.SPI_CRCPolynomial=7;
    SPI_InitStucture.SPI_DataSize=SPI_DataSize_8b;
    SPI_InitStucture.SPI_Direction=SPI_Direction_2Lines_FullDuplex;
    SPI_InitStucture.SPI_FirstBit=SPI_FirstBit_MSB;
    SPI_InitStucture.SPI_Mode=SPI_Mode_Master;
    SPI_InitStucture.SPI_NSS=SPI_NSS_Soft;
    SPI_Init(SPI1,&SPI_InitStucture);
    
    SPI_Cmd(SPI1,ENABLE);
}

这样,发送命令和数据的函数如下,我们按照手册的内容进行初始化配置后,液晶开始显示


void TransCommand(uint8_t command)
{
    GPIO_ResetBits(GPIOA,GPIO_Pin_3);
    SPI_I2S_SendData(SPI1,command);
    while(!SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE));
}   

void TransData(uint8_t data)
{
    GPIO_SetBits(GPIOA,GPIO_Pin_3);
    SPI_I2S_SendData(SPI1,data);
    while(!SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE));
}


void LCD_Reset(void)
{
    GPIO_ResetBits(GPIOA,GPIO_Pin_4);
    TransCommand(RESET);
    TransCommand(PWR1);
    TransCommand(PWR2);
    TransCommand(PWR3); 
    
    TransCommand(0X23);//调节对比度,可选0x20~0x27
    TransCommand(0X81);//调节对比度
    TransCommand(0x28);//可选0x00~0x3f
    
    TransCommand(SETBIAS);//常规操作模式
    TransCommand(LINEMODE);
    TransCommand(ROWMODE);
    TransCommand(SETBIAS);
    TransCommand(FIRSTLINE);  //第一行开始显示
    TransCommand(LCDON);  //开启显示
    
    GPIO_SetBits(GPIOA,GPIO_Pin_4); 
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容

  • SPI通信实验 SPI简介 串行外设接口(Serial Peripheral Interface Bus,SPI)...
    btskyrmb阅读 9,412评论 1 12
  • 我们需要加工轨迹时,从U盘中读取NC的数据来进行执行,NC为数控的简称,里面保存的是G代码。G代码是数控程序中的指...
    吴松乾阅读 1,396评论 0 0
  • 之前写了一篇图像的发展,因为简书app的bug导致了全篇文章尽毁。隔了两天还是把内容写上来。个人理解能力有限,受师...
    Zszen阅读 1,116评论 0 51
  • W25X16的硬件连接 NC文件可以保存在USB盘中,也可以保存在FLASH芯片中,我们可以通过上位机导入NC文件...
    吴松乾阅读 1,106评论 0 0
  • 又到深夜,这样安静的时间,说一说我一直 想说却一直不敢说的话题。 从互联网插手金融界以后,一直以来传统金融一直没有...
    张大侠丶阅读 137评论 0 0