4*8段式LCD,用stc12c5a60s2驱动,显示很暗,求解答谢谢

2019-03-24 18:30发布

QQ截图20140113162230.png #include<c:KeilC51INCSTCSTC12c5a60S2.H>
#define uchar unsigned char
#define uint unsigned int
sbit COM3=P2^3;
sbit COM2=P2^2;
sbit COM1=P2^1;
sbit COM0=P2^0;
sbit key1=P2^7;
uchar i;
unsigned char ScanCoun=0;
unsigned char C0[10]={0x01,0x00,0x01,0x01,0x00,0x01,0x01,0x01,0x01,0x01};
unsigned char C1[10]={0x03,0x02,0x02,0x02,0x03,0x01,0x01,0x02,0x03,0x03};
unsigned char C2[10]={0x01,0x00,0x03,0x02,0x02,0x02,0x03,0x00,0x03,0x02};
unsigned char C3[10]={0x03,0x02,0x01,0x03,0x02,0x03,0x03,0x02,0x03,0x03};
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
key()                   // °&acute;&frac14;ü&ordm;&macr;&Ecirc;&yacute;
{
if(key1==0)
{
delay(10);
if(key1==0)
{
i++;
if(i>9)
i=0;
while(key1==0);
}
}
}
void  main(void)
{
   TMOD = 0x01;
   ET0 = 1;
   EA = 1;              
   TR0 = 1;            
   EA=1; //&iquest;&ordf;&Egrave;&laquo;&frac34;&Ouml;×&Uuml;&Ouml;&ETH;&para;&Iuml;
        
   while(1)
{
  
}}

void Timer0() interrupt 1     //&para;¨&Ecirc;±&AElig;÷&Ouml;&ETH;&para;&Iuml;
{
     TL0=0x78; //&para;¨&Ecirc;±5ms         
    TH0=0xec;
   P2M1 =0x0f;
    P2M0 =0x00;
    key();
     switch(ScanCoun)   //&para;&macr;&Igrave;&not;&Eacute;¨&Atilde;è&Iuml;&Ocirc;&Ecirc;&frac34;
  {
    case 0:                //COM3正向驱动
   COM0=1;
  COM1=1;
  COM2=1;
  COM3=0;
   P0=C0;
  P2M1 =0x07;
  P2M0 =0x00;
   break;
   
  case 1 :               //COM3反向驱动
  COM0=0;
  COM1=0;
   COM2=0;
   COM3=1;
  P0=~C0;
  P2M1 =0x07;
  P2M0 =0x00;
  break;
   
   case 2:              //COM2正向驱动
   COM0=1;
   COM1=1;
   COM2=0;
   COM3=1;
  P0=C1;
  P2M1 =0x0b;
  P2M0 =0x00;
  break;
     
   case 3:                //COM2反向驱动
  COM0=0;      
  COM1=0;
  COM2=1;
  COM3=0;
   P0=~C1;
  P2M1 =0x0b;
   P2M0 =0x00;
   break;
   
    case 4:               //COM1正向驱动
  COM0=1;  
  COM1=0;
  COM2=1;
  COM3=1;
   P0=C2;
  P2M1 =0x0d;
   P2M0 =0x00;
   break;
     
   case 5:               //COM1反向驱动
  COM0=0;  
  COM1=1;
  COM2=0;
  COM3=0;
   P0=~C2;
  P2M1 =0x0d;
   P2M0 =0x00;
   break;
      
   case 6 :             //COM0正向驱动
  COM0=0;  
  COM1=1;
  COM2=1;
  COM3=1;
   P0=C3;
  P2M1 =0x0e;
   P2M0 =0x00;
   break;
    case 7:              //COM0反向驱动
  COM0=1;  
  COM1=0;
  COM2=0;
  COM3=0;
   P0=~C3;
  P2M1 =0x0e;
   P2M0 =0x00;
   break;      
}
      ScanCoun++;       //加一
     if (ScanCoun>7) ScanCoun=0;
}
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
dontium
2019-03-24 23:38
没有做过段式LCD的驱动,帮你顶。

赞赏一下楼主的图,画得比较规范。比现在多数图纸中没有连线,只有网络标号的画法好得多!

一周热门 更多>