久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

我用單片機寫的電子時鐘

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2012年01月05日   【字體:


 

學(xué)習(xí)單片機半個月了,學(xué)得也差不多了,今天寫一個寫程序練習(xí)練習(xí)哈哈

跟電子表的功能一模一樣,可以進行設(shè)置,準(zhǔn)確度非常高哈哈,用的是1602型號的液晶顯示器,大家只需要簡單的修改一下端口就能應(yīng)用到你自己的設(shè)計上去了.

 下面是源代碼:

#include<REG52.h>

#define  uchar unsigned char

#define  uint  unsigned int 

uchar  code  year_table[]="  2010-04-11 SUN";

uchar  code  time_table[]="    00:00:00";


uchar  time_count,key_count;

char  hour,minute,second,mouth,day,week;

uint year;

sbit    rs=P3^5;

sbit    lcden=P3^4;

sbit dula=P2^6;

sbit wela=P2^7;

sbit key_set=P3^0;

sbit key_inc=P3^1;

sbit key_dec=P3^2;

sbit rd=P3^7;

void delay(uint delay_time)

{

uint x,y;

for(x=delay_time;x>0;x--)

for(y=110;y>0;y--);

}

void write_com(uchar com)

{

        rs=0;

        lcden=0;

        P0=com;

        delay(5);

        lcden=1;

        delay(5);

        lcden=0;

   

}

void write_date(uchar date)

{

        rs=1;

        lcden=0;

        P0=date;

        delay(5);

        lcden=1;

        delay(5);

        lcden=0;

}

void timer_Init()

{

        TMOD=0x01;

        TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

        EA=1;

        ET0=1;

        TR0=1;

}

write_time(uchar addr,uchar time)

{

        uchar shi,ge;

        shi=time/10;

        ge=time%10;

        write_com(0x80+0x40+addr);

        write_date(0x30+shi);

        write_date(0x30+ge);

  

}

write_day(uchar addr,uchar day)

{

        uchar shi,ge;

        shi=day/10;

        ge=day%10;

        write_com(0x80+addr);

        write_date(0x30+shi);

        write_date(0x30+ge);

}

write_year(uchar addr,uint year)

{

        uchar shi,ge,qian,bei;

        qian=year/1000;

        bei=year%1000/100;

        shi=year%100%100/10;

        ge=year%10;

        write_com(0x80+addr);

        write_date(0x30+qian);

        write_date(0x30+bei);

        write_date(0x30+shi);

        write_date(0x30+ge);

}

write_week(uchar addr,uchar week)

{

    write_com(0x80+addr);

    switch(week)

    {

     case 1:

        write_date('M');

        write_date('O');

        write_date('N');

        break;

     case 2:

       write_date('T');

       write_date('U');

       write_date('E');


        break;

     case 3:

       write_date('W');

       write_date('E');

       write_date('D');

        break;

     case 4:

        write_date('T');

       write_date('H');

       write_date('U');

        break;

     case 5:

        write_date('F');

       write_date('R');

       write_date('I');

        break;

     case 6:

        write_date('S');

       write_date('A');

       write_date('T');

        break;

     case 7:

        write_date('S');

       write_date('U');

       write_date('N');

       break;


    }

}

void Init()

{

    uchar num;

    dula=0;

    wela=0;

    lcden=0;

    year=2010;

    mouth=4;

    day=11;

    week=7;

    write_com(0x38);

    write_com(0x0c);

    write_com(0x06);

    write_com(0x01);

    write_com(0x80);


    for(num=0;num<16;num++)

{

write_date(year_table[num]);

delay(5);

}

write_com(0x80+0x40);

    for(num=0;num<12;num++)

{

write_date(time_table[num]);

delay(5);

}

     timer_Init();

       


}

void keyscan()

