在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 4312|回复: 12

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

[复制链接]
发表于 2014-1-13 16:24:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
QQ截图20140113162230.png
#include<c:\Keil\C51\INC\STC\STC12c5a60S2.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()                   // 按键函数
{
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; //开全局总中断        
   while(1)
{
  
}}

void Timer0() interrupt 1     //定时器中断
{
     TL0=0x78; //&para;¨&Ecirc;±5ms         
    TH0=0xec;
   P2M1 =0x0f;
    P2M0 =0x00;
    key();
     switch(ScanCoun)   //动态扫描
  {
    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;
}
发表于 2014-1-14 22:02:51 | 显示全部楼层
若是实物的话,那是液晶硬件的问题,应该有个专门调节亮度的pin脚的,。仿真的话,不太了解
 楼主| 发表于 2014-1-15 09:01:48 | 显示全部楼层
回复 2# lcgolh


    哦,谢谢哈,我这个没有那个引脚,是用偏压做的
发表于 2014-1-15 13:58:03 | 显示全部楼层
感觉不像是代码的问题......
 楼主| 发表于 2014-1-15 15:24:11 | 显示全部楼层
回复 4# guolehaohao


    硬件有问题?这个图是stc数据手册给的。
发表于 2014-1-15 17:27:48 | 显示全部楼层
驱动LCD,使用了3个状态
1、高电平
2、低电平
3、高阻,因为外部分压电阻,实际是1/2 VDD
 楼主| 发表于 2014-1-15 17:43:28 | 显示全部楼层
回复 6# McuPlayer2013


    嗯,是啊,我想写写1/3偏压,试试能不能把对比度调节的好些
发表于 2014-1-16 16:20:20 | 显示全部楼层
自己搭电路,驱动1/3bias太复杂了,你还不如用driver芯片,比如HT1621之类
发表于 2014-1-16 16:21:02 | 显示全部楼层
另外,也要注意LCD防极化的处理,信号要周期性的反向
 楼主| 发表于 2014-1-17 08:58:43 | 显示全部楼层
回复 8# McuPlayer2013


    不是想锻炼下自己写程序嘛,而来可以节约成本的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-25 06:20 , Processed in 0.023898 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表