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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2596|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

51MCU+無字庫LCD12864滾屏 proteus仿真與C程序設(shè)計

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:599916 發(fā)表于 2020-3-31 14:30 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式


單片機源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include <lcd12864.h>
  4. #include <delay.h>

  5. #define uchar unsigned char
  6. #define uint unsigned int
  7. #define Dataport P1 //LCD數(shù)據(jù)線

  8. sbit RS=P2^2; // 數(shù)據(jù)\指令 選擇
  9. sbit RW=P2^1; // 讀\寫 選擇
  10. sbit EN=P2^0; // 讀\寫使能
  11. sbit cs1=P2^4; // 片選1
  12. sbit cs2=P2^3; // 片選2

  13. /********************************/
  14. /*  定義中文字庫                */
  15. /********************************/

  16. unsigned char code Hzk[]={
  17. ///*--  文字:  中  --*/
  18. ///*--  宋體12;  此字體下對應(yīng)的點陣為:寬x高=16x16   --*/
  19. //0x00,0x00,0xFC,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0xFC,0x08,0x00,0x00,
  20. //0x00,0x00,0x07,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x02,0x02,0x07,0x00,0x00,0x00,


  21. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,


  22. };


  23. void CheckState()                //狀態(tài)檢查,LCD是否忙?
  24. {
  25.    uchar dat;
  26.    RS=0;
  27.    RW=1;
  28.    do{
  29.       Dataport=0x00;
  30.       EN=1;
  31.           dat=Dataport;
  32.       EN=0;
  33.       dat=0x80 & dat; //僅當(dāng)?shù)?位為0時才可操作(判別busy信號)
  34.       }while(!(dat==0x00));
  35. }



  36. SendCommandToLCD(uchar command)           //寫命令到LCD中
  37. {
  38.    CheckState();
  39.    RS=0;         //向LCD發(fā)送命令
  40.    RW=0;
  41.    Dataport=command;         //command :命令
  42.    EN=1;
  43.    EN=0;
  44. }


  45. void SetLine(uchar page)        //設(shè)置頁 0xb8是頁的首地址
  46. {
  47.   page=0xb8|page; //1011 1xxx                 0<=page<=7 設(shè)定頁地址--X 0-7,8行為一頁64/8=8,共8頁
  48.   SendCommandToLCD(page);
  49. }


  50. void SetStartLine(uchar startline)            //設(shè)定顯示開始行,0xc0是行的首地址
  51. {
  52.   startline=0xc0|startline; //1100 0000
  53.   SendCommandToLCD(startline); //設(shè)置從哪行開始:0--63,一般從0 行開始顯示
  54. }


  55. void SetColumn(uchar column)        //設(shè)定列地址--Y 0-63 ,0x40是列的首地址
  56. {
  57.   column=column &0x3f; //column最大值為64,越出 0=<column<=63
  58.   column= 0x40|column; //01xx xxxx
  59.   SendCommandToLCD(column);
  60. }


  61. void SetOnOff(uchar onoff)           //開關(guān)顯示,0x3f是開顯示,0x3e是關(guān)顯示
  62. {
  63.         onoff=0x3e|onoff; //0011 111x,onoff只能為0或者1
  64.         SendCommandToLCD(onoff);
  65. }


  66. void WriteByte(uchar dat)        //寫顯示數(shù)據(jù)
  67. {
  68.    CheckState();
  69.    RS=1;
  70.    RW=0;
  71.    Dataport=dat;//dat:顯示數(shù)據(jù)
  72.    EN=1;
  73.    EN=0;
  74.   }




  75. void SelectScreen(uchar screen)          //選擇屏幕screen: 0-全屏,1-左屏,2-右屏
  76. {                                                  
  77.    switch(screen)
  78.    { case 0: cs1=0;//全屏
  79.              _nop_(); _nop_(); _nop_();
  80.              cs2=0;
  81.              _nop_(); _nop_(); _nop_();
  82.              break;
  83.      case 1: cs1=0;//左屏
  84.              _nop_(); _nop_(); _nop_();
  85.              cs2=1;
  86.              _nop_(); _nop_(); _nop_();
  87.              break;
  88.      case 2: cs1=1;//右屏
  89.              _nop_(); _nop_(); _nop_();
  90.              cs2=0;
  91.              _nop_(); _nop_(); _nop_();
  92.              break;
  93.    }
  94. }


  95. void ClearScreen(uchar screen)          //清屏screen: 0-全屏,1-左屏,2-右
  96. {         
  97.      unsigned char i,j;
  98.      SelectScreen(screen);
  99.      
  100.          for(i=0;i<8;i++)         //控制頁數(shù)0-7,共8頁
  101.          {
  102.                 SetLine(i);
  103.                         SetColumn(0);
  104.               for(j=0;j<64;j++)           //控制列數(shù)0-63,共64列
  105.                                   {
  106.                   WriteByte(0x00); //寫點內(nèi)容,列地址自動加1
  107.                 }
  108.      }
  109.                                          
  110. }


  111. void lcd_rol()                                        //向上滾屏
  112. {
  113.          uint i;
  114.         for(i = 0; i < 64; i++)
  115.         {
  116.                 cs1=0; // 片選1
  117.                 SendCommandToLCD(0xc0+i);
  118.                 cs1=1;
  119.                
  120.                 cs2=0;// 片選2
  121.                 SendCommandToLCD(0xc0+62-i);
  122.                 cs2=0; // 片選2
  123.                
  124.                 delay_ms(6);
  125.         }
  126. }
  127. void InitLCD(  )             //初始化LCD
  128. {

  129.         CheckState();

  130.         SelectScreen(0);
  131.         SetOnOff(0); //關(guān)顯示

  132.         SelectScreen(0);
  133.         SetOnOff(1); //開顯示

  134.         SelectScreen(0);
  135.         ClearScreen(0);//清屏

  136.         SetStartLine(0); //開始行:0

  137. }


  138. //顯示全角漢字
  139. void Display(uchar ss,uchar page,uchar column,uchar number)  //Display(2,0,i*16,i);
  140. {
  141.         uint i;                          //選屏參數(shù),pagr選頁參數(shù),column選列參數(shù),number選第幾漢字輸出
  142.                
  143.         SelectScreen(ss);
  144.         column=column&0x3f;

  145.         SetLine(page);        //寫上半頁
  146.         SetColumn(column); //控制列
  147.         for(i=0;i<16;i++)  //控制16列的數(shù)據(jù)輸出
  148.         {
  149.         WriteByte(Hzk[i+32*number]); //i+32*number漢字的前16個數(shù)據(jù)輸出
  150.         
  151.         }

  152.         SetLine(page+1);                 //寫下半頁
  153.         SetColumn(column);           //控制列
  154.     for(i=0;i<16;i++)          //控制16列的數(shù)據(jù)輸出
  155.         {
  156.         WriteByte(Hzk[i+32*number+16]);        //i+32*number+16漢字的后16個數(shù)據(jù)輸出
  157.         }

  158. }


  159. //顯示半角漢字和數(shù)字和字母
  160. void Displayen(uchar ss,uchar page,uchar column,uchar number)
  161. {
  162.         uint i;           //選屏參數(shù),pagr選頁參數(shù),column選列參數(shù),number選第幾漢字輸出
  163.                
  164.         SelectScreen(ss);
  165.         column=column&0x3f;

  166.         SetLine(page);        //寫上半頁
  167.         SetColumn(column);
  168.            for(i=0;i<8;i++)
  169.         {
  170.         WriteByte(Ezk[i+16*number]);
  171.         }
  172.         
  173.         SetLine(page+1);        //寫下半頁
  174.         SetColumn(column);
  175.            for(i=0;i<8;i++)
  176.         {
  177.         WriteByte(Ezk[i+16*number+8]);
  178.         }
  179. }


  180. void Dis_Play()
  181. {
  182.         uchar i;
  183.         SetStartLine(0);  
  184.    for(i=0;i<4;i++)
  185.    {
  186.                 Display(0,0,i*16,i);
  187.                 Display(1,0,i*16,i+4);
  188.                
  189.                 Display(2,0+2,i*16,i+8);
  190.                 Display(1,0+2,i*16,i+12);

  191.                 Display(2,0+2+2,i*16,i+16);
  192.                 Display(1,0+2+2,i*16,i+20);
  193.                   
  194. //                Display(2,0+2+2+2,i*16,i+24);
  195. //                Display(1,0+2+2+2,i*16,i+28);
  196.     }
  197.         for(i=0;i<8;i++)
  198.    {
  199.            Displayen(2,0+2+2+2,i*8,i);
  200.            Displayen(1,0+2+2+2,i*8,i+8);
  201.    }
  202.         
  203.         while(1)
  204.         {
  205.                 lcd_rol();
  206.                 for(i=0;i<2*5;i++)
  207.                 {
  208.                         delay_ms(500);
  209.                 }
  210.                
  211.         }
  212. }
