找回密码
 立即注册

QQ登录

只需一步,快速开始

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

STM32使用串行模式驱动LCD12864源程序

[复制链接]
跳转到指定楼层
楼主
  LCD12864支持两种模式驱动,分别是并行模式和串行模式,通过PSB引脚进行选择模式,并行数据传输速度快,但是占用引脚多,反之串行模式,传输速度相对并行模式而言比较慢,但是省引脚。
串行模式驱动LCD12864
说明:
GND——GND
VCC——VCC(5V or 3.3V)
V0 ——空(或者接一个可变电阻到VCC)
RS ——接PB14 RS = 0 命令  RS = 1 数据
RW ——接PB13 RW = 0 写   RW = 1 读
E  ——接PB15
DB0-DB7 ——空
PSB——接GND,PSB = 0 串行模式  PSB = 1 并行模式
RST——接PB12
BLA——VCC(5V or 3.3V)
BLK——接GND
剩余引脚不接,留空

注意:ST7920在PSB为低电平时选择串行模式,在串行模式下,一个完整的串行传输周期由以下组成:
首先送入启动字节,送入连续的5个“1”来启动一个周期此时传输计数器被重置,并且串行传输被同步。紧接的两个位指定传输方向(RW,1是读数据,0是写数据)
以及传输性质(RS,0是命令寄存器,1是数据寄存器),最后第八位是固定的“0”
所以写指令之前,必须先传输 11111 000 (即0xF8)
写数据之前      必须先传输 11111 010 (即0xFA)

传输完启动字节后,开始传输指令或者数据,指令或者数据都是以字节为单位,一个字节8bit,在传输过程中会进行拆分处理,如传输0x35(二进制为 0011 0101)时

将0x35的高4位放在第一个字节的高4位,低4位补0,如 0011 0000
将0x35的低4位放在第二个字节的高4位,低4位补0,如 0101 0000
所以在传输指令或者数据时,会将一个字节拆分为两个字节进行传输 0011 0000 0101 0000
假设此时传输的0x35是数据而非指令,由于在代码中将启动字节与数据进行合并,所以传输的数据为:0x00FA3050


单片机源程序如下:
  1. //////////////////////////////////////////////////////////////////////////////////         
  2. //  文 件 名   : main.c
  3. //  版 本 号   : v1.0
  4. //  作    者   :
  5. //  生成日期   : 2019-0707
  6. //  最近修改   :
  7. //  功能描述   : 串行方式驱动LCD12864
  8. //
  9. //              说明:
  10. //              ----------------------------------------------------------------
  11. //              GND——GND
  12. //              VCC——VCC(5V or 3.3V)
  13. //              V0 ——空(或者接一个可变电阻到VCC)
  14. //              RS ——接PB14
  15. //              RW ——接PB13
  16. //              E  ——接PB15
  17. //              DB0-DB7 ——空
  18. //              PSB——接GND  串行模式
  19. //              RST——接PB12
  20. //              BLA——VCC(5V or 3.3V)
  21. //              BLK——接GND
  22. //              剩余引脚不接,留空
  23. //              ----------------------------------------------------------------
  24. //
  25. //All rights reserved
  26. //////////////////////////////////////////////////////////////////////////////////

  27. #include "sys.h"
  28. #include "delay.h"
  29. #include "usart.h"
  30. #include "iic.h"
  31. #include "oled.h"
  32. #include "bmp.h"
  33. #include "lcd12864.h"

  34. static float Data = 9876.65; //在12864显示
  35. char Table[] = {"0000.00"};


  36. int main(void)
  37. {
  38.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
  39.         InitDelay();
  40.         InitUart(115200);
  41.         InitLcd();
  42.        
  43.         ClearLcdDisplay();
  44.        
  45.         Table[0] = ((int)(Data * 100)/100000 + '0');     //千
  46.         Table[1] = ((int)(Data * 100)/10000%10 + '0');   //百
  47.         Table[2] = ((int)(Data * 100)/1000%10 + '0');    //十
  48.         Table[3] = ((int)(Data * 100)/100%10 + '0');     //个
  49.         Table[4] = '.';                                  //小数点
  50.         Table[5] = ((int)(Data * 100)/10%10+'0');        //小数点后一位
  51.         Table[6] = ((int)(Data * 100)%10+'0');           //小数点后两位
  52.         while(1)
  53.         {               
  54.                 LcdDisplayString(0,0,"清时明月汉时关");
  55.                 LcdDisplayString(1,0,"万里长征人未还");
  56.                 LcdDisplayString(2,0,"但使龙城飞将在");
  57.                 LcdDisplayString(3,0,"不教胡马度阴山");
  58.                 DelayMs(1800);                               //最大延时不能超过2000
  59.                 ClearLcdDisplay();
  60.                 DelayMs(100);
  61.                 LcdDisplayString(0,2,"显示浮点数");           //第0行
  62.                 LcdDisplayString(1,10,Table);
  63.                 DelayMs(1800);
  64. //                ClearLcdDisplay();                            //可不要,文字会覆盖掉
  65. //                DelayMs(100);
  66.         }         
  67. }
复制代码

所有资料51hei提供下载:
STM32串行模式驱动LCD12864.7z (191.21 KB, 下载次数: 235)

评分

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

查看全部评分

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

使用道具 举报

沙发
ID:410905 发表于 2019-7-9 11:13 | 只看该作者
学习了。
回复

使用道具 举报

板凳
ID:550084 发表于 2019-8-2 17:41 | 只看该作者
谢谢了
回复

使用道具 举报

地板
ID:501249 发表于 2019-11-30 23:54 | 只看该作者
谢谢楼主
回复

使用道具 举报

5#
ID:501249 发表于 2019-11-30 23:54 | 只看该作者
开始学习了
回复

使用道具 举报

6#
ID:778692 发表于 2020-6-14 08:36 | 只看该作者
厉害了!
回复

使用道具 举报

7#
ID:307544 发表于 2020-6-15 09:56 | 只看该作者
感谢楼主分享!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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