1. 钱柜娱乐官网
  2. 论坛
  3. 外包
  4. 下载
  5. Datasheet
  6. 公开课
  7. 更多

打印

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

[复制链接]
2503|30
跳转到指定楼层
楼主
 楼主 | 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. 应用运行效果


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);
  • }
  • 复制代码

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册 手机登录
    x
    沙发
    | 2017-12-26 12:41 | 只看该作者
    板凳
    | 2017-12-26 12:42 | 只看该作者
    用的串口的12232
    地板
    | 2017-12-26 16:09 | 只看该作者
    5
    | 2017-12-26 16:10 | 只看该作者
    现在有串口的TFT,显示内容更丰富。
    6
    | 2017-12-26 16:11 | 只看该作者
    给力的模块开发。
    7
    | 2017-12-26 16:11 | 只看该作者
    IO资源不丰富的芯片,楼主都设计了这么强大的功能
    8
    | 2017-12-26 16:12 | 只看该作者
    看成了1602,还想怎么能够显示汉字呢
    9
    | 2017-12-26 16:13 | 只看该作者
    显示模块简单很多。
    10
    | 2017-12-26 16:13 | 只看该作者
    LCD12232液晶模块的显示宽度有限。
    11
    | 2017-12-26 16:13 | 只看该作者
    期待其他的功能设计。
    12
    | 2017-12-26 16:13 | 只看该作者
    读写LCD的速度怎么样
    13
     楼主 | 2017-12-26 16:19 | 只看该作者
    lzbf 发表于 2017-12-26 16:10
    现在有串口的TFT,显示内容更丰富。

    推荐个型号,小弟玩玩。
    14
     楼主 | 2017-12-26 16:21 | 只看该作者
    lzbf 发表于 2017-12-26 16:13
    LCD12232液晶模块的显示宽度有限。

    对,每行最多只能显示7个半汉字
    如果不够,可以选择12864
    不过对于一般的单片机应用是可以的了
    主要是它带字库,用起来方便
    特别是做一些测试工作。
    15
     楼主 | 2017-12-26 16:22 | 只看该作者
    youtome 发表于 2017-12-26 16:13
    读写LCD的速度怎么样

    不快,但够了。
    16
     楼主 | 2017-12-26 16:22 | 只看该作者
    1988020566 发表于 2017-12-26 16:13
    显示模块简单很多。

    应该是驱动程序最简单的显示模块了。
    17
     楼主 | 2017-12-26 16:23 | 只看该作者
    youtome 发表于 2017-12-26 16:12
    看成了1602,还想怎么能够显示汉字呢

    哈哈哈哈,1602也能够显示汉字
    不过复杂些而已。
    18
     楼主 | 2017-12-26 17:04 | 只看该作者
    houjiakai 发表于 2017-12-26 16:11
    IO资源不丰富的芯片,楼主都设计了这么强大的功能

    嗯...一款功能比较全面的开发板即将要出来了。
    19
    | 2017-12-27 09:02 | 只看该作者
    路过,支持
    20
     楼主 | 2017-12-28 08:38 | 只看该作者

    Thank You 支持......
    扫描二维码,随时随地手机跟帖
    您需要登录后才可以回帖 登录 | 注册 手机登录
    本版积分规则

    快速回复

    您需要登录后才可以回帖
    登录 | 注册 手机登录
    高级模式

    论坛热帖

    1. N76E003学习点亮一个LED灯,可是就是不亮咋回事?
    2. 没有这么多money,我就不干,,,
    3. 为什么我给的脉冲驱动不了IRF840 MOS管?
    4. 问题求教
    5. 采用DSP的图像处理在车牌识别中的设计应用
    6. 三种破解MCU 技术
    7. MOS管一上电就烧
    8. DSP的光伏电池最大功率点跟踪系统
    9. 否是内置电容为外置晶振进行匹配?
    10. 我的年终终结(苦练十全武功)
    分享 快速回复 返回顶部 返回列表
    钱柜娱乐官网