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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2948|回復: 0
收起左側

51單片機LCD12864顯示屏圖片中文英文顯示仿真程序

[復制鏈接]
ID:611568 發(fā)表于 2020-12-1 09:19 | 顯示全部樓層 |閱讀模式
出于愛好,喜歡單片機而進行的學習,將學習過程發(fā)出來進行交流。如有不妥的地方,也希望大家可以指正,多謝。軟件版本:proteus8.9,keil uvision5
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

Snipaste_2020-12-01_09-10-39.jpg


顯示結果:
Snipaste_2020-12-01_09-11-063.jpg


2.jpg


圖片及字體取模

Snipaste_2020-12-01_09-12-25.jpg
Snipaste_2020-12-01_09-11-39.jpg


附件中含詳細的代碼及C源文件,及顯示的控制芯片的手冊及個人記錄的相應芯片操作指令。

單片機源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #include<stdlib.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. //定義端口
  7. sbit A0=P2^0;  //定義端口是傳輸命令還是數(shù)據(jù),
  8. sbit RW=P2^1;//定義端口是讀取還是寫入,
  9. sbit LCDEN=P2^2;//芯片使能啟動
  10. sbit RST=P2^3;//復位鍵

  11. uchar code dis1[]={/*--  文字:  我  --*/
  12. /*--  宋體12;  此字體下對應的點陣為:寬x高=16x16   --*/
  13. 0x20,0x24,0x24,0x24,0xFE,0x23,0x22,0x20,0x20,0xFF,0x20,0x22,0x2C,0xA0,0x20,0x00,
  14. 0x00,0x08,0x48,0x84,0x7F,0x02,0x41,0x40,0x20,0x13,0x0C,0x14,0x22,0x41,0xF8,0x00};



  15. uchar code dis2[]={
  16. /*--  文字:  愛  --*/
  17. /*--  宋體12;  此字體下對應的點陣為:寬x高=16x16   --*/
  18. 0x80,0x64,0x2C,0x34,0x24,0x24,0xEC,0x32,0x22,0x22,0x32,0x2E,0x23,0xA2,0x60,0x00,
  19. 0x00,0x41,0x21,0x91,0x89,0x87,0x4D,0x55,0x25,0x25,0x55,0x4D,0x81,0x80,0x80,0x00};
  20.         中間省略 見附件
  21. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00
  22. };



  23. /*******************************************************************************
  24. * 函 數(shù) 名         : delay_ms,
  25. * 函數(shù)功能         : 毫秒延時程序
  26. * 輸    入         : 輸入延時時間長度,單位為毫秒
  27. * 輸    出         : 無
  28. *******************************************************************************/


  29. void delay_ms(uint x)
  30. {
  31.         uint i,j;
  32.         for (j=0;j<x;j++)
  33.                 for(i=0;i<110;i++);
  34. }


  35. /*******************************************************************************
  36. * 函 數(shù) 名         : write_com
  37. * 函數(shù)功能         : LCD寫指令程序
  38. * 輸    入         : 輸入LCD對應的設置指令代碼
  39. * 輸    出         : 對LCD進行相應的設置
  40. *******************************************************************************/
  41. void write_com(uchar cmd)
  42. {
  43.         A0=0;
  44.         RW=0;
  45.         LCDEN=1;
  46.         P0=cmd;
  47.         _nop_();
  48.         LCDEN=0;
  49.         RW=1;

  50. }
  51. /*******************************************************************************
  52. * 函 數(shù) 名         : write_dat
  53. * 函數(shù)功能         : LCD寫數(shù)據(jù)程序
  54. * 輸    入         : 向LCD寫入對應的數(shù)據(jù)或代碼
  55. * 輸    出         : 對LCD數(shù)據(jù)輸入顯示
  56. *******************************************************************************/
  57. void write_dat(uchar dat)
  58. {
  59.         A0=1;
  60.         RW=0;
  61.         LCDEN=1;
  62.         P0=dat;
  63.         _nop_();
  64.         LCDEN=0;
  65.         RW=1;
  66. }

  67. /*******************************************************************************
  68. * 函 數(shù) 名         : LCD_Initial
  69. * 函數(shù)功能         : 對LCD進行初始化
  70. * 輸    入         : 對LCD的初始狀態(tài)進行配置
  71. * 輸    出         : 無
  72. *******************************************************************************/


  73. /*LCD初始化*/
  74. void LCD_Initial()
  75. {
  76.         RST=0;
  77.         delay_ms(10);
  78.         RST=1;
  79.         delay_ms(10);
  80.          write_com(0xa2); //1/9 bias set
  81.         write_com(0xa1);    //adc=0,正常從左到右顯示
  82. write_com(0xc8);    //COM顛倒輸出,,Startline0在上側,Com0 在上側
  83.                 write_com(0xae);    //Display_Hanzi 0ff
  84.                     write_com(0xaf);    //Display_Hanzi on
  85.       
  86.         }
  87. /*******************************************************************************
  88. * 函 數(shù) 名         : Display_Hanzi
  89. * 函數(shù)功能         : 在指定的行與列寫入對應的漢字
  90. * 輸    入         : a對應的是寫入位置的頁,b對應寫入字符的列,c為寫入的漢字代碼數(shù)組,漢字的寬度為16,
  91.                                                                                 則在對高四位來進行設定的時候,直接用0x10與其列數(shù)進行與操作,高四位的變化范圍只能
  92.                                                                                 為0-7,滿足128列的范圍。
  93. * 輸    出         : 在屏幕上顯示要輸出的內容
  94. *******************************************************************************/
  95.         void Display_Hanzi(int a,int b,uchar *c)
  96. {
  97.         int n;
  98.         for(n=0;n<=15;n++)
  99.         {
  100.          write_com(a);                                //選擇a頁
  101.          _nop_();       
  102.          write_com(0x10|b);   //由于字符特征,直接選取對應的高位進行設置。
  103.          _nop_();       
  104.          write_com(0x00|n);
  105.          _nop_();       
  106.          write_dat(c[n]);
  107.          _nop_();       
  108.                
  109.          write_com(1+a);                                //選擇a+1頁
  110.          _nop_();       
  111.          write_com(0x10|b);//列的高四位
  112.          _nop_();       
  113.          write_com(0x00|n);//列的低四位
  114.          _nop_();       
  115.          write_dat(c[n+16]);
  116.          _nop_();
  117.                 }
  118.        
  119.         }

  120.        
  121.         /*******************************************************************************
  122. * 函 數(shù) 名         : Display_SC
  123. * 函數(shù)功能         : 在指定的行與列寫入對應的單字節(jié)字符
  124. * 輸    入         : a對應的是寫入位置的頁,b對應寫入字符的列,c為寫入的漢字代碼數(shù)組
  125. * 輸    出         : 在屏幕上顯示要輸出的內容
  126. *******************************************************************************/
  127.         void Display_SC(int a,int b,uchar *c)
  128. {
  129.         int n;
  130.         int C_high,C_low;
  131.         C_high = (b&0xF0)>>4;//選擇列的高四位
  132.         C_low = (b&0x0F);  //列的低四位
  133.         for(n=0;n<=7;n++)
  134.         {
  135.          write_com(a);                                //選擇a頁
  136.        
  137.          write_com(0x10|C_high);//列的高四位
  138.          write_com((0x00|C_low)+n);//列的低四位
  139.          write_dat(c[n]);
  140.                
  141.          write_com(1+a);                                //選擇a+1頁
  142.          write_com(0x10|C_high);//列的高四位
  143.          write_com((0x00|C_low)+n);//列的低四位
  144.          write_dat(c[n+8]);
  145.                 }
  146.        
  147.         }

  148.         /*******************************************************************************
  149. * 函 數(shù) 名         : Display_BMP
  150. * 函數(shù)功能         : 顯示圖片的內容,圖片大小為128*64
  151. * 輸    入         : 輸入對應的代碼數(shù)組
  152. * 輸    出         : 在屏幕上顯示要輸出的圖片內容
  153. *******************************************************************************/
  154.         void Display_BMP(uchar *bmp)
  155.         {
  156.                 int i=0;        //頁碼,0-7頁
  157.                 int j=0;        //列數(shù),0-127列,對應一行的像素數(shù)
  158.                         int C_high,C_low,C_COLUMN;

  159.                 {
  160.                 for(i=0;i<8;i++)
  161.                         {
  162.                         write_com(0xb0+i);//寫入頁數(shù)
  163.                        
  164.                                 C_COLUMN=0x00;
  165.                                
  166.                         for (j=0;j<128;j++)
  167.                                 {
  168.                                         if(j<128)
  169.                                         {
  170.                                
  171.                                         C_high = ((C_COLUMN+j)&0xF0)>>4;//選擇列的高四位
  172.                                         C_low = ((C_COLUMN+j)&0x0F);  //列的低四位
  173.                                         write_com(0x10|C_high);//列的高四位
  174.                                         write_com(0x00|C_low);//列的低四位
  175.                                        
  176.                                         write_dat(bmp[i*128+j]);}
  177.                                 else
  178.                                         {
  179.                                                 C_COLUMN=0X00;
  180.                                                
  181.                                         }
  182.                                        
  183.                                  }
  184.                         }
  185.                
  186.         }
  187. }
  188.        
  189.        
  190. main()
  191. {
  192.                 LCD_Initial();
  193.        
  194.        
  195. while(1)
  196.                
  197.         {
  198.        
  199.                 Display_Hanzi(0xb0,0x00,dis1);
  200.                 Display_Hanzi(0xb0,0x01,dis2);
  201.                 Display_Hanzi(0xb0,0x02,dis3);
  202.           Display_Hanzi(0xb0,0x03,dis4);
  203.                 Display_Hanzi(0xb0,0x04,dis5);
  204.                 Display_Hanzi(0xb0,0x05,dis6);
  205.                 Display_Hanzi(0xb0,0x06,dis7);
  206.                                
  207.                 Display_Hanzi(0xb2,0x00,dis21);
  208.                 Display_Hanzi(0xb2,0x01,dis22);
  209.                 Display_Hanzi(0xb2,0x02,dis23);
  210.                
  211.                 Display_SC(0xb4,0x00,dis30);
  212.                 Display_SC(0xb4,0x08,dis31);
  213.           Display_SC(0xb4,16,dis32);
  214.                 Display_SC(0xb4,24,dis33);
  215.                 Display_SC(0xb6,0,dis40);
  216.                 Display_SC(0xb6,8,dis41);
  217.                 Display_SC(0xb6,16,dis42);
  218.                 Display_SC(0xb6,24,dis43);
  219.                
  220.                 delay_ms(2000);
  221.        
  222.                 Display_BMP(img);
  223.                
  224.                
  225.                 delay_ms(2000);
  226.                 Display_BMP(C_Clear);
  227.                

  228.         }
  229.        
  230.        
  231. }
