标题: LCD12864中文液晶屏显示(含仿真和程序) [打印本页]

作者: king@    时间: 2017-9-21 00:04
标题: LCD12864中文液晶屏显示(含仿真和程序)
仿真报错的请看这里!!!
使用proteus中12864液晶再也不用担心没有字库了?
http://www.51hei.com/bbs/dpj-59193-1.html



单片机源程序如下:
  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黑下载附件…………
复制代码


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




作者: by64214    时间: 2017-10-24 20:58
谢谢分享   学习一下
作者: fanym    时间: 2017-12-10 18:56
不错,学习了
作者: cjd153957    时间: 2018-7-19 07:52
学习一下
作者: luospring    时间: 2018-7-30 06:05
好资料,学习了,谢谢
作者: almsy    时间: 2018-7-30 10:22
不错哦
作者: fengman    时间: 2018-8-17 10:47
正需要的东西,非常感谢

作者: li7329    时间: 2018-9-1 16:28
为什么液晶左上方显示了几串数字,程序中并没有写这个。
作者: 走丢的中二病    时间: 2018-9-27 08:00
也就51黑的代码能放心用
作者: 陈淮南    时间: 2018-9-28 16:48
为啥能直接显示汉字,带字库的应该用两个字节,不带字库的应该取模啊,看不太懂
作者: 陈淮南    时间: 2018-9-28 16:49
为什么可以直接显示汉字,带字库的应该用两个字节啊,不带字库取模,这个看不太懂
作者: stkh    时间: 2018-9-28 17:06
有用的
作者: qqq4131533523    时间: 2018-10-17 15:50
正在用,正好学习一下
作者: 杨海健    时间: 2018-10-17 17:42
学习来了
作者: Host    时间: 2018-10-24 11:22
谢谢分享
作者: tyarist    时间: 2018-10-25 23:24
下来后 lcd12864.dll的大小不对啊

作者: tyarist    时间: 2018-10-25 23:29
运行后不对……

作者: 乐观的知觉    时间: 2018-11-1 10:16
谢谢分享。学习学习
作者: 13232687297    时间: 2018-11-20 22:31
已下载学习,谢谢楼主分享
作者: 8668    时间: 2018-11-22 12:16
这个可以啊
作者: l191128    时间: 2018-11-30 09:44
谢谢分享   学习一下
作者: desparetion    时间: 2018-12-2 14:32
学习学习
作者: zxcv789654123    时间: 2018-12-22 13:45
学习学习啦
作者: 周超然    时间: 2018-12-24 15:40
其实这个屏幕,排线太多了,而且价格比较贵,现在好多用定制的lcd屏幕,网上参考的代码真的少,不过楼主刚刚学习还是可以的啊。赞一个
作者: ZMRGHY    时间: 2018-12-25 11:00
我的软件里,为什么找不到这个屏呀。
作者: Happyness    时间: 2019-1-26 10:18
毕业设计要用到这个中文屏,得好好学习一下
作者: .小破孩    时间: 2019-1-27 16:09
我居然看懂了
作者: shushikuan    时间: 2019-1-30 18:01
很赞!
作者: 51LJM    时间: 2019-2-27 16:45
为什么仿真什么都没有,难受
作者: li670132643    时间: 2019-3-1 15:13
为什么我用你的HEX烧写就能显示,我自己改显示的中文就显示不了
作者: ly2087    时间: 2019-4-5 15:59
我想问一下楼主的protues是什么版本的?谢谢
作者: ly2087    时间: 2019-4-8 17:05
感谢楼主的分享,我发现我的protuel直接复制这个器件无法正常工作
作者: 小邱    时间: 2019-4-14 20:10
很好用 我最爱
作者: 飘散微尘    时间: 2019-4-15 11:49
下载看看怎么样
作者: zxldpj    时间: 2019-4-15 17:26
感谢感谢
作者: AriUp    时间: 2019-4-15 21:32
谢谢分享,小白求教,怎样编写程序实现建立XY轴并显示动态波形图呢?求程序分享。
作者: 李傻傻    时间: 2019-4-18 17:10
谢谢分享,小白求救

作者: WANGDADA187956    时间: 2019-4-25 10:33
很实用
作者: king@    时间: 2019-5-9 20:08
ly2087 发表于 2019-4-5 15:59
我想问一下楼主的protues是什么版本的?谢谢

