找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1072|回复: 4
打印 上一主题 下一主题
收起左侧

我做了两块LM13232屏幕,为什么清屏时两块屏都清了?

[复制链接]
跳转到指定楼层
楼主
ID:803579 发表于 2020-9-16 16:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include "LM13232A.h"
  2. #include "LMFONT.h"

  3. #define        _CS2                PCout(2)
  4. #define        _CS1                PCout(0)
  5. #define        _RST                 PCout(1)
  6. #define        RS                         PCout(11)
  7. #define        SCLK                PCout(10)
  8. #define        SID                 PCout(9)
  9. extern unsigned char LIG1[2];
  10. extern unsigned char LIG2[2];
  11. uchar   ContrastLevel;     
  12. extern unsigned char LM_CS;

  13. void lm13232_GPIO_ITN(void)
  14. {
  15. GPIO_InitTypeDef  GPIO_InitStructure;        
  16. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);        
  17. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11;               
  18. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  
  19. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;               
  20. GPIO_Init(GPIOC, &GPIO_InitStructure);                                                
  21. }


  22. void SdCmd(uchar Command)
  23. {
  24.         uchar j;
  25.         SCLK = 1;  
  26.         RS = 0;         
  27.         if(LM_CS==0)               
  28.                 _CS1 = 0;
  29.         else
  30.                 _CS2 = 0;
  31.         for(j=0;j<8;j++)
  32.          {
  33.                         if(Command&0x80) SID=1;            
  34.                         else         SID=0;                 
  35.                         SCLK=0;                          
  36.                         SCLK=1;                 
  37.                         Command=Command<<1;
  38.                 }
  39.         _CS1=1;
  40.         _CS2=1;
  41. }

  42. void SdData(uchar DData)
  43. {
  44.         uchar j;
  45.         SCLK = 1;         
  46.         RS  = 1;
  47.         if(LM_CS==0)               
  48.                 _CS1 = 0;
  49.         else
  50.                 _CS2 = 0;                 
  51.         for(j=0;j<8;j++)
  52.          {
  53.                         if(DData&0x80) SID=1;
  54.                                 else         SID=0;        
  55.                                 SCLK=0;                  
  56.                                 SCLK=1;                  
  57.                         DData=DData<<1;
  58.                 }
  59.         _CS1=1;
  60.         _CS2=1;                                
  61. }



  62. //void WriteScreen(uchar *DisplayData)   
  63. //{
  64. //        uchar TempData;
  65. //        uchar i, j;
  66. //        for(i=0;i<4;i++)
  67. //                {
  68. //                        SdCmd(0xb0 | i);        // select page
  69. //                        SdCmd(0x10);            // start form column 0¿aê¼
  70. //                        SdCmd(0x00);            // (2byte command)
  71. //                        for(j=0;j<132;j++)
  72. //                                {
  73. //                                        TempData=(*(DisplayData+(i*132)+j));
  74. //                                        SdData(TempData);
  75. //                                }
  76. //                }
  77. //}


  78. void LM_Pos(uchar x,uchar y)
  79. {
  80.         SdCmd(0xb0+y);
  81.         SdCmd(((x&0xf0)>>4)|0x10);
  82.         SdCmd((x&0x0f)|0x01);
  83. }


  84. void LM_Cler(void)
  85. {
  86.         uchar i,n;
  87.         for(i=0;i<8;i++)
  88.                 {
  89.                         SdCmd(0xb0+i);
  90.                         SdCmd(0x00);
  91.                         SdCmd(0x10);
  92.                         for(n=0;n<132;n++)SdData(0x00);
  93.                 }
  94. }


  95. void LM_ShowChar(uchar x,uchar y,uchar chr)
  96. {
  97.         uchar c=0,i=0;
  98.         c=chr-' ';      
  99.         if(x>Max_Column-1){x=0;y=y+2;}
  100.         if(SIZE ==16)
  101.                 {
  102.                         LM_Pos(x,y);
  103.                         for(i=0;i<8;i++)
  104.                         SdData(F8X16[c*16+i]);
  105.                         LM_Pos(x,y+1);
  106.                         for(i=0;i<8;i++)
  107.                         SdData(F8X16[c*16+i+8]);
  108.                 }
  109.                 else
  110.                         {        
  111.                                 LM_Pos(x,y+1);
  112.                                 for(i=0;i<6;i++)
  113.                                 SdData(F6x8[c][i]);
  114.                         }
  115. }


  116. int LM_pow(uchar m,uchar n)
  117. {
  118.         int result=1;         
  119.         while(n--)result*=m;   
  120.         return result;
  121. }               

  122.                         
  123. void LM_ShowNum(uchar x,uchar y,int num,uchar len,uchar size)
  124. {                 
  125.         uchar t,temp;
  126.         uchar enshow=0;                                                   
  127.         for(t=0;t<len;t++)
  128.         {
  129.                 temp=(num/LM_pow(10,len-t-1))%10;
  130.                 if(enshow==0&&t<(len-1))
  131.                 {
  132.                         if(temp==0)
  133.                         {
  134.                                 LM_ShowChar(x+(size/2)*t,y,' ');
  135.                                 continue;
  136.                         }else enshow=1;
  137.                           
  138.                 }
  139.                  LM_ShowChar(x+(size/2)*t,y,temp+'0');
  140.         }
  141. }

  142. //ÏÔê¾ò»¸ö×Ö·ûoÅ′®
  143. void LM_ShowString(uchar x,uchar y,uchar *chr)
  144. {
  145.         unsigned char j=0;
  146.         while (chr[j]!='\0')
  147.         {                LM_ShowChar(x,y,chr[j]);
  148.                         x+=8;
  149.                 if(x>120){x=0;y+=2;}
  150.                         j++;
  151.         }
  152. }


  153. void LM_ShowCHinese(uchar x,uchar y,uchar no)
  154. {                                 
  155.         u8 t,adder=0;
  156.         LM_Pos(x,y);        
  157.     for(t=0;t<16;t++)
  158.                 {
  159.                                 SdData(Hzk[2*no][t]);
  160.                                 adder+=1;
  161.      }        
  162.                 LM_Pos(x,y+1);        
  163.     for(t=0;t<16;t++)
  164.                         {        
  165.                                 SdData(Hzk[2*no+1][t]);
  166.                                 adder+=1;
  167.       }                                       
  168. }
  169. void LM_ShowCHinese_32(uchar x,uchar y,uchar no)
  170. {                                 
  171.         u8 t,adder=0;
  172.         LM_Pos(x,y);        
  173.     for(t=0;t<32;t++)
  174.                 {
  175.                                 SdData(Hzk[8*no][t]);
  176.                                 adder+=1;
  177.      }        
  178.                 LM_Pos(x,y+1);        
  179.     for(t=0;t<32;t++)
  180.                         {        
  181.                                 SdData(Hzk[8*no+1][t]);
  182.                                 adder+=1;
  183.       }                                       
  184. }


  185. void LM_DrawBMP(unsigned char x0, unsigned char y0,unsigned char x1, unsigned char y1,unsigned char BMP[])
  186. {         
  187. unsigned int j=0;
  188. unsigned char x,y;

  189.   if(y1%8==0) y=y1/8;      
  190.   else y=y1/8+1;
  191.         for(y=y0;y<y1;y++)
  192.         {
  193.                 LM_Pos(x0,y);
  194.     for(x=x0;x<x1;x++)
  195.             {      
  196.                     SdData(BMP[j++]);                    
  197.             }
  198.         }
  199. }




  200. void initLCDM(void)
  201. {
  202.         lm13232_GPIO_ITN();
  203.           _CS1    = 1;
  204.                 _CS2    = 1;
  205.     _RST    = 1;
  206.     RS      = 1;
  207.     SCLK    = 1;
  208.     SID     = 1;
  209. //        _RST=1;      
  210.         _RST=0;
  211.         delay_ms(1);
  212.         _RST=1;
  213.         delay_ms(100);
  214.     ContrastLevel=0x0f;  
  215.         SdCmd(0xaf);
  216.         
  217.         SdCmd(0x40);  
  218.     SdCmd(0xa0);  
  219.     SdCmd(0xa6);   
  220.     SdCmd(0xa4);   
  221.     SdCmd(0xa2);
  222.     SdCmd(0xc8);  


  223.     SdCmd(0x2f);

  224.            SdCmd(0x23);   

  225.            SdCmd(0xf8);SdCmd(0x00);// Booster Ratio Set= 2x,3x,4x (2byte command)

  226.         SdCmd(0x81);            // E-Vol setting
  227.     SdCmd(ContrastLevel);   // (2byte command)
  228. }

  229. //-----------------------------------
  230. // Main Program
  231. //-----------------------------------
  232. //void LM13232A(void)
  233. //{         
  234. //        unsigned char UU[]="LIHUAAN";
  235. //        int aa = 1106495953;
  236. //           initLCDM();
  237. //                LM_Cler();
  238. //        while(1)
  239. //        {
  240. //                LM_ShowChar(90,0,':');
  241. //                LM_ShowString(1,2, UU);
  242. //                LM_ShowNum(0,0,aa,10,16);
  243. //                LM_ShowCHinese(60,2,0);  
  244. //                delay_ms(500);//Ñóê±300ms  
  245. //                LM_Cler();
  246. //                LM_DrawBMP(0,0,*bmp1);
  247. //                delay_ms(500);//Ñóê±300ms
  248. ////         }
  249. //}
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:701852 发表于 2020-9-16 20:29 | 只看该作者
你共用引脚肯定啊
回复

使用道具 举报

板凳
ID:803579 发表于 2020-9-16 22:25 | 只看该作者
13487086265 发表于 2020-9-16 20:29
你共用引脚肯定啊

有片选的呀
回复

使用道具 举报

地板
ID:691028 发表于 2020-9-17 09:18 | 只看该作者
第52行
if(LM_CS==0)               
                _CS1 = 0;
        else
                _CS2 = 0;  
改成
if(LM_CS==0)               
                _CS1 = 0;
                _CS2 = 1;  
        else
               _CS1 = 1;
                _CS2 =0;
回复

使用道具 举报

5#
ID:123289 发表于 2020-9-18 16:10 | 只看该作者
清屏的命令是不是也被另一个接收了。设法证明它没有收到。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表