打印

LCD显示问题

[复制链接]
3693|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
agz1989|  楼主 | 2013-7-16 12:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ayb_ice| | 2013-7-16 16:00 | 只看该作者
神仙才知道

使用特权

评论回复
板凳
dirtwillfly| | 2013-7-16 16:23 | 只看该作者
楼主,你至少也把你的电路图和程序传上来,大家看看才知道啊

使用特权

评论回复
地板
ningling_21| | 2013-7-16 18:23 | 只看该作者
什么屏,什么MCU,截个图也好啊...

使用特权

评论回复
5
long870912| | 2013-7-16 19:07 | 只看该作者
是啊!

使用特权

评论回复
6
月影风| | 2013-7-16 19:10 | 只看该作者
把你碰到的问题描述清楚,具体点或许大家可以帮助到你。

使用特权

评论回复
7
agz1989|  楼主 | 2013-7-16 22:05 | 只看该作者
郭天祥的51TX-1c开发板上的做的

#include<reg52.h>
#define uchar unsigned char
uchar code table[]="2013-07-08";
sbit dual=P2^6;
sbit weal=P2^7;
sbit rd=P3^7;
sbit rs=P3^5;
sbit lcdn=P3^4;
sbit sda=P2^0;
sbit scl=P2^1;
sbit beep=P2^3;
sbit S1=P3^0;
sbit S2=P3^1;
sbit S3=P3^2;
uchar miao,fen,shi,snum,num;
void delay()
{;;}//24C02芯片初始化延时时间
void delayms(int  xms)
{
uchar i,j;
for(i=xms;i>0;i--)
   for(j=110;j>0;j--);
}//延时
void laba()
{
beep=0;
delayms(500);
beep=1;
}
void write_com(uchar com)
{
rs=0;
lcdn=0;
P0=com;
delayms(5);
lcdn=1;
delayms(5);
lcdn=0;
}//LCD指令初始化
void write_date(uchar date)
{
rs=1;
lcdn=0;
P0=date;
delayms(5);
lcdn=1;
delayms(5);
lcdn=0;
}//LCD数据初始化
void lcdxianshi(uchar wei,uchar date)
{
uchar shi,ge;
shi=date/10;
ge=date%10;
write_com(0x80+0x40+wei);
write_date(0x30+shi);
write_date(0x30+ge);
}//显示时间



void init24c02()
{
sda=1;
delay();
scl=1;
delay();
}

void start()
{
sda=1;
delay();
scl=1;
delay();
sda=0;
delay();
}//启动24c02

void stop()
{
sda=0;
delay();
scl=1;
delay();
sda=1;
delay();
}

void respons()
{
uchar i;
scl=1;
delay();
while((sda==1)&&(i<255))i++;
scl=0;
delay();
}

void write_1(uchar date)
{
uchar i,temp;
temp=date;
for(i=0;i<8;i++)
    {
         temp=temp<<1;
         scl=0;
         delay();
         sda=CY;
         delay();
        }
scl=0;
delay();
sda=1;
delay();
}



uchar read_1()
{
uchar i,k;
scl=0;
delay();
sda=1;
delay();
for(i=0;i<8;i++)
    {
         scl=1;
         delay();
         k=((k<<1)|sda);
         scl=0;
         delay();
        }
return k;  
}


void write_2(uchar address,uchar date)
{
start();
write_1(0xa0);
respons();
write_1(address);
respons();
write_1(date);
respons();
stop();
}

uchar read_2(uchar address)
{
uchar date;
start();
write_1(0xa0);
respons();
write_1(address);
respons();
start();
write_1(0xa1);
respons();
date=read_1();
stop();
return date;
}

void init()
{
uchar i;
dual=0;
weal=0;
lcdn=0;
rd=0;
shi=20;
fen=40;
miao=9;
snum=0;
init24c02();
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);

write_com(0x80);
for(i=0;i<10;i++)
    {
     write_date(table[i]);
     delayms(5);
    }
write_com(0x80+0x40+6);
write_date(':');
delayms(5);
write_com(0x80+0x40+9);
write_date(':');
miao=read_2(1);
fen=read_2(2);
shi=read_2(3);
lcdxianshi(10,miao);
lcdxianshi(7,fen);
lcdxianshi(4,shi);
TMOD=0x01;
TH0=0x4C;
TL0=0x00;
EA=1;
ET0=1;
TR0=1;
}