Protues7.9
作者: 呆呆巴    时间: 2019-5-23 15:36
很好!
作者: 2234242551    时间: 2019-5-25 16:01
很给力!
作者: 2234242551    时间: 2019-5-25 16:02
呆呆巴 发表于 2019-5-23 15:36
很好!

能发一下吗
作者: 123145dkasjf    时间: 2019-5-28 16:53
下载看看

作者: 神奇马里奥    时间: 2019-5-29 10:42
很给力!!
作者: gwq    时间: 2019-6-14 16:57
感谢分享

作者: xjx53432    时间: 2019-7-3 22:34
好样的!
作者: sy705483387    时间: 2019-7-12 15:42
谢谢楼主
作者: ZZUli    时间: 2019-7-19 15:29
很好的样例学习
作者: Saigetsu    时间: 2019-7-25 17:30
我试试咯。。不知道行不行从
作者: thomaspang    时间: 2019-7-25 23:49
好东西
作者: hahaa121    时间: 2019-8-5 17:36
很好!!!!!
作者: hahaa121    时间: 2019-8-5 17:37
很给力啊
作者: 行走的向日葵    时间: 2019-10-31 15:35
为什么我的protues没有lcd12864
作者: 风枫丶丶    时间: 2019-11-13 22:00
最近在学习相关的知识
作者: yiyia123    时间: 2019-11-13 22:08

好资料,学习了,谢谢
作者: ansunli    时间: 2019-11-22 00:01
很好,学习学习
作者: 川农刘德华    时间: 2019-11-28 10:33
来学习的
作者: zh68a11    时间: 2019-11-29 21:41
好资料,感谢楼主的分享.
作者: 急急急,我很急    时间: 2019-12-8 15:41
按照给的仿真改过初始化,自己取的图片只能显示一半,开发板能全部显示,按照给的仿真改过初始化
作者: xbx1134    时间: 2019-12-28 15:43
谢谢大佬
作者: 初学者CHN    时间: 2019-12-28 18:30
谢谢!!!
作者: 温xyz    时间: 2020-1-21 09:04
谢谢分享,下载学习。
作者: qiangzi777    时间: 2020-4-13 21:56
学习了,感谢
作者: hvan    时间: 2020-4-17 16:55
谢谢分享
作者: huaruolong    时间: 2020-4-25 09:34
谢谢分享
作者: zxldpj    时间: 2020-5-19 09:00
非常棒
作者: 阿毛阿毛毛    时间: 2020-5-29 10:10
感谢楼主,学习了。
作者: jaylu    时间: 2020-6-2 15:26
学到了

作者: 鱼之跃    时间: 2020-8-10 17:53
没用 过于简单

作者: xxw369    时间: 2020-10-14 22:00
收藏了,回头学习下。
作者: 寸之123    时间: 2020-10-15 15:32
li7329 发表于 2018-9-1 16:28
为什么液晶左上方显示了几串数字,程序中并没有写这个。

我的屏显示左上方出现了4排4列0 请问您的问题解决了吗 求救
作者: 王小僧    时间: 2021-6-15 11:48
很详细 有用
作者: 易游    时间: 2022-1-6 22:53
都不带取字模就能显示?
作者: 3花木城    时间: 2022-1-8 20:46
这是个好东西。官方都没有的12864带中文字库的东西,之前有位朋友共享了个12864B的,黑字体的,也能用,收藏了。
作者: wpppmlah    时间: 2022-6-9 11:34
显示屏左上角的定位孔必须与原理图原点的位置重合,才能显示正常,若不对齐,效果如下:

作者: Andything    时间: 2022-6-17 00:07
不错,研究一下,刚好手上有块12864屏
作者: wei1130    时间: 2022-7-18 15:19
感谢分享,方便说下protues是哪个版本吗

作者: jysrfeng    时间: 2022-12-1 11:42
小白太需要这样无私的大佬了
谢谢
作者: 13869300    时间: 2023-9-23 20:35
下载了可以使用proteus8

作者: 1163137016    时间: 2024-12-20 11:44
真心希望未来能看到更多你的分享,你的帖子是我在贴吧中发现的宝藏!&#127775;




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1