久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 12864顯示漢字c51程序 單片機:STC12C5A60S2 [打印本頁]

作者: 騰飛的龍    時間: 2015-7-25 21:25
標題: 12864顯示漢字c51程序 單片機:STC12C5A60S2
  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=P3^7;//脈沖使能
  13. sbit RW=P3^6;//讀寫選擇
  14. sbit RS=P3^5;//數據命令選擇
  15. sbit rst=P1^0;//12864復位
  16. uchar code table3[]="欲窮千里目";
  17. uchar code table4[]="更上一層樓";
  18. uchar code table1[]="白日依山盡";
  19. uchar code table2[]="黃河入海流";
  20. // 延時ms函數:
  21. void Delayms(uint t)//STC12C5A60S2  1ms
  22. {
  23.     uint i,j;
  24.     for(i=t;i>0;i--)
  25.              for(j=0;j<840;j++);
  26. }

  27. // 12864寫命令函數:
  28. void Write12864Command(uchar com)
  29. {
  30.                 Delayms(10);
  31.        P0=com;//賦值
  32.        E=0;//寫命令前三控制線的狀態
  33.                 Delayms(10);
  34.        RS=0;
  35.        RW=0;
  36.        E=1;//拉高,寫命令
  37.                 Delayms(10);//延時必須加
  38.        E=0;//寫命令后三控制線的狀態
  39.                 Delayms(10);//延時必須加
  40.        RS=1;
  41.        RW=1;
  42. }
  43. //12864寫數據函數:
  44. void Write12864Data( uchar dat)
  45. {
  46.            Delayms(10);
  47.        P0=dat;//賦值
  48.        E=0;//寫數據前三控制線的狀態
  49.                 Delayms(10);
  50.        RS=1;
  51.        RW=0;   
  52.        E=1;//拉高,寫數據
  53.            Delayms(10);//延時必須加
  54.        E=0;//寫數據后三控制線的狀態
  55.                 Delayms(10);//延時必須加
  56.        RS=0;
  57.        RW=1;
  58. }   
  59. //12864初始化函數:
  60. void Initialize12864()
  61. {
  62.        rst=0;//復位12864
  63.        Delayms(30);
  64.        rst=1;
  65.        Delayms(20);
  66.        Write12864Command(0x30);//功能設定:8位控制方式,使用基本指令
  67.        Write12864Command(0x08);//顯示關
  68.        Write12864Command(0x01);//清屏
  69.        Write12864Command(0x06);//地址計數器加一、光標右移
  70.        Write12864Command(0x0c);//顯示開
  71. }
  72. //在指定行和列顯示漢字
  73. void LCD12864DisplayString( uchar y, uchar x, uchar *pstr)
  74.   //y-行數值0-3,x-列數值0-7,pstr-字符串指針
  75. //12864可以顯示32個漢字(四行每行8個),一個地址對應一個漢字
  76. //可以顯示64個ASCII碼字符(四行每行16個),一個地址對應兩個字符
  77.   //為了實現自動換行功能,這個函數比較繁瑣
  78. {
  79.      uchar row,n=0;
  80.      Write12864Command(0x30);//基本指令
  81.      Write12864Command(0x06);//地址計數器自動加以,光標右移
  82.      switch(y)//根據行號選擇行地址
  83.      {
  84.                  case 0:row=0x80;break;//第一行首地址
  85.                  case 1:row=0x90;break;//第二行首地址
  86.                  case 2:row=0x88;break;//第三行首地址
  87.                  case 3:row=0x98;break;//第四行首地址
  88.                  default:;
  89.      }
  90.         Write12864Command(row+x);//寫地址
  91.      while(*pstr!='\0')
  92.      {
  93.                 Write12864Data(*pstr);//寫字符
  94.                 pstr++;
  95.                 n++;//計數
  96.                 if((n+x*2)==16)//如果一行寫完,繼續寫第二行
  97.                 {
  98.                        if(y==0) Write12864Command(0x90);//寫下一行地址
  99.                        else if(y==1) Write12864Command(0x88);//寫下一行地址
  100.                        else if(y==2) Write12864Command(0x98);//寫下一行地址
  101.                        else ;
  102.                 }
  103.                 else if((n+x*2)==32)//如果第二行寫完,繼續寫第三行
  104.                 {
  105.                         if(y==0) Write12864Command(0x88);//寫下一行地址
  106.                         else if(y==1) Write12864Command(0x98);//寫下一行地址
  107.                         else ;
  108.                 }
  109.                 else if((n+x*2)==48)//如果第三行寫完,繼續寫第四行
  110.                 {
  111.                         if(y==0) Write12864Command(0x98);//寫下一行地址
  112.                         else ;
  113.                 }
  114.                 else ;
  115.     }
  116. }   
  117. //清屏
  118. void Clear12864Screen()
  119. {
  120.         Write12864Command(0x01);//清屏
  121.         Write12864Data(0x00);//清屏
  122. }
  123. void main()
  124. {
  125.         uchar i;
  126.         Delayms(100);
  127.         Initialize12864();
  128.         Clear12864Screen();
  129.         while(1)
  130. {
  131.         Write12864Command(0x80);
  132.         for(i=0;i<11;i++)
  133.         {
  134.                 Write12864Data(table1[i]);
  135.                 Delayms(200);
  136.         }
  137. Clear12864Screen();
  138.         Write12864Command(0x90);
  139.         for(i=0;i<11;i++)
  140.         {
  141.                 Write12864Data(table2[i]);
  142.                 Delayms(200);
  143.         }
  144. Clear12864Screen();
  145.         Write12864Command(0x88);
  146.         for(i=0;i<12;i++)
  147.         {
  148.                 Write12864Data(table3[i]);
  149.                 Delayms(200);
  150.         }
  151. Clear12864Screen();
  152.         Write12864Command(0x98);
  153.         for(i=0;i<12;i++)
  154.         {
  155.                 Write12864Data(table4[i]);
  156.                 Delayms(200);
  157.         }
  158. Clear12864Screen();
  159.         LCD12864DisplayString(0, 0, "--蘇義江成心歡迎大家來到單片機世界。沒有想不到只有做不到!");
  160.         Delayms(4000);
  161. Clear12864Screen();
  162.         }
  163.                
  164. }
復制代碼



作者: han233    時間: 2017-9-19 11:28
不錯不錯不錯




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产精品第2页 | 国产高清在线视频 | 97国产爽爽爽久久久 | 午夜免费在线观看 | 国产一级视频在线观看 | 免费a国产 | 中文字幕在线观看 | 在线一级片 | 无毛av| 特级做a爰片毛片免费看108 | 色吧久久 | 日韩一区二区三区av | 国产精品一区二区三 | 狠狠操狠狠干 | 成人在线视频看看 | 欧美一级毛片在线播放 | 天天干天天玩天天操 | www日| 精品一区二区三 | 福利片在线观看 | 日韩欧美成人精品 | 欧美日韩一| 国产精品成人一区二区三区 | 国产视频第一页 | 亚洲一区二区在线视频 | 中文字幕日韩欧美 | 国产特级毛片aaaaaa喷潮 | 精品伊人 | 亚洲欧美一区二区在线观看 | 国内精品久久影院 | 久草网在线视频 | 国产精品不卡 | 日本黄视频在线观看 | 国产69久久精品成人看动漫 | 国产欧美精品一区二区 | 国产精品综合久久 | 精品成人一区二区 | av在线免费观看网站 | 久久久九九 | 黑人巨大精品欧美一区二区免费 | 国产a级黄色录像 |