void jianpanjiance()
{
if(S1==0)
   {
    delayms(5);
        if(S1==0)
          {
       while(S1!=0);
           snum++;
           laba();
           if(snum==1)
         {
                   TR0=0;
               write_com(0x80+0x40+10);
                   write_com(0x0f);
             }
           if(snum==2)
                  {
                   write_com(0x80+0x40+7);
          }
                if(snum==3)
                  {
                   write_com(0x80+0x40+4);
          }       
                if(snum==4)
                  {
                   snum=0;
                   TR0=1;
           write_com(0x0c);
                  }
      }       
   }
if(snum!=0)
   {
     if(S2==0)
       {
        delayms(5);
            if(S2==0)
              {
           while(S2!=0);
                   laba();
               if(snum==1)
                     {
              miao++;
                          if(miao==60)
                            {
                                 miao=0;
                }
                           lcdxianshi(10,miao);
                           write_2(1,miao);
                         }  
           if(snum==2)
                     {
              fen++;
                          if(fen==60)
                            {
                                 fen=0;
                }
                                lcdxianshi(7,fen);
                                write_2(2,fen);
                         }
                   if(snum==3)
                     {
                      shi++;
                          if(shi==24)
                            {
                                 shi=0;
                }
                          lcdxianshi(4,shi);
                      write_2(3,shi);   
                         }
               
              }
       }
    }

if(snum!=0)
   {
     if(S3==0)
       {
        delayms(5);
            if(S3==0)
              {
           while(S3!=0);
               if(snum==1)
                     {
              miao--;
                          if(miao==-1)
                            {
                                 miao=59;
                }
                               
                                lcdxianshi(10,miao);
                                write_2(1,miao);
                         }  
           if(snum==2)
                     {
                      fen--;
              if(fen==-1)
                            {
                                 fen=59;
                }
               
                                lcdxianshi(7,fen);
                                write_2(2,fen);
                         }
                   if(snum==3)
                     {
                      shi--;
                          if(shi==-1)
                            {
                                 shi=0;
                }
                       
                                lcdxianshi(4,shi);
                                write_2(3,shi);   
                         }
               
              }
           }
   }  
}

void main()
{
init();
while(1)
{
  jianpanjiance();
}

}

void T0_time() interrupt 1
{
TH0=0x4c;
TL0=0x00;
num++;
if(num==20)
   {
    num=0;
    miao++;
       
        if(miao==60)
          {
           fen++;
           miao=0;
          
       if(fen==60)
              {
                   shi++;
                   fen=0;
           if(shi==24)
                     {
                          shi=0;
                         }
           lcdxianshi(4,shi);
           write_2(3,shi);
          }

       lcdxianshi(7,fen);
       write_2(2,fen);
      
          }
        lcdxianshi(10,miao);
    write_2(1,miao);
   }
}

使用特权

评论回复
8
冥顽的石头| | 2013-7-16 22:13 | 只看该作者
这个。。。

使用特权

评论回复
9
sjzzlxy| | 2013-7-16 22:13 | 只看该作者

使用特权

评论回复
10
叶伤| | 2013-7-16 22:17 | 只看该作者
全篇数了一下,共6个注释。擦下汗先,楼下加油,拯救楼主的任务交给你了

使用特权

评论回复
11
随波不逐刘| | 2013-7-16 23:19 | 只看该作者
看看是不是接口接错了

使用特权

评论回复
12
yklstudent| | 2013-7-17 07:14 | 只看该作者
原因很简单 因为你读的数就是255 所以显示的时候就是I5I5

使用特权

评论回复
13
ayb_ice| | 2013-7-17 09:14 | 只看该作者
这样的程序到处都被阻塞了,
没有兴趣继续看

使用特权

评论回复
14
hxye006400| | 2013-7-17 09:27 | 只看该作者
haonan

使用特权

评论回复
15
金则立则翔| | 2013-7-17 10:17 | 只看该作者
单片机程序:书写相当重要;
   第一:首先最好是注释清晰简单明了
   第二: 最好是模块清晰,不要书写混乱,在每个模块的开头注释上此段代码实现的功能

使用特权

评论回复
16
agz1989|  楼主 | 2013-7-17 10:46 | 只看该作者
受教了,各位

使用特权

评论回复
17
agz1989|  楼主 | 2013-7-17 10:47 | 只看该作者
那应该怎么改呢

使用特权

评论回复
18
agz1989|  楼主 | 2013-7-17 10:47 | 只看该作者
受教了

使用特权

评论回复
19
tergy2012| | 2013-7-17 11:02 | 只看该作者
学习了

使用特权

评论回复
20
Regsen| | 2013-7-17 11:08 | 只看该作者
楼主还是自己去努力解决吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

45

帖子

1

粉丝