在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 使用8051連接到LCD顯示器程序

            使用8051連接到LCD顯示器程序

            作者: 時(shí)間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
            使用8051連接到LCD顯示器程序執(zhí)行時(shí)讓LCD顯示器顯示出數(shù)字時(shí)鐘修改時(shí)間4ⅹ4小鍵盤的按鈕B ,可以修改間 (2009-08-04 18:57)

            /*

            本文引用地址:http://www.biyoush.com/article/201611/315593.htm

            Target:89S51

            程序描述:這個(gè)范例說明如何使用8051的Port 1連接到LCD顯示器,PORT 3的P3.3,P3.4和P3.5分別連接到LCD顯示器的控制線程序執(zhí)行時(shí)讓LCD顯示器顯示出數(shù)字時(shí)鐘PORT 2連接到4ⅹ4的小鍵盤,可以修改時(shí)間4ⅹ4小鍵盤的按鈕B ,可以修改間*/

            /* ***************************************************** */

            #include

            #include

            #define TIMER0_COUNT 0xD8F0 /*10000h-((12,000,000/(12*100))*/

            /* 數(shù)字時(shí)鐘的工作模式 */

            #define SET 11

            #define TRUE 1

            #define FALSE 0

            #define putchar write_LCD_data

            typedef struct {

            char hour;

            char minute;

            char second;

            } time;

            typedef struct {

            char year;

            char month;

            char day;

            } date;

            time now={23,59,0},display;

            date today={04,05,29},tmpday;

            static unsigned timer0_tick=100,mode=0,operation;

            char code dayofmonth[]={31,28,31,30,31,30,31,31,30,31,30,31};

            char code weekday[7][4]={"MON","TUE","WED","THU","FRI","SAT",

            "SUN"};

            char code command[1][6]={"Watch",};

            char code int2char[]="0123456789";

            char gotkey();

            void display_time(void)

            {

            gotoxy(1,0);

            display_LCD_number(display.hour);

            display_LCD_string(":");

            display_LCD_number(display.minute);

            display_LCD_string(":");

            display_LCD_number(display.second);

            }

            void display_date()

            {

            char i,days=4;

            gotoxy(2,2);

            display_LCD_number(today.year);

            display_LCD_string("/");

            display_LCD_number(today.month);

            display_LCD_string("/");

            display_LCD_number(today.day);

            display_LCD_string(" ");

            if(today.month > 1)

            for(i=0;i<=today.month-2;i++)

            days+=(dayofmonth[i]%7);

            if( today.year !=0 ) days+=((today.year-1)/4)+today.year+1;

            if (today.year%4==0 && today.month >2) days++;

            days=(days+today.day) % 7;

            display_LCD_string(&weekday[days][0]);

            }

            int getdigit(unsigned char x,unsigned char y)

            {

            char keys;

            do {

            gotoxy(x,y);

            putchar(_);

            keys=gotkey();

            gotoxy(x,y);

            putchar(int2char[keys]);

            } while(keys>9);

            return(keys);

            }

            int gettime()

            {

            char temp;

            do {

            while((temp=getdigit(1,0))>2); //時(shí)的十位數(shù)不能大于2

            temp=temp*10+getdigit(1,1);

            if (temp > 23) display_time();

            } while (temp > 23);

            display.hour=temp;

            while((temp=getdigit(1,3))>5);

            display.minute=temp*10+getdigit(1,4);

            return(TRUE);

            }

            char monthday(char year,char month)

            {

            if(month==2 && year%4==0) //潤(rùn)年的2月有29天

            return(29);

            else

            return(dayofmonth[month-1]); //非閏年時(shí)的該月份天數(shù)

            }

            int getdate()

            {

            char temp,days;

            temp=getdigit(2,2);

            tmpday.year=temp*10+getdigit(2,3);

            do {

            while((temp=getdigit(2,5))>1); //月的十位數(shù)不能大于1

            temp=temp*10+getdigit(2,6);

            if (temp > 12) display_date(); //月份的數(shù)字不能大于12

            } while (temp > 12);

            tmpday.month=temp;

            do {

            while((temp=getdigit(2,8))>3); //日的十位數(shù)不能大于3

            temp=temp*10+getdigit(2,9);

            days=monthday(tmpday.year,tmpday.month);

            if(temp > days || temp==0) display_date();

            } while (temp > days || temp==0);

            //輸入的日期大于該月日期就重新輸入

            tmpday.day=temp;

            return(TRUE);

            }

            static void timer0_isr(void) interrupt TF0_VECTOR using 1

            {

            TR0=0;

            TL0=(TIMER0_COUNT & 0x00FF);

            TH0=(TIMER0_COUNT >> 8);

            TR0=1;

            if(--timer0_tick) return;

            timer0_tick=100;

            now.second++; //秒加1

            if (now.second==60) { //如果秒等于60

            now.second=0; //秒恢復(fù)為0

            now.minute++; //分加1

            if (now.minute==60) { //如果分等于60

            now.minute=0; //分恢復(fù)為0

            now.hour++; //時(shí)加1

            if (now.hour==24) { //如果時(shí)等于24

            now.hour=0; //時(shí)恢復(fù)為0

            today.day++; //日加1

            if (today.day>monthday(today.year,

            today.month)) {

            today.day=1;

            //如果日超過當(dāng)月最大日數(shù),就變成1

            today.month++;

            //月加1

            if(today.month==13) {

            //如果月等于13

            today.month=1;

            //月恢復(fù)為1

            today.year++;

            //年加1

            }

            }

            display_date();

            }

            }

            }

            if (operation==SET ) return;

            display=now;

            display_time();

            }

            static void timer0_initialize(void)

            {

            EA=0;

            TR0=0;

            TMOD &= 0XF0;

            TMOD |=0x01;

            TL0=(TIMER0_COUNT & 0x00FF);

            TH0=(TIMER0_COUNT >> 8);

            PT0=0;

            ET0=1;

            TR0=1;

            EA=1;

            }

            void main (void) {

            char keys;

            init_LCD();

            clear_LCD();

            gotoxy(2,0);

            display_LCD_string("20");

            display=now;

            display_time();

            display_date();

            gotoxy(1,9);

            display_LCD_string(&command[mode][0]);

            timer0_initialize();

            do {

            keys=gotkey();

            if(keys==SET) {

            operation=SET;

            if ( gettime()) now=display;

            if ( getdate()) {

            today=tmpday;

            display_date();

            }

            }

            operation=0;

            } while(1);

            }



            關(guān)鍵詞: 8051LCD顯示器程

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