找回密碼
         注冊會員
        搜索附件  
        MCU資訊論壇 附件中心 單片機電路論壇 模電數電論壇 15_142625_3d99739fd5747bf.png

        熱門下載

        附件中心&附件聚合2.0
        For Discuz! X2.5 © hgcad.com

        15_142625_3d99739fd5747bf.png

         

        求助高手!!關于LCD光標不停的閃的問題!!:
        不知道什么原因,時間以及鬧鐘都可以正常顯示,但是光標卻不停地閃,原本是要光標在調整時間時更方便,但是在main函數卻編程了一個Bug。這是為什么呢?要怎么該?請大家多多指教~謝謝!!
        附上仿真圖:














        程序如下:
        // Program to make a digital clock with integrated Alarm and digital thermometer
        #include<reg51.h>
        #define port P1
        //#define cont_port P3
        #define dataport P0
        #define m_sec 10
        sbit rs=P2^0;
        sbit en=P2^2;
        sbit rw=P2^1;
        sbit dig_hr1=port^5;
        sbit dig_min1=port^6;
        sbit start=port^1;
        sbit am_pm=port^2;
        sbit alarm_set=port^7;
        sbit alarm=port^3;
        //sbit wr= P3^2;
        //sbit rd= P3^3;
        //sbit intr= P3^4;

        int hr ,hr1=0,alarm_hr=0;
        int min,min1=0,alarm_min=0;
        int sec,sec1=0,dig_am_pm=0,alarm_am_pm=0;
        int test_final=0,test_intermediate1[10],test_intermediate2[3]={0,0,0};

        void delay(unsigned int msec) // Time dealy function
        {
        int i,j ;
        for(i=0;i<msec;i++)
        for(j=0;j<1275;j++);
        }

        void lcd_cmd(unsigned char item) //Function to send command to LCD
        {
        dataport = item;
        rs= 0;
        rw=0;
        en=1;
        delay(1);
        en=0;
        return;
        }

        void lcd_data(unsigned char item) // Function to send data to LCD
        {
        dataport = item;
        rs= 1;
        rw=0;
        en=1;
        delay(1);
        en=0;
        return;
        }

        void lcd_data_string(unsigned char *str) // Function to send string to LCD
        {
        int i=0;
        while(str!='\0')
        {
        lcd_data(str);
        i++;
        delay(1);
        }
        return;
        }

        void lcd_data_int(int time_val) // Function to send number to LCD
        {
        int int_amt;
        int_amt=time_val/10;
        lcd_data(int_amt+48);
        int_amt=time_val%10;
        lcd_data(int_amt+48);
        }

        void lcd(unsigned char str1[10])
        {
        lcd_cmd(0x38);
        lcd_cmd(0x0e);
        delay(1);
        lcd_data_string(str1);
        }

        void shape() // Function to create the shape of degree
        {
        lcd_cmd(64);
        lcd_data(2);
        lcd_data(5);
        lcd_data(2);
        lcd_data(0);
        lcd_data(0);
        lcd_data(0);
        lcd_data(0);
        lcd_data(0);
        }

        void set_hr1() // Function to set set hours digit of clock
        {
        hr1++;
        if(hr1>11)
        hr1=0;
        lcd_cmd(0xc3);
        lcd_data_int(hr1);
        lcd_data(':');
        }

        void set_min1() // Function to set set minutes digit of clock
        {
        min1++;
        if(min1>59)
        min1=0;
        lcd_cmd(0xc6);
        lcd_data_int(min1);
        }

        void set_alarm_hr1() // Function to set set hours digit of alarm
        {
        alarm_hr++;
        if(alarm_hr>11)
        alarm_hr=0;
        lcd_cmd(0xc3);
        lcd_data_int(alarm_hr);
        lcd_data(':');
        }

        void set_alarm_min1() // Function to set set minutes digit of clock
        {
        alarm_min++;
        if(alarm_min>59)
        alarm_min=0;
        lcd_cmd(0xc6);
        lcd_data_int(alarm_min);
        }

        void alarm_check() // Function to check alarm
        {
        if(hr==alarm_hr)
        {
        if(min==alarm_min)
        {
        if(dig_am_pm==alarm_am_pm)
        {
        alarm=1;
        lcd_cmd(0x8b);
        lcd("ALARM");
        }
        }
        }
        }



        void main()
        {
        int k;
        start=1;
        dig_hr1=1;
        dig_min1=1;
        alarm_set=1;
        alarm=0;
        lcd_cmd(0x83);
        lcd("SET ALARM");
        lcd_cmd(0xc3);
        lcd_data_int(hr1);
        lcd_data(':');
        lcd_data_int(min1);
        while(alarm_set==0)
        {
        delay(10);
        if(dig_hr1==0)
        set_alarm_hr1();
        if(dig_min1==0)
        set_alarm_min1();
        }

        if(am_pm==0)
        {
        lcd_cmd(0xc8);
        lcd_data_string("am");
        alarm_am_pm=0;
        }

        if(am_pm==1)
        {
        lcd_cmd(0xc8);
        lcd_data_string("pm");
        alarm_am_pm=1;
        }
        delay(200);
        lcd_cmd(0x01);
        lcd_cmd(0x83);
        lcd("SET TIMING");
        lcd_cmd(0xc3);
        lcd_data_int(hr1);
        lcd_data(':');
        lcd_data_int(min1);
        while(start==0)
        {
        delay(10);
        if(dig_hr1==0)
        set_hr1();
        if(dig_min1==0)
        set_min1();
        }

        if(am_pm==0)
        {
        lcd_cmd(0xc8);
        lcd_data_string("am");
        dig_am_pm=0;
        }

        if(am_pm==1)
        {
        lcd_cmd(0xc8);
        lcd_data_string("pm");
        dig_am_pm=1;
        }
        delay(200);
        lcd_cmd(0x01);
        while(1)
        {
        for(k=0;k<2;k++)
        {
        for(hr=hr1;hr<12;hr++)
        {
        for(min=min1;min<60;min++)
        {
        for(sec=0;sec<60;sec++)
        {
        lcd_cmd(0x81);
        delay(1);
        lcd_data_int(hr);
        lcd_data(':');
        lcd_data_int(min);
        lcd_data(':');
        lcd_data_int(sec);
        if(dig_am_pm==0)
        {
        lcd("am");
        }
        else
        {
        lcd("pm");
        }
        alarm_check();
        lcd_cmd(0xc3);
        delay(2);
        // lcd_data_string("TEMP:");
        // temp();
        //lcd_data_string(" ");
        }
        }
        min1=0;
        }
        if(dig_am_pm==0)
        dig_am_pm=1;
        else
        dig_am_pm=0;
        hr1=0;
        }
        }
        }



        15_142625_3d99739fd5747bf.png

        QQ|手機版|MCU資訊論壇 ( 京ICP備18035221號-2 )|網站地圖

        GMT+8, 2025-5-1 12:23 , Processed in 0.032842 second(s), 8 queries , Redis On.

        Powered by Discuz! X3.5

        © 2001-2025 Discuz! Team.

        免费高清日本社区| 中文字幕一精品亚洲无线一区| 91久久精品国产一区二区| 日批视频在线观看| 亚洲精品国产精品乱码不卡√| 国产午夜福利精品一区二区三区 | 少妇人妻偷人精品视频| 99久久婷婷免费国产综合精品| 亚洲国产精品国自产拍电影| 欧美日韩国产精品| 四虎影视永久在线观看精品| 国产精品一区二区久久精品| 国产乱人伦偷精品视频不卡| 好硬好湿好爽在深一点动态图| 成人区人妻精品一区二区不卡网站| 国产精品午夜福利在线无码| 91国语精品自产拍在线观看性色 | 精品亚洲成α人无码成α在线观看| 男人狂扒美女尿口亲尿口动态图| 国产精品一区二区久久精品| 亚洲精品97久久中文字幕无码| 97久久超碰国产精品旧版| 久热这里只有精品99国产6| 亚洲国产精品VA在线看黑人 | 亚洲国产精品视频| 99久久婷婷免费国产综合精品| 久久精品国产精品亚洲人人| 亚洲av永久无码精品秋霞电影影院 | 无码精品国产VA在线观看DVD | 伊人精品在线观看| 国产精品1024香蕉在线观看| 人妻少妇精品系列| 99精品视频在线观看re| 亚洲国产成人精品久久久国产成人一区二区三区综| 少妇人妻偷人精品免费视频| 国产亚洲精品高清在线| 久久精品aⅴ无码中文字字幕不卡 久久精品aⅴ无码中文字字幕重口 | 精品视频一区二区在线视频| 亚洲精品在线观看视频| 亚洲日韩精品射精日| 国产观看精品一区二区三区|