{

        rd=0;

        if(key_set==0)

        {

             delay(5);

             if(key_set==0)

             {

                key_count++;

                while(!key_set);//等待鍵盤釋放

                if(key_count==1)

                {

                        TR0=0;

                        write_com(0x80+0x40+10);

                        write_com(0x0f);

                }


                if(key_count==2)

                {

                      

                        write_com(0x80+0x40+7);

                      

                }

                if(key_count==3)

                {

                      

                        write_com(0x80+0x40+4);

                      

                }

                if(key_count==4)

                {

                        write_com(0x80+13);

                }

                if(key_count==5)

                {

                        write_com(0x80+10);

                }

                if(key_count==6)

                {

                        write_com(0x80+7);

                }

                if(key_count==7)

                {

                        write_com(0x80+2);

                }

                if(key_count==8)

                {

                        key_count=0;

                        write_com(0x0c);

                        TR0=1;

                      

                }

             }

            

        }

        if(key_count!=0)

             {

                if(key_inc==0)

                {

                        delay(5);

                        if(key_inc==0)

                        {

                                while(!key_inc);

                                if(key_count==1)

                                {

                                        second++;

                                        if(second==60)

                                        {

                                                second=0;

                                        }

                                        write_time(10,second);

                                        write_com(0x80+0x40+10);


                                }

                                if(key_count==2)

                                {

                                        minute++;

                                        if(minute==60)

                                        {

                                                minute=0;

                                        }

                                        write_time(7,minute);

                                        write_com(0x80+0x40+7);

                                }

                                if(key_count==3)

                                {

                                        hour++;

                                        if(hour==24)

                                        {

                                                hour=0;

                                        }

                                        write_time(4,hour);

                                        write_com(0x80+0x40+4);



                                }

                                if(key_count==4)

                                {

                                        week++;

                                        if(week==8)

                                        {

                                        week=1;

                                        }

                                        write_week(13,week);

                                        write_com(0x80+13);

                                }

                                if(key_count==5)

                                {

                                        day++;

                                        if(day==32)

                                        {

                                                day=1;

                                        }

                                        write_day(10,day);

                                        write_com(0x80+10);

                                }

                                if(key_count==6)

                                {

                                   mouth++;

                                   if(mouth==13)

                                   

                                   {

                                    mouth=1;

                                   }

                                   write_day(7,mouth);

                                   write_com(0x80+7);


                                }

                                if(key_count==7)

                                {

                                        year++;

                                        write_year(2,year);

                                        write_com(0x80+2);

                                }


                                

                        }

                 }

                 if(key_dec==0)

                 {

                        delay(5);

                        if(key_dec==0)

                        {

                                while(!key_dec);

                                if(key_count==1)

                                {

                                        second--;

                                        if(second==-1)

                                        {

                                                second=59;

                                        }

                                        write_time(10,second);

                                        write_com(0x80+0x40+10);


                                }

                                if(key_count==2)

                                {

                                        minute--;

                                        if(minute==-1)

                                        minute=59;

                                        write_time(7,minute);

                                        write_com(0x80+0x40+7);


                                }

                                if(key_count==3)

                                {

                                        hour--;

                                        if(hour==-1)

                                        hour=23;

                                        write_time(4,hour);

                                        write_com(0x80+0x40+4);


                                }

                                if(key_count==4)

                                {

                                        week--;

                                        if(week==0)

                                        {

                                          week=7;

                                        }

                                        write_week(13,week);

                                        write_com(0x80+13);

                                }

                                if(key_count==5)

                                {

                                        day--;

                                        if(day==0)

                                        {

                                         day=31;

                                        }

                                        write_day(10,day);

                                        write_com(0x80+10);


                                }

                                if(key_count==6)

                                {

                                        mouth--;

                                        if(mouth==0)

                                        {

                                          mouth=12;

                                        }

                                        write_day(7,mouth);

                                        write_com(0x80+7);

                                }

                                if(key_count==7)

                                {

                                        year--;

                                        if(year==2009)

                                        {

                                         year=2010;

                                        }

                                        write_year(2,year);

                                        write_com(0x80+2);

                                }


                        }

                 }


             }

}

void main()

{

 Init();

 while(1)

 {

      keyscan();   

 }

}


void clock_timer() interrupt 1

{

        TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

        time_count++;

       if(time_count==18)

        {

                time_count=0;

                second++;

                if(second==60)

                {

                        second=0;

                        minute++;

                        if(minute==60)

                        {

                                minute=0;

                                hour++;

                                if(hour==24)

                                {

                                  hour=0;

                                }

                                write_time(4,hour);

                        }

                        write_time(7,minute);

                }

                write_time(10,second);

        }


}

 

關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 亚洲精品欧洲 | 在线观看中文字幕 | 日韩综合在线视频 | 激情在线视频网站 | 久久伊人久久 | 欧美三级在线 | 国产在线拍偷自揄拍视频 | 欧美456| 九色视频网站 | 一区二区三区四区在线免费观看 | 免费一看一级毛片 | 日韩综合在线播放 | 亚洲3p| 97视频在线免费 | 日本aa毛片a级毛片免费观看 | 久久久精品一区二区三区四季av | 成人在线精品视频 | 天天干天天玩天天操 | 国产一区二区三区网站 | 91国产在线视频在线 | 欧美日韩国产一区二区三区 | 91在线一区 | 久久久一区二区三区四区 | 欧美性jizz18性欧美 | 成年人在线观看视频 | 天堂在线1 | 丁香婷婷综合激情五月色 | 免费观看一级特黄欧美大片 | 中文字幕成人在线 | 91精品国产日韩91久久久久久 | 国产精品久久久久久久久久东京 | 欧美精品 在线观看 | 91麻豆精品国产91久久久久久 | 精品国产乱码久久久久久闺蜜 | 91视频.com| 一区二区久久 | 亚洲国产精品成人久久久 | 国产精品视频久久久 | 九九视频在线观看视频6 | 一级二级三级在线观看 | 亚洲精品欧美精品 |