小R科技-WIFI机器人网·机器人创意工作室

 找回密码
 立即注册
查看: 7690|回复: 4

12864显示

[复制链接]
发表于 2015-10-15 14:35:52 | 显示全部楼层 |阅读模式
自己制作的12864显示

DIY

DIY
回复

使用道具 举报

发表于 2015-10-18 12:24:22 | 显示全部楼层
赞一个 ~~ 用的哪个芯片呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-20 10:36:54 | 显示全部楼层
单片机STC12C5A60S2晶振12M,带字库12864,DS1302/DS18B20上拉电阻4.7k。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-20 10:39:17 | 显示全部楼层
12864并行显示汉字程序
  1. /**************************************************
  2.         功能:12864显示汉字
  3.         单片机:STC12C5A60S2
  4.         晶振:11.0592M
  5.         作者:苏义江
  6.         时间:2015-7-25修改
  7.                         并行输出
  8. *****************************************************/
  9. #include<reg52.h>
  10. #define uchar unsigned char
  11. #define uint unsigned int


  12. sbit E=P2^2;//脉冲使能
  13. sbit RW=P2^1;//读写选择
  14. sbit RS=P2^0;//数据命令选择
  15. sbit rst=P3^4;//12864复位
  16. sbit fmq=P3^7;
  17. uchar code table3[]="欲穷千里目,";
  18. uchar code table4[]="更上一层楼。";
  19. uchar code table1[]="白日依山尽,";
  20. uchar code table2[]="黄河入海流。";
  21. // 延时ms函数:
  22. void Delayms(uint t)//STC12C5A60S2  1ms
  23. {
  24.     uint i,j;
  25.     for(i=t;i>0;i--)
  26.     for(j=0;j<840;j++);
  27. }
  28. void beep()
  29. {
  30.         fmq=0;
  31.         Delayms(200);
  32.         fmq=1;
  33.         Delayms(200);
  34.        
  35. }
  36. // 12864写命令函数:
  37. void Write12864Command(uchar com)
  38. {
  39.    Delayms(10);
  40.    P1=com;//赋值
  41.    E=0;//写命令前三控制线的状态
  42.    Delayms(10);
  43.    RS=0;
  44.    RW=0;
  45.    E=1;//拉高,写命令
  46.    Delayms(10);//延时必须加
  47.    E=0;//写命令后三控制线的状态
  48.    Delayms(10);//延时必须加
  49.    RS=1;
  50.        
  51.    RW=1;
  52. }
  53. //12864写数据函数:
  54. void Write12864Data( uchar dat)
  55. {
  56.            Delayms(10);
  57.        P1=dat;//赋值
  58.        E=0;//写数据前三控制线的状态
  59.                 Delayms(10);
  60.        RS=1;
  61.        RW=0;   
  62.        E=1;//拉高,写数据
  63.            Delayms(10);//延时必须加
  64.        E=0;//写数据后三控制线的状态
  65.                 Delayms(10);//延时必须加
  66.        RS=0;
  67.                
  68.        RW=1;
  69. }   
  70. //12864初始化函数:
  71. void Initialize12864()
  72. {
  73.        rst=0;//复位12864
  74.        Delayms(30);
  75.        rst=1;
  76.       // Delayms(30);
  77.        Write12864Command(0x30);//功能设定:8位控制方式,使用基本指令
  78.        Write12864Command(0x08);//显示关
  79.        Write12864Command(0x01);//清屏
  80.        Write12864Command(0x06);//地址计数器加一、光标右移
  81.        Write12864Command(0x0c);//显示开
  82. }
  83. //在指定行和列显示汉字
  84. void LCD12864DisplayString( uchar y, uchar x, uchar *pstr)
  85.   //y-行数值0-3,x-列数值0-7,pstr-字符串指针
  86. //12864可以显示32个汉字(四行每行8个),一个地址对应一个汉字
  87. //可以显示64个ASCII码字符(四行每行16个),一个地址对应两个字符
  88.   //为了实现自动换行功能,这个函数比较繁琐
  89. {
  90.      uchar row,n=0;
  91.      Write12864Command(0x30);//基本指令
  92.      Write12864Command(0x06);//地址计数器自动加以,光标右移
  93.      switch(y)//根据行号选择行地址
  94.      {
  95.          case 0:row=0x80;break;//第一行首地址
  96.          case 1:row=0x90;break;//第二行首地址
  97.          case 2:row=0x88;break;//第三行首地址
  98.          case 3:row=0x98;break;//第四行首地址
  99.          default:;
  100.      }
  101.          Write12864Command(row+x);//写地址
  102.      while(*pstr!='\0')
  103.      {
  104.         Write12864Data(*pstr);//写字符
  105.         pstr++;
  106.         n++;//计数
  107.         if((n+x*2)==16)//如果一行写完,继续写第二行
  108.         {
  109.                if(y==0) Write12864Command(0x90);//写下一行地址
  110.                else if(y==1) Write12864Command(0x88);//写下一行地址
  111.                else if(y==2) Write12864Command(0x98);//写下一行地址
  112.                else ;
  113.         }
  114.         else if((n+x*2)==32)//如果第二行写完,继续写第三行
  115.         {
  116.                 if(y==0) Write12864Command(0x88);//写下一行地址
  117.                 else if(y==1) Write12864Command(0x98);//写下一行地址
  118.                 else ;
  119.         }
  120.         else if((n+x*2)==48)//如果第三行写完,继续写第四行
  121.         {
  122.                 if(y==0) Write12864Command(0x98);//写下一行地址
  123.                 else ;
  124.         }
  125.         else ;
  126.     }
  127. }   
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-20 10:40:27 | 显示全部楼层
落下的程序
  1. //清屏
  2. void Clear12864Screen()
  3. {
  4.         Write12864Command(0x01);//清屏
  5.         Write12864Data(0x00);//清屏
  6. }
  7. void main()
  8. {
  9.         uchar i;
  10.         Delayms(100);
  11.         Initialize12864();
  12.         Clear12864Screen();
  13.         while(1)
  14.                 {
  15.                 beep();
  16.                
  17.                 Write12864Command(0x80);
  18.                 for(i=0;i<13;i++)
  19.                 {
  20.                         Write12864Data(table1[i]);
  21.                         Delayms(200);
  22.                 }
  23.         //        Clear12864Screen();
  24.                 Write12864Command(0x90);
  25.                 for(i=0;i<13;i++)
  26.                 {
  27.                         Write12864Data(table2[i]);
  28.                         Delayms(200);
  29.                 }
  30.         //        Clear12864Screen();
  31.                 Write12864Command(0x88);
  32.                 for(i=0;i<13;i++)
  33.                 {
  34.                         Write12864Data(table3[i]);
  35.                         Delayms(200);
  36.                 }
  37.         //        Clear12864Screen();
  38.                 Write12864Command(0x98);
  39.                 for(i=0;i<13;i++)
  40.                 {
  41.                         Write12864Data(table4[i]);
  42.                         Delayms(200);
  43.                 }
  44.                 Clear12864Screen();
  45.                 LCD12864DisplayString(0, 0,"日照香炉生紫烟,遥看瀑布挂前川。飞流直下三千尺,疑是银河落九天。");
  46.                 Delayms(6000);
  47.                 Clear12864Screen();                                                       
  48.                 LCD12864DisplayString(0, 0, "--苏义江成心欢迎大家来到单片机的世界。没有做不到只有想不到加油!");
  49.                 Delayms(6000);
  50.                 Clear12864Screen();
  51.         }
  52.                
  53. }
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

新品特惠推荐上一条 /2 下一条

QQ|QQ技术咨询1|QQ技术咨询2|商务合作微信1:xiaorgeek001|商务合作微信2:XiaoRGEEK|诚聘英才|Archiver|手机版|小R科技-WIFI机器人网·机器人创意工作室 ( 粤ICP备15000788号-6 )

GMT+8, 2024-11-26 08:05 , Processed in 1.105277 second(s), 22 queries .

Powered by XiaoR GEEK X3.4

© 2014-2021 XiaoR GEEK

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