復(fù)制代碼

所有資料51hei提供下載:
LCD12864.rar (101.36 KB, 下載次數(shù): 34)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕免费视频 | 国产高清一区二区 | 3级毛片 | 羞羞视频网 | 国产激情一区二区三区 | 亚洲精品国产偷自在线观看 | 色婷婷综合久久久中文字幕 | 天天艹天天干天天 | av成人在线观看 | 国产999精品久久久 午夜天堂精品久久久久 | 久久久久国产精品一区三寸 | 成人欧美一区二区三区黑人孕妇 | 久久久天堂 | 午夜精品一区二区三区在线观看 | 欧美日韩亚洲一区 | а天堂中文最新一区二区三区 | 一级在线观看 | 成人特区| 祝你幸福电影在线观看 | 亚洲va欧美va天堂v国产综合 | 日韩成人一区二区 | 黄色网址在线免费观看 | 成人精品久久 | 久久国产精品免费一区二区三区 | 成人国产精品色哟哟 | 特黄毛片视频 | 国产美女永久免费无遮挡 | 在线天堂免费中文字幕视频 | 一区二区三区电影网 | 国产精品久久久久久久久久免费看 | 中文字幕乱码视频32 | 国产aaaaav久久久一区二区 | 高清国产一区二区 | 久久精品国产99国产精品 | 蜜桃在线播放 | 一级二级三级黄色 | 亚洲三级在线观看 | 亚洲国产精品视频 | 狠狠插狠狠操 | 一区在线视频 | 99精品国产成人一区二区 |