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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5219|回復: 1
打印 上一主題 下一主題
收起左側

51單片機12864大液晶屏proteus仿真

[復制鏈接]
跳轉到指定樓層
樓主
51單片機12864大液晶屏proteus仿真
這里的液晶屏是LGM12641BS1R,共享資源,僅供學習參考。



單片機源程序:
  1. //*************************************************************************************************
  2. //*                                                                                                                                                                                                  *
  3. //*                         ******************************LCD12864驅動程序**************************                          *
  4. //*                                                                                                                                                                                                  *
  5. //*************************************************************************************************

  6. //*************************************************************************************************
  7. //*                                                                                                                                                                                                  *
  8. //*                         ******************************頭文件及宏定義**************************                                  *
  9. //*                                                                                                                                                                                                  *
  10. //*************************************************************************************************
  11. #include <at89x51.h>

  12. #define        RST P2_0
  13. #define        E P2_1
  14. #define        RW P2_2
  15. #define        DI P2_3
  16. #define        CS1 P2_5
  17. #define        CS2        P2_4
  18. #define        LCDPORT P0


  19. #define BUSYSTATUS P0_7                                  //忙狀態位。
  20. //#define DISONSTATUS P0_5                          //顯示開關狀態位。
  21. //#define RSTSTATUS P0_4                          //復位狀態位。


  22. #define LCDSTARTROW 0xC0                          //設置起始行指令。
  23. #define LCDPAGE 0xB8                                  //設置頁指令。
  24. #define LCDLINE 0x40                                  //設置列指令。




  25. //*************************************************************************************************
  26. //*                                                                                                                                                                                                  *
  27. //*                         ********************************讀忙標志位*********************************                  *
  28. //*                                                                                                                                                                                                  *
  29. //*************************************************************************************************
  30. bit bCheckBusy()
  31. {
  32.         LCDPORT=0xFF;
  33.         RW=1;
  34.         DI=0;
  35.         E=1;
  36.         E=0;
  37.         return BUSYSTATUS;
  38. }

  39. //*************************************************************************************************
  40. //*                                                                                                                                                                                                  *
  41. //*                         ********************************寫數據*********************************                          *
  42. //*                                                                                                                                                                                                  *
  43. //*************************************************************************************************
  44. void vWriteData(unsigned char ucData)
  45. {
  46.         while(bCheckBusy());
  47.         LCDPORT=0xFF;

  48.         RW=0;
  49.         DI=1;
  50.         LCDPORT=ucData;
  51.         E=1;
  52.         E=0;
  53. }

  54. //*************************************************************************************************
  55. //*                                                                                                                                                                                                  *
  56. //*                         ********************************寫指令*********************************                          *
  57. //*                                                                                                                                                                                                  *
  58. //*************************************************************************************************
  59. void vWriteCMD(unsigned char ucCMD)
  60. {
  61.         while(bCheckBusy());
  62.         LCDPORT=0xFF;

  63.         RW=0;
  64.         DI=0;
  65.         LCDPORT=ucCMD;
  66.         E=1;
  67.         E=0;
  68. }

  69. //*************************************************************************************************
  70. //*                                                                                                                                                                                                  *
  71. //*                         ********************************LCD初始化函數*******************************                  *
  72. //*                                                                                                                                                                                                  *
  73. //*************************************************************************************************
  74. void vLCDInitialize()
  75. {
  76.         CS1=1;
  77.         CS2=1;
  78.         vWriteCMD(0x38);                //8位形式,兩行字符。
  79.         vWriteCMD(0x0F);                //開顯示。
  80.         vWriteCMD(0x01);                //清屏。
  81.         vWriteCMD(0x06);                //畫面不動,光標右移。
  82.         vWriteCMD(LCDSTARTROW);        //設置起始行。
  83. }

  84. //*************************************************************************************************
  85. //*                                                                                                                                                                                                  *
  86. //*                         ******************************顯示自定義行*********************************                  *
  87. //*                                                                                                                                                                                                  *
  88. //*************************************************************************************************
  89. //在8×128的格子里顯示自定義長度的一行
  90. void vShowCustomRow(unsigned char ucPage,unsigned char ucLine,unsigned char ucWidth,unsigned char *ucaRow)
  91. {
  92.         unsigned char ucCount;                                   //取值范圍:ucPage:0~7;ucLine:0~127;
  93.         if(ucLine<64)                                                   //ucWidth:0~127;ucLine+ucWidth<1128。
  94.                 {
  95.                 CS1=1;
  96.                 CS2=0;
  97.                 vWriteCMD(LCDPAGE+ucPage);
  98.                 vWriteCMD(LCDLINE+ucLine);
  99.                 if((ucLine+ucWidth)<64)
  100.                         {
  101.                         for(ucCount=0;ucCount<ucWidth;ucCount++)
  102.                                 vWriteData(*(ucaRow+ucCount));
  103.                         }
  104.                 else
  105.                         {
  106.                         for(ucCount=0;ucCount<64-ucLine;ucCount++)
  107.                                 vWriteData(*(ucaRow+ucCount));

  108.                         CS1=0;
  109.                         CS2=1;
  110.                         vWriteCMD(LCDPAGE+ucPage);
  111.                         vWriteCMD(LCDLINE);
  112.                         for(ucCount=64-ucLine;ucCount<ucWidth;ucCount++)
  113.                                 vWriteData(*(ucaRow+ucCount));
  114.                         }
  115.                 }
  116.         else
  117.                 {
  118.                 CS1=0;
  119.                 CS2=1;
  120.                 vWriteCMD(LCDPAGE+ucPage);
  121.                 vWriteCMD(LCDLINE+ucLine-64);
  122.                 for(ucCount=0;ucCount<ucWidth;ucCount++)
  123.                         vWriteData(*(ucaRow+ucCount));
  124.                 }
  125. }
  126. //*************************************************************************************************
  127. //*                                                                                                                                                                                                  *
  128. //*                         *****************************漢字顯示函數***********************************                  *
  129. //*                                                                                                                                                                                                  *
  130. //*************************************************************************************************
  131. //此函數將16×16漢字顯示在8×128的格子里。
  132. void vShowOneChin(unsigned char ucPage,unsigned char ucLine,unsigned char *ucaChinMap)
  133. {
  134.         vShowCustomRow(ucPage,ucLine,16,ucaChinMap);
  135.         vShowCustomRow(ucPage+1,ucLine,16,ucaChinMap+16);

  136. }
  137. //*************************************************************************************************
  138. //*                                                                                                                                                                                                  *
  139. //*                         *****************************字符顯示函數***********************************                  *
  140. //*                                                                                                                                                                                                  *
  141. //*************************************************************************************************
  142. //此函數將8×16字符顯示在8×128的格子里。
  143. void vShowOneChar(unsigned char ucPage,unsigned char ucLine,unsigned char *ucaCharMap)
  144. {
  145.         vShowCustomRow(ucPage,ucLine,8,ucaCharMap);
  146.         vShowCustomRow(ucPage+1,ucLine,8,ucaCharMap+8);

  147. }


  148. //*************************************************************************************************
  149. //*                                                                                                                                                                                                  *
  150. //*                         **********************************顯示圖片***********************************                  *
  151. //*                                                                                                                                                                                                  *
  152. //*************************************************************************************************
  153. void vShowGraph(unsigned char ucPage,unsigned char ucLine,unsigned char ucWidth,unsigned char ucHigh,unsigned char * ucaGraph)
  154. {
  155.         unsigned char ucCount;
  156.         for(ucCount=0;ucCount<ucHigh;ucCount++)
  157.                 vShowCustomRow(ucPage+ucCount,ucLine,ucWidth,ucaGraph+ucCount*ucWidth);
  158. }
