找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 62328|回复: 79
收起左侧

LCD12864中文液晶屏显示(含仿真和程序)

  [复制链接]
ID:102056 发表于 2017-9-21 00:04 | 显示全部楼层 |阅读模式
仿真报错的请看这里!!!
使用proteus中12864液晶再也不用担心没有字库了?
http://www.51hei.com/bbs/dpj-59193-1.html

QQ截图20170920231434.jpg QQ截图20170920232504.jpg

单片机源程序如下:
  1. /* ***************************************************** */
  2. // QQ交流 :1181826414
  3. /* ***************************************************** */
  4. // 工  程   : 51单片机开发板
  5. // 文件名   : LCD12864.c
  6. // 处理器   : STC89C52RC
  7. // 编译环境 : Keil4 C51
  8. // 系统时钟 : 11.0592MHZ
  9. // 版    本        : V1.0
  10. // 生成日期        : 2017-09-20                                                  
  11. // 修改日期        :  
  12. // 简单描述 : 本文件是带字库LCD12864显示程序
  13. /* ***************************************************** */
  14. #include <reg52.h>
  15. #define uint unsigned int
  16. #define uchar unsigned char
  17. #define Lcd_Bus P0 //数据总线
  18. /* ***************************************************** */
  19. // 位定义
  20. /* ***************************************************** */
  21. sbit RS=P2^4;     //数据/命令选择端(H/L)
  22. sbit RW=P2^5;    //数/写选择端(H/L)
  23. sbit E=P2^6;     //使能信号
  24. /* ***************************************************** */
  25. // 函数名称:DelayMS()
  26. // 函数功能:延时毫秒数(ValMS)
  27. // 入口参数:无
  28. // 出口参数:无
  29. /* ***************************************************** */
  30. void DelayMS(uint ValMS)
  31. {
  32.         uint uiVal,ujVal;
  33.         for(uiVal = 0; uiVal < ValMS; uiVal++)
  34.                 for(ujVal = 0; ujVal < 121; ujVal++);
  35. }
  36. /* ***************************************************** */
  37. // 函数名称hk_busy()
  38. // 函数功能:检测状态标志位(判断是忙/闲)
  39. // 入口参数:无
  40. // 出口参数:无
  41. /* ***************************************************** */
  42. void chk_busy()
  43. {  
  44.           Lcd_Bus=0x00;
  45.     RS=0;
  46.     RW=1;
  47.     E=1;  
  48.           DelayMS(1);
  49.     while(Lcd_Bus & 0x80);   // 若LCD忙,停止到这里,否则走起
  50.     E=0;                // 之后将EN初始化为低电平
  51. }

  52. /* ***************************************************** */
  53. // 函数名称rite_com()
  54. // 函数功能:LCD写指令
  55. // 入口参数:指令(cmdcode)
  56. // 出口参数:无
  57. /* ***************************************************** */
  58. void write_com(unsigned char cmdcode)
  59. {
  60.         chk_busy();     //忙检查
  61.         RS=0;
  62.         RW=0;      //RS=0,RW=0;表示MCU写指令到暂存器IR
  63.         E=1;
  64.         Lcd_Bus=cmdcode;   //Lcd_Bus=P0;
  65.         E=0;      //E由高到低变化配合W进行写指令或写数据

  66. }
  67. /* ***************************************************** */
  68. // 函数名称rite_data()
  69. // 函数功能:LCD写数据
  70. // 入口参数:数据(Dispdata)
  71. // 出口参数:无
  72. /* ***************************************************** */
  73. void write_data(unsigned char Dispdata)
  74. {  
  75.   chk_busy();     //忙检查
  76.         RS=1;
  77.         RW=0;      //RS=1;RW=0;表示MCU写数据到暂存器IR
  78.         E=1;
  79.         Lcd_Bus=Dispdata;  //Lcd_Bus=P0;
  80.         E=0;      //E由高到低变化配合W进行写指令或写数据
  81. }
  82. /* ***************************************************** */
  83. // 函数名称:lcm_init()
  84. // 函数功能:LCD初始化
  85. // 入口参数:无
  86. // 出口参数:无
  87. /* ***************************************************** */
  88. void lcm_init()
  89. {         
  90.    write_com(0x30);    //选择8bit数据流 0X30=0011,0000
  91.          DelayMS(10);
  92.    write_com(0x0C);    //开显示(无游标,不反白)
  93.          DelayMS(10);
  94.    write_com(0x01);    //清除显示,并且设定地址指针为00H
  95.          DelayMS(10);
  96. }
  97. //============================================================//写数据或指令(被调用层)
  98. void lcm_w_test(bit i,unsigned char word)
  99. {
  100.    if(i == 0)   //根据i的状态区分指令或数据
  101.          {   
  102.       write_com(word);//写数据或指令(0,指令)
  103.    }
  104.    else
  105.         {
  106.    write_data(word);//写指令或数据(1,数据)
  107.   }
  108. }
  109. //-----------------------------------------------------------//清屏函数
  110. void lcm_clr(void){
  111.    lcm_w_test(0,0x01);
  112. }
  113. //===========================================================//向LCM发送一个字符串,长度64字符之内(被调用层),
  114. void lcm_w_word(unsigned char *s)
  115. {
  116.     while(*s>0)  //*s指针
  117.          {     
  118.       write_data(*s);//用指针显示数据地址
  119.       s++;      //自加显示下一个数据地址
  120.     }
  121. }
  122. void welcome(void)        //初始化开机显示
  123. {
  124.     lcm_w_test(0,0x81);   //写指令和地址
  125.     lcm_w_word ("空山新雨后,"); //写显示数据
  126.     lcm_w_test(0,0x91);
  127. ……………………

  128. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
0.png

所有资料51hei提供下载:
字库LCD12864液晶.zip (297.99 KB, 下载次数: 1752)



评分

参与人数 5黑币 +81 收起 理由
stkh + 8 很给力!
莫子栋 + 5 共享资料的黑币奖励!
chef + 10 赞一个!
almsy + 8 很给力!
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:1140587 发表于 2024-12-20 11:44 | 显示全部楼层
真心希望未来能看到更多你的分享,你的帖子是我在贴吧中发现的宝藏!&#127775;
回复

使用道具 举报

ID:227484 发表于 2023-9-23 20:35 | 显示全部楼层
下载了可以使用proteus8
回复

使用道具 举报

ID:820289 发表于 2022-12-1 11:42 | 显示全部楼层
小白太需要这样无私的大佬了
谢谢
回复

使用道具 举报

ID:1039802 发表于 2022-7-18 15:19 | 显示全部楼层
感谢分享,方便说下protues是哪个版本吗
回复

使用道具 举报

ID:1034837 发表于 2022-6-17 00:07 来自触屏版 | 显示全部楼层
不错,研究一下,刚好手上有块12864屏
回复

使用道具 举报

ID:68189 发表于 2022-6-9 11:34 | 显示全部楼层
显示屏左上角的定位孔必须与原理图原点的位置重合,才能显示正常,若不对齐,效果如下:
20200420225125674.png
回复

使用道具 举报

ID:977804 发表于 2022-1-8 20:46 | 显示全部楼层
这是个好东西。官方都没有的12864带中文字库的东西,之前有位朋友共享了个12864B的,黑字体的,也能用,收藏了。
回复

使用道具 举报

ID:638827 发表于 2022-1-6 22:53 | 显示全部楼层
都不带取字模就能显示?
回复

使用道具 举报

ID:937843 发表于 2021-6-15 11:48 | 显示全部楼层
很详细 有用
回复

使用道具 举报

ID:828701 发表于 2020-10-15 15:32 | 显示全部楼层
li7329 发表于 2018-9-1 16:28
为什么液晶左上方显示了几串数字,程序中并没有写这个。

我的屏显示左上方出现了4排4列0 请问您的问题解决了吗 求救
回复

使用道具 举报

ID:810999 发表于 2020-10-14 22:00 | 显示全部楼层
收藏了,回头学习下。
回复

使用道具 举报

ID:600469 发表于 2020-8-10 17:53 | 显示全部楼层
没用 过于简单
回复

使用道具 举报

ID:767538 发表于 2020-6-2 15:26 | 显示全部楼层
学到了
回复

使用道具 举报

ID:730639 发表于 2020-5-29 10:10 | 显示全部楼层
感谢楼主,学习了。
回复

使用道具 举报

ID:318492 发表于 2020-5-19 09:00 | 显示全部楼层
非常棒
回复

使用道具 举报

ID:202023 发表于 2020-4-25 09:34 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:265655 发表于 2020-4-17 16:55 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:419529 发表于 2020-4-13 21:56 | 显示全部楼层
学习了,感谢
回复

使用道具 举报

ID:8222 发表于 2020-1-21 09:04 | 显示全部楼层
谢谢分享,下载学习。
回复

使用道具 举报

ID:676222 发表于 2019-12-28 18:30 | 显示全部楼层
谢谢!!!
回复

使用道具 举报

ID:672591 发表于 2019-12-28 15:43 | 显示全部楼层
谢谢大佬
回复

使用道具 举报

ID:428615 发表于 2019-12-8 15:41 | 显示全部楼层
按照给的仿真改过初始化,自己取的图片只能显示一半,开发板能全部显示,按照给的仿真改过初始化
回复

使用道具 举报

ID:13396 发表于 2019-11-29 21:41 | 显示全部楼层
好资料,感谢楼主的分享.
回复

使用道具 举报

ID:651410 发表于 2019-11-28 10:33 来自触屏版 | 显示全部楼层
来学习的
回复

使用道具 举报

ID:407135 发表于 2019-11-22 00:01 | 显示全部楼层
很好,学习学习
回复

使用道具 举报

ID:155411 发表于 2019-11-13 22:08 | 显示全部楼层

好资料,学习了,谢谢
回复

使用道具 举报

ID:49937 发表于 2019-11-13 22:00 | 显示全部楼层
最近在学习相关的知识
回复

使用道具 举报

ID:632166 发表于 2019-10-31 15:35 | 显示全部楼层
为什么我的protues没有lcd12864
回复

使用道具 举报

ID:586989 发表于 2019-8-5 17:37 | 显示全部楼层
很给力啊
回复

使用道具 举报

ID:586989 发表于 2019-8-5 17:36 | 显示全部楼层
很好!!!!!
回复

使用道具 举报

ID:585845 发表于 2019-7-25 23:49 | 显示全部楼层
好东西
回复

使用道具 举报

ID:369904 发表于 2019-7-25 17:30 | 显示全部楼层
我试试咯。。不知道行不行从
回复

使用道具 举报

ID:398553 发表于 2019-7-19 15:29 | 显示全部楼层
很好的样例学习
回复

使用道具 举报

ID:526082 发表于 2019-7-12 15:42 | 显示全部楼层
谢谢楼主
回复

使用道具 举报

ID:577480 发表于 2019-7-3 22:34 | 显示全部楼层
好样的!
回复

使用道具 举报

ID:529857 发表于 2019-6-14 16:57 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:549979 发表于 2019-5-29 10:42 | 显示全部楼层
很给力!!
回复

使用道具 举报

ID:363867 发表于 2019-5-28 16:53 | 显示全部楼层
下载看看
回复

使用道具 举报

ID:546997 发表于 2019-5-25 16:02 | 显示全部楼层

能发一下吗
回复

使用道具 举报

ID:546997 发表于 2019-5-25 16:01 | 显示全部楼层
很给力!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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