打印
[STC单片机]

关于DS12C887连接到XT1实验板上液晶显示黑块

[复制链接]
967|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fang19931130|  楼主 | 2015-9-22 21:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首先1602液晶是好的,但是我把DS12C887连接到XT1实验板上之后,下载完程序,液晶就显示黑块。我把之前的LCD程序下载进去,液晶居然还是黑块,在没有连接DS12C887之前,是可以正常显示的。之后就是ISP下载器出现“请给MCU上电”,程序就下不进去了,把芯片拿下来,DS12C887的连接线拔掉,过几分钟才可以下载,这是我DS12C887芯片有问题么?

相关帖子

沙发
dirtwillfly| | 2015-9-23 09:01 | 只看该作者
每次都是拔掉DS12C887几分钟之后才能下载么?还是只这一次?

使用特权

评论回复
板凳
fang19931130|  楼主 | 2015-9-23 15:34 | 只看该作者
dirtwillfly 发表于 2015-9-23 09:01
每次都是拔掉DS12C887几分钟之后才能下载么?还是只这一次?

每次都这样,现在我把VCC和GND不接在单片机上,就不出现这个问题,时钟也正常,但是今天下午过来时钟不走了= =

使用特权

评论回复
地板
fang19931130|  楼主 | 2015-9-23 15:36 | 只看该作者
现在问题是时钟不走了,,明明昨天晚上还是正常的。我也看了D,是有电的。现在不知道是什么原因

使用特权

评论回复
5
fang19931130|  楼主 | 2015-9-23 17:32 | 只看该作者
void keypush()
{
        rd=0;
        if(S9==0)
        {
                delay(5);
                if(S9==0)
                {
                        while(S9==0)
                        {
            }
                        S_num++;
                        flag=1;
                        switch(S_num)
                        {
                                case 1:  
                                       write_com(0x0F);
                                       write_com(0xC0+SECOND+1);
                                           break;
                                case 2:
                                           write_com(0xC0+MINUTE+1);
                                           break;
                                case 3:
                                           write_com(0xC0+HOUR+1);
                                           break;
                                case 4:
                                                Alarm_flag++;
                                                break;
                                case 5:
                                           flag=0;
                                       S_num=0;
                                       write_com(0x0C);
                                       if(Alarm_flag==2)
                                           {
                                                   set_alarm(hour,minute,second);
                                                   Alarm_flag=0;
                       }
                                           else
                                           {
                                               DS_write(0,second);
                                                   DS_write(2,minute);
                                                   DS_write(4,hour);
                                           }
                                           break;
                                default:
                                           break;
            }
        }
    }
        if(S9!=0)
        {
                if(S13==0)
                {
                        delay(5);
                        if(S13==0)
                        {
                                while(S13==0)
                                {
                }
                                switch(S_num)
                                {
                                        case 1:
                                                        second++;
                                                if(second==60)
                                                                second=0;
                                                        write_time(SECOND,second);
                                                        write_com(0xC0+SECOND+1);
                                                        break;
                                        case 2:
                                                        minute++;
                                                        if(minute==60)
                                                                minute=0;
                                                        write_time(MINUTE,minute);
                                                        write_com(0xC0+MINUTE+1);
                                                        break;
                                        case 3:
                                                        hour++;
                                                        if(hour==24)
                                                                hour=0;
                                                        write_time(HOUR,hour);
                                                        write_com(0xC0+HOUR+1);
                                                        break;
                                        default:
                                                        break;
                }
            }
        }
                if(S17==0)
                {
                        delay(5);
                        if(S17==0)
                        {
                                while(S17==0)
                                {
                }
                                switch(S_num)
                                {
                                        case 1:
                                                        if(second==0)
                                                                second=60;
                                                        second--;
                                                        write_time(SECOND,second);
                                                        write_com(0xC0+SECOND+1);
                                                        break;
                                        case 2:
                                                        if(minute==0)
                                                                minute=60;
                                                        minute--;
                                                        write_time(MINUTE,minute);
                                                        write_com(0xC0+MINUTE+1);
                                                        break;
                                        case 3:
                                                        if(hour==0)
                                                                hour=24;
                                                        hour--;
                                                        write_time(HOUR,hour);
                                                        write_com(0xC0+HOUR+1);
                                                        break;
                                        default:
                                                        break;
                }
            }
        }
    }
}
加了这个函数之后就不显示了,这个函数有问题?
而且中间还显示正常过一次。快要疯了0 0
主函数:
        flag=0;
        EA=1;
        EX0=1;
        IT0=1;
        LCD_init();
/*        DS_write(0x0A,0x20);
        DS_write(0x0B,0x26);
        set_time();*/
       
        write_com(0x80);
        for(num=0;num<15;num++)
        {
                write_data(Year[num]);
                delay(5);
    }
    write_com(0xC0+6);
        write_data(':');
        write_com(0xC0+9);
        write_data(':');
       
        while(1)
        {
                if(flag==0)
                {
                        hour=DS_read(4);
                        minute=DS_read(2);
                        second=DS_read(0);
                        write_time(HOUR,hour);
                        write_time(MINUTE,minute);
                        write_time(SECOND,second);
                }
                keypush();
    }

使用特权

评论回复
6
fang19931130|  楼主 | 2015-9-23 21:21 | 只看该作者
fang19931130 发表于 2015-9-23 17:32
void keypush()
{
        rd=0;

现在就是不加按键程序就是正常的。加了按键程序就是显示I5。不知道是怎么回事= =

使用特权

评论回复
7
fang19931130|  楼主 | 2015-9-27 10:08 | 只看该作者
求大神帮帮忙:'(

使用特权

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

本版积分规则

2

主题

15

帖子

0

粉丝