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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

這個單片機st7920液晶程序里面Write_Data(00);的作用?

[復制鏈接]
跳轉到指定樓層
樓主
ID:721008 發表于 2020-9-16 17:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
此程序是一個開發板(51單片機的12684顯示)的教程程序,void DisplayCGRAM(unsigned char x,unsigned char y)這個函數是如何對void CGRAM()函數進行顯示的,Display是一個關鍵字嗎?還有Write_Data(00);這條語句的作用是什么?如何去理解?
求大神解答,謝謝。
  1. /*-----------------------------------------------
  2.   名稱:st7920字庫液晶顯示
  3.   修改:無
  4.   內容:通過顯示字符、數字、漢字和圖片測試液晶基本功能
  5. ------------------------------------------------*/
  6. #include <reg52.h>
  7. #include <intrins.h>
  8. #include "delay.h"

  9. sbit RS = P2^4;
  10. sbit RW = P2^5;
  11. sbit E  = P2^6;
  12. sbit RES = P2^3;
  13. sbit PSB = P2^1;
  14. sbit PAUSE = P3^0;

  15. #define DataPort P0        //MCU P0<------> LCM



  16. unsigned char code user16x16[]={ //笑臉圖片
  17. 0x0F,0xF0,0x10,0x08,0x20,0x04,0x40,0x02,0x9C,0x39,0xBE,0x7D,0x80,0x01,0x80,0x01,
  18. 0x80,0x01,0x88,0x11,0x84,0x21,0x43,0xC2,0x20,0x04,0x10,0x08,0x0F,0xF0,0x00,0x00,
  19. };
  20. unsigned char code pic1[]=      // 圖片代碼
  21. {
  22. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  23. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  24. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  25. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  26. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  27. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  28. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  29. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  30. 0xC0,0x1F,0xFF,0x81,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  31. 0xC0,0x1F,0xFF,0x81,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  32. 0xC0,0x18,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x08,0x00,0x00,0x00,0x03,
  33. 0xC0,0x1F,0xFF,0x80,0x00,0x00,0x04,0x07,0x81,0xE0,0x10,0x10,0x03,0xC0,0x30,0x03,
  34. 0xC0,0x1F,0xFF,0x80,0x00,0x00,0x0C,0x0C,0xC3,0x30,0x08,0x20,0x0C,0xE0,0x70,0x03,
  35. 0xC0,0x18,0x01,0x87,0xFF,0xFE,0x3C,0x18,0x66,0x18,0x04,0x40,0x0C,0x60,0x70,0x03,
  36. 0xC0,0x1F,0xFF,0x87,0xFF,0xFE,0x0C,0x18,0x66,0x18,0x02,0x80,0x18,0x00,0xB0,0x03,
  37. 0xC0,0x1F,0xFF,0x80,0x06,0x00,0x0C,0x18,0x66,0x18,0x01,0x00,0x1B,0x81,0x30,0x03,
  38. 0xC0,0x01,0x98,0x00,0x06,0x00,0x0C,0x00,0xE3,0x30,0x02,0x80,0x1C,0xC1,0x30,0x03,
  39. 0xC0,0x19,0x99,0x80,0x66,0x60,0x0C,0x00,0xC1,0xE0,0x04,0x40,0x18,0x62,0x30,0x03,
  40. 0xC0,0x19,0x99,0x80,0x66,0x30,0x0C,0x01,0x83,0x30,0x08,0x20,0x18,0x66,0x30,0x03,
  41. 0xC0,0x0D,0x9B,0x00,0xC6,0x38,0x0C,0x03,0x06,0x18,0x10,0x10,0x18,0x67,0xFC,0x03,
  42. 0xC0,0x0D,0x9B,0x01,0xC6,0x1C,0x0C,0x06,0x06,0x18,0x20,0x08,0x18,0x60,0x30,0x03,
  43. 0xC0,0x01,0x98,0x03,0x86,0x0C,0x0C,0x0C,0x06,0x18,0x00,0x00,0x08,0x60,0x30,0x03,
  44. 0xC0,0x7F,0xFF,0xE3,0x06,0x00,0x0C,0x18,0x03,0x30,0x00,0x00,0x0C,0xC0,0x30,0x03,
  45. 0xC0,0x7F,0xFF,0xE0,0x1E,0x00,0x0C,0x1F,0xE1,0xE0,0x00,0x00,0x07,0x80,0x30,0x03,
  46. 0xC0,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  47. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  48. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  49. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  50. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  51. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  52. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  53. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  54. 0xC0,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x18,0x00,0x00,0x00,0x06,0x0C,0x03,
  55. 0xC3,0xFF,0xFC,0x3F,0xF0,0x80,0x0C,0x00,0x3F,0x18,0x01,0xFF,0xFE,0x06,0x0C,0x03,
  56. 0xC3,0xFF,0xFC,0x3F,0xF1,0x80,0x0F,0xFC,0x3F,0x18,0x01,0xFF,0xFE,0x06,0x0C,0x03,
  57. 0xC3,0x0C,0x0C,0x0C,0xC3,0x00,0x0F,0xFC,0x33,0x7F,0xE1,0x86,0x06,0x06,0x0C,0x03,
  58. 0xC3,0x1F,0xCC,0x0C,0xC6,0x00,0x0C,0x00,0x33,0x7F,0xE1,0x8F,0xE6,0x06,0x0C,0x03,
  59. 0xC3,0x3F,0xCC,0x0C,0xCC,0x00,0x0C,0x00,0x36,0x30,0x01,0x9F,0xE6,0x07,0xFF,0xE3,
  60. 0xC3,0x79,0x8C,0x0C,0xC8,0x00,0xFF,0xF0,0x36,0x36,0x01,0xBC,0xC6,0x07,0xFF,0xE3,
  61. 0xC3,0x6F,0x0C,0x7F,0xF0,0xC0,0xFF,0xF0,0x36,0x66,0x01,0xB7,0x86,0x06,0x00,0x03,
  62. 0xC3,0x0F,0x0C,0x7F,0xF1,0x80,0xC0,0x30,0x36,0x7F,0xC1,0x87,0x86,0x06,0x00,0x03,
  63. 0xC3,0x79,0xEC,0x0C,0xC3,0x00,0xC0,0x30,0x33,0x7F,0xC1,0xBC,0xF6,0x06,0x00,0x03,
  64. 0xC3,0x76,0xEC,0x0C,0xC6,0x00,0xC0,0x30,0x33,0x06,0x01,0xBB,0x76,0x07,0xFF,0x03,
  65. 0xC3,0x07,0x0C,0x0C,0xCC,0x20,0xFF,0xF0,0x33,0x06,0x01,0x83,0x86,0x07,0xFF,0x03,
  66. 0xC3,0x03,0x0C,0x18,0xC8,0x60,0xFF,0xF0,0x3F,0x06,0x01,0x81,0x86,0x06,0x03,0x03,
  67. 0xC3,0x1C,0x0C,0x18,0xC0,0xC0,0x00,0x00,0x3E,0xFF,0xE1,0x8E,0x06,0x06,0x03,0x03,
  68. 0xC3,0x1F,0x0C,0x18,0xC1,0x81,0xB1,0x8C,0x30,0xFF,0xE1,0x8F,0x86,0x06,0x03,0x03,
  69. 0xC3,0x03,0x0C,0x30,0xC7,0x01,0xB1,0x8C,0x30,0x06,0x01,0x81,0x86,0x0C,0x03,0x03,
  70. 0xC3,0xFF,0xFC,0x70,0xDE,0x03,0x18,0xC6,0x30,0x06,0x01,0xFF,0xFE,0x0C,0x03,0x03,
  71. 0xC3,0xFF,0xFC,0x20,0x18,0x03,0x18,0xC6,0x30,0x06,0x01,0xFF,0xFE,0x18,0x03,0x03,
  72. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  73. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  74. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  75. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  76. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  77. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  78. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  79. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  80. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  81. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  82. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  83. 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  84. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  85. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

  86. };

  87. /*------------------------------------------------
  88.                     檢測忙位
  89. ------------------------------------------------*/
  90. void Check_Busy()
  91. {  
  92.     RS=0;
  93.     RW=1;
  94.     E=1;
  95.     DataPort=0xff;
  96.     while((DataPort&0x80)==0x80);//忙則等待
  97.     E=0;
  98. }
  99. /*------------------------------------------------
  100.                    寫命令
  101. ------------------------------------------------*/
  102. void Write_Cmd(unsigned char Cmd)
  103. {
  104.         Check_Busy();
  105.         RS=0;
  106.         RW=0;
  107.         E=1;
  108.         DataPort=Cmd;
  109.         DelayUs2x(5);
  110.         E=0;
  111.         DelayUs2x(5);
  112. }
  113. /*------------------------------------------------
  114.                     寫數據
  115. ------------------------------------------------*/
  116. void Write_Data(unsigned char Data)
  117. {
  118.         Check_Busy();
  119.         RS=1;
  120.         RW=0;
  121.         E=1;
  122.         DataPort=Data;
  123.         DelayUs2x(5);
  124.         E=0;
  125.         DelayUs2x(5);
  126. }
  127. /*------------------------------------------------
  128.                    液晶屏初始化
  129. ------------------------------------------------*/
  130. void Init_ST7920()
  131. {  
  132.    DelayMs(40);           //大于40MS的延時程序
  133.    PSB=1;                 //設置為8BIT并口工作模式
  134.    DelayMs(1);            //延時
  135.    RES=0;                 //復位
  136.    DelayMs(1);            //延時
  137.    RES=1;                 //復位置高
  138.    DelayMs(10);
  139.    Write_Cmd(0x30);       //選擇基本指令集
  140.    DelayUs2x(50);         //延時大于100us
  141.    Write_Cmd(0x30);       //選擇8bit數據流
  142.    DelayUs2x(20);         //延時大于37us
  143.    Write_Cmd(0x0c);       //開顯示(無游標、不反白)
  144.    DelayUs2x(50);         //延時大于100us
  145.    Write_Cmd(0x01);       //清除顯示,并且設定地址指針為00H
  146.    DelayMs(15);           //延時大于10ms
  147.    Write_Cmd(0x06);       //指定在資料的讀取及寫入時,設定游標的移動方向及指定顯示的移位,光標從右向左加1位移動
  148.    DelayUs2x(50);         //延時大于100us
  149. }
  150. /*------------------------------------------------
  151.                    用戶自定義字符
  152. ------------------------------------------------*/
  153. void CGRAM()
  154. {
  155.      int i;
  156.      Write_Cmd(0x30);
  157.      Write_Cmd(0x40);
  158.      for(i=0;i<16;i++)
  159.        {
  160.             Write_Data(user16x16[i*2]);
  161.         Write_Data(user16x16[i*2+1]);
  162.       }
  163. }   
  164. /*------------------------------------------------
  165.                    顯示用戶自定義字符
  166. ------------------------------------------------*/
  167. void DisplayCGRAM(unsigned char x,unsigned char y)
  168. {
  169. switch(y)
  170.      {
  171.           case 1: Write_Cmd(0x80+x);break;
  172.           case 2: Write_Cmd(0x90+x);break;
  173.           case 3: Write_Cmd(0x88+x);break;
  174.           case 4: Write_Cmd(0x98+x);break;
  175.       default:break;
  176.          }
  177.     Write_Data(00);
  178.     Write_Data(00);

  179. }         
  180. /*------------------------------------------------
  181.                    顯示字符串
  182. x:橫坐標值,范圍0~8
  183. y:縱坐標值,范圍1~4
  184. ------------------------------------------------*/
  185. void LCD_PutString(unsigned char x,unsigned char y,unsigned char code *s)
  186. {
  187. switch(y)
  188.      {
  189.           case 1: Write_Cmd(0x80+x);break;
  190.           case 2: Write_Cmd(0x90+x);break;
  191.           case 3: Write_Cmd(0x88+x);break;
  192.           case 4: Write_Cmd(0x98+x);break;
  193.       default:break;
  194.          }
  195. while(*s>0)
  196.    {
  197.       Write_Data(*s);
  198.       s++;
  199.       DelayUs2x(50);
  200.    }
  201. }
  202. /*------------------------------------------------
  203.                       清屏
  204. ------------------------------------------------*/
  205. void ClrScreen()
  206. {
  207.    Write_Cmd(0x01);
  208.    DelayMs(15);
  209. }
  210.          
  211. /*------------------------------------------------
  212.                    顯示圖片
  213. ------------------------------------------------*/
  214. void LCD_PutGraphic(unsigned char code *img)
  215. {
  216. int i,j;
  217. //顯示上半屏內容設置
  218.    for(i=0;i<32;i++)            
  219.     {
  220.       Write_Cmd(0x80 + i); //SET  垂直地址 VERTICAL ADD
  221.       Write_Cmd(0x80);     //SET  水平地址 HORIZONTAL ADD
  222.       for(j=0;j<16;j++)
  223.        {
  224.          Write_Data(*img);
  225.          img++;
  226.        }
  227.     }
  228. //顯示下半屏內容設置
  229.    for(i=0;i<32;i++)            
  230.     {
  231.       Write_Cmd(0x80 + i); //SET 垂直地址 VERTICAL ADD
  232.       Write_Cmd(0x88);     //SET 水平地址 HORIZONTAL ADD
  233.       for(j=0;j<16;j++)
  234.        {
  235.          Write_Data(*img);
  236.          img++;
  237.        }
  238.     }  

  239. }
  240. /*------------------------------------------------
  241.                  設置到繪圖模式
  242. ------------------------------------------------*/
  243. void SetGraphicMode()
  244. {
  245.    Write_Cmd(0x36);       //選擇8bit數據流 圖形模式
  246.    DelayUs2x(20);

  247. }
  248. /*------------------------------------------------
  249.                  主程序
  250. ------------------------------------------------*/
  251. main()
  252. {
  253.   unsigned char i;
  254.    CGRAM();     //寫入自定義字符
  255.    while(1)
  256.    {

  257.       Init_ST7920();   //初始化
  258.       LCD_PutString(0,1,"  單片機  ");
  259.           LCD_PutString(0,2,"技術論壇");
  260.           LCD_PutString(0,3,"LCD12864點陣液晶");
  261.       LCD_PutString(0,4,"ST7920  測試程序");   
  262.           DisplayCGRAM(7,1); //在第一行第一個位置和
  263.           DisplayCGRAM(0,1);//最后一個位置寫入自定義圖片笑臉
  264.           //延時30x200ms   
  265.       for(i=0;i<30;i++)
  266.           DelayMs(200);

  267.           LCD_PutString(0,1,"  專用技術論壇  ");
  268.           LCD_PutString(0,2," wwwxxxx.net ");
  269.           LCD_PutString(0,3," wwwxxxxxcom ");
  270.       LCD_PutString(0,4,"  專業成就卓越! ");   
  271.           DisplayCGRAM(0,1); //寫入自定義圖片笑臉
  272.           DisplayCGRAM(0,4);
  273.           //延時30x200ms   
  274.       for(i=0;i<30;i++)
  275.           DelayMs(200);

  276.           ClrScreen();          //清屏
  277.           SetGraphicMode();     //設置成繪圖模式
  278.       LCD_PutGraphic(pic1); //調入一幅圖畫
  279.       //延時20x200ms
  280.       for(i=0;i<20;i++)
  281.           DelayMs(200);

  282.           ClrScreen();
  283.          


  284.    }
  285. }
