找回密码
 立即注册

QQ登录

只需一步,快速开始

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

LCD12864串行显示程序。只需要2根线

[复制链接]
跳转到指定楼层
楼主
ID:79544 发表于 2015-7-29 12:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. /*****************************************************
  2.        
  3.         功能:串行方式12864显示程序。只需要2根线。
  4.                  5脚的SID(数据)和6脚CLK(时钟)。1脚接地,2脚接VCC
  5.                 3脚接可调电阻,15脚PSB接地,17脚RET接VCC,19脚
  6.                 接VCC,20脚接地。其他引脚悬空
  7.         单片机:STC12C5608AD
  8.         晶振 :12M
  9.        
  10. *****************************************************/
  11. #include<reg52.h>
  12. #define uchar unsigned char
  13. #define uint unsigned int
  14. sbit SID=P2^0;
  15. sbit SCLK=P2^1;
  16. void delay(uint z)
  17. {
  18.    uint x,y;
  19.    for(x=z;x>0;x--)
  20.    for(y=210;y>0;y--);
  21. }
  22. /****************************************************
  23.         功能 : 按照液晶的串口通信协议,发送一个字节数据
  24. *****************************************************/
  25. void sendbyte(uchar zdata)
  26. {  
  27.         uint i;  
  28.         for(i=0; i<8; i++)  
  29.         {
  30.             if((zdata << i) & 0x80)   
  31.                 {   
  32.                         SID = 1;   
  33.                 }   
  34.                 else   
  35.                  {     
  36.                         SID = 0;   
  37.                 }   
  38.                          SCLK = 0;
  39.                         delay(2);  
  40.                         SCLK = 1;  
  41.         }  
  42. }
  43. /******************************************************
  44.         功能 : 写串口指令
  45. ***************************************************/
  46. void write_com(uchar cmdcode)
  47. {  
  48.    
  49.         sendbyte(0xf8);//写串口指令   
  50.         sendbyte(cmdcode & 0xf0);
  51.         sendbyte((cmdcode << 4) & 0xf0);  
  52.         delay(2);
  53. }
  54. /*****************************************************
  55.         功能 : 写串口数据
  56. **************************************************/
  57. void write_data(uchar Dispdata)
  58. {   
  59.         sendbyte(0xfa);//写串口数据  
  60.         sendbyte(Dispdata & 0xf0);   
  61.         sendbyte((Dispdata << 4) & 0xf0);
  62.         delay(2);
  63. }


  64. /***************************************************
  65.         功能 : 初始化函数
  66. ******************************************************/
  67. void lcdinit()
  68. {      
  69.         delay(200);
  70.         write_com(0x30);  
  71.         delay(10);   
  72.         write_com(0x0c);  
  73.         write_com(0x01);
  74.         delay(10);  
  75. }
  76. /**************************************************
  77.         功能 : 显示字符串
  78. ****************************************************/
  79. void hzkdis(uchar code *s)
  80. {     
  81.         while(*s>0)
  82.         {   
  83.                 write_data(*s);   
  84.                 s++;   
  85.                 delay(10);     
  86.         }  
  87. }
  88. /*************************************************
  89.         功能 : 显示子函数
  90. ****************************************************/
  91. void Test()  
  92. {   
  93.         write_com(0x03);
  94.         delay(50);      
  95.         write_com(0x81);
  96.         hzkdis("   MCU-51");  
  97.         write_com(0x91);   
  98.         hzkdis("************");  
  99.         write_com(0x89);   
  100.         hzkdis("我爱单片机!");  
  101.         write_com(0x98);   
  102.         hzkdis("************");
  103. }

  104. /*************************************************
  105.         --任意位置显示一个汉字---
  106. ***************************************************/
  107. void hz_disp(uchar line,uchar row,uchar hz1,uchar hz2)
  108. {  
  109.         //line行1-4,row列0-7,hz1汉字的高8位,hz2,汉字的低8位
  110.         write_com(0x01); // 清除显示,并且设定地址指针为00H
  111.    switch(line)
  112.    {
  113.            case 1:{write_com(0x80+row);write_data(hz1);write_data(hz2);break;}
  114.            case 2:{write_com(0x90+row);write_data(hz1);write_data(hz2);break;}
  115.            case 3:{write_com(0x88+row);write_data(hz1);write_data(hz2);break;}
  116.            case 4:{write_com(0x98+row);write_data(hz1);write_data(hz2);break;}
  117.    }
  118. }
  119. /*************************************************
  120.         功能 : 主函数
  121. ******************************************************/
  122. void Main()
  123. {   
  124.         lcdinit();  
  125.         delay(10);  
  126.         while(1)   
  127.         {
  128.         //        hz_disp(4,6,32,8) ;
  129.                 write_com(0x98);
  130.                 hzkdis("****大爱无疆****  ");
  131.                 Test();  
  132.                 delay(5000);   
  133.         }  
  134. }
复制代码


评分

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

查看全部评分

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

使用道具 举报

沙发
ID:72365 发表于 2015-7-29 12:55 | 只看该作者
正学习中   
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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