復制代碼
51hei.png
所有資料51hei提供下載:
12864 Display.zip (1.82 MB, 下載次數(shù): 66)

評分

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

查看全部評分

回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人毛片网站 | 伊人网在线综合 | 亚洲精品一区中文字幕 | 日韩欧美在线播放 | 久久国产欧美日韩精品 | 久久成人免费观看 | 日本午夜一区二区三区 | 精精国产视频 | 中文二区 | 日韩在线观看一区 | 亚洲国产网站 | 欧美一区在线视频 | 日韩av中文 | 国产视频第一页 | 欧美一区二区三区四区五区无卡码 | 中文字幕在线一区二区三区 | 亚洲区一区二 | 99精品亚洲国产精品久久不卡 | 亚洲免费网 | 综合激情久久 | 99热国产在线播放 | 中文字幕乱码亚洲精品一区 | 伊人网综合 | 亚洲精品一二三区 | 天天干狠狠 | 91视频88av| 成年人在线| 精品视频一二区 | 久久男人| 亚洲欧美中文日韩在线v日本 | 亚洲欧美日韩一区二区 | 国产精品一区二区三区在线 | 日韩在线视频一区 | 成人免费激情视频 | 久久久999免费视频 999久久久久久久久6666 | 精品无码久久久久久久动漫 | www4虎 | 观看av | 一区二区免费视频 | 国内久久 | 日韩久久久久久 |