找回密码
 立即注册

QQ登录

只需一步,快速开始

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

详细LCD12864串行或者并行数据传输51单片机程序(自编)

[复制链接]
跳转到指定楼层
楼主
详细LCD12864串行或者并行数据传输51单片机程序(自编)


单片机串行源程序如下:
  1. #include <reg52.h>  
  2.   
  3.   
  4. //LCD12864端口定义  
  5. //sbit LCD12864_CS    = P3^5;//片选信号  
  6. sbit LCD12864_SID   = P2^6;//数据信号  
  7. sbit LCD12864_SCLK  = P2^7;//时钟信号  
  8. //sbit LCD12864_RST   = P3^7;//复位信号  
  9.   
  10. /********************************************************************
  11. * 名称 : LCD12864_Delay()
  12. * 功能 : 延时
  13. * 输入 : z
  14. * 输出 : 无
  15. ***********************************************************************/  
  16. void LCD12864_Delay(unsigned int z)  
  17. {  
  18. //  uchar i;  
  19. //  while(z --) for(i = 0;i < 120;i ++);  
  20.     unsigned char a,b;  
  21.     for(a=0; a<z; a++)  
  22.         for(b=0; b<120; b++);  
  23. }  
  24. /********************************************************************
  25. * 名称 : LCD12864_sendbyte
  26. * 功能 : 按照液晶的串口通信协议,发送数据
  27. * 输入 : zdata
  28. * 输出 : 无
  29. ***********************************************************************/  
  30. void LCD12864_SendByte(unsigned char zdata)  
  31. {  
  32.     unsigned char i;  
  33.     for(i = 0;i < 8;i ++)  
  34.     {  
  35.         if((zdata<<i) & 0x80)  
  36.         {  
  37.             LCD12864_SID = 1;  
  38.         }  
  39.         else  
  40.         {  
  41.             LCD12864_SID = 0;  
  42.         }  
  43.         LCD12864_SCLK = 0;  
  44.         LCD12864_SCLK = 1;   
  45.     }     
  46. }  
  47. /********************************************************************
  48. * 名称 : LCD12864_write_com()
  49. * 功能 : 写串口指令,分三字节写完
  50. * 输入 : com
  51. * 输出 : 无
  52. ***********************************************************************/  
  53. void  LCD12864_WriteCom(unsigned char com)  
  54. {  
  55.       //LCD12864_CS = 1;//打开片选,高电平有效  
  56.       LCD12864_SendByte(0xf8); //第一字节  
  57.       LCD12864_SendByte(com & 0xf0);     //第二字节  
  58.       LCD12864_SendByte((com << 4) & 0xf0);//第三字节  
  59. }  
  60.   
  61. /********************************************************************
  62. * 名称 : LCD12864_write_date()
  63. * 功能 : 写串口指令
  64. * 输入 : date
  65. * 输出 : 无
  66. ***********************************************************************/  
  67. void LCD12864_WriteDate(unsigned char date)  
  68. {  
  69.     //LCD12864_CS = 1; //打开片选  
  70.     LCD12864_SendByte(0xfa);//第一字节  
  71.     LCD12864_SendByte(date & 0xf0);  //第二字节  
  72.     LCD12864_SendByte((date << 4) & 0xf0);//第三字节  
  73. }  
  74. /********************************************************************
  75. * 名称 : LCD12864_init()
  76. * 功能 : 12864初始化函数
  77. * 输入 : com
  78. * 输出 : 无
  79. ***********************************************************************/  
  80. void LCD12864_Init()  
  81. {  
  82.      //LCD12864_RST = 0;  
  83.      LCD12864_Delay(100);  
  84.      //LCD12864_RST = 1;  
  85.      LCD12864_Delay(100);  
  86.      //LCD12864_WriteCom(0x34);//扩充指令集动作 ,绘图不显示  
  87.      LCD12864_WriteCom(0x30);//基本指令集动作, 绘图不显示  
  88.      LCD12864_WriteCom(0x0c);//开显示,不显示游标和游标位置  
  89.      LCD12864_WriteCom(0x01);//清屏  
  90.      LCD12864_Delay(100);  
  91.            
  92. }  
  93. /********************************************************************
  94. * 名称 :LCD_clean_scans()
  95. * 功能 : 清屏
  96. * 输入 : 无
  97. * 输出 : 无
  98. ***********************************************************************/  
  99. void LCD12864_CleanScans()  
  100. {  
  101.      LCD12864_WriteCom(0x01);//清屏  
  102. }  
  103. /********************************************************************
  104. * 名称 :  LCD12864_pos()
  105. * 功能 : 设定显示位置
  106. * 输入 :  x,y
  107. * 输出 : 无
  108. ***********************************************************************/  
  109. void LCD12864_SetPos(unsigned char x,unsigned char y)  
  110. {  
  111.     unsigned char pos;  
  112.     if(x == 0)  
  113.             x = 0x80;  
  114.     else if(x == 1)  
  115.             x = 0x90;  
  116.     else if(x == 2)  
  117.             x = 0x88;  
  118.     else if(x == 3)  
  119.             x = 0x98;  
  120.     pos = x + y;  
  121.     LCD12864_WriteCom(pos);//显示地址         
  122. }  
  123. /********************************************************************
  124. * 名称 : LCD12864_dishz()
  125. * 功能 : 显示字符串
  126. * 输入 : *s
  127. * 输出 : 无
  128. ***********************************************************************/  
  129. void LCD12864_DisplayString(unsigned char *s)  
  130. {   
  131.     unsigned char  i = 0;  
  132.     while(s[i]!='\0')  
  133.     {   
  134.         LCD12864_WriteDate(s[i]);  
  135.         i++;  
  136.         LCD12864_Delay(5);  
  137.     }  
  138. }
  139. void main()
  140. {
  141. while(1);
  142. }
复制代码

所有资料51hei提供下载:
LCD12864.zip (54.64 KB, 下载次数: 106)


评分

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

查看全部评分

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

使用道具 举报

沙发
ID:260698 发表于 2018-4-26 19:31 | 只看该作者
又不能用传上来干嘛
回复

使用道具 举报

板凳
ID:530859 发表于 2019-5-11 01:46 | 只看该作者
我的显示不了,不知道为什么
回复

使用道具 举报

地板
ID:491687 发表于 2020-4-26 16:35 | 只看该作者
楼主代码并非直接可用,需要根据自己需要修改,小白慎下
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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