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

<s id="cmphk"><label id="cmphk"></label></s>
    <span id="cmphk"><var id="cmphk"></var></span>
    <dfn id="cmphk"><var id="cmphk"></var></dfn>
    <menu id="cmphk"><thead id="cmphk"></thead></menu>

    <address id="cmphk"></address>

      <dfn id="cmphk"></dfn>
      
      
      <span id="cmphk"></span>

      <object id="cmphk"><tt id="cmphk"></tt></object>
      1. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ds1302帶鬧鐘功能的單片機控制的時鐘程序

        ds1302帶鬧鐘功能的單片機控制的時鐘程序

        作者: 時間:2016-11-30 來源:網(wǎng)絡 收藏
        端口自己修改一下 用的1602液晶顯示

        #include
        #include
        #define uchar unsigned char
        #define uint unsigned int
        sbit wela=P2^7;
        sbit nz=P2^3;//鬧鐘
        sbit lcdrs=P3^5;
        sbit lcdwr=P3^6;
        sbit lcden=P3^4;//液晶使能
        sbit k1=P3^0;
        sbit k2=P3^1;
        sbit k3=P3^2;
        sbit k4=P3^3;
        sbit ajjd=P3^7;//按鍵
        sbit clk=P2^1;
        sbit io=P2^0;
        sbit rst=P2^5;
        void naozhongscan();
        uchar num0,num1,num2,num3,num4;
        void init();
        void delay(uchar);
        void keyscan();
        void didi();
        uchar lcd_date_add[7]={0x40+9,0x40+6,0x40+3,0xa,7,0xd,4};
        uchar date_write_add[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};//miao fen shi ri yue zhou nian
        uchar date_read_add[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};
        uchar date[7]={30,32,16,27,2,7,11};
        uchar date1[7];
        uchar naozhong[7]={35,32,16,27,2,7,11};
        ucharflag,flag1,flag2;
        uchar code table0[]=" - - ";
        uchar code table1[]=" : : ";
        void lcd_com(uchar);
        void lcd_date(uchar);
        void lcd_time(uchar,uchar);
        void write_ds1302(uchar add,uchar date);
        uchar read_ds1302(uchar add);
        void read_rtc();
        void set_ds1302(uchar add,uchar time);
        void display();
        void init_ds1302();
        void main()
        {
        wela=1;
        P1=0xff;
        wela=0;
        init();
        init_ds1302();
        while(1)
        {
        if(flag1==1)
        naozhongscan();
        read_rtc();
        if(flag==0)
        display();
        keyscan();
        }
        }
        void init()
        {
        flag=0;
        flag1=0;
        flag2=0;
        lcden=0;
        lcdwr=0;
        num2=0;
        num3=0;
        num4=0;
        lcd_com(0x38);//顯示模式設置,16*2顯示,5*7點陣,8位數(shù)據(jù)接口
        lcd_com(0x01);//清屏,顯示、指針清零
        lcd_com(0x0c);//顯示開關(guān)及光標設置,開顯示,顯示光標,光標閃爍
        lcd_com(0x06);//讀寫后指針加一光標加一
        lcd_com(0x80);//從第一個顯示地址開始顯示
        for(num0=0;num0<16;num0++)
        lcd_date(table0[num0]);
        lcd_com(0x80+0x40);
        for(num0=0;num0<11;num0++)
        lcd_date(table1[num0]);
        }
        void init_ds1302()
        {
        uchar i,j;
        uchar flag3;
        flag3=read_ds1302(0x81);
        if(flag3&0x80)//如果ch=1則進行初始化
        {
        write_ds1302(0x8e,0x00);
        for(i=0;i<7;i++)
        {
        j=date[i]/10;
        date[i]=date[i]%10;
        date[i]=date[i]+j*16;
        write_ds1302(date_write_add[i],date[i]);
        }
        write_ds1302(0x8e,0x80);
        }
        }
        void delay(uchar z)
        {
        uchar x,y;
        for(x=110;x>0;x--)
        for(y=z;y>0;y--);
        }
        void didi()
        {
        nz=0;
        delay(50);
        nz=1;
        delay(100);
        nz=0;
        delay(50);
        nz=1;
        }
        void lcd_com(uchar com)
        {
        lcdrs=0;
        P0=com;
        delay(5);
        lcden=1;
        delay(5);
        lcden=0;
        }
        void lcd_date(uchar date)
        {
        lcdrs=1;
        P0=date;
        delay(5);
        lcden=1;
        delay(5);
        lcden=0;
        }
        void lcd_time(uchar add,uchar Date)
        {
        uchar shi,ge;
        shi=Date/10;
        ge=Date%10;
        lcd_com(0x80+add);
        lcd_date(0x30+shi);
        lcd_date(0x30+ge);
        }
        void keyscan()
        {
        ajjd=0;
        if(num3!=2)
        {
        if(k1==0)
        {
        delay(5);
        if(k1==0)
        {
        while(!k1);

        num2++;
        if(num2==1)
        {
        flag=1;
        lcd_com(0x80+lcd_date_add[0]);
        lcd_com(0x0f);//顯示開關(guān)及光標設置,開顯示,顯示光標,光標閃爍
        }
        if(num2==2)
        {
        lcd_com(0x80+lcd_date_add[1]);
        }
        if(num2==3)
        {
        lcd_com(0x80+lcd_date_add[2]);
        }
        if(num2==4)
        {
        lcd_com(0x80+lcd_date_add[3]);
        }
        if(num2==5)
        {
        lcd_com(0x80+lcd_date_add[4]);
        }
        if(num2==6)
        {
        lcd_com(0x80+lcd_date_add[5]);
        }
        if(num2==7)
        {
        lcd_com(0x80+lcd_date_add[6]);
        }
        if(num2==8)
        {
        lcd_com(0x0c);//關(guān)光標
        num2=0;
        flag=0;
        }
        }
        }
        if(num2!=0)
        {
        if(k2==0)
        {
        delay(5);
        if(k2==0)
        {
        while(!k2);
        if(num2==1)
        {
        date[0]++;
        if(date[0]==60)
        date[0]=0;
        _nop_();
        lcd_time(lcd_date_add[0],date[0]);
        lcd_com(0x80+lcd_date_add[0]);
        set_ds1302(date_write_add[0],date[0]);
        }
        if(num2==2)
        {
        date[1]++;
        if(date[1]==60)
        date[1]=0;
        _nop_();
        lcd_time(lcd_date_add[1],date[1]);
        lcd_com(0x80+lcd_date_add[1]);
        set_ds1302(date_write_add[1],date[1]);
        }
        if(num2==3)
        {
        date[2]++;
        if(date[2]==24)
        date[2]=0;
        _nop_();
        lcd_time(lcd_date_add[2],date[2]);
        lcd_com(0x80+lcd_date_add[2]);
        set_ds1302(date_write_add[2],date[2]);
        }
        if(num2==4)
        {
        date[3]++;
        if(date[3]==32)
        date[3]=1;
        _nop_();
        lcd_time(lcd_date_add[3],date[3]);
        lcd_com(0x80+lcd_date_add[3]);
        set_ds1302(date_write_add[3],date[3]);
        }
        if(num2==5)
        {
        date[4]++;
        if(date[4]==13)
        date[4]=1;
        _nop_();
        lcd_time(lcd_date_add[4],date[4]);
        lcd_com(0x80+lcd_date_add[4]);
        set_ds1302(date_write_add[4],date[4]);
        }
        if(num2==6)
        {
        date[5]++;
        if(date[5]==8)
        date[5]=1;
        _nop_();
        lcd_time(lcd_date_add[5],date[5]);
        lcd_com(0x80+lcd_date_add[5]);
        set_ds1302(date_write_add[5],date[5]);
        }
        if(num2==7)
        {
        date[6]++;
        if(date[6]==99)
        date[6]=1;
        _nop_();
        lcd_time(lcd_date_add[6],date[6]);
        lcd_com(0x80+lcd_date_add[6]);
        set_ds1302(date_write_add[6],date[6]);
        }
        }
        }
        if(k3==0)
        {
        delay(5);
        if(k3==0)
        {
        while(!k3);
        if(num2==1)
        {
        date[0]--;
        if(date[0]==-1)
        date[0]=59;
        _nop_();
        lcd_time(lcd_date_add[2],date[0]);
        lcd_com(0x80+lcd_date_add[0]);
        set_ds1302(date_write_add[0],date[0]);
        }
        if(num2==2)
        {
        date[1]--;
        if(date[1]==-1)
        date[1]=59;
        _nop_();
        lcd_time(lcd_date_add[1],date[1]);
        lcd_com(0x80+lcd_date_add[1]);
        set_ds1302(date_write_add[1],date[1]);
        }
        if(num2==3)
        {
        date[2]--;
        if(date[2]==-1)
        date[2]=23;
        _nop_();
        lcd_time(lcd_date_add[2],date[2]);
        lcd_com(0x80+lcd_date_add[2]);
        set_ds1302(date_write_add[2],date[2]);
        }
        if(num2==4)
        {
        date[3]--;
        if(date[3]==0)
        date[3]=31;
        _nop_();
        lcd_time(lcd_date_add[3],date[3]);
        lcd_com(0x80+lcd_date_add[3]);
        set_ds1302(date_write_add[3],date[3]);
        }
        if(num2==5)
        {
        date[4]--;
        if(date[4]==0)
        date[4]=12;
        _nop_();
        lcd_time(lcd_date_add[4],date[4]);
        lcd_com(0x80+lcd_date_add[4]);
        set_ds1302(date_write_add[4],date[4]);
        }
        if(num2==6)
        {
        date[5]--;
        if(date[5]==0)
        date[5]=7;
        _nop_();
        lcd_time(lcd_date_add[5],date[5]);
        lcd_com(0x80+lcd_date_add[5]);
        set_ds1302(date_write_add[5],date[5]);
        }
        if(num2==7)
        {
        date[6]--;
        if(date[6]==0)
        date[6]=99;
        _nop_();
        lcd_time(lcd_date_add[6],date[6]);
        lcd_com(0x80+lcd_date_add[6]);
        set_ds1302(date_write_add[6],date[6]);
        }
        }
        }
        }
        }


        上一頁 1 2 下一頁

        關(guān)鍵詞: ds1302鬧鐘功能單片機控

        評論


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

        關(guān)閉