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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

51單片機(jī)控制st7920顯示圖片 源程序PCB文件

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
  1. #ifndef _LCD12864BU_H_
  2. #define _LCD12864BU_H_
  3. /*****液晶顯示器的端口定義*****/
  4. #define LCD_data  P0             //數(shù)據(jù)口
  5. sbit LCD_RS  =  P2^0;            //寄存器選擇輸入
  6. sbit LCD_RW  =  P2^1;            //液晶讀/寫(xiě)控制
  7. sbit LCD_EN  =  P2^2;            //液晶使能控制
  8. sbit LCD_PSB =  P3^6;            //串/并方式控制
  9. sbit RST_12864 = P2^5;
  10. #define uchar unsigned char
  11. #define uint  unsigned int

  12.         unsigned char code pictrue1[1024]={
  13.                 /*--  調(diào)入了一幅圖像:E:\Desktop\冰.bmp  --*/
  14. /*--  寬度x高度=128x64  --*/
  15. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  16. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  17. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  18. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  19. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  20. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  21. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  22. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x87,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  23. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7B,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  24. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  25. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x57,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  26. 0xFF,0xFF,0xFF,0xFF,0xF3,0xFF,0xFF,0xFF,0xF8,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  27. 0xFF,0xFF,0x3F,0xFF,0xCC,0xFF,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  28. 0xFF,0xFC,0xDF,0xFF,0xE1,0xFF,0xFF,0xF8,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  29. 0xFF,0xFD,0x7C,0x00,0x1E,0xFF,0xFF,0xF0,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
  30. 0xFF,0xFF,0xF0,0x00,0x0E,0xFF,0xFF,0xF0,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,
  31. 0xFF,0xFF,0xE0,0x00,0x05,0xFF,0xFF,0xC2,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,
  32. 0xFF,0xFF,0xC0,0x01,0x81,0xFF,0xFF,0x80,0x00,0x00,0x02,0x20,0xFF,0xFF,0xFF,0xFF,
  33. 0xFF,0xFF,0x80,0x28,0x09,0xDE,0x01,0xC0,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  34. 0x00,0x04,0x00,0x9F,0xFA,0xE0,0x01,0xC0,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  35. 0x00,0x06,0x02,0x70,0x06,0x4F,0x03,0xC0,0x00,0x00,0x09,0x00,0xFF,0xFF,0xFF,0xFF,
  36. 0x00,0x0C,0x07,0x88,0x09,0xFF,0x83,0xC2,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  37. 0x00,0x0C,0x0F,0x20,0x00,0xFF,0x83,0xB8,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0xFF,
  38. 0x00,0x18,0x1E,0x00,0x01,0x7F,0x07,0x80,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  39. 0x00,0x18,0x3F,0x00,0x04,0x3F,0x87,0x00,0x00,0x80,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  40. 0x00,0x18,0x38,0x7C,0x0F,0x3E,0x07,0x00,0x00,0x00,0x00,0x40,0xFF,0xFF,0xFF,0xFF,
  41. 0x00,0x18,0x78,0xE4,0x01,0x7F,0x07,0x00,0x00,0x00,0x00,0x40,0xFF,0xFF,0xFF,0xFF,
  42. 0x00,0x18,0x75,0xE6,0x05,0xDC,0x06,0x0C,0x00,0x30,0x04,0x40,0xFF,0xFF,0xFF,0xFF,
  43. 0x00,0x10,0x3B,0xFE,0x05,0x98,0x06,0x0C,0x00,0x00,0x3F,0xC0,0xFF,0xFF,0xFF,0xFF,
  44. 0x00,0x10,0x63,0xE4,0x7D,0x9C,0x02,0x00,0x00,0x00,0x7F,0xC0,0xFF,0xFF,0xFF,0xFF,
  45. 0x00,0x10,0xE3,0xE4,0x67,0x98,0x02,0x00,0x00,0xC0,0x3F,0xC0,0xFF,0xFF,0xFF,0xFF,
  46. 0x00,0x10,0xEB,0xF8,0x07,0x98,0x03,0x00,0x00,0xC0,0x7F,0xC0,0xFF,0xFF,0xFF,0xFF,
  47. 0x00,0x10,0xE3,0xF1,0x13,0x98,0x01,0x80,0x00,0x00,0x7F,0x80,0xFF,0xFF,0xFF,0xFF,
  48. 0x00,0x10,0xE3,0xE0,0x01,0x90,0x01,0xF0,0x00,0x00,0x7F,0x80,0xFF,0xFF,0xFF,0xFF,
  49. 0x00,0x38,0x61,0xC0,0x00,0x10,0x00,0xFC,0x00,0x00,0x3F,0x80,0xFF,0xFF,0xFF,0xFF,
  50. 0x00,0x3C,0x78,0x00,0x00,0x50,0x00,0x7F,0x00,0x00,0x3F,0x00,0xFF,0xFF,0xFF,0xFF,
  51. 0x00,0x7C,0x70,0x00,0x00,0xB0,0x00,0x3F,0xFF,0x7C,0x7E,0x00,0xFF,0xFF,0xFF,0xFF,
  52. 0x00,0x3E,0x38,0x00,0x01,0x60,0x00,0x3F,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0xFF,
  53. 0x00,0x7E,0x1F,0x20,0x3D,0xC0,0x00,0x7F,0xFF,0xFF,0xF8,0x00,0xFF,0xFF,0xFF,0xFF,
  54. 0x00,0xFE,0x1F,0xE0,0x07,0xC0,0x00,0x7F,0xFF,0xFF,0xE0,0x00,0xFF,0xFF,0xFF,0xFF,
  55. 0x00,0xFF,0x07,0xFF,0xFF,0x80,0x00,0x7F,0xFF,0xFF,0x80,0x00,0xFF,0xFF,0xFF,0xFF,
  56. 0x00,0xFF,0x83,0xFF,0xFF,0x00,0x00,0x7F,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  57. 0x01,0xFF,0x80,0x7F,0xF8,0x00,0x00,0x3F,0xFF,0xFF,0x80,0x00,0xFF,0xFF,0xFF,0xFF,
  58. 0x01,0xF8,0x00,0x00,0x81,0x80,0x00,0x1F,0xFF,0xFF,0xC0,0x00,0xFF,0xFF,0xFF,0xFF,
  59. 0x01,0xF8,0x00,0x01,0xE1,0x00,0x00,0x07,0xC0,0x3F,0xC0,0x00,0xFF,0xFF,0xFF,0xFF,
  60. 0x03,0xF8,0x00,0x01,0xFF,0x00,0x00,0x03,0xD8,0x3F,0xC0,0x00,0xFF,0xFF,0xFF,0xFF,
  61. 0x00,0xE8,0xFE,0x3F,0xFE,0x00,0x00,0x03,0xC8,0x3F,0xC0,0x00,0xFF,0xFF,0xFF,0xFF,
  62. 0x00,0xF0,0xFF,0xFF,0xFE,0x00,0x00,0x03,0x90,0x1F,0xC0,0x00,0xFF,0xFF,0xFF,0xFF,
  63. 0x00,0x00,0xFF,0xFF,0xFC,0x00,0x00,0x03,0xA0,0x3E,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  64. 0x00,0x01,0x7F,0xFF,0xFC,0x00,0x00,0x01,0x80,0x3C,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  65. 0x00,0x00,0x7F,0xFF,0xFC,0x00,0x00,0x01,0xC0,0x3C,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  66. 0x00,0x00,0xFF,0xFF,0xFC,0x00,0x00,0x01,0xFC,0xFC,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  67. 0x00,0x00,0xBF,0xFF,0xFC,0x00,0x00,0x00,0xFF,0xF8,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  68. 0x00,0x00,0x3F,0xF7,0xF8,0x00,0x00,0x00,0xFF,0xC0,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  69. 0x00,0x00,0x3F,0xC1,0xF8,0x00,0x00,0x00,0xFF,0x10,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  70. 0x00,0x00,0x3F,0x81,0xF8,0x00,0x00,0x00,0x79,0xF8,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  71. 0x00,0x00,0x3F,0x80,0x74,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  72. 0x00,0x00,0x5F,0x41,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  73. 0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  74. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  75. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  76. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  77. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  78. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF};//\Desktop\冰.bmp0


  79. /****************************************************************************
  80. 函數(shù)功能:LCD延時(shí)程序
  81. 入口參數(shù):del
  82. 出口參數(shù):
  83. ****************************************************************************/
  84. //忙檢測(cè),若忙則等待,最長(zhǎng)等待時(shí)間為60ms
  85. //延時(shí)子程序
  86. void delay_12864(unsigned int del){
  87. unsigned int i;
  88. for(i = 0; i < del; i++){; }
  89. }
  90. /****************************************************************************
  91. 狀態(tài)檢查,LCD是否忙
  92. *****************************************************************************/
  93. //void busychk_12864(void){
  94. //unsigned int timeout = 0;
  95. //  LCD_EN  = 0;
  96. //  LCD_RS = 0;
  97. //  LCD_RW  = 1;
  98. //  LCD_EN  = 1;
  99. //while(( LCD_data & 0x80)&& ++timeout != 0);  //忙狀態(tài)檢測(cè),等待超時(shí)時(shí)間為60ms
  100. //  LCD_EN  = 0;
  101. //}
  102. /*****************************************************************************
  103. 函數(shù)功能:寫(xiě)命令到LCD程序,RS(DI)=L,RW=L,EN=H,即來(lái)一個(gè)脈沖寫(xiě)一次
  104. 入口參數(shù):cmd
  105. 出口參數(shù):
  106. *****************************************************************************/
  107. //寫(xiě)命令子程序
  108. void wrtcom_12864(unsigned char com){
  109. //busychk_12864();
  110.   LCD_EN  = 0;
  111.   LCD_RS = 0;
  112.   LCD_RW  = 0;
  113. LCD_data = com;
  114.   LCD_EN  = 1;
  115. delay_12864(50);    //使能延時(shí)!!!注意這里,如果是較快的CPU應(yīng)該延時(shí)久一些
  116.   LCD_EN  = 0;  
  117. }
  118. ////讀數(shù)據(jù)子程序
  119. //unsigned char reddat_12864(void){
  120. //unsigned char temp;
  121. //busychk_12864();
  122. //  LCD_EN  = 0;
  123. // LCD_data = 0xff;  //IO口置高電平,讀引腳
  124. //  LCD_RS = 1;
  125. //  LCD_RW  = 1;
  126. //  LCD_EN  = 1;
  127. //delay_12864(50);    //使能延時(shí)!!!注意這里,如果是較快的CPU應(yīng)該延時(shí)久一些
  128. //temp =  LCD_data;
  129. //return temp;
  130. //}
  131. //寫(xiě)數(shù)據(jù)子程序
  132. void wrtdat_12864(unsigned char dat){
  133. //busychk_12864();
  134.   LCD_EN  = 0;
  135.   LCD_RS = 1;
  136.   LCD_RW  = 0;
  137.   LCD_EN  = 1;
  138. LCD_data = dat;
  139. delay_12864(50);    //使能延時(shí)!!!注意這里,如果是較快的CPU應(yīng)該延時(shí)久一些
  140.   LCD_EN  = 0;  
  141. }

  142. /*****************************************************************************
  143. 函數(shù)功能:LCD初始化程序
  144. 入口參數(shù):
  145. 出口參數(shù):
  146. *****************************************************************************/
  147. //初始化12864子函數(shù)
  148. void initial_12864(void){
  149. delay_12864(40000);
  150. RST_12864 = 1;
  151. RST_12864 = 0;    //復(fù)位
  152. delay_12864(500);
  153. RST_12864 = 1;
  154. wrtcom_12864(0x30);   //設(shè)置為基本指令集動(dòng)作
  155. delay_12864(100);
  156. wrtcom_12864(0x30);   //設(shè)置為基本指令集動(dòng)作
  157. delay_12864(37);
  158. wrtcom_12864(0x08);   //設(shè)置顯示、光標(biāo)、閃爍全關(guān)。
  159. delay_12864(100);
  160. wrtcom_12864(0x01);   //清屏,并且DDRAM數(shù)據(jù)指針清零
  161. delay_12864(100000);
  162. wrtcom_12864(0x06);   //進(jìn)入模式設(shè)置
  163. wrtcom_12864(0x0c);   //開(kāi)顯示
  164. }


  165. void Clear12864Screen()

  166. {

  167.    unsigned char i,j;

  168.   wrtcom_12864(0x34);//功能設(shè)定:8位控制方式,使用擴(kuò)充指令

  169.   wrtcom_12864(0x36);//使用擴(kuò)充指令,繪圖顯示控制

  170.    for(i=0;i<32;i++)

  171. //ST7920可控制256*32點(diǎn)陣(32行256列),而12864液晶實(shí)際的行地址只有0-31行,

  172. //12864液晶的32-63行的行是0-31行地址從第128列劃分一半出來(lái)的,所以分為上下兩半屏,

  173. //也就是說(shuō)第0行和第32行同屬一行,行地址相同;第1行和第33行同屬一行,以此類推

  174.    {                           

  175.          wrtcom_12864(0x80|i);//寫(xiě)行地址(垂直地址)

  176.          wrtcom_12864(0x80);//寫(xiě)列地址(水平地址)

  177.           for(j=0;j<32;j++)

  178.                     wrtdat_12864(0x00);//清屏

  179.    }

  180. }

  181. void LCD12864DisplayPictrue(unsigned char y,unsigned char x,

  182.                               unsigned char px,unsigned char py, unsigned char *pp)

  183. //y-起始行(數(shù)值0-63),x-起始列(16位寬,數(shù)值0-7),

  184. //px-圖片寬度,py-圖片高度,pp-指針指向圖片數(shù)組

  185. //因?yàn)樯舷缕恋牡刂凡贿B續(xù),要在任意位置顯示完整的圖像,處理起來(lái)比較繁瑣

  186. {

  187.    unsigned char i,j,k;

  188.    Clear12864Screen();//清屏

  189.    if(y<32)//如果起始行在上半屏

  190.    {

  191.           k=32-y;//算出上半屏的行數(shù)

  192.           for(i=0;i<k;i++,y++)//上半屏行數(shù)

  193.           {

  194.                      wrtcom_12864(0x80|y);//寫(xiě)行地址(垂直地址)

  195.                      wrtcom_12864(0x80|x);//寫(xiě)列地址(水平地址)

  196.                      for(j=0;j<px/8;j++)

  197.                               wrtdat_12864(pp[i*px/8+j]);//寫(xiě)圖片數(shù)據(jù)

  198.           }

  199.           y=0;//下半屏起始行,接上半屏繼續(xù)寫(xiě)數(shù)據(jù)

  200.           for(;i<py;i++,y++)//下半屏剩下的行數(shù)

  201.           {

  202.                      wrtcom_12864(0x80|y);//寫(xiě)行地址(垂直地址)

  203.                      wrtcom_12864(0x80|(8+x));//寫(xiě)列地址(水平地址)

  204.                      for(j=0;j<px/8;j++)

  205.                               wrtdat_12864(pp[i*px/8+j]);//寫(xiě)圖片數(shù)據(jù)

  206.           }

  207.    }

  208.    else //如果起始行在下半屏

  209.    {

  210.           for(i=0;i<py;i++,y++)//行數(shù)

  211.           {

  212.                      wrtcom_12864(0x80|(y-32));//寫(xiě)行地址(垂直地址)

  213.                      wrtcom_12864(0x80|(8+x));//寫(xiě)列地址(水平地址)

  214.                      for(j=0;j<px/8;j++)

  215.                                wrtdat_12864(pp[i*px/8+j]);//寫(xiě)圖片數(shù)據(jù)

  216.           }

  217.    }

  218. }   


  219. #endif
