欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 關于LCD1602指定位置光標閃爍的問題 [打印本頁]

作者: ly5817187    時間: 2017-3-23 00:14
標題: 關于LCD1602指定位置光標閃爍的問題
你們好,我想問一下你們。我這個程序為什么會出現問題?
本人比較笨,拜托各位大神教教我!實在是很難受,弄了這么久。
———————————————————————————————————————————————————————————————————————
當按下“setplace”按鍵之后,TR0=0,定時器0會停止,單片機停止對DS1302的寄存器進行讀取   同時,place++(place的值改變指定不一樣的位置)
按道理,跟隨place值的改變,光標會在指定的位置閃爍才對啊   現在出現的問題是光標怎么會一直跑飛呢?


———————————————————————————————————————————————————————————————————————
相關的子函數如下:
void ds_readtime(void)    //ds1302讀取寄存器子函數
{
        miao=BCD_Decimal(ds_read(0x81));
        fen=BCD_Decimal(ds_read(0x83));
        shi=BCD_Decimal(ds_read(0x85));
        ri=BCD_Decimal(ds_read(0x87));
        yue=BCD_Decimal(ds_read(0x89));
        xingqi=BCD_Decimal(ds_read(0x8b));
        nian=BCD_Decimal(ds_read(0x8d));
}

———————————————————————————————————————————————————————————————————————
void InitTimer(void)    //定時器的初始化函數
{
    TMOD = 0x11;
        EA = 1;

        TH0=0;
        TL0=0;
        ET0 = 1;
    TR0 = 1;

    TH1 = 0x3C;
    TL1 = 0x0B0;
    ET1 = 1;
    TR1 = 1;
}


void Timer0Interrupt(void) interrupt 1    //定時器0功能子函數
{
        ds_readtime();                //讀取ds1302各個寄存器的值到hour,minute,second,week,day,month,year中
}

———————————————————————————————————————————————————————————————————————
void keyscan()    //鍵盤掃描函數
{
        if(setplace==0)    //這個按鍵按下會改變光標的位置
        {
                delay10ms();
                if(setplace==0)
                {
                        place++;
                        while(setplace==0);
                        if(pingmu==0)    //我設置了4個屏幕,現在這個屏幕是顯示時鐘的
                        {
                                if(place==8)        place=0;

                                if(place==1)
                                {
                                        temp2=(miao)/10*16+(miao)%10;
                                        ds_write(0x8e,0x00);
                                        ds_write(0x80,0x00|temp2);        //miao數據寫入DS1302
                                        ds_write(0x8e,0x80);

                                        TR0=0;
                                        lcd_writecom(0x83);
                                        lcd_writecom(0x0f);       
                                }
                                if(place==2)
                                {
                                        TR0=0;
                                        lcd_writecom(0x86);
                                        lcd_writecom(0x0f);       
                                }
                                if(place==3)
                                {
                                        TR0=0;
                                        lcd_writecom(0x89);
                                        lcd_writecom(0x0f);       
                                }
                                if(place==4)
                                {
                                        TR0=0;
                                        lcd_writecom(0x8f);
                                        lcd_writecom(0x0f);       
                                }
                                if(place==5)
                                {
                                        TR0=0;
                                        lcd_writecom(0xc8);
                                        lcd_writecom(0x0f);       
                                }
                                if(place==6)
                                {
                                        TR0=0;
                                        lcd_writecom(0xcb);
                                        lcd_writecom(0x0f);       
                                }
                                if(place==7)
                                {
                                        TR0=0;
                                        lcd_writecom(0xce);
                                        lcd_writecom(0x0f);       
                                }
                                if(place==0)
                                {
                                        lcd_writecom(0x0c);        //按動到第8次,設置光標不閃爍
                                        TR0=1;        //打開定時器0

                                        temp2=(miao)/10*16+(miao)%10;
                                        ds_write(0x8e,0x00);
                                        ds_write(0x80,0x00|temp2);//miao數據寫入DS1302
                                        ds_write(0x8e,0x80);
                                }

                        }
                }
        }
}


作者: admin    時間: 2017-3-24 01:59
解決的怎么樣了?
作者: admin    時間: 2017-3-24 01:59
解決的怎么樣了?
作者: 小企鵝賣萌    時間: 2020-7-28 21:37
怎么解決?我的問題是一邊讀取數據,然后按下按鍵,在指定位置閃爍。




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1