首页 > 结婚吉日

万年历实物图单片机单片机万年历函数(电子万年历表)

万年历 结婚吉日 05-23

目录导读:

  • 基于单片机的万年历怎么做啊只要求显示日期和时间?电路图、流程有谁。。。
  • 单片机万年历中的问题(附图)
  • 51单片机万年历制作C语言的,要有完整的流程和电路图,流程中最好有详细。。。
  • 基于51单片机制作万年历,用数码管,定时器,不用时钟芯片,不用液晶,怎 。。。
  • 急急!!电子万年历毕业设计(基于AT89C51单片机和DS1302时钟芯片) 中。。。
  • 单片机课程设计万年历方案论证怎么写
  • oZl桃花煞

    基于单片机的万年历怎么做啊只要求显示日期和时间?电路图、流程有谁。。。

    #include <reg52、h>

    #include<stddef。h>

    #define uchar unsigned char

    #define uint unsigned int

    #define LCD1602_FLAG

    #define LCD1602_PORT P0

    sbit lcd1602_rs=P2^0;

    sbit lcd1602_e=P2^2;

    sbit lcd1602_rw=P2^1;

    sbit lcd1602_busy=P0^7;

    sbit key_ch=P3^5;

    sbit key_add=P3^6;

    sbit key_minus=P3^7;

    uchar i,sec,min,h,date,month,flag;

    uint year;

    uchar *chgstr⓻={" ","sec","min","hour","date","min","year"};

    uchar j,k,m,n,o,p;

    uchar code table[]={

    0x3f,0x06,0x5b,0x4f,

    0x66,0x6d,0x7d,0x07,

    0x7f,0x6f,0x77,0x7c,

    0x39,0x5e,0x79,0x71};

    uchar timestr⓾,datestr⓾;

    void init();

    void delay(uint);

    void time_display();

    void date_display();

    void control();

    void time();

    /*

    ************************************

    * 函数名称:lcd1602_CheckBusy()

    * 函数功能:状态查询

    ************************************

    */

    void lcd1602_CheckBusy()

    {

    do

    {

    lcd1602_busy=1;

    lcd1602_rs=0;

    lcd1602_rw=1;

    lcd1602_e=0;

    lcd1602_e=1;

    }

    while(lcd1602_busy);

    }

    /*

    ***************************************

    * 函数名称: lcd1602_WriteCmd()

    * 函数功能:写命令

    * 入口参数:命令字

    * 出口参数:无

    ***************************************

    */

    void lcd1602_WriteCmd(const uchar cmd)

    {

    lcd1602_CheckBusy();

    lcd1602_rs=0;

    lcd1602_rw=0;

    lcd1602_e=1;

    LCD1602_PORT=cmd;

    lcd1602_e=0;

    }

    /*

    *******************************************

    * 函数名称:lcd1602_WriteData()

    * 函数功能:写数据

    * 入口参数:c--待写数据

    * 出口参数:无

    *********************************************

    */

    void lcd1602_WriteData(const uchar c)

    {

    lcd1602_CheckBusy();

    lcd1602_rs=1;

    lcd1602_rw=0;

    lcd1602_e=1;

    LCD1602_PORT=c;

    lcd1602_e=0;

    }

    /*

    ***********************************************

    * 函数名称:lcd1602_Init()

    * 函数功能:初始化LCD

    * 入口参数:无

    * 出口参数:无

    ***********************************************

    */

    void lcd1602_Init()

    {

    lcd1602_WriteCmd(0x38); //显示模式为8位2行5*7点阵

    lcd1602_WriteCmd(0x0c); //display enable,flag enable,flash enable,

    lcd1602_WriteCmd(0x06); //flag move to right,screen don't move

    lcd1602_WriteCmd(0x01); //clear screen

    }

    /*

    ************************************************

    * 函数名称:lcd1602_Display()

    * 函数功能: 字符显示

    * 入口参数:ptr--字符或字符串指针

    * 出口参数:无

    * 说 明:用户可通过以下方式来调用:

    * 1)lcd1602_Display("Hello,world!");

    * 2) INT8U 存储类型 txt[]="要显示的字符串";

    * 或者 INT8U 存储类型 txt[]={'t','x','t',。。,'\0'};

    * INT8U *ptr;

    * ptr=&txt;

    * lcd1602_Display(ptr);

    * 或 lcd1602_Display(txt);

    * 或 lcd1602_Display(&txt);

    ************************************************

    */

    void lcd1602_Display(const uchar *ptr,uchar line,uchar xaddr)

    {

    uchar data i=0;

    uchar *data q;

    q=ptr;

    switch(line)

    {

    case 0:

    lcd1602_WriteCmd(0x80+xaddr);

    while(q!=NULL && (*q!='\0') && i<16)

    {

    lcd1602_WriteData(*q);

    q++;

    i++;

    }

    break;

    case 1:

    lcd1602_WriteCmd(0xc0+xaddr);

    while(q!=NULL && (*q!='\0') && i<16)

    {

    lcd1602_WriteData(*q);

    q++;

    i++;

    }

    break;

    }

    }

    void main()

    {

    lcd1602_Init();

    init();

    while(1)

    {

    time_display();

    date_display();

    control();

    }

    }

    void init()

    {

    i=0;

    sec=0;

    min=30;

    h=7;

    date=17;

    month=10;

    year=20二十四;

    flag=0;

    EA=1;

    ET0=1;

    TMOD=0x01;

    TH0=(65536-50000)/256;

    TL0=(65536-50000)%256;

    TR0=1;

    }

    void delay(uint z)

    {

    uint x,y;

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

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

    }

    void time_display()

    {

    timestr⓻=0x30+sec%10;

    timestr⓺=0x30+sec/10;

    timestr⓹=':';

    timestr⓸=0x30+min%10;

    timestr⓷=0x30+min/10;

    timestr⓶=':';

    timestr⓵=0x30+h%10;

    timestr[0]=0x30+h/10;

    timestr⓼=0;

    lcd1602_Display(timestr,1,3);

    }

    void date_display()

    {

    datestr⓽=0x30+date%10;

    datestr⓼=0x30+date/10;

    datestr⓻=':';

    datestr⓺=0x30+month%10;

    datestr⓹=0x30+month/10;

    datestr⓸=':';

    datestr⓷=0x30+year%10;

    datestr⓶=0x30+year/10%10;

    datestr⓵=0x30+year/100%10;

    datestr[0]=0x30+year/1000;

    lcd1602_Display(datestr,0,2);

    }

    void control()

    {

    if(!key_ch)

    {

    delay(5);

    if(!key_ch)

    {

    flag++;

    TR0=0;

    if(flag==7)

    {flag=0;TR0=1;lcd1602_Init();}

    lcd1602_Display(chgstr[flag],1,12);

    }

    }

    while(!key_ch);

    if(flag==1&&key_add==0)

    {

    while(!key_add);

    sec++;

    if(sec==60)

    sec=0;

    }

    if(flag==1&&key_minus==0)

    {

    while(!key_minus);

    sec--;

    if(sec==-1)

    sec=59;

    }

    if(flag==2&&key_add==0)

    {

    while(!key_add);

    min++;

    if(min==60)

    min=0;

    }

    if(flag==2&&key_minus==0)

    {

    while(!key_minus);

    min--;

    if(min==-1)

    min=59;

    }

    if(flag==3&&key_add==0)

    {

    while(!key_add);

    h++;

    if(h==二十四)

    h=0;

    }

    if(flag==3&&key_minus==0)

    {

    while(!key_minus);

    h--;

    if(h==-1)

    h=23;

    }

    if(flag==4&&key_add==0)

    {

    while(!key_add);

    date++;

    if(date==29)

    if((year%4!=0)&&(month==2))

    date=1;

    if(date==30)

    if((year%4==0)&&(month==2))

    date=1;

    if(date==31)

    if((month==4)||(month==6)||(month==9)||(month==11))

    date=1;

    if(date==32)

    if((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))

    date=1;

    }

    if(flag==4&&key_minus==0)

    {

    while(!key_minus);

    if(date>1)date--;

    }

    if(flag==5&&key_add==0)

    {

    while(!key_add);

    month++;

    if(month==13)

    month=1;

    }

    if(flag==5&&key_minus==0)

    {

    while(!key_minus);

    month--;

    if(month==0)

    month=12;

    }

    if(flag==6&&key_add==0)

    {

    while(!key_add);

    year++;

    if(year==99)

    year=1;

    }

    if(flag==6&&key_minus==0)

    {

    while(!key_minus);

    year--;

    if(year==0)

    year=99;

    }

    }

    void T0_rpt() interrupt 1

    {

    TH0=(65536-50000)/256;

    TL0=(65536-50000)%256;

    i++;

    time();

    }

    void time()

    {

    if(i==20)

    {

    i=0;

    sec++;

    if(sec==60)

    {

    sec=0;

    min++;

    if(min==60)

    {

    min=0;

    h++;

    if(h==二十四)

    {

    h=0;

    min=0;

    sec=0;

    date++;

    if(date==29)

    if((year%4!=0)&&(month==2))

    {

    date=1;

    month++;

    if(month==13)

    {

    month=1;

    year++;

    }

    }

    if(date==30)

    if((year%4==0)&&(month==2))

    {

    date=1;

    month++;

    if(month==13)

    {

    month=1;

    year++;

    }

    }

    if(date==31)

    if((month==4)||(month==6)||(month==9)||(month==11))

    {

    date=1;

    month++;

    if(month==13)

    {

    month=1;

    year++;

    }

    }

    if(date==32)

    if((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))

    {

    date=1;

    month++;

    if(month==13)

    {

    month=1;

    year++;

    }

    }

    }

    }

    }

    }

    }oZl桃花煞

    单片机万年历中的问题(附图)

    排阻,外部上拉用的,提高单片机驱动能力,一般P0口做驱动才需要上拉,它内部没有上拉电阻oZl桃花煞

    51单片机万年历制作C语言的,要有完整的流程和电路图,流程中最好有详细。。。

    我可以帮助你,哈哈

    需要就联系我oZl桃花煞

    基于51单片机制作万年历,用数码管,定时器,不用时钟芯片,不用液晶,怎 。。。

    基于51单片机制作万年历,用两个8位一体的共阴数码管,显示日期和时间。数码管位选用两片74HC138,便于动态扫描显示,又节省引脚。用3个按键调时,K1为选择调时状态,K2为加1键,K3为减1键。oZl桃花煞

    仿真图如下:oZl桃花煞

    oZl桃花煞

    oZl桃花煞

    急急!!电子万年历毕业设计(基于AT89C51单片机和DS1302时钟芯片) 中。。。

    不想用也可不用啊oZl桃花煞

    单片机课程设计万年历方案论证怎么写

    方案论证着重是写你做规划时有几种可选的方案打比方说用stc51单片机还是lpc51或者用pic还有时钟芯片选择还有显示用1284还是1602等等

    说说各自的优缺点最后通过对比选择较适合的那一种,打比方说从成本的对比,控制的对比,性能的对比还要说的就是可行性,希望帮到你oZl桃花煞

    oZl桃花煞

    oZl桃花煞

    标签: