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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求助LCD12864(ST7920)液晶屏反白問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:261451 發表于 2018-6-21 10:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近在學12864(ST7920)液晶屏,使用stc89c52rc單片機,串行方式顯示,在網上找的反白程序,第一個是花屏,第二個能正常反白,但是會有很長時間的延時,不知道為什么,麻煩大家看看
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:261451 發表于 2018-6-21 10:59 | 只看該作者
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #include "4.h"
  6. uchar code table[] ="      首頁      ";
  7. uchar code table1[]="  第一頁第一行  ";
  8. uchar code table2[]="  第一頁第二行  ";

  9. uchar code table3[]="  第二頁第一行  ";
  10. uchar code table4[]="  第二頁第二行  ";

  11. uchar code table5[]="  第三頁第三行  ";
  12. uchar code table6[]="  第三頁第四行  ";

  13. uchar fanye;
  14. uchar i,l,m,n,r,s,u,v;
  15. sbit LCD_SID=P0^6;
  16. sbit LCD_SCLK=P0^5;
  17. sbit key1=P1^1;   //光標開關
  18. sbit key2=P1^2;   //按鍵減一頁
  19. sbit key3=P1^3;    //按鍵加一頁

  20. void delay_ms(uint z)
  21. {
  22.    uint x,y;
  23.         for(x=z;x>0;x--)
  24.                 for(y=110;y>0;y--);
  25. }
  26. void sendbyte(unsigned char bbyte) //發送一個字節
  27. {
  28. unsigned char i;
  29. for(i=0;i<8;i++)
  30.    {
  31.    LCD_SID=bbyte&0x80; //取出最高位
  32.    LCD_SCLK=1;
  33.    LCD_SCLK=0;
  34.    bbyte<<=1; //左移
  35.    }  
  36. }

  37. void write(bit start, unsigned char ddata) //寫指令或數據
  38. {
  39.   unsigned char start_data,Hdata,Ldata;
  40.   if(start==0)
  41.     start_data=0xf8;  //寫指令
  42.   else      
  43.         start_data=0xfa;  //寫數據
  44.   
  45.   Hdata=ddata&0xf0;    //取高四位
  46.   Ldata=(ddata<<4)&0xf0;  //取低四位
  47.   sendbyte(start_data);   //發送起始信號
  48.   delay_ms(1); //延時
  49.   sendbyte(Hdata);       //發送高四位
  50.   delay_ms(1);
  51.   sendbyte(Ldata);    //發送低四位
  52.   delay_ms(1);
  53. }
  54. //***********一行顯示8個漢字***********
  55. //***************漢字顯示***************
  56. //***X為行Y為列,K為字的個數,*P為數組*
  57. //*************************************
  58. void chinese(uchar x,uchar y,uchar k,uchar *p)
  59. {
  60.         uchar hang,out,i;
  61.         y=y-1;
  62.         switch(x)
  63.         {
  64.                 case 1:hang=0x80;break;
  65.                 case 2:hang=0x90;break;
  66.                 case 3:hang=0x88;break;
  67.                 case 4:hang=0x98;break;        
  68.         }
  69.         out=hang+y;        
  70.         write(0,out);
  71.         for(i=0;i<k*2;i++) {
  72.              write(1,*p);
  73.                   p++;
  74.                     }
  75.                                 //write(1,p);
  76. }
  77. //**********一行顯示16個字母***********
  78. //***********英文數字顯示***************
  79. //***X為行Y為列,K為字的個數,*P為數組*
  80. //************************************
  81. void english(uchar x,uchar y,uchar k,uchar *p)
  82. {
  83.         uchar hang,out,i;
  84.         y=y-1;
  85.        
  86.         switch(x)
  87.         {
  88.                 case 1:hang=0x80;break;
  89.                 case 2:hang=0x90;break;
  90.                 case 3:hang=0x88;break;
  91.                 case 4:hang=0x98;break;        
  92.         }
  93.         out=hang+y;        
  94.         write(0,out);
  95.         for(i=0;i<k;i++) {
  96.                  write(1,*p);
  97.                   p++;
  98.                        }
  99. }

  100. void lcd_init()
  101. {
  102.         write(0,0x30);  //8位介面,基本指令集
  103.         write(0,0x0c);  //顯示打開,光標關,光標位置關
  104.         write(0,0x01);  //清屏,將DDRAM地址計數器歸零
  105.         delay_ms(10);
  106. }

  107. /*******************************反白1*************************
  108. void fanbai(uchar data1,uchar data2,uchar x0,uchar y0,uchar x1,uchar y1)
  109. {
  110. uchar i,j;
  111.         for(j=0;j<y1;j++)
  112.         {
  113.         for(i=0;i<x1;i++)
  114.           {
  115.                   write(0,0x34);
  116.                         write(0,y0+j);  //寫y坐標
  117.                         write(0,x0+i);  //寫x坐標
  118.                         write(0,0x30);
  119.                         write(1,data1);
  120.                         write(1,data2);
  121.           }
  122.         }
  123.         write(0,0x36);
  124. }
  125. /*****************************反白2****************************/

  126. void fanbai(uchar x)
  127. {
  128.     uchar i,j;
  129.     if(x<2)
  130.     {
  131.         for(j=0;j<32;j++)
  132.         {
  133.             for(i=0;i<8;i++)
  134.             {
  135.                 write(0,0x34);
  136.                 write(0,0x80+j);
  137.                 write(0,0x80+i);
  138.                 write(0,0x30);
  139.                                 if(x<1)
  140.                                 {
  141.                                     if(j<16)
  142.                                     {
  143.                         write(1,0xff);
  144.                         write(1,0xff);
  145.                                     }
  146.                                     else
  147.                                     {
  148.                                     write(1,0x00);  
  149.                         write(1,0x00);
  150.                                     }
  151.                                 }
  152.                                 else
  153.                 {
  154.                                     if(j<16)
  155.                                     {
  156.                         write(1,0x00);
  157.                         write(1,0x00);
  158.                                     }
  159.                                     else
  160.                                     {
  161.                                     write(1,0xff);
  162.                         write(1,0xff);
  163.                                     }
  164.                                 }                       
  165.             }
  166.         }
  167.         
  168.             for(j=32;j<64;j++)
  169.         {
  170.             for(i=0;i<8;i++)
  171.             {
  172.                 write(0,0x34);
  173.                 write(0,0x80+j-32);
  174.                 write(0,0x88+i);
  175.                 write(0,0x30);
  176.                 write(1,0x00);
  177.                 write(1,0x00);
  178.             }
  179.         }
  180.         }
  181.         else
  182.     {
  183.             for(j=0;j<32;j++)
  184.         {
  185.             for(i=0;i<8;i++)
  186.             {
  187.                 write(0,0x34);
  188.                 write(0,0x80+j);
  189.                 write(0,0x80+i);
  190.                 write(0,0x30);
  191.                 write(1,0x00);
  192.                 write(1,0x00);
  193.             }
  194.         }
  195.                 for(j=32;j<64;j++)
  196.         {
  197.             for(i=0;i<8;i++)
  198.             {
  199.                 write(0,0x34);
  200.                 write(0,0x80+j-32);
  201.                 write(0,0x88+i);
  202.                 write(0,0x30);
  203.                                 if(x<3)
  204.                                 {
  205.                                     if(j<48)
  206.                                     {                                    
  207.                         write(1,0xff);
  208.                         write(1,0xff);
  209.                                     }
  210.                                     else
  211.                                     {
  212.                                     write(1,0x00);  
  213.                         write(1,0x00);
  214.                                     }
  215.                                 }
  216.                                 else
  217.                 {
  218.                                     if(j<48)
  219.                                     {                                    
  220.                         write(1,0x00);
  221.                         write(1,0x00);
  222.                                     }
  223.                                     else
  224.                                     {
  225.                                     write(1,0xff);  
  226.                         write(1,0xff);
  227.                                     }
  228.                                 }                       
  229.             }
  230.                 }
  231.     }     
  232.     write(0,0x36);
  233. }
  234. /******************顯示***********************************/
  235.     void display1()
  236.     {
  237.                         write(0,0x01);
  238.                           english(1,1,15,table1);
  239.         english(2,1,15,table2);
  240.                                  }
  241.                 void display2()
  242.     {
  243.                         write(0,0x01);
  244.                         english(1,1,15,table3);
  245.         english(2,1,15,table4);
  246.         
  247.                                  }
  248.                 void display3()
  249.     {
  250.                         write(0,0x01);
  251.                           english(3,1,15,table5);
  252.         english(4,1,15,table6);
  253.                                  }
  254. void main()
  255. {
  256. lcd_init();
  257. write(0,0x01);
  258. english(2,1,15,table);
  259. while(1){
  260.             if(key1==0)     
  261.                             {
  262.                                  delay_ms(5);
  263.                                  if(key1==0){
  264.                                             //fanbai(0xff,0xff,0x88,2,0x90,2);
  265.                                             fanbai(3);       // 范圍0,1,2,3
  266.                                                   write(0,0x30);  //8位介面,基本指令集
  267.                                             while(!key1);
  268.                                             }
  269.                            }
  270. //*********************按鍵翻頁*******************/
  271.                      if(key3==0){
  272.                                           delay_ms(5);
  273.                                            if(key3==0){          //key3向右翻頁
  274.                                                           fanye++;
  275.                                                            if(fanye>3){
  276.                                                                           fanye=3;
  277.                                                                                                                                             }
  278.                                                                                                                                   while(!key3);
  279.                                                     }
  280.                                           if(fanye==1){display1();}
  281.                                           if(fanye==2){display2();}
  282.                                           if(fanye==3){display3();}
  283.                                    }       
  284.                                  if(key2==0){
  285.                                                 delay_ms(5);
  286.                                                 if(key2==0){        //key2向左翻頁
  287.                                                                 fanye--;
  288.                                                                 if(fanye<1){
  289.                                                                      fanye=1;
  290.                                                                                                                                              }
  291.                                                                                                                                   while(!key2);         
  292.                                                     }
  293.                         if(fanye==3){display3();}       
  294.                                                 if(fanye==2){display2();}
  295.                                                 if(fanye==1){display1();}
  296.                                     }
  297.                             }
  298.                }
復制代碼

回復

使用道具 舉報

板凳
ID:261451 發表于 2018-6-21 11:01 | 只看該作者
本帖最后由 一袋天驕 于 2018-6-21 11:27 編輯

反白測試程序

反白測試.zip

53.34 KB, 下載次數: 58

回復

使用道具 舉報

地板
ID:261451 發表于 2018-6-25 10:18 | 只看該作者
第一個花屏是因為燒上程序之后畫圖沒有重置,不過也有3秒延時,第二個延時10秒,沒辦法
回復

使用道具 舉報

5#
ID:406128 發表于 2018-11-9 09:12 來自手機 | 只看該作者
我的也是延時
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 不卡一区| 午夜小视频在线播放 | 中文字幕国产 | 日韩a在线 | 午夜在线精品 | 国产在线a视频 | 中文字幕欧美一区 | 国产精品久久国产精品 | 夜夜夜夜草 | 国产精品美女在线观看 | 日韩精品一区二区在线观看 | 日韩精品一区二区三区在线观看 | 国产99久久精品一区二区300 | 69电影网 | 国产一区欧美 | 欧美成人精品一区二区男人看 | 国产一区二区电影 | 久久成人18免费网站 | a级性视频 | 欧美国产视频 | 午夜精品久久久久久不卡欧美一级 | 拍戏被cao翻了h承欢 | 国产一区二区三区 | 久久精品欧美一区二区三区不卡 | 91原创视频在线观看 | 国产亚洲精品综合一区 | 亚洲精品自拍视频 | 日韩电影一区 | 欧美性大战久久久久久久蜜臀 | 亚洲视频免费在线播放 | 天天搞天天搞 | 精品成人69xx.xyz | 欧美日韩一二区 | 久久一| 久久久久久成人 | 国产不卡在线 | 亚洲午夜精品一区二区三区 | 丝袜毛片 | 亚洲性视频网站 | 日韩一区二区在线观看视频 | 中文字幕视频在线 |