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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

我用單片機寫的電子時鐘

作者:佚名   來源:本站原創   點擊數:  更新時間:2012年01月05日   【字體:


 

學習單片機半個月了,學得也差不多了,今天寫一個寫程序練習練習哈哈

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

 下面是源代碼:

#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);

        }


}

 

關閉窗口

相關文章

主站蜘蛛池模板: 欧美a级成人淫片免费看 | 久久青 | 欧美伊人| 久久国产精彩视频 | 免费看黄色片 | 久久久夜夜夜 | 亚洲欧美在线视频 | 爱爱综合网 | 亚洲看片网站 | 午夜看片| 精品久久电影 | 精品久久久久久红码专区 | 亚洲视频在线观看 | 欧美精品乱码久久久久久按摩 | 亚洲综合一区二区三区 | 精品成人av | h视频免费观看 | 九九国产 | 成人精品 | 91综合在线观看 | av一级 | 日韩成人免费视频 | 国产激情视频在线 | 在线观看电影av | 日韩人体视频 | 亚洲欧美日本在线 | 午夜码电影 | 在线观看日韩精品视频 | 亚洲精品在线国产 | 毛片一级网站 | 久久久激情视频 | 国产欧美一区二区三区在线看 | 亚洲欧美中文字幕在线观看 | 亚洲国产精品91 | 欧美精品啪啪 | 曰韩一二三区 | 欧美一卡二卡在线 | 欧美日韩精品一区二区 | 精品国产视频 | 韩国av一区二区 | 精品欧美色视频网站在线观看 |