復(fù)制代碼
  1. #include < reg52.h>
  2. #include < lcd12864bu.h>

  3. void main()
  4. {
  5.             initial_12864();       //初始化12864
  6.                                  LCD12864DisplayPictrue(0,0,128,64,pictrue1);//顯示

  7.         while(1);
  8. }
復(fù)制代碼

Keil代碼下載: 冰.7z (17.44 KB, 下載次數(shù): 22)

評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:679480 發(fā)表于 2023-3-28 23:32 | 只看該作者
問(wèn)一下,這個(gè)屏(ST7920)顯示圖片的時(shí)候,當(dāng)圖片比較小,不滿128X64像素,顯示完圖片后其它區(qū)域就會(huì)亂碼,怎么回事?顯示前清屏了也不行
回復(fù)

使用道具 舉報(bào)

板凳
ID:1042619 發(fā)表于 2023-3-29 08:21 | 只看該作者
用下面的完全正確驗(yàn)證過(guò)的實(shí)戰(zhàn)程序測(cè)試下
第36個(gè)實(shí)戰(zhàn)程序
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区 | 91毛片在线看 | 亚洲一区二区三区在线播放 | 久久九九色 | 欧美三级三级三级爽爽爽 | 电影在线| 天天操综合网站 | 亚洲精品18| 日本欧美大片 | 欧美日韩高清在线一区 | 午夜国产 | 一级做a爰片性色毛片 | 久久99精品久久久久 | 久产久精国产品 | 国产亚洲人成a在线v网站 | 婷婷色国产偷v国产偷v小说 | 精品免费国产一区二区三区 | 自拍偷拍欧美 | 日韩视频在线一区 | 欧美啪啪 | www.亚洲成人网 | 成人在线一区二区 | 高清成人免费视频 | 免费中文字幕日韩欧美 | 可以在线看的黄色网址 | 欧美最猛黑人 | 综合色播 | 欧美日本韩国一区二区 | 午夜a区 | 国产成人免费视频网站高清观看视频 | 97av | 免费精品视频 | 久热久草 | 麻豆久久久久久久久久 | 日本激情视频中文字幕 | 视频在线观看一区二区 | 久久久www成人免费精品张筱雨 | 精品一区二区三区在线观看国产 | 狠狠干狠狠操 | 亚洲高清视频在线 | 日韩在线免费视频 |