復制代碼



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

使用道具 舉報

沙發
ID:328014 發表于 2020-9-16 21:10 | 只看該作者
這個是往st7920寄存器里面寫數據,要弄懂這個必須得先精通液晶的寄存器才行
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线免费观看成人 | 插插宗合网 | 国产精品久久久久久吹潮日韩动画 | 日韩午夜影院 | 九九热免费在线观看 | 草草草草视频 | 成人在线视频网 | 亚洲第一视频网 | 成人一区二区三区在线观看 | 日本天天操 | 拍真实国产伦偷精品 | 中文字幕亚洲无线 | 国产精品视频一区二区三区 | 五月综合激情在线 | 亚洲精品一区二区另类图片 | 亚洲精品国产一区 | 亚洲激情在线观看 | 国产丝袜一区二区三区免费视频 | 综合色久 | 久久国产欧美一区二区三区精品 | 久久精品成人 | 欧美中文字幕 | 欧美黑人一区二区三区 | 午夜理伦三级理论三级在线观看 | 国产专区视频 | 欧美一级免费看 | 国产精品一区视频 | 国产一区二区三区久久久久久久久 | 91精品久久久久久久久 | 久久青草av | 在线一区视频 | 美女视频三区 | 国产这里只有精品 | 有码一区 | 中文字幕亚洲一区 | 国产精品国产三级国产a | 亚洲区一区二 | 亚洲情综合五月天 | 99re在线视频免费观看 | 中文字幕日韩欧美 | 一区二区成人 |