【CC2530开发笔记01】带字库的LCD12232液晶模块应用开发

[复制链接]
7172|75
手机看帖
扫描二维码
随时随地手机跟帖
ohy3686|  楼主 | 2017-12-26 12:17 | 显示全部楼层 |阅读模式
本帖最后由 ohy3686 于 2017-12-26 12:18 编辑

【CC2530开发笔记01】带字库的LCD12232液晶模块的驱动实现与应用开发

1. 系统硬件连接
    CC2530与带字库的液晶模块LCD12232进行串行通信连接。
    P1_7-->CS片选信号,LCD的4脚,RS。
    P1_6-->CLK时钟信号,LCD的5脚,R/W
    P1_5-->SID数据信号,LCD的6脚,E

2. 应用运行效果
IMG_20171225_164258.jpg

3、具体开发笔记见附件。
4、如需驱动程序库文件,发邮件给我。
5、案例实现代码开源。
#include "ioCC2530.h"

/*===========引脚端口定义(移植时需要修改)=============*/
#define LCD_CS    P1_7
#define LCD_SCLK  P1_6
#define LCD_SID   P1_5
/*======================================================*/

/*==========================延时函数==========================*/
void delay_lcd(unsigned char time)
{
  while(time--);
}
/*========================发送字节函数========================*/
void SendByte_lcd(unsigned char data)
{
  LCD_CS = 1;
  LCD_SCLK = 0;
  for(unsigned char i=0; i<8; i++)
  {
    if(data & 0x80){
      LCD_SID = 1;
    }
    else {
      LCD_SID = 0;
    }
  data <<= 1;
  LCD_SCLK = 1;
  delay_lcd(50);
  LCD_SCLK = 0;
  }
  LCD_CS = 0;
}
/*========================发送命令函数========================*/
void SendCMD_lcd(unsigned char dat)
{
  SendByte_lcd(0xf8);
  SendByte_lcd(dat & 0xf0);
  SendByte_lcd((dat<<4)&0xf0);
}
/*========================发送数据函数========================*/
void SendDAT_lcd(unsigned char dat)
{
  SendByte_lcd(0xfa);
  SendByte_lcd(dat & 0xf0);
  SendByte_lcd((dat<<4)&0xf0);
}
/*=======================显示字符串函数=========================
参数1:字符串的起始地址(0x00忽略起始地址)
参数2:显示的字符串内容
===============================================================*/
void DisplayString(unsigned char addr,unsigned char *data)
{
  if(addr != 0x00)
  {
    SendCMD_lcd(addr);
  }
  while(*data != '\0')
  {
    SendDAT_lcd(*data);
    data++;
  }
}
/*=====================显示中文字符函数=========================
参数1:字符串的起始地址(0x00忽略起始地址)
参数2:显示的中文字符内容
参数3:显示的中文字符个数
===============================================================*/
void DisplayChinese(unsigned char addr,unsigned char *data, unsigned char num)
{
  unsigned char n;
  if(addr != 0x00)
  {
    SendCMD_lcd(addr);
  }
  for(n=0; n<num; n++)
  {
    SendDAT_lcd(*data);
    data++;
    SendDAT_lcd(*data);
    data++;
  }
}
/*=========================LCD清屏函数===========================*/
void Clear_lcd()
{
  SendCMD_lcd(0x01);
  delay_lcd(50);
}
/*=========================LCD初始化函数=========================*/
void Init_lcd()
{
  delay_lcd(100);
  //功能设置。基本指令集,一次送8位数据
  SendCMD_lcd(0x30);  
  delay_lcd(50);
  //显示字符,光标从左到右位移,DDRAM地址加1
  SendCMD_lcd(0x04);  
  delay_lcd(50);
  //显示设定。整体显示,不显示游标
  SendCMD_lcd(0x0c);  
  delay_lcd(50);
  //清零。将DDRAM填满20H清零,地址计数器AC恢复到00H
  SendCMD_lcd(0x01);  
  delay_lcd(50);
  //设定DDRAM地址计数器AC到00H,光标移到开头原点位置,不改变DARAM的内容
  SendCMD_lcd(0x02);  
  delay_lcd(50);
}
/*===========CC2530端口初始化函数(移植时需要修改)=============*/
void Init_Port_lcd()
{
  P1SEL &= ~0xe0;     //设置为通用I/O端口
  P1DIR |= 0xe0;      //将I/O端口设置为输出
}