復制代碼

仿真工程文件和源碼下載:
51單片機12864大液晶屏proteus仿真.zip (94.29 KB, 下載次數: 37)


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

使用道具 舉報

沙發
ID:245110 發表于 2018-7-1 21:15 | 只看該作者
非常不錯,謝謝樓主啦。
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人精品久久二区二区91 | 91人人视频在线观看 | 在线日韩福利 | 性色av一区二区三区 | 国内自拍视频在线观看 | 麻豆国产一区二区三区四区 | 青青草原综合久久大伊人精品 | 亚洲欧美日韩精品久久亚洲区 | 一区二区高清在线观看 | 色香婷婷| 亚洲国产精品视频 | 久久久www成人免费精品张筱雨 | 欧美一级片 | 免费看91| 午夜精品 | 免费在线性爱视频 | 四虎影院在线免费观看 | 亚洲免费视频播放 | 亚洲国产精品一区二区www | 久久伊人久久 | 免费三级av | 国产精品视频入口 | 性欧美hd| 色婷婷精品 | 日韩在线免费看 | 中文字幕精品视频在线观看 | 欧美一区二 | 在线视频 中文字幕 | 国产精品日日夜夜 | 中文字幕一区二区三区四区五区 | 国产欧美精品一区二区三区 | 国产精品美女在线观看 | 黑色丝袜三级在线播放 | 国内精品久久久久久久 | 久久99这里只有精品 | 久久精品小视频 | 久草热在线 | 一起操网站 | 亚洲精品99 | 亚洲第一色站 | 欧美国产91 |