void main()
{
  Init_Port_lcd();
  Init_lcd();
  
  SendCMD_lcd(0x80);
  DisplayChinese(0x00,"广职院",3);
  SendDAT_lcd('*');
  SendDAT_lcd('*');
  DisplayChinese(0x00,"欧浩源",3);
  
  DisplayString(0x91,"2017/12/31");

  while(1);
}

LCD液晶显示模块12232-12864开发笔记.pdf

267.81 KB

相关帖子

dirtwillfly| | 2017-12-26 12:41 | 显示全部楼层

使用特权

评论回复
dirtwillfly| | 2017-12-26 12:42 | 显示全部楼层
用的串口的12232

使用特权

评论回复
1988020566| | 2017-12-26 16:09 | 显示全部楼层

使用特权

评论回复
lzbf| | 2017-12-26 16:10 | 显示全部楼层
现在有串口的TFT,显示内容更丰富。

使用特权

评论回复
houjiakai| | 2017-12-26 16:11 | 显示全部楼层
给力的模块开发。

使用特权

评论回复
houjiakai| | 2017-12-26 16:11 | 显示全部楼层
IO资源不丰富的芯片,楼主都设计了这么强大的功能

使用特权

评论回复
youtome| | 2017-12-26 16:12 | 显示全部楼层
看成了1602,还想怎么能够显示汉字呢

使用特权

评论回复
1988020566| | 2017-12-26 16:13 | 显示全部楼层
显示模块简单很多。

使用特权

评论回复
lzbf| | 2017-12-26 16:13 | 显示全部楼层
LCD12232液晶模块的显示宽度有限。

使用特权

评论回复
houjiakai| | 2017-12-26 16:13 | 显示全部楼层
期待其他的功能设计。

使用特权

评论回复
youtome| | 2017-12-26 16:13 | 显示全部楼层
读写LCD的速度怎么样

使用特权

评论回复
ohy3686|  楼主 | 2017-12-26 16:19 | 显示全部楼层
lzbf 发表于 2017-12-26 16:10
现在有串口的TFT,显示内容更丰富。

推荐个型号,小弟玩玩。

使用特权

评论回复
ohy3686|  楼主 | 2017-12-26 16:21 | 显示全部楼层
lzbf 发表于 2017-12-26 16:13
LCD12232液晶模块的显示宽度有限。

对,每行最多只能显示7个半汉字
如果不够,可以选择12864
不过对于一般的单片机应用是可以的了
主要是它带字库,用起来方便
特别是做一些测试工作。

使用特权

评论回复
ohy3686|  楼主 | 2017-12-26 16:22 | 显示全部楼层
youtome 发表于 2017-12-26 16:13
读写LCD的速度怎么样

不快,但够了。

使用特权

评论回复
ohy3686|  楼主 | 2017-12-26 16:22 | 显示全部楼层
1988020566 发表于 2017-12-26 16:13
显示模块简单很多。

应该是驱动程序最简单的显示模块了。

使用特权

评论回复
ohy3686|  楼主 | 2017-12-26 16:23 | 显示全部楼层
youtome 发表于 2017-12-26 16:12
看成了1602,还想怎么能够显示汉字呢

哈哈哈哈,1602也能够显示汉字
不过复杂些而已。

使用特权

评论回复
ohy3686|  楼主 | 2017-12-26 17:04 | 显示全部楼层
houjiakai 发表于 2017-12-26 16:11
IO资源不丰富的芯片,楼主都设计了这么强大的功能

嗯...一款功能比较全面的开发板即将要出来了。

使用特权

评论回复
yzqok| | 2017-12-27 09:02 | 显示全部楼层
路过,支持

使用特权

评论回复
ohy3686|  楼主 | 2017-12-28 08:38 | 显示全部楼层

Thank You 支持......

使用特权

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

本版积分规则

个人签名:广东职业技术学院 欧浩源(ohy3686@foxmail.com)    [Zigbee技术&物联网应用] 群:168225322    [技术交流微信]:gzyohy (暗号:宝塔镇河妖)

322

主题

899

帖子

2